polyv-live-cli 1.1.12 → 1.2.6
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/commands/coupon.commands.d.ts +8 -0
- package/dist/commands/coupon.commands.d.ts.map +1 -0
- package/dist/commands/coupon.commands.js +258 -0
- package/dist/commands/coupon.commands.js.map +1 -0
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/product.commands.d.ts +10 -0
- package/dist/commands/product.commands.d.ts.map +1 -0
- package/dist/commands/product.commands.js +398 -0
- package/dist/commands/product.commands.js.map +1 -0
- package/dist/commands/setup.commands.d.ts +4 -0
- package/dist/commands/setup.commands.d.ts.map +1 -0
- package/dist/commands/setup.commands.js +132 -0
- package/dist/commands/setup.commands.js.map +1 -0
- package/dist/commands/stream.commands.d.ts.map +1 -1
- package/dist/commands/stream.commands.js +7 -15
- package/dist/commands/stream.commands.js.map +1 -1
- package/dist/config/auth-source-manager.d.ts +8 -0
- package/dist/config/auth-source-manager.d.ts.map +1 -1
- package/dist/config/auth-source-manager.js +76 -1
- package/dist/config/auth-source-manager.js.map +1 -1
- package/dist/handlers/channel.handler.d.ts.map +1 -1
- package/dist/handlers/channel.handler.js +2 -2
- package/dist/handlers/channel.handler.js.map +1 -1
- package/dist/handlers/coupon.handler.d.ts +54 -0
- package/dist/handlers/coupon.handler.d.ts.map +1 -0
- package/dist/handlers/coupon.handler.js +258 -0
- package/dist/handlers/coupon.handler.js.map +1 -0
- package/dist/handlers/product.handler.d.ts +28 -0
- package/dist/handlers/product.handler.d.ts.map +1 -0
- package/dist/handlers/product.handler.js +182 -0
- package/dist/handlers/product.handler.js.map +1 -0
- package/dist/handlers/setup.handler.d.ts +30 -0
- package/dist/handlers/setup.handler.d.ts.map +1 -0
- package/dist/handlers/setup.handler.js +160 -0
- package/dist/handlers/setup.handler.js.map +1 -0
- package/dist/handlers/stream.handler.d.ts +3 -2
- package/dist/handlers/stream.handler.d.ts.map +1 -1
- package/dist/handlers/stream.handler.js +3 -2
- package/dist/handlers/stream.handler.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -4
- package/dist/index.js.map +1 -1
- package/dist/sdk/client.d.ts +8 -0
- package/dist/sdk/client.d.ts.map +1 -0
- package/dist/sdk/client.js +37 -0
- package/dist/sdk/client.js.map +1 -0
- package/dist/sdk/index.d.ts +3 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +12 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/services/{channel.service.d.ts → channel.service.sdk.d.ts} +6 -8
- package/dist/services/channel.service.sdk.d.ts.map +1 -0
- package/dist/services/channel.service.sdk.js +265 -0
- package/dist/services/channel.service.sdk.js.map +1 -0
- package/dist/services/index.d.ts +4 -3
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +7 -5
- package/dist/services/index.js.map +1 -1
- package/dist/services/product.service.sdk.d.ts +22 -0
- package/dist/services/product.service.sdk.d.ts.map +1 -0
- package/dist/services/product.service.sdk.js +242 -0
- package/dist/services/product.service.sdk.js.map +1 -0
- package/dist/services/{stream.service.d.ts → stream.service.sdk.d.ts} +4 -12
- package/dist/services/stream.service.sdk.d.ts.map +1 -0
- package/dist/services/stream.service.sdk.js +265 -0
- package/dist/services/stream.service.sdk.js.map +1 -0
- package/dist/setup/output-renderer.d.ts +39 -0
- package/dist/setup/output-renderer.d.ts.map +1 -0
- package/dist/setup/output-renderer.js +151 -0
- package/dist/setup/output-renderer.js.map +1 -0
- package/dist/setup/resource-handlers.d.ts +13 -0
- package/dist/setup/resource-handlers.d.ts.map +1 -0
- package/dist/setup/resource-handlers.js +136 -0
- package/dist/setup/resource-handlers.js.map +1 -0
- package/dist/setup/scene-config-loader.d.ts +52 -0
- package/dist/setup/scene-config-loader.d.ts.map +1 -0
- package/dist/setup/scene-config-loader.js +275 -0
- package/dist/setup/scene-config-loader.js.map +1 -0
- package/dist/setup/scene-executor.d.ts +44 -0
- package/dist/setup/scene-executor.d.ts.map +1 -0
- package/dist/setup/scene-executor.js +162 -0
- package/dist/setup/scene-executor.js.map +1 -0
- package/dist/setup/variable-resolver.d.ts +16 -0
- package/dist/setup/variable-resolver.d.ts.map +1 -0
- package/dist/setup/variable-resolver.js +176 -0
- package/dist/setup/variable-resolver.js.map +1 -0
- package/dist/setup-scenes/e-commerce.yaml +123 -0
- package/dist/types/auth-source.types.d.ts +7 -6
- package/dist/types/auth-source.types.d.ts.map +1 -1
- package/dist/types/auth-source.types.js +8 -5
- package/dist/types/auth-source.types.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/product.d.ts +135 -0
- package/dist/types/product.d.ts.map +1 -0
- package/dist/types/product.js +3 -0
- package/dist/types/product.js.map +1 -0
- package/dist/utils/data-manager.d.ts +3 -3
- package/dist/utils/data-manager.d.ts.map +1 -1
- package/dist/utils/data-manager.js.map +1 -1
- package/package.json +33 -32
- package/dist/services/channel.service.d.ts.map +0 -1
- package/dist/services/channel.service.js +0 -672
- package/dist/services/channel.service.js.map +0 -1
- package/dist/services/stream.service.d.ts.map +0 -1
- package/dist/services/stream.service.js +0 -489
- package/dist/services/stream.service.js.map +0 -1
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createResourceHandlers = createResourceHandlers;
|
|
4
|
+
function createResourceHandlers(client) {
|
|
5
|
+
return {
|
|
6
|
+
channel: createChannelHandler(client),
|
|
7
|
+
product: createProductHandler(client),
|
|
8
|
+
coupon: createCouponHandler(client),
|
|
9
|
+
watchCondition: createWatchConditionHandler(client),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function createChannelHandler(client) {
|
|
13
|
+
return {
|
|
14
|
+
async create(params, outputConfig) {
|
|
15
|
+
const response = await client.channel.createChannelV4(params);
|
|
16
|
+
if (outputConfig) {
|
|
17
|
+
return mapOutputFields(response, outputConfig);
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
channelId: response.channelId,
|
|
21
|
+
channelName: params['name'],
|
|
22
|
+
channelPasswd: response.channelPasswd,
|
|
23
|
+
userId: response.userId,
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
async rollback(resource) {
|
|
27
|
+
const channelId = resource['channelId'];
|
|
28
|
+
if (!channelId) {
|
|
29
|
+
throw new Error('Cannot rollback channel: channelId is missing');
|
|
30
|
+
}
|
|
31
|
+
const userId = resource['userId'] || resource['createdUserId'] || '';
|
|
32
|
+
await client.channel.deleteChannel(String(channelId), userId);
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function createWatchConditionHandler(client) {
|
|
37
|
+
return {
|
|
38
|
+
async create(params, outputConfig) {
|
|
39
|
+
const channelId = params['channelId'];
|
|
40
|
+
if (!channelId) {
|
|
41
|
+
throw new Error('channelId is required for watch condition');
|
|
42
|
+
}
|
|
43
|
+
const authSettings = params['authSettings'];
|
|
44
|
+
if (!authSettings || !Array.isArray(authSettings)) {
|
|
45
|
+
throw new Error('authSettings array is required for watch condition');
|
|
46
|
+
}
|
|
47
|
+
await client.channel.updateWatchCondition({
|
|
48
|
+
channelId: String(channelId),
|
|
49
|
+
authSettings: authSettings,
|
|
50
|
+
});
|
|
51
|
+
const result = {
|
|
52
|
+
channelId,
|
|
53
|
+
authSettings,
|
|
54
|
+
success: true,
|
|
55
|
+
};
|
|
56
|
+
if (outputConfig) {
|
|
57
|
+
return mapOutputFields(result, outputConfig);
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function createProductHandler(client) {
|
|
64
|
+
return {
|
|
65
|
+
async create(params, outputConfig) {
|
|
66
|
+
if (!params['channelId']) {
|
|
67
|
+
throw new Error('channelId is required for product creation');
|
|
68
|
+
}
|
|
69
|
+
const response = await client.channel.addChannelProduct(params);
|
|
70
|
+
if (outputConfig) {
|
|
71
|
+
return mapOutputFields(response, outputConfig);
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
productId: response.productId,
|
|
75
|
+
name: response.name,
|
|
76
|
+
channelId: params['channelId'],
|
|
77
|
+
};
|
|
78
|
+
},
|
|
79
|
+
async rollback(resource) {
|
|
80
|
+
const channelId = resource['channelId'];
|
|
81
|
+
const productId = resource['productId'];
|
|
82
|
+
if (!channelId || !productId) {
|
|
83
|
+
throw new Error('Cannot rollback product: channelId or productId is missing');
|
|
84
|
+
}
|
|
85
|
+
await client.channel.deleteChannelProduct({
|
|
86
|
+
channelId,
|
|
87
|
+
productId,
|
|
88
|
+
});
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function createCouponHandler(client) {
|
|
93
|
+
return {
|
|
94
|
+
async create(params, outputConfig) {
|
|
95
|
+
const couponId = await client.v4Platform.createCoupon(params);
|
|
96
|
+
if (outputConfig) {
|
|
97
|
+
return mapOutputFields({ couponId, ...params }, outputConfig);
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
couponId,
|
|
101
|
+
name: params['name'],
|
|
102
|
+
};
|
|
103
|
+
},
|
|
104
|
+
async rollback(resource) {
|
|
105
|
+
const couponId = resource['couponId'];
|
|
106
|
+
if (!couponId) {
|
|
107
|
+
throw new Error('Cannot rollback coupon: couponId is missing');
|
|
108
|
+
}
|
|
109
|
+
await client.v4Platform.deleteCouponsBatch({
|
|
110
|
+
couponIds: [couponId],
|
|
111
|
+
});
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function mapOutputFields(response, outputConfig) {
|
|
116
|
+
const result = {};
|
|
117
|
+
for (const [outputField, responsePath] of Object.entries(outputConfig)) {
|
|
118
|
+
const value = getNestedValue(response, responsePath);
|
|
119
|
+
if (value !== undefined) {
|
|
120
|
+
result[outputField] = value;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
function getNestedValue(obj, path) {
|
|
126
|
+
const parts = path.split('.');
|
|
127
|
+
let value = obj;
|
|
128
|
+
for (const part of parts) {
|
|
129
|
+
if (value === undefined || value === null) {
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
value = value[part];
|
|
133
|
+
}
|
|
134
|
+
return value;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=resource-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-handlers.js","sourceRoot":"","sources":["../../src/setup/resource-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export interface SceneResource {
|
|
2
|
+
id: string;
|
|
3
|
+
type: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
dependsOn?: string | string[];
|
|
6
|
+
params: Record<string, any>;
|
|
7
|
+
output: Record<string, string>;
|
|
8
|
+
}
|
|
9
|
+
export interface SceneConfig {
|
|
10
|
+
name: string;
|
|
11
|
+
version: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
metadata?: {
|
|
14
|
+
icon?: string;
|
|
15
|
+
category?: string;
|
|
16
|
+
tags?: string[];
|
|
17
|
+
};
|
|
18
|
+
resources: SceneResource[];
|
|
19
|
+
outputTemplate?: string;
|
|
20
|
+
nextSteps?: Array<{
|
|
21
|
+
command: string;
|
|
22
|
+
description: string;
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
25
|
+
export interface SceneInfo {
|
|
26
|
+
name: string;
|
|
27
|
+
description?: string | undefined;
|
|
28
|
+
icon?: string | undefined;
|
|
29
|
+
category?: string | undefined;
|
|
30
|
+
tags?: string[] | undefined;
|
|
31
|
+
resources?: number | undefined;
|
|
32
|
+
}
|
|
33
|
+
export declare class SceneConfigLoader {
|
|
34
|
+
private builtinScenesPath;
|
|
35
|
+
private userScenesPath;
|
|
36
|
+
constructor();
|
|
37
|
+
loadScene(name: string): Promise<SceneConfig>;
|
|
38
|
+
loadBuiltinScene(name: string): Promise<SceneConfig>;
|
|
39
|
+
loadUserScene(name: string): Promise<SceneConfig>;
|
|
40
|
+
listBuiltinScenes(): string[];
|
|
41
|
+
listUserScenes(): string[];
|
|
42
|
+
listAllScenes(): {
|
|
43
|
+
builtin: string[];
|
|
44
|
+
user: string[];
|
|
45
|
+
};
|
|
46
|
+
getSceneInfo(name: string): SceneInfo;
|
|
47
|
+
private loadSceneSync;
|
|
48
|
+
getExecutionOrder(config: SceneConfig): string[];
|
|
49
|
+
validateConfig(config: any): string[];
|
|
50
|
+
private validateOutputFieldRefs;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=scene-config-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-config-loader.d.ts","sourceRoot":"","sources":["../../src/setup/scene-config-loader.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,aAAa;IAE5B,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAKD,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IAEF,SAAS,EAAE,aAAa,EAAE,CAAC;IAE3B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAKD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AASD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAAS;;IAezB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAmB7C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgCpD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA+BvD,iBAAiB,IAAI,MAAM,EAAE;IAe7B,cAAc,IAAI,MAAM,EAAE;IAe1B,aAAa,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;IAYtD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAqBrC,OAAO,CAAC,aAAa;IAoBrB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE;IAkDhD,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE;IA0ErC,OAAO,CAAC,uBAAuB;CA6BhC"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.SceneConfigLoader = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const yaml = __importStar(require("js-yaml"));
|
|
41
|
+
const js_yaml_1 = require("js-yaml");
|
|
42
|
+
const SUPPORTED_RESOURCE_TYPES = ['channel', 'product', 'coupon', 'watchCondition'];
|
|
43
|
+
class SceneConfigLoader {
|
|
44
|
+
constructor() {
|
|
45
|
+
this.builtinScenesPath = path.join(__dirname, '..', 'setup-scenes');
|
|
46
|
+
this.userScenesPath = path.join(os.homedir(), '.polyv', 'scenes');
|
|
47
|
+
}
|
|
48
|
+
async loadScene(name) {
|
|
49
|
+
try {
|
|
50
|
+
return await this.loadBuiltinScene(name);
|
|
51
|
+
}
|
|
52
|
+
catch (builtinError) {
|
|
53
|
+
try {
|
|
54
|
+
return await this.loadUserScene(name);
|
|
55
|
+
}
|
|
56
|
+
catch (userError) {
|
|
57
|
+
throw new Error(`Scene "${name}" not found. Use 'setup --list' to see available scenes.`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async loadBuiltinScene(name) {
|
|
62
|
+
const scenePath = path.join(this.builtinScenesPath, `${name}.yaml`);
|
|
63
|
+
if (!fs.existsSync(scenePath)) {
|
|
64
|
+
throw new Error(`Builtin scene "${name}" not found`);
|
|
65
|
+
}
|
|
66
|
+
const content = fs.readFileSync(scenePath, 'utf-8');
|
|
67
|
+
let config;
|
|
68
|
+
try {
|
|
69
|
+
config = yaml.load(content);
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
if (e instanceof js_yaml_1.YAMLException) {
|
|
73
|
+
throw new Error(`Invalid YAML in builtin scene "${name}": ${e.message}`);
|
|
74
|
+
}
|
|
75
|
+
throw e;
|
|
76
|
+
}
|
|
77
|
+
const errors = this.validateConfig(config);
|
|
78
|
+
if (errors.length > 0) {
|
|
79
|
+
throw new Error(`Invalid scene config: ${errors.join(', ')}`);
|
|
80
|
+
}
|
|
81
|
+
return config;
|
|
82
|
+
}
|
|
83
|
+
async loadUserScene(name) {
|
|
84
|
+
const scenePath = path.join(this.userScenesPath, `${name}.yaml`);
|
|
85
|
+
if (!fs.existsSync(scenePath)) {
|
|
86
|
+
throw new Error(`User scene "${name}" not found`);
|
|
87
|
+
}
|
|
88
|
+
const content = fs.readFileSync(scenePath, 'utf-8');
|
|
89
|
+
let config;
|
|
90
|
+
try {
|
|
91
|
+
config = yaml.load(content);
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
if (e instanceof js_yaml_1.YAMLException) {
|
|
95
|
+
throw new Error(`Invalid YAML in user scene "${name}": ${e.message}`);
|
|
96
|
+
}
|
|
97
|
+
throw e;
|
|
98
|
+
}
|
|
99
|
+
const errors = this.validateConfig(config);
|
|
100
|
+
if (errors.length > 0) {
|
|
101
|
+
throw new Error(`Invalid scene config: ${errors.join(', ')}`);
|
|
102
|
+
}
|
|
103
|
+
return config;
|
|
104
|
+
}
|
|
105
|
+
listBuiltinScenes() {
|
|
106
|
+
if (!fs.existsSync(this.builtinScenesPath)) {
|
|
107
|
+
return [];
|
|
108
|
+
}
|
|
109
|
+
const files = fs.readdirSync(this.builtinScenesPath);
|
|
110
|
+
return files
|
|
111
|
+
.filter(file => file.endsWith('.yaml') || file.endsWith('.yml'))
|
|
112
|
+
.map(file => path.basename(file, path.extname(file)));
|
|
113
|
+
}
|
|
114
|
+
listUserScenes() {
|
|
115
|
+
if (!fs.existsSync(this.userScenesPath)) {
|
|
116
|
+
return [];
|
|
117
|
+
}
|
|
118
|
+
const files = fs.readdirSync(this.userScenesPath);
|
|
119
|
+
return files
|
|
120
|
+
.filter(file => file.endsWith('.yaml') || file.endsWith('.yml'))
|
|
121
|
+
.map(file => path.basename(file, path.extname(file)));
|
|
122
|
+
}
|
|
123
|
+
listAllScenes() {
|
|
124
|
+
return {
|
|
125
|
+
builtin: this.listBuiltinScenes(),
|
|
126
|
+
user: this.listUserScenes(),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
getSceneInfo(name) {
|
|
130
|
+
try {
|
|
131
|
+
const config = this.loadSceneSync(name);
|
|
132
|
+
const info = {
|
|
133
|
+
name: config.name,
|
|
134
|
+
resources: config.resources.length,
|
|
135
|
+
};
|
|
136
|
+
if (config.description)
|
|
137
|
+
info.description = config.description;
|
|
138
|
+
if (config.metadata?.icon)
|
|
139
|
+
info.icon = config.metadata.icon;
|
|
140
|
+
if (config.metadata?.category)
|
|
141
|
+
info.category = config.metadata.category;
|
|
142
|
+
if (config.metadata?.tags)
|
|
143
|
+
info.tags = config.metadata.tags;
|
|
144
|
+
return info;
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return { name };
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
loadSceneSync(name) {
|
|
151
|
+
let scenePath = path.join(this.builtinScenesPath, `${name}.yaml`);
|
|
152
|
+
if (!fs.existsSync(scenePath)) {
|
|
153
|
+
scenePath = path.join(this.userScenesPath, `${name}.yaml`);
|
|
154
|
+
}
|
|
155
|
+
if (!fs.existsSync(scenePath)) {
|
|
156
|
+
throw new Error(`Scene "${name}" not found`);
|
|
157
|
+
}
|
|
158
|
+
const content = fs.readFileSync(scenePath, 'utf-8');
|
|
159
|
+
return yaml.load(content);
|
|
160
|
+
}
|
|
161
|
+
getExecutionOrder(config) {
|
|
162
|
+
const resources = config.resources;
|
|
163
|
+
const ordered = [];
|
|
164
|
+
const visited = new Set();
|
|
165
|
+
const visiting = new Set();
|
|
166
|
+
const visit = (resource) => {
|
|
167
|
+
if (visited.has(resource.id)) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (visiting.has(resource.id)) {
|
|
171
|
+
throw new Error(`Circular dependency detected at resource "${resource.id}"`);
|
|
172
|
+
}
|
|
173
|
+
visiting.add(resource.id);
|
|
174
|
+
if (resource.dependsOn) {
|
|
175
|
+
const deps = Array.isArray(resource.dependsOn)
|
|
176
|
+
? resource.dependsOn
|
|
177
|
+
: [resource.dependsOn];
|
|
178
|
+
for (const depId of deps) {
|
|
179
|
+
const depResource = resources.find(r => r.id === depId);
|
|
180
|
+
if (!depResource) {
|
|
181
|
+
throw new Error(`Dependency "${depId}" not found for resource "${resource.id}"`);
|
|
182
|
+
}
|
|
183
|
+
visit(depResource);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
visiting.delete(resource.id);
|
|
187
|
+
visited.add(resource.id);
|
|
188
|
+
ordered.push(resource.id);
|
|
189
|
+
};
|
|
190
|
+
for (const resource of resources) {
|
|
191
|
+
visit(resource);
|
|
192
|
+
}
|
|
193
|
+
return ordered;
|
|
194
|
+
}
|
|
195
|
+
validateConfig(config) {
|
|
196
|
+
const errors = [];
|
|
197
|
+
if (!config.name || config.name.trim() === '') {
|
|
198
|
+
errors.push('name is required');
|
|
199
|
+
}
|
|
200
|
+
if (!config.version || config.version.trim() === '') {
|
|
201
|
+
errors.push('version is required');
|
|
202
|
+
}
|
|
203
|
+
if (!Array.isArray(config.resources) || config.resources.length === 0) {
|
|
204
|
+
errors.push('resources must not be empty');
|
|
205
|
+
return errors;
|
|
206
|
+
}
|
|
207
|
+
const resourceIds = config.resources.map((r) => r.id).filter((id) => typeof id === 'string');
|
|
208
|
+
const uniqueIds = new Set(resourceIds);
|
|
209
|
+
if (resourceIds.length !== uniqueIds.size) {
|
|
210
|
+
const duplicates = resourceIds.filter((id, index) => resourceIds.indexOf(id) !== index);
|
|
211
|
+
errors.push(`duplicate resource IDs detected: ${[...new Set(duplicates)].join(', ')}`);
|
|
212
|
+
}
|
|
213
|
+
const resourceIdSet = uniqueIds;
|
|
214
|
+
for (const resource of config.resources) {
|
|
215
|
+
if (!resource.id || resource.id.trim() === '') {
|
|
216
|
+
errors.push('resource id is required');
|
|
217
|
+
}
|
|
218
|
+
if (!resource.type) {
|
|
219
|
+
errors.push(`resource type is required for "${resource.id || 'unknown'}"`);
|
|
220
|
+
}
|
|
221
|
+
else if (!SUPPORTED_RESOURCE_TYPES.includes(resource.type)) {
|
|
222
|
+
errors.push(`invalid resource type: ${resource.type}`);
|
|
223
|
+
}
|
|
224
|
+
if (resource.dependsOn) {
|
|
225
|
+
const deps = Array.isArray(resource.dependsOn)
|
|
226
|
+
? resource.dependsOn
|
|
227
|
+
: [resource.dependsOn];
|
|
228
|
+
for (const dep of deps) {
|
|
229
|
+
if (!resourceIdSet.has(dep)) {
|
|
230
|
+
errors.push(`dependsOn references nonexistent resource "${dep}" in "${resource.id}"`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (resource.params && typeof resource.params === 'object') {
|
|
235
|
+
this.validateOutputFieldRefs(resource.params, resourceIdSet, resource.id, errors);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
try {
|
|
239
|
+
this.getExecutionOrder(config);
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
if (error instanceof Error && error.message.includes('Circular dependency')) {
|
|
243
|
+
errors.push('circular dependency detected');
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return errors;
|
|
247
|
+
}
|
|
248
|
+
validateOutputFieldRefs(obj, resourceIds, resourceId, errors) {
|
|
249
|
+
if (typeof obj === 'string') {
|
|
250
|
+
const refPattern = /\{([a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*)\}/g;
|
|
251
|
+
let match;
|
|
252
|
+
while ((match = refPattern.exec(obj)) !== null) {
|
|
253
|
+
const refPath = match[1];
|
|
254
|
+
if (refPath) {
|
|
255
|
+
const [refResourceId] = refPath.split('.');
|
|
256
|
+
if (refResourceId && !resourceIds.has(refResourceId)) {
|
|
257
|
+
errors.push(`reference to undefined resource "${refResourceId}" in "${resourceId}"`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
else if (Array.isArray(obj)) {
|
|
263
|
+
for (const item of obj) {
|
|
264
|
+
this.validateOutputFieldRefs(item, resourceIds, resourceId, errors);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else if (typeof obj === 'object' && obj !== null) {
|
|
268
|
+
for (const value of Object.values(obj)) {
|
|
269
|
+
this.validateOutputFieldRefs(value, resourceIds, resourceId, errors);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
exports.SceneConfigLoader = SceneConfigLoader;
|
|
275
|
+
//# sourceMappingURL=scene-config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-config-loader.js","sourceRoot":"","sources":["../../src/setup/scene-config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { PolyVClient } from '@polyv/live-api-sdk';
|
|
2
|
+
import { SceneConfig } from './scene-config-loader';
|
|
3
|
+
export interface ResourceResult {
|
|
4
|
+
id: string;
|
|
5
|
+
type: string;
|
|
6
|
+
output: Record<string, any>;
|
|
7
|
+
status: 'created' | 'would_create' | 'failed';
|
|
8
|
+
}
|
|
9
|
+
export interface ExecutionResult {
|
|
10
|
+
success: boolean;
|
|
11
|
+
resources: ResourceResult[];
|
|
12
|
+
duration?: number;
|
|
13
|
+
dryRun?: boolean;
|
|
14
|
+
resourceTimings?: Record<string, number>;
|
|
15
|
+
}
|
|
16
|
+
export interface ProgressEvent {
|
|
17
|
+
phase: 'creating' | 'created' | 'rolling_back' | 'rolled_back';
|
|
18
|
+
resourceId: string;
|
|
19
|
+
resourceType: string;
|
|
20
|
+
current?: number;
|
|
21
|
+
total?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface ExecutionOptions {
|
|
24
|
+
dryRun?: boolean;
|
|
25
|
+
timeout?: number;
|
|
26
|
+
onProgress?: (event: ProgressEvent) => void;
|
|
27
|
+
}
|
|
28
|
+
export declare class SceneExecutor {
|
|
29
|
+
private readonly handlers;
|
|
30
|
+
private readonly resolver;
|
|
31
|
+
private progressCallback?;
|
|
32
|
+
private lastExecution;
|
|
33
|
+
constructor(_client: PolyVClient);
|
|
34
|
+
setProgressCallback(callback: (event: ProgressEvent) => void): void;
|
|
35
|
+
getLastExecution(): {
|
|
36
|
+
rolledBack: string[];
|
|
37
|
+
failedAt?: string;
|
|
38
|
+
};
|
|
39
|
+
execute(config: SceneConfig, options?: ExecutionOptions): Promise<ExecutionResult>;
|
|
40
|
+
getExecutionOrder(config: SceneConfig): string[];
|
|
41
|
+
private reportProgress;
|
|
42
|
+
private trackCreatedResource;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=scene-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-executor.d.ts","sourceRoot":"","sources":["../../src/setup/scene-executor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAiB,MAAM,uBAAuB,CAAC;AAOnE,MAAM,WAAW,cAAc;IAE7B,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAEb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE5B,MAAM,EAAE,SAAS,GAAG,cAAc,GAAG,QAAQ,CAAC;CAC/C;AAKD,MAAM,WAAW,eAAe;IAE9B,OAAO,EAAE,OAAO,CAAC;IAEjB,SAAS,EAAE,cAAc,EAAE,CAAC;IAE5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAKD,MAAM,WAAW,aAAa;IAE5B,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,aAAa,CAAC;IAE/D,UAAU,EAAE,MAAM,CAAC;IAEnB,YAAY,EAAE,MAAM,CAAC;IAErB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,MAAM,WAAW,gBAAgB;IAE/B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAMD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,gBAAgB,CAAC,CAAiC;IAC1D,OAAO,CAAC,aAAa,CAGE;gBAEX,OAAO,EAAE,WAAW;IAUhC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAOnE,gBAAgB,IAAI;QAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAUzD,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAsI5F,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE;IAgDhD,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,oBAAoB;CAI7B"}
|