openxiangda-devkit-core 2.23.0 → 2.24.0

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.
@@ -0,0 +1,51 @@
1
+ import { ControlPlaneError } from './control-plane-client.js';
2
+ import { assertApplicationContractCompatible, assertRequiredCapabilitiesAvailable } from './deployment.js';
3
+ /** Read-only preflight. Capability gaps do not conceal independent configuration gaps. */
4
+ export async function collectTargetReadiness(input) {
5
+ const target = { site: input.site, appCode: input.appCode, environmentKey: input.environmentKey,
6
+ platformVersion: input.capabilities.platformVersion, observedAt: new Date().toISOString() };
7
+ try {
8
+ assertApplicationContractCompatible(input.capabilities, input.required);
9
+ }
10
+ catch (error) {
11
+ throw withTarget(error, target);
12
+ }
13
+ let capabilityError;
14
+ try {
15
+ assertRequiredCapabilitiesAvailable(input.capabilities, input.requiredCapabilities);
16
+ }
17
+ catch (error) {
18
+ if (!(error instanceof ControlPlaneError))
19
+ throw error;
20
+ capabilityError = error;
21
+ }
22
+ let result;
23
+ let configurationError;
24
+ try {
25
+ result = await input.inspect();
26
+ }
27
+ catch (error) {
28
+ configurationError = error;
29
+ }
30
+ const first = capabilityError || configurationError;
31
+ if (first) {
32
+ const unavailable = capabilityError?.data?.unavailable || [];
33
+ const data = configurationError instanceof ControlPlaneError ? objectData(configurationError.data) : {};
34
+ const issues = [
35
+ ...unavailable.map((item) => ({ code: 'OPENXIANGDA_REQUIRED_CAPABILITY_UNAVAILABLE', pointer: `/requiredPlatformCapabilities/${item.code}`, capability: item })),
36
+ ...(Array.isArray(data.issues) ? data.issues : configurationError ? [{ code: configurationError instanceof ControlPlaneError ? configurationError.code : 'OPENXIANGDA_DEPLOYMENT_PREFLIGHT_UNAVAILABLE', pointer: typeof data.pointer === 'string' ? data.pointer : '/' }] : []),
37
+ ];
38
+ throw withTarget(first, target, { ...data, unavailable, issues,
39
+ ...(configurationError instanceof ControlPlaneError && configurationError.remote?.requestId ? { configurationRequestId: configurationError.remote.requestId } : {}) });
40
+ }
41
+ return { result: result, target };
42
+ }
43
+ function objectData(value) {
44
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
45
+ }
46
+ function withTarget(error, target, extra = {}) {
47
+ if (error instanceof ControlPlaneError)
48
+ return new ControlPlaneError(error.status, error.code, error.message, { ...objectData(error.data), ...extra, target }, error.remote);
49
+ return new ControlPlaneError(503, 'OPENXIANGDA_DEPLOYMENT_PREFLIGHT_UNAVAILABLE', '目标只读预检暂时不可用,请按同一目标重新检查', { ...extra, target });
50
+ }
51
+ //# sourceMappingURL=target-readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-readiness.js","sourceRoot":"","sources":["../src/target-readiness.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda-devkit-core",
3
- "version": "2.23.0",
3
+ "version": "2.24.0",
4
4
  "description": "OpenXiangda 2.0 的编译、开发、检查、部署与中文资料服务。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -31,7 +31,7 @@
31
31
  "dependencies": {
32
32
  "ajv": "8.20.0",
33
33
  "cron-parser": "5.4.0",
34
- "openxiangda-contracts": "2.21.0",
34
+ "openxiangda-contracts": "2.22.0",
35
35
  "esbuild": "0.28.2",
36
36
  "typescript": "5.9.3",
37
37
  "undici": "6.28.0"