@playcraft/common 0.0.11 → 0.0.13
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/agent-tools/types.d.ts +3 -1
- package/dist/agent-tools/types.d.ts.map +1 -1
- package/dist/auth/signature.js +1 -1
- package/dist/auth/signature.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/playable-ads-filename.d.ts +38 -0
- package/dist/playable-ads-filename.d.ts.map +1 -0
- package/dist/playable-ads-filename.js +66 -0
- package/dist/playable-ads-filename.js.map +1 -0
- package/dist/prefab/constants.d.ts +12 -0
- package/dist/prefab/constants.d.ts.map +1 -0
- package/dist/prefab/constants.js +20 -0
- package/dist/prefab/constants.js.map +1 -0
- package/dist/prefab/descriptor.d.ts +6 -0
- package/dist/prefab/descriptor.d.ts.map +1 -0
- package/dist/prefab/descriptor.js +70 -0
- package/dist/prefab/descriptor.js.map +1 -0
- package/dist/prefab/extension-parser.d.ts +37 -0
- package/dist/prefab/extension-parser.d.ts.map +1 -0
- package/dist/prefab/extension-parser.js +97 -0
- package/dist/prefab/extension-parser.js.map +1 -0
- package/dist/prefab/index.d.ts +8 -0
- package/dist/prefab/index.d.ts.map +1 -0
- package/dist/prefab/index.js +8 -0
- package/dist/prefab/index.js.map +1 -0
- package/dist/prefab/scene-resolver.d.ts +16 -0
- package/dist/prefab/scene-resolver.d.ts.map +1 -0
- package/dist/prefab/scene-resolver.js +118 -0
- package/dist/prefab/scene-resolver.js.map +1 -0
- package/dist/prefab/theme-schema-parser.d.ts +21 -0
- package/dist/prefab/theme-schema-parser.d.ts.map +1 -0
- package/dist/prefab/theme-schema-parser.js +84 -0
- package/dist/prefab/theme-schema-parser.js.map +1 -0
- package/dist/prefab/types.d.ts +73 -0
- package/dist/prefab/types.d.ts.map +1 -0
- package/dist/prefab/types.js +2 -0
- package/dist/prefab/types.js.map +1 -0
- package/dist/prefab/validator.d.ts +6 -0
- package/dist/prefab/validator.d.ts.map +1 -0
- package/dist/prefab/validator.js +104 -0
- package/dist/prefab/validator.js.map +1 -0
- package/package.json +9 -1
|
@@ -9,6 +9,8 @@ export type GenerateImageRequest = {
|
|
|
9
9
|
prompt: string;
|
|
10
10
|
aspectRatio?: '1:1' | '9:16' | '16:9' | '3:4' | '4:3' | '2:3' | '3:2' | '21:9';
|
|
11
11
|
imageSize?: '1K' | '2K' | '4K';
|
|
12
|
+
referenceImageBase64?: string;
|
|
13
|
+
referenceImageMimeType?: string;
|
|
12
14
|
};
|
|
13
15
|
export type GenerateImageResponse = {
|
|
14
16
|
imageBase64: string;
|
|
@@ -69,7 +71,7 @@ export type PublishToCosResponse = {
|
|
|
69
71
|
error?: string;
|
|
70
72
|
};
|
|
71
73
|
export type CreateRemixRequest = {
|
|
72
|
-
projectId:
|
|
74
|
+
projectId: number;
|
|
73
75
|
name: string;
|
|
74
76
|
description?: string;
|
|
75
77
|
sourceBranch?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent-tools/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC/E,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent-tools/types.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/signature.js
CHANGED
|
@@ -52,7 +52,7 @@ export function generateInternalSignature(method, path, timestamp, secret) {
|
|
|
52
52
|
*/
|
|
53
53
|
export function verifyInternalSignature(method, path, timestamp, signature, secret) {
|
|
54
54
|
// 参数验证
|
|
55
|
-
if (!method || !path ||
|
|
55
|
+
if (!method || !path || timestamp == null || !signature || !secret) {
|
|
56
56
|
return {
|
|
57
57
|
valid: false,
|
|
58
58
|
error: 'Missing required parameters for signature verification'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/auth/signature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAoBjC;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAc,EACd,IAAY,EACZ,SAAiB,EACjB,MAAc;IAEd,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;IAE/D,sBAAsB;IACtB,MAAM,SAAS,GAAG,MAAM;SACrB,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,IAAY,EACZ,SAAiB,EACjB,SAAiB,EACjB,MAAc;IAEd,OAAO;IACP,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/auth/signature.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './auth/index.js';
|
|
2
2
|
export * from './constants.js';
|
|
3
|
+
export * from './playable-ads-filename.js';
|
|
3
4
|
export * from './models/index.js';
|
|
4
5
|
export * from './database/index.js';
|
|
5
6
|
export * from './sharedb/index.js';
|
|
@@ -9,4 +10,5 @@ export * from './storage/index.js';
|
|
|
9
10
|
export * from './mcp/index.js';
|
|
10
11
|
export * from './utils/index.js';
|
|
11
12
|
export * from './agent-tools/index.js';
|
|
13
|
+
export * from './prefab/index.js';
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './auth/index.js';
|
|
2
2
|
export * from './constants.js';
|
|
3
|
+
export * from './playable-ads-filename.js';
|
|
3
4
|
export * from './models/index.js';
|
|
4
5
|
export * from './database/index.js';
|
|
5
6
|
export * from './sharedb/index.js';
|
|
@@ -9,4 +10,5 @@ export * from './storage/index.js';
|
|
|
9
10
|
export * from './mcp/index.js';
|
|
10
11
|
export * from './utils/index.js';
|
|
11
12
|
export * from './agent-tools/index.js';
|
|
13
|
+
export * from './prefab/index.js';
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Play 等渠道对可玩广告上传文件名长度常见限制:完整文件名(含扩展名)≤ 50。
|
|
3
|
+
* 仅用于导出 / 打包命名;系统内 build.name 等可不遵循此上限。
|
|
4
|
+
*/
|
|
5
|
+
export declare const PLAYABLE_ADS_FILENAME_MAX_CHARS = 50;
|
|
6
|
+
export type PlayableAdsOutputFormat = 'html' | 'zip';
|
|
7
|
+
export declare function playableAdsExtensionWithDot(format: PlayableAdsOutputFormat): string;
|
|
8
|
+
/** 扩展名长度,含点前缀(例如 `.html` → 5) */
|
|
9
|
+
export declare function playableAdsExtensionLength(format: PlayableAdsOutputFormat): number;
|
|
10
|
+
/** 在完整文件名 ≤ PLAYABLE_ADS_FILENAME_MAX_CHARS 时,主文件名(stem)允许的最大长度 */
|
|
11
|
+
export declare function playableAdsMaxStem(format: PlayableAdsOutputFormat): number;
|
|
12
|
+
/** 同时适配多种产物格式时,stem 须不超过各格式上限的最小值 */
|
|
13
|
+
export declare function playableAdsMaxStemForFormats(formats: PlayableAdsOutputFormat[]): number;
|
|
14
|
+
export declare function sanitizePlayableAdsStem(stem: string): string;
|
|
15
|
+
export type TruncatePlayableAdsStemResult = {
|
|
16
|
+
stem: string;
|
|
17
|
+
/** 因超过渠道完整文件名上限而截断 stem */
|
|
18
|
+
truncated: boolean;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* 将 stem 清理非法字符后截断到当前格式允许的 max stem。
|
|
22
|
+
*/
|
|
23
|
+
export declare function truncatePlayableAdsStem(stem: string, format: PlayableAdsOutputFormat): TruncatePlayableAdsStemResult;
|
|
24
|
+
export type BuildPlayableAdsFilenameResult = {
|
|
25
|
+
filename: string;
|
|
26
|
+
truncated: boolean;
|
|
27
|
+
};
|
|
28
|
+
export declare function buildPlayableAdsFilename(stem: string, format: PlayableAdsOutputFormat): BuildPlayableAdsFilenameResult;
|
|
29
|
+
/** Zip 外层包:完整名为 `{stem}.zip`,stem 最大为 playableAdsMaxStem('zip') */
|
|
30
|
+
export declare function truncatePlayableAdsZipArchiveStem(stem: string): TruncatePlayableAdsStemResult;
|
|
31
|
+
/**
|
|
32
|
+
* zip 内目录段(无扩展名),整段 ≤ 50。
|
|
33
|
+
*/
|
|
34
|
+
export declare function truncatePlayableAdsPathSegment(segment: string): {
|
|
35
|
+
segment: string;
|
|
36
|
+
truncated: boolean;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=playable-ads-filename.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playable-ads-filename.d.ts","sourceRoot":"","sources":["../src/playable-ads-filename.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAElD,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,KAAK,CAAC;AASrD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CAEnF;AAED,iCAAiC;AACjC,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CAElF;AAED,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CAE1E;AAED,qCAAqC;AACrC,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAGvF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,uBAAuB,GAC9B,6BAA6B,CAQ/B;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,uBAAuB,GAC9B,8BAA8B,CAMhC;AAED,mEAAmE;AACnE,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,6BAA6B,CAE7F;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB,CAQA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Play 等渠道对可玩广告上传文件名长度常见限制:完整文件名(含扩展名)≤ 50。
|
|
3
|
+
* 仅用于导出 / 打包命名;系统内 build.name 等可不遵循此上限。
|
|
4
|
+
*/
|
|
5
|
+
export const PLAYABLE_ADS_FILENAME_MAX_CHARS = 50;
|
|
6
|
+
const EXT_WITH_DOT = {
|
|
7
|
+
html: '.html',
|
|
8
|
+
zip: '.zip',
|
|
9
|
+
};
|
|
10
|
+
const ILLEGAL_PATH_CHARS = /[/\\:*?"<>|]/g;
|
|
11
|
+
export function playableAdsExtensionWithDot(format) {
|
|
12
|
+
return EXT_WITH_DOT[format];
|
|
13
|
+
}
|
|
14
|
+
/** 扩展名长度,含点前缀(例如 `.html` → 5) */
|
|
15
|
+
export function playableAdsExtensionLength(format) {
|
|
16
|
+
return EXT_WITH_DOT[format].length;
|
|
17
|
+
}
|
|
18
|
+
/** 在完整文件名 ≤ PLAYABLE_ADS_FILENAME_MAX_CHARS 时,主文件名(stem)允许的最大长度 */
|
|
19
|
+
export function playableAdsMaxStem(format) {
|
|
20
|
+
return PLAYABLE_ADS_FILENAME_MAX_CHARS - playableAdsExtensionLength(format);
|
|
21
|
+
}
|
|
22
|
+
/** 同时适配多种产物格式时,stem 须不超过各格式上限的最小值 */
|
|
23
|
+
export function playableAdsMaxStemForFormats(formats) {
|
|
24
|
+
if (formats.length === 0)
|
|
25
|
+
return playableAdsMaxStem('html');
|
|
26
|
+
return Math.min(...formats.map(playableAdsMaxStem));
|
|
27
|
+
}
|
|
28
|
+
export function sanitizePlayableAdsStem(stem) {
|
|
29
|
+
return stem.replace(ILLEGAL_PATH_CHARS, '-').trim();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 将 stem 清理非法字符后截断到当前格式允许的 max stem。
|
|
33
|
+
*/
|
|
34
|
+
export function truncatePlayableAdsStem(stem, format) {
|
|
35
|
+
const max = playableAdsMaxStem(format);
|
|
36
|
+
const cleaned = sanitizePlayableAdsStem(stem);
|
|
37
|
+
const base = cleaned.length > 0 ? cleaned : 'playable';
|
|
38
|
+
if (base.length <= max) {
|
|
39
|
+
return { stem: base, truncated: false };
|
|
40
|
+
}
|
|
41
|
+
return { stem: base.slice(0, max), truncated: true };
|
|
42
|
+
}
|
|
43
|
+
export function buildPlayableAdsFilename(stem, format) {
|
|
44
|
+
const { stem: s, truncated } = truncatePlayableAdsStem(stem, format);
|
|
45
|
+
return {
|
|
46
|
+
filename: `${s}${playableAdsExtensionWithDot(format)}`,
|
|
47
|
+
truncated,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** Zip 外层包:完整名为 `{stem}.zip`,stem 最大为 playableAdsMaxStem('zip') */
|
|
51
|
+
export function truncatePlayableAdsZipArchiveStem(stem) {
|
|
52
|
+
return truncatePlayableAdsStem(stem, 'zip');
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* zip 内目录段(无扩展名),整段 ≤ 50。
|
|
56
|
+
*/
|
|
57
|
+
export function truncatePlayableAdsPathSegment(segment) {
|
|
58
|
+
const cleaned = sanitizePlayableAdsStem(segment);
|
|
59
|
+
const base = cleaned.length > 0 ? cleaned : 'folder';
|
|
60
|
+
const max = PLAYABLE_ADS_FILENAME_MAX_CHARS;
|
|
61
|
+
if (base.length <= max) {
|
|
62
|
+
return { segment: base, truncated: false };
|
|
63
|
+
}
|
|
64
|
+
return { segment: base.slice(0, max), truncated: true };
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=playable-ads-filename.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playable-ads-filename.js","sourceRoot":"","sources":["../src/playable-ads-filename.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const THEME_DIR = "src/theme";
|
|
2
|
+
export declare const THEME_SCHEMA_PATH = "src/theme/theme.schema.json5";
|
|
3
|
+
export declare const THEME_INDEX_PATH = "src/theme/index.ts";
|
|
4
|
+
export declare function themeDataPath(themeId: string): string;
|
|
5
|
+
export declare const DEFAULT_GAME_PATH = "assets/DefaultGame.json";
|
|
6
|
+
export declare const MANIFEST_PATH = "manifest.json";
|
|
7
|
+
export declare const ASSETS_JSON_PATH = "assets/assets.json";
|
|
8
|
+
export declare const SCENES_DIR = "scenes";
|
|
9
|
+
export declare const LITE_CREATOR_EXTENSIONS_DIR = "assets/LiteCreator/Gameplay/Extension";
|
|
10
|
+
export declare function extensionMetaDataPath(extName: string): string;
|
|
11
|
+
export declare function scenePath(sceneId: string): string;
|
|
12
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/prefab/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,iBAAiB,iCAAiC,CAAC;AAChE,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AAErD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAID,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAC3D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,UAAU,WAAW,CAAC;AACnC,eAAO,MAAM,2BAA2B,0CAA0C,CAAC;AAEnF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// ─── External Theme paths (relative to repo root) ────────────────────────────
|
|
2
|
+
export const THEME_DIR = 'src/theme';
|
|
3
|
+
export const THEME_SCHEMA_PATH = 'src/theme/theme.schema.json5';
|
|
4
|
+
export const THEME_INDEX_PATH = 'src/theme/index.ts';
|
|
5
|
+
export function themeDataPath(themeId) {
|
|
6
|
+
return `src/theme/${themeId}/theme.data.json5`;
|
|
7
|
+
}
|
|
8
|
+
// ─── PlayCanvas / LiteCreator paths ──────────────────────────────────────────
|
|
9
|
+
export const DEFAULT_GAME_PATH = 'assets/DefaultGame.json';
|
|
10
|
+
export const MANIFEST_PATH = 'manifest.json';
|
|
11
|
+
export const ASSETS_JSON_PATH = 'assets/assets.json';
|
|
12
|
+
export const SCENES_DIR = 'scenes';
|
|
13
|
+
export const LITE_CREATOR_EXTENSIONS_DIR = 'assets/LiteCreator/Gameplay/Extension';
|
|
14
|
+
export function extensionMetaDataPath(extName) {
|
|
15
|
+
return `${LITE_CREATOR_EXTENSIONS_DIR}/${extName}/MetaData.json`;
|
|
16
|
+
}
|
|
17
|
+
export function scenePath(sceneId) {
|
|
18
|
+
return `${SCENES_DIR}/${sceneId}.json`;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/prefab/constants.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAErD,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,aAAa,OAAO,mBAAmB,CAAC;AACjD,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AACrD,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AACnC,MAAM,CAAC,MAAM,2BAA2B,GAAG,uCAAuC,CAAC;AAEnF,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,GAAG,2BAA2B,IAAI,OAAO,gBAAgB,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,GAAG,UAAU,IAAI,OAAO,OAAO,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { JsonSchemaNode, ConfigFieldDef, FieldDescriptor } from './types.js';
|
|
2
|
+
/** Flatten a JSON Schema node into a list of field descriptors for CLI display */
|
|
3
|
+
export declare function describeJsonSchemaFields(schema: JsonSchemaNode, currentValue: unknown, prefix?: string): FieldDescriptor[];
|
|
4
|
+
/** Convert a LiteCreator ConfigFieldDef map into field descriptors */
|
|
5
|
+
export declare function describeConfigSchemaFields(configSchema: Record<string, ConfigFieldDef>, currentValues: Record<string, unknown>, prefix?: string): FieldDescriptor[];
|
|
6
|
+
//# sourceMappingURL=descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/prefab/descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElF,kFAAkF;AAClF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,OAAO,EACrB,MAAM,SAAK,GACV,eAAe,EAAE,CAyBnB;AAwBD,sEAAsE;AACtE,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,MAAM,SAAK,GACV,eAAe,EAAE,CAuBnB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/** Flatten a JSON Schema node into a list of field descriptors for CLI display */
|
|
2
|
+
export function describeJsonSchemaFields(schema, currentValue, prefix = '') {
|
|
3
|
+
const results = [];
|
|
4
|
+
const type = Array.isArray(schema.type) ? schema.type[0] : schema.type;
|
|
5
|
+
if (type === 'object' && schema.properties) {
|
|
6
|
+
const obj = (currentValue && typeof currentValue === 'object' && !Array.isArray(currentValue))
|
|
7
|
+
? currentValue
|
|
8
|
+
: {};
|
|
9
|
+
for (const [key, subSchema] of Object.entries(schema.properties)) {
|
|
10
|
+
const fieldPath = prefix ? `${prefix}.${key}` : key;
|
|
11
|
+
const subType = Array.isArray(subSchema.type) ? subSchema.type[0] : subSchema.type;
|
|
12
|
+
if (subType === 'object' && subSchema.properties) {
|
|
13
|
+
results.push(...describeJsonSchemaFields(subSchema, obj[key], fieldPath));
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
results.push(buildJsonSchemaDescriptor(fieldPath, subSchema, obj[key]));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
const fieldPath = prefix || '(root)';
|
|
22
|
+
results.push(buildJsonSchemaDescriptor(fieldPath, schema, currentValue));
|
|
23
|
+
}
|
|
24
|
+
return results;
|
|
25
|
+
}
|
|
26
|
+
function buildJsonSchemaDescriptor(path, schema, currentValue) {
|
|
27
|
+
const type = Array.isArray(schema.type) ? schema.type[0] : (schema.type ?? 'unknown');
|
|
28
|
+
const parts = [];
|
|
29
|
+
if (schema.min != null)
|
|
30
|
+
parts.push(`min=${schema.min}`);
|
|
31
|
+
if (schema.max != null)
|
|
32
|
+
parts.push(`max=${schema.max}`);
|
|
33
|
+
if (schema.step != null)
|
|
34
|
+
parts.push(`step=${schema.step}`);
|
|
35
|
+
return {
|
|
36
|
+
path,
|
|
37
|
+
type,
|
|
38
|
+
default: schema.default,
|
|
39
|
+
currentValue,
|
|
40
|
+
constraints: parts.length > 0 ? parts.join(', ') : undefined,
|
|
41
|
+
enumOptions: schema.enum ? schema.enum.map(String) : undefined,
|
|
42
|
+
description: schema.description ?? schema.title,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Convert a LiteCreator ConfigFieldDef map into field descriptors */
|
|
46
|
+
export function describeConfigSchemaFields(configSchema, currentValues, prefix = '') {
|
|
47
|
+
const results = [];
|
|
48
|
+
for (const [key, def] of Object.entries(configSchema)) {
|
|
49
|
+
const fieldPath = prefix ? `${prefix}.${key}` : key;
|
|
50
|
+
const type = (def.type ?? 'string').toLowerCase();
|
|
51
|
+
const parts = [];
|
|
52
|
+
if (def.min != null)
|
|
53
|
+
parts.push(`min=${def.min}`);
|
|
54
|
+
if (def.max != null)
|
|
55
|
+
parts.push(`max=${def.max}`);
|
|
56
|
+
if (def.step != null)
|
|
57
|
+
parts.push(`step=${def.step}`);
|
|
58
|
+
results.push({
|
|
59
|
+
path: fieldPath,
|
|
60
|
+
type,
|
|
61
|
+
default: def.default,
|
|
62
|
+
currentValue: currentValues[key],
|
|
63
|
+
constraints: parts.length > 0 ? parts.join(', ') : undefined,
|
|
64
|
+
enumOptions: def.options ? def.options.map((o) => o.value) : undefined,
|
|
65
|
+
description: def.description,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return results;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../src/prefab/descriptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ConfigFieldDef, PrefabInfo } from './types.js';
|
|
2
|
+
/** Extract the config key from a configPath like "Config.CollisionSpark" -> "CollisionSpark" */
|
|
3
|
+
export declare function parseConfigKey(configPath: string): string;
|
|
4
|
+
/** Case-insensitive key lookup in a config object; returns the original key or null */
|
|
5
|
+
export declare function findConfigKeyCaseInsensitive(config: Record<string, unknown>, key: string): string | null;
|
|
6
|
+
/** Minimal MetaData.json shape */
|
|
7
|
+
type ExtensionMetaDataJson = {
|
|
8
|
+
name: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
configPath?: string;
|
|
11
|
+
configSchema?: Record<string, ConfigFieldDef>;
|
|
12
|
+
preview?: number | string;
|
|
13
|
+
};
|
|
14
|
+
/** Parse a MetaData.json into structured data */
|
|
15
|
+
export declare function parseExtensionMetaData(metaJson: unknown): ExtensionMetaDataJson | null;
|
|
16
|
+
/** Extract Gameplay.Extensions and Gameplay.Config from a GameConfig JSON */
|
|
17
|
+
export declare function parseGameConfig(gameConfigJson: unknown): {
|
|
18
|
+
extensions: string[];
|
|
19
|
+
config: Record<string, unknown>;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Build PrefabInfo[] from scanned extension metadata + game config.
|
|
23
|
+
*
|
|
24
|
+
* @param metaDataMap Map of extension name -> parsed MetaData.json
|
|
25
|
+
* @param gameConfig Parsed Gameplay section from the GameConfig file
|
|
26
|
+
* @param gameConfigPath File path of the GameConfig being used
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildExtensionPrefabs(metaDataMap: Map<string, ExtensionMetaDataJson>, gameConfig: {
|
|
29
|
+
extensions: string[];
|
|
30
|
+
config: Record<string, unknown>;
|
|
31
|
+
}, gameConfigPath: string): PrefabInfo[];
|
|
32
|
+
/** Update Gameplay.Config[key] in a GameConfig JSON object (returns new object) */
|
|
33
|
+
export declare function updateGameConfigValue(gameConfigJson: Record<string, unknown>, configKey: string, values: unknown): Record<string, unknown>;
|
|
34
|
+
/** Update Gameplay.Extensions array in a GameConfig JSON object (returns new object) */
|
|
35
|
+
export declare function updateGameConfigExtensions(gameConfigJson: Record<string, unknown>, extensionNames: string[]): Record<string, unknown>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=extension-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-parser.d.ts","sourceRoot":"","sources":["../../src/prefab/extension-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7D,gGAAgG;AAChG,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,uFAAuF;AACvF,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAMf;AAED,kCAAkC;AAClC,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B,CAAC;AAEF,iDAAiD;AACjD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,qBAAqB,GAAG,IAAI,CAetF;AAOD,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,cAAc,EAAE,OAAO,GAAG;IACxD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAYA;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC/C,UAAU,EAAE;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EACrE,cAAc,EAAE,MAAM,GACrB,UAAU,EAAE,CAwBd;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB;AAED,wFAAwF;AACxF,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,cAAc,EAAE,MAAM,EAAE,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/** Extract the config key from a configPath like "Config.CollisionSpark" -> "CollisionSpark" */
|
|
2
|
+
export function parseConfigKey(configPath) {
|
|
3
|
+
const parts = configPath.split('.');
|
|
4
|
+
return parts[parts.length - 1] || configPath;
|
|
5
|
+
}
|
|
6
|
+
/** Case-insensitive key lookup in a config object; returns the original key or null */
|
|
7
|
+
export function findConfigKeyCaseInsensitive(config, key) {
|
|
8
|
+
const keyLower = key.toLowerCase();
|
|
9
|
+
for (const k of Object.keys(config)) {
|
|
10
|
+
if (k.toLowerCase() === keyLower)
|
|
11
|
+
return k;
|
|
12
|
+
}
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
/** Parse a MetaData.json into structured data */
|
|
16
|
+
export function parseExtensionMetaData(metaJson) {
|
|
17
|
+
if (!metaJson || typeof metaJson !== 'object')
|
|
18
|
+
return null;
|
|
19
|
+
const obj = metaJson;
|
|
20
|
+
if (typeof obj.name !== 'string')
|
|
21
|
+
return null;
|
|
22
|
+
return {
|
|
23
|
+
name: obj.name,
|
|
24
|
+
description: typeof obj.description === 'string' ? obj.description : undefined,
|
|
25
|
+
configPath: typeof obj.configPath === 'string' ? obj.configPath : undefined,
|
|
26
|
+
configSchema: obj.configSchema && typeof obj.configSchema === 'object'
|
|
27
|
+
? obj.configSchema
|
|
28
|
+
: undefined,
|
|
29
|
+
preview: typeof obj.preview === 'number' || typeof obj.preview === 'string'
|
|
30
|
+
? obj.preview
|
|
31
|
+
: undefined,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/** Extract Gameplay.Extensions and Gameplay.Config from a GameConfig JSON */
|
|
35
|
+
export function parseGameConfig(gameConfigJson) {
|
|
36
|
+
if (!gameConfigJson || typeof gameConfigJson !== 'object') {
|
|
37
|
+
return { extensions: [], config: {} };
|
|
38
|
+
}
|
|
39
|
+
const root = gameConfigJson;
|
|
40
|
+
const gameplay = (root.Gameplay ?? {});
|
|
41
|
+
return {
|
|
42
|
+
extensions: Array.isArray(gameplay.Extensions) ? gameplay.Extensions : [],
|
|
43
|
+
config: (gameplay.Config && typeof gameplay.Config === 'object')
|
|
44
|
+
? gameplay.Config
|
|
45
|
+
: {},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Build PrefabInfo[] from scanned extension metadata + game config.
|
|
50
|
+
*
|
|
51
|
+
* @param metaDataMap Map of extension name -> parsed MetaData.json
|
|
52
|
+
* @param gameConfig Parsed Gameplay section from the GameConfig file
|
|
53
|
+
* @param gameConfigPath File path of the GameConfig being used
|
|
54
|
+
*/
|
|
55
|
+
export function buildExtensionPrefabs(metaDataMap, gameConfig, gameConfigPath) {
|
|
56
|
+
const enabledSet = new Set(gameConfig.extensions.map((n) => n.toLowerCase()));
|
|
57
|
+
const results = [];
|
|
58
|
+
for (const [, meta] of metaDataMap) {
|
|
59
|
+
const configKey = meta.configPath ? parseConfigKey(meta.configPath) : meta.name;
|
|
60
|
+
const existingKey = findConfigKeyCaseInsensitive(gameConfig.config, configKey);
|
|
61
|
+
const currentValue = existingKey ? gameConfig.config[existingKey] : undefined;
|
|
62
|
+
const isUsed = enabledSet.has(meta.name.toLowerCase());
|
|
63
|
+
results.push({
|
|
64
|
+
key: meta.name,
|
|
65
|
+
name: meta.name,
|
|
66
|
+
description: meta.description,
|
|
67
|
+
systemType: 'lite-creator',
|
|
68
|
+
isUsed,
|
|
69
|
+
currentValue,
|
|
70
|
+
configSchema: meta.configSchema,
|
|
71
|
+
configPath: meta.configPath,
|
|
72
|
+
dataFilePath: gameConfigPath,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return results;
|
|
76
|
+
}
|
|
77
|
+
/** Update Gameplay.Config[key] in a GameConfig JSON object (returns new object) */
|
|
78
|
+
export function updateGameConfigValue(gameConfigJson, configKey, values) {
|
|
79
|
+
const result = { ...gameConfigJson };
|
|
80
|
+
const gameplay = { ...(result.Gameplay ?? {}) };
|
|
81
|
+
const config = { ...(gameplay.Config ?? {}) };
|
|
82
|
+
const existingKey = findConfigKeyCaseInsensitive(config, configKey);
|
|
83
|
+
const targetKey = existingKey ?? configKey;
|
|
84
|
+
config[targetKey] = values;
|
|
85
|
+
gameplay.Config = config;
|
|
86
|
+
result.Gameplay = gameplay;
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
/** Update Gameplay.Extensions array in a GameConfig JSON object (returns new object) */
|
|
90
|
+
export function updateGameConfigExtensions(gameConfigJson, extensionNames) {
|
|
91
|
+
const result = { ...gameConfigJson };
|
|
92
|
+
const gameplay = { ...(result.Gameplay ?? {}) };
|
|
93
|
+
gameplay.Extensions = extensionNames;
|
|
94
|
+
result.Gameplay = gameplay;
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=extension-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-parser.js","sourceRoot":"","sources":["../../src/prefab/extension-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './constants.js';
|
|
2
|
+
export * from './types.js';
|
|
3
|
+
export * from './theme-schema-parser.js';
|
|
4
|
+
export * from './extension-parser.js';
|
|
5
|
+
export * from './scene-resolver.js';
|
|
6
|
+
export * from './validator.js';
|
|
7
|
+
export * from './descriptor.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './constants.js';
|
|
2
|
+
export * from './types.js';
|
|
3
|
+
export * from './theme-schema-parser.js';
|
|
4
|
+
export * from './extension-parser.js';
|
|
5
|
+
export * from './scene-resolver.js';
|
|
6
|
+
export * from './validator.js';
|
|
7
|
+
export * from './descriptor.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Variant } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract the scene list from a manifest.json object -> Variant[].
|
|
4
|
+
* manifest.scenes is typically an array of { id, name, url } or similar.
|
|
5
|
+
*/
|
|
6
|
+
export declare function listScenesFromManifest(manifestJson: unknown): Variant[];
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the GameConfig file path from a scene JSON + assets.json.
|
|
9
|
+
*
|
|
10
|
+
* Chain: scene entities -> SystemManager -> gameConfigAsset (asset ID)
|
|
11
|
+
* -> assets.json lookup -> file path
|
|
12
|
+
*
|
|
13
|
+
* Returns the repo-relative path to the GameConfig JSON, or null if unresolvable.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveGameConfigPath(sceneJson: unknown, assetsJson: unknown): string | null;
|
|
16
|
+
//# sourceMappingURL=scene-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-resolver.d.ts","sourceRoot":"","sources":["../../src/prefab/scene-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,EAAE,CAavE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,OAAO,GAClB,MAAM,GAAG,IAAI,CAKf"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract the scene list from a manifest.json object -> Variant[].
|
|
3
|
+
* manifest.scenes is typically an array of { id, name, url } or similar.
|
|
4
|
+
*/
|
|
5
|
+
export function listScenesFromManifest(manifestJson) {
|
|
6
|
+
if (!manifestJson || typeof manifestJson !== 'object')
|
|
7
|
+
return [];
|
|
8
|
+
const root = manifestJson;
|
|
9
|
+
const scenes = root.scenes;
|
|
10
|
+
if (!Array.isArray(scenes))
|
|
11
|
+
return [];
|
|
12
|
+
return scenes
|
|
13
|
+
.filter((s) => !!s && typeof s === 'object')
|
|
14
|
+
.map((s) => ({
|
|
15
|
+
id: String(s.id ?? s.uniqueId ?? ''),
|
|
16
|
+
name: String(s.name ?? s.id ?? 'Untitled'),
|
|
17
|
+
}))
|
|
18
|
+
.filter((v) => v.id !== '');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resolve the GameConfig file path from a scene JSON + assets.json.
|
|
22
|
+
*
|
|
23
|
+
* Chain: scene entities -> SystemManager -> gameConfigAsset (asset ID)
|
|
24
|
+
* -> assets.json lookup -> file path
|
|
25
|
+
*
|
|
26
|
+
* Returns the repo-relative path to the GameConfig JSON, or null if unresolvable.
|
|
27
|
+
*/
|
|
28
|
+
export function resolveGameConfigPath(sceneJson, assetsJson) {
|
|
29
|
+
const gameConfigAssetId = findGameConfigAssetId(sceneJson);
|
|
30
|
+
if (gameConfigAssetId == null)
|
|
31
|
+
return null;
|
|
32
|
+
return resolveAssetFilePath(assetsJson, gameConfigAssetId);
|
|
33
|
+
}
|
|
34
|
+
/** Find the gameConfigAsset ID from a scene JSON by locating SystemManager entity */
|
|
35
|
+
function findGameConfigAssetId(sceneJson) {
|
|
36
|
+
if (!sceneJson || typeof sceneJson !== 'object')
|
|
37
|
+
return null;
|
|
38
|
+
const root = sceneJson;
|
|
39
|
+
const entities = root.entities;
|
|
40
|
+
if (!entities || typeof entities !== 'object')
|
|
41
|
+
return null;
|
|
42
|
+
const entitiesObj = entities;
|
|
43
|
+
for (const entityData of Object.values(entitiesObj)) {
|
|
44
|
+
if (!entityData || typeof entityData !== 'object')
|
|
45
|
+
continue;
|
|
46
|
+
const entity = entityData;
|
|
47
|
+
if (entity.name !== 'SystemManager')
|
|
48
|
+
continue;
|
|
49
|
+
const components = entity.components;
|
|
50
|
+
if (!components?.script)
|
|
51
|
+
continue;
|
|
52
|
+
const script = components.script;
|
|
53
|
+
const scripts = script.scripts;
|
|
54
|
+
if (!scripts?.systemManager)
|
|
55
|
+
continue;
|
|
56
|
+
const sm = scripts.systemManager;
|
|
57
|
+
const attrs = sm.attributes;
|
|
58
|
+
if (!attrs)
|
|
59
|
+
continue;
|
|
60
|
+
const assetId = attrs.gameConfigAsset;
|
|
61
|
+
if (assetId != null)
|
|
62
|
+
return assetId;
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
/** Look up an asset's file path in assets.json by its ID */
|
|
67
|
+
function resolveAssetFilePath(assetsJson, assetId) {
|
|
68
|
+
if (!assetsJson || typeof assetsJson !== 'object')
|
|
69
|
+
return null;
|
|
70
|
+
const idStr = String(assetId);
|
|
71
|
+
// assets.json can be { [id]: { file, path, name, ... } } or an array
|
|
72
|
+
if (Array.isArray(assetsJson)) {
|
|
73
|
+
for (const entry of assetsJson) {
|
|
74
|
+
if (!entry || typeof entry !== 'object')
|
|
75
|
+
continue;
|
|
76
|
+
const e = entry;
|
|
77
|
+
if (String(e.id ?? '') === idStr || String(e.uniqueId ?? '') === idStr) {
|
|
78
|
+
return buildAssetPath(e);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const obj = assetsJson;
|
|
84
|
+
// Direct lookup by key
|
|
85
|
+
if (obj[idStr] && typeof obj[idStr] === 'object') {
|
|
86
|
+
return buildAssetPath(obj[idStr]);
|
|
87
|
+
}
|
|
88
|
+
// Fallback: iterate all entries
|
|
89
|
+
for (const entry of Object.values(obj)) {
|
|
90
|
+
if (!entry || typeof entry !== 'object')
|
|
91
|
+
continue;
|
|
92
|
+
const e = entry;
|
|
93
|
+
if (String(e.id ?? '') === idStr || String(e.uniqueId ?? '') === idStr) {
|
|
94
|
+
return buildAssetPath(e);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
function buildAssetPath(assetEntry) {
|
|
100
|
+
const file = assetEntry.file;
|
|
101
|
+
const fileName = typeof file === 'object' ? file?.filename : file;
|
|
102
|
+
const pathArr = assetEntry.path;
|
|
103
|
+
if (typeof fileName === 'string' && fileName) {
|
|
104
|
+
if (Array.isArray(pathArr) && pathArr.length > 0) {
|
|
105
|
+
return `assets/${pathArr.join('/')}/${fileName}`;
|
|
106
|
+
}
|
|
107
|
+
return `assets/${fileName}`;
|
|
108
|
+
}
|
|
109
|
+
const name = assetEntry.name;
|
|
110
|
+
if (typeof name === 'string' && name) {
|
|
111
|
+
if (Array.isArray(pathArr) && pathArr.length > 0) {
|
|
112
|
+
return `assets/${pathArr.join('/')}/${name}`;
|
|
113
|
+
}
|
|
114
|
+
return `assets/${name}`;
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=scene-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-resolver.js","sourceRoot":"","sources":["../../src/prefab/scene-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { PrefabInfo } from './types.js';
|
|
2
|
+
type JsonSchemaProperty = Record<string, unknown>;
|
|
3
|
+
/** Recursively generate a default value from a JSON Schema property */
|
|
4
|
+
export declare function defaultValueFromJsonSchemaProperty(prop: JsonSchemaProperty | undefined): unknown;
|
|
5
|
+
/** Extract top-level property keys from the schema root */
|
|
6
|
+
export declare function getSchemaTopLevelPrefabKeys(schemaRoot: JsonSchemaProperty): string[];
|
|
7
|
+
/** Generate the content of src/theme/index.ts for a given theme directory */
|
|
8
|
+
export declare function buildThemeIndexTs(themeImportDir: string): string;
|
|
9
|
+
/** Parse the currently active themeId from index.ts file content */
|
|
10
|
+
export declare function parseThemeIndexImportPath(indexContent: string): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Parse schema + themeData into PrefabInfo[] (pure function, no IO).
|
|
13
|
+
* This is the common-layer equivalent of the frontend's mapThemeSchemaToComponents.
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseThemePrefabs(schemaRoot: JsonSchemaProperty, themeData: Record<string, unknown>, themeId: string): PrefabInfo[];
|
|
16
|
+
/** Merge a prefab key's value into the theme data object (pure, returns new object) */
|
|
17
|
+
export declare function mergeThemeDataKey(data: Record<string, unknown>, key: string, value: unknown): Record<string, unknown>;
|
|
18
|
+
/** Delete a prefab key from the theme data object (pure, returns new object) */
|
|
19
|
+
export declare function deleteThemeDataKey(data: Record<string, unknown>, key: string): Record<string, unknown>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=theme-schema-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-schema-parser.d.ts","sourceRoot":"","sources":["../../src/prefab/theme-schema-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7D,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD,uEAAuE;AACvE,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAiBhG;AAED,2DAA2D;AAC3D,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAIpF;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,oEAAoE;AACpE,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI7E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,kBAAkB,EAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,EAAE,MAAM,GACd,UAAU,EAAE,CA0Bd;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { themeDataPath } from './constants.js';
|
|
2
|
+
/** Recursively generate a default value from a JSON Schema property */
|
|
3
|
+
export function defaultValueFromJsonSchemaProperty(prop) {
|
|
4
|
+
if (!prop || typeof prop !== 'object')
|
|
5
|
+
return null;
|
|
6
|
+
if ('default' in prop && prop.default !== undefined)
|
|
7
|
+
return prop.default;
|
|
8
|
+
const type = prop.type;
|
|
9
|
+
const t = Array.isArray(type) ? type[0] : type;
|
|
10
|
+
if (t === 'object' && prop.properties && typeof prop.properties === 'object') {
|
|
11
|
+
const obj = {};
|
|
12
|
+
for (const [k, sub] of Object.entries(prop.properties)) {
|
|
13
|
+
obj[k] = defaultValueFromJsonSchemaProperty(sub);
|
|
14
|
+
}
|
|
15
|
+
return obj;
|
|
16
|
+
}
|
|
17
|
+
if (t === 'boolean')
|
|
18
|
+
return false;
|
|
19
|
+
if (t === 'integer' || t === 'number')
|
|
20
|
+
return 0;
|
|
21
|
+
if (t === 'string')
|
|
22
|
+
return '';
|
|
23
|
+
if (t === 'array')
|
|
24
|
+
return [];
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
/** Extract top-level property keys from the schema root */
|
|
28
|
+
export function getSchemaTopLevelPrefabKeys(schemaRoot) {
|
|
29
|
+
const props = schemaRoot.properties;
|
|
30
|
+
if (!props || typeof props !== 'object')
|
|
31
|
+
return [];
|
|
32
|
+
return Object.keys(props);
|
|
33
|
+
}
|
|
34
|
+
/** Generate the content of src/theme/index.ts for a given theme directory */
|
|
35
|
+
export function buildThemeIndexTs(themeImportDir) {
|
|
36
|
+
return `/**\n * Currently active theme variant\n */\nimport Theme from "./${themeImportDir}";\nexport default Theme;\n`;
|
|
37
|
+
}
|
|
38
|
+
/** Parse the currently active themeId from index.ts file content */
|
|
39
|
+
export function parseThemeIndexImportPath(indexContent) {
|
|
40
|
+
const m = indexContent.match(/import\s+Theme\s+from\s+["']\.\/([^"']+)["']/);
|
|
41
|
+
if (!m?.[1])
|
|
42
|
+
return null;
|
|
43
|
+
return m[1].replace(/\/$/, '');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parse schema + themeData into PrefabInfo[] (pure function, no IO).
|
|
47
|
+
* This is the common-layer equivalent of the frontend's mapThemeSchemaToComponents.
|
|
48
|
+
*/
|
|
49
|
+
export function parseThemePrefabs(schemaRoot, themeData, themeId) {
|
|
50
|
+
const props = schemaRoot.properties;
|
|
51
|
+
if (!props)
|
|
52
|
+
return [];
|
|
53
|
+
const keys = getSchemaTopLevelPrefabKeys(schemaRoot);
|
|
54
|
+
return keys.map((key) => {
|
|
55
|
+
const propSchema = (props[key] ?? {});
|
|
56
|
+
const desc = (typeof propSchema.description === 'string' && propSchema.description) ||
|
|
57
|
+
(typeof propSchema.title === 'string' && propSchema.title) ||
|
|
58
|
+
key;
|
|
59
|
+
const isUsed = Object.prototype.hasOwnProperty.call(themeData, key);
|
|
60
|
+
const currentValue = isUsed ? themeData[key] : undefined;
|
|
61
|
+
return {
|
|
62
|
+
key,
|
|
63
|
+
name: key,
|
|
64
|
+
description: desc || undefined,
|
|
65
|
+
systemType: 'external-theme',
|
|
66
|
+
isUsed,
|
|
67
|
+
currentValue,
|
|
68
|
+
variantId: themeId,
|
|
69
|
+
jsonSchema: propSchema,
|
|
70
|
+
dataFilePath: themeDataPath(themeId),
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/** Merge a prefab key's value into the theme data object (pure, returns new object) */
|
|
75
|
+
export function mergeThemeDataKey(data, key, value) {
|
|
76
|
+
return { ...data, [key]: value };
|
|
77
|
+
}
|
|
78
|
+
/** Delete a prefab key from the theme data object (pure, returns new object) */
|
|
79
|
+
export function deleteThemeDataKey(data, key) {
|
|
80
|
+
const next = { ...data };
|
|
81
|
+
delete next[key];
|
|
82
|
+
return next;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=theme-schema-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-schema-parser.js","sourceRoot":"","sources":["../../src/prefab/theme-schema-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/** Project prefab system type */
|
|
2
|
+
export type PrefabSystemType = 'external-theme' | 'lite-creator';
|
|
3
|
+
/** Unified variant context (theme for External, scene for PlayCanvas) */
|
|
4
|
+
export type Variant = {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
isActive?: boolean;
|
|
8
|
+
/** PlayCanvas only: resolved GameConfig file path */
|
|
9
|
+
gameConfigPath?: string;
|
|
10
|
+
};
|
|
11
|
+
/** Unified prefab info (no UI fields) */
|
|
12
|
+
export type PrefabInfo = {
|
|
13
|
+
key: string;
|
|
14
|
+
name: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
systemType: PrefabSystemType;
|
|
17
|
+
isUsed: boolean;
|
|
18
|
+
currentValue?: unknown;
|
|
19
|
+
variantId?: string;
|
|
20
|
+
jsonSchema?: JsonSchemaNode;
|
|
21
|
+
configSchema?: Record<string, ConfigFieldDef>;
|
|
22
|
+
configPath?: string;
|
|
23
|
+
/** File path that holds the actual data for read/write */
|
|
24
|
+
dataFilePath?: string;
|
|
25
|
+
};
|
|
26
|
+
/** JSON Schema node (External Theme) */
|
|
27
|
+
export type JsonSchemaNode = {
|
|
28
|
+
type?: string;
|
|
29
|
+
default?: unknown;
|
|
30
|
+
enum?: unknown[];
|
|
31
|
+
enumLabels?: Record<string, string>;
|
|
32
|
+
min?: number;
|
|
33
|
+
max?: number;
|
|
34
|
+
step?: number;
|
|
35
|
+
description?: string;
|
|
36
|
+
title?: string;
|
|
37
|
+
properties?: Record<string, JsonSchemaNode>;
|
|
38
|
+
xplatform?: {
|
|
39
|
+
value_type?: string;
|
|
40
|
+
mime_type?: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
/** LiteCreator ConfigSchema field definition */
|
|
44
|
+
export type ConfigFieldDef = {
|
|
45
|
+
type: string;
|
|
46
|
+
default?: unknown;
|
|
47
|
+
description?: string;
|
|
48
|
+
min?: number;
|
|
49
|
+
max?: number;
|
|
50
|
+
step?: number;
|
|
51
|
+
options?: Array<{
|
|
52
|
+
value: string;
|
|
53
|
+
label: string;
|
|
54
|
+
}>;
|
|
55
|
+
asset_type?: string;
|
|
56
|
+
assetType?: string;
|
|
57
|
+
};
|
|
58
|
+
/** Structured field descriptor for CLI display */
|
|
59
|
+
export type FieldDescriptor = {
|
|
60
|
+
path: string;
|
|
61
|
+
type: string;
|
|
62
|
+
default?: unknown;
|
|
63
|
+
currentValue?: unknown;
|
|
64
|
+
constraints?: string;
|
|
65
|
+
enumOptions?: string[];
|
|
66
|
+
description?: string;
|
|
67
|
+
};
|
|
68
|
+
/** Validation result */
|
|
69
|
+
export type ValidationResult = {
|
|
70
|
+
valid: boolean;
|
|
71
|
+
errors: string[];
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prefab/types.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAEjE,yEAAyE;AACzE,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,yCAAyC;AACzC,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wCAAwC;AACxC,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD,CAAC;AAEF,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,kDAAkD;AAClD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAwB;AACxB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/prefab/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { JsonSchemaNode, ConfigFieldDef, ValidationResult } from './types.js';
|
|
2
|
+
/** Validate a value against a JSON Schema node (External Theme) */
|
|
3
|
+
export declare function validateThemeValue(schema: JsonSchemaNode, value: unknown): ValidationResult;
|
|
4
|
+
/** Validate a value against a LiteCreator ConfigFieldDef */
|
|
5
|
+
export declare function validateConfigValue(fieldDef: ConfigFieldDef, value: unknown): ValidationResult;
|
|
6
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/prefab/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnF,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAkD3F;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAgD9F"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/** Validate a value against a JSON Schema node (External Theme) */
|
|
2
|
+
export function validateThemeValue(schema, value) {
|
|
3
|
+
const errors = [];
|
|
4
|
+
const type = Array.isArray(schema.type) ? schema.type[0] : schema.type;
|
|
5
|
+
if (schema.enum && Array.isArray(schema.enum)) {
|
|
6
|
+
if (!schema.enum.includes(value)) {
|
|
7
|
+
errors.push(`Value must be one of: ${schema.enum.map(String).join(', ')}`);
|
|
8
|
+
}
|
|
9
|
+
return { valid: errors.length === 0, errors };
|
|
10
|
+
}
|
|
11
|
+
if (type === 'integer' || type === 'number') {
|
|
12
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
13
|
+
errors.push(`Expected a ${type}, got ${typeof value}`);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
if (type === 'integer' && !Number.isInteger(value)) {
|
|
17
|
+
errors.push(`Expected an integer, got ${value}`);
|
|
18
|
+
}
|
|
19
|
+
if (schema.min != null && value < schema.min) {
|
|
20
|
+
errors.push(`Value ${value} is below minimum ${schema.min}`);
|
|
21
|
+
}
|
|
22
|
+
if (schema.max != null && value > schema.max) {
|
|
23
|
+
errors.push(`Value ${value} exceeds maximum ${schema.max}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else if (type === 'boolean') {
|
|
28
|
+
if (typeof value !== 'boolean') {
|
|
29
|
+
errors.push(`Expected a boolean, got ${typeof value}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else if (type === 'string') {
|
|
33
|
+
if (typeof value !== 'string') {
|
|
34
|
+
errors.push(`Expected a string, got ${typeof value}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else if (type === 'object') {
|
|
38
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
39
|
+
errors.push(`Expected an object`);
|
|
40
|
+
}
|
|
41
|
+
else if (schema.properties) {
|
|
42
|
+
const obj = value;
|
|
43
|
+
for (const [k, subSchema] of Object.entries(schema.properties)) {
|
|
44
|
+
if (k in obj) {
|
|
45
|
+
const sub = validateThemeValue(subSchema, obj[k]);
|
|
46
|
+
for (const e of sub.errors) {
|
|
47
|
+
errors.push(`${k}: ${e}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return { valid: errors.length === 0, errors };
|
|
54
|
+
}
|
|
55
|
+
/** Validate a value against a LiteCreator ConfigFieldDef */
|
|
56
|
+
export function validateConfigValue(fieldDef, value) {
|
|
57
|
+
const errors = [];
|
|
58
|
+
const type = (fieldDef.type ?? 'string').toLowerCase();
|
|
59
|
+
switch (type) {
|
|
60
|
+
case 'range':
|
|
61
|
+
case 'int':
|
|
62
|
+
case 'float':
|
|
63
|
+
case 'number': {
|
|
64
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
65
|
+
errors.push(`Expected a number, got ${typeof value}`);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
if (type === 'int' && !Number.isInteger(value)) {
|
|
69
|
+
errors.push(`Expected an integer, got ${value}`);
|
|
70
|
+
}
|
|
71
|
+
if (fieldDef.min != null && value < fieldDef.min) {
|
|
72
|
+
errors.push(`Value ${value} is below minimum ${fieldDef.min}`);
|
|
73
|
+
}
|
|
74
|
+
if (fieldDef.max != null && value > fieldDef.max) {
|
|
75
|
+
errors.push(`Value ${value} exceeds maximum ${fieldDef.max}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
case 'string':
|
|
81
|
+
if (typeof value !== 'string') {
|
|
82
|
+
errors.push(`Expected a string, got ${typeof value}`);
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
case 'boolean':
|
|
86
|
+
case 'switch':
|
|
87
|
+
if (typeof value !== 'boolean') {
|
|
88
|
+
errors.push(`Expected a boolean, got ${typeof value}`);
|
|
89
|
+
}
|
|
90
|
+
break;
|
|
91
|
+
case 'select':
|
|
92
|
+
if (fieldDef.options && !fieldDef.options.some((o) => o.value === String(value))) {
|
|
93
|
+
errors.push(`Value must be one of: ${fieldDef.options.map((o) => o.value).join(', ')}`);
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
case 'color':
|
|
97
|
+
if (typeof value !== 'string') {
|
|
98
|
+
errors.push(`Expected a color string, got ${typeof value}`);
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
return { valid: errors.length === 0, errors };
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/prefab/validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@playcraft/common",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.13",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -21,6 +21,10 @@
|
|
|
21
21
|
"types": "./dist/models/index.d.ts",
|
|
22
22
|
"default": "./dist/models/index.js"
|
|
23
23
|
},
|
|
24
|
+
"./playable-ads-filename": {
|
|
25
|
+
"types": "./dist/playable-ads-filename.d.ts",
|
|
26
|
+
"default": "./dist/playable-ads-filename.js"
|
|
27
|
+
},
|
|
24
28
|
"./database": {
|
|
25
29
|
"types": "./dist/database/index.d.ts",
|
|
26
30
|
"default": "./dist/database/index.js"
|
|
@@ -52,6 +56,10 @@
|
|
|
52
56
|
"./agent-tools": {
|
|
53
57
|
"types": "./dist/agent-tools/index.d.ts",
|
|
54
58
|
"default": "./dist/agent-tools/index.js"
|
|
59
|
+
},
|
|
60
|
+
"./prefab": {
|
|
61
|
+
"types": "./dist/prefab/index.d.ts",
|
|
62
|
+
"default": "./dist/prefab/index.js"
|
|
55
63
|
}
|
|
56
64
|
},
|
|
57
65
|
"files": [
|