openxiangda-contracts 2.63.0 → 2.70.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.
- package/dist/ai.d.ts +1 -1
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +4 -3
- package/dist/ai.js.map +1 -1
- package/dist/browser.d.ts +6 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +6 -0
- package/dist/browser.js.map +1 -1
- package/dist/concurrency.d.ts +1 -1
- package/dist/concurrency.d.ts.map +1 -1
- package/dist/data-field-validation.js +7 -2
- package/dist/data-field-validation.js.map +1 -1
- package/dist/field-value-schemas.d.ts +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/native-compiler/actor-authority.d.ts +11 -0
- package/dist/native-compiler/actor-authority.d.ts.map +1 -0
- package/dist/native-compiler/actor-authority.js +56 -0
- package/dist/native-compiler/actor-authority.js.map +1 -0
- package/dist/native-compiler/artifact-capacity.d.ts +12 -0
- package/dist/native-compiler/artifact-capacity.d.ts.map +1 -0
- package/dist/native-compiler/artifact-capacity.js +34 -0
- package/dist/native-compiler/artifact-capacity.js.map +1 -0
- package/dist/native-compiler/authenticated-public-read.d.ts +18 -0
- package/dist/native-compiler/authenticated-public-read.d.ts.map +1 -0
- package/dist/native-compiler/authenticated-public-read.js +79 -0
- package/dist/native-compiler/authenticated-public-read.js.map +1 -0
- package/dist/native-compiler/compiler.d.ts +2 -21
- package/dist/native-compiler/compiler.d.ts.map +1 -1
- package/dist/native-compiler/compiler.js +213 -49
- package/dist/native-compiler/compiler.js.map +1 -1
- package/dist/native-compiler/data-business-command.d.ts +3 -1
- package/dist/native-compiler/data-business-command.d.ts.map +1 -1
- package/dist/native-compiler/data-business-command.js.map +1 -1
- package/dist/native-compiler/data-capacity.d.ts +25 -3
- package/dist/native-compiler/data-capacity.d.ts.map +1 -1
- package/dist/native-compiler/data-capacity.js +26 -3
- package/dist/native-compiler/data-capacity.js.map +1 -1
- package/dist/native-compiler/data-field.d.ts +22 -0
- package/dist/native-compiler/data-field.d.ts.map +1 -1
- package/dist/native-compiler/data-field.js +25 -4
- package/dist/native-compiler/data-field.js.map +1 -1
- package/dist/native-compiler/date-event-projection.d.ts +13 -0
- package/dist/native-compiler/date-event-projection.d.ts.map +1 -0
- package/dist/native-compiler/date-event-projection.js +71 -0
- package/dist/native-compiler/date-event-projection.js.map +1 -0
- package/dist/native-compiler/declaration-capacity.d.ts +60 -0
- package/dist/native-compiler/declaration-capacity.d.ts.map +1 -0
- package/dist/native-compiler/declaration-capacity.js +32 -0
- package/dist/native-compiler/declaration-capacity.js.map +1 -0
- package/dist/native-compiler/development-backend.d.ts +84 -0
- package/dist/native-compiler/development-backend.d.ts.map +1 -0
- package/dist/native-compiler/development-backend.js +77 -0
- package/dist/native-compiler/development-backend.js.map +1 -0
- package/dist/native-compiler/development-configuration.d.ts +65 -0
- package/dist/native-compiler/development-configuration.d.ts.map +1 -0
- package/dist/native-compiler/development-configuration.js +143 -0
- package/dist/native-compiler/development-configuration.js.map +1 -0
- package/dist/native-compiler/index.cjs +6 -6
- package/dist/native-compiler/index.d.ts +14 -0
- package/dist/native-compiler/index.d.ts.map +1 -1
- package/dist/native-compiler/index.js +6 -6
- package/dist/native-compiler/record-set-guard.d.ts +5 -0
- package/dist/native-compiler/record-set-guard.d.ts.map +1 -0
- package/dist/native-compiler/record-set-guard.js +27 -0
- package/dist/native-compiler/record-set-guard.js.map +1 -0
- package/dist/native-compiler/user-candidates.d.ts +9 -1
- package/dist/native-compiler/user-candidates.d.ts.map +1 -1
- package/dist/native-compiler/user-candidates.js +14 -1
- package/dist/native-compiler/user-candidates.js.map +1 -1
- package/dist/native-compiler/workflow-approved-delegation.d.ts +39 -0
- package/dist/native-compiler/workflow-approved-delegation.d.ts.map +1 -0
- package/dist/native-compiler/workflow-approved-delegation.js +94 -0
- package/dist/native-compiler/workflow-approved-delegation.js.map +1 -0
- package/dist/native-compiler/workflow-business-command.d.ts +2 -2
- package/dist/native-compiler/workflow-business-command.d.ts.map +1 -1
- package/dist/native-compiler/workflow-business-command.js +8 -4
- package/dist/native-compiler/workflow-business-command.js.map +1 -1
- package/dist/native-compiler/workflow-business-step.d.ts +4 -0
- package/dist/native-compiler/workflow-business-step.d.ts.map +1 -1
- package/dist/native-compiler/workflow-business-step.js +11 -6
- package/dist/native-compiler/workflow-business-step.js.map +1 -1
- package/dist/native-compiler/workflow-completion-deadline.d.ts +41 -0
- package/dist/native-compiler/workflow-completion-deadline.d.ts.map +1 -0
- package/dist/native-compiler/workflow-completion-deadline.js +40 -0
- package/dist/native-compiler/workflow-completion-deadline.js.map +1 -0
- package/dist/native-compiler/workflow-correction.d.ts +16 -0
- package/dist/native-compiler/workflow-correction.d.ts.map +1 -0
- package/dist/native-compiler/workflow-correction.js +42 -0
- package/dist/native-compiler/workflow-correction.js.map +1 -0
- package/dist/native-compiler/workflow-delegation-administration.d.ts +73 -0
- package/dist/native-compiler/workflow-delegation-administration.d.ts.map +1 -1
- package/dist/native-compiler/workflow-delegation-administration.js +6 -4
- package/dist/native-compiler/workflow-delegation-administration.js.map +1 -1
- package/dist/native-compiler/workflow-graph.d.ts +13 -2
- package/dist/native-compiler/workflow-graph.d.ts.map +1 -1
- package/dist/native-compiler/workflow-graph.js +20 -4
- package/dist/native-compiler/workflow-graph.js.map +1 -1
- package/dist/native-compiler/workflow-initiator-approval.d.ts +5 -1
- package/dist/native-compiler/workflow-initiator-approval.d.ts.map +1 -1
- package/dist/native-compiler/workflow-initiator-approval.js +18 -3
- package/dist/native-compiler/workflow-initiator-approval.js.map +1 -1
- package/dist/native-compiler/workflow-native-stage.d.ts +69 -0
- package/dist/native-compiler/workflow-native-stage.d.ts.map +1 -0
- package/dist/native-compiler/workflow-native-stage.js +42 -0
- package/dist/native-compiler/workflow-native-stage.js.map +1 -0
- package/dist/native-compiler/workflow-node-administration.d.ts +5 -1
- package/dist/native-compiler/workflow-node-administration.d.ts.map +1 -1
- package/dist/native-compiler/workflow-node-administration.js +17 -4
- package/dist/native-compiler/workflow-node-administration.js.map +1 -1
- package/dist/native-compiler/workflow-owned-subject.d.ts +60 -0
- package/dist/native-compiler/workflow-owned-subject.d.ts.map +1 -0
- package/dist/native-compiler/workflow-owned-subject.js +69 -0
- package/dist/native-compiler/workflow-owned-subject.js.map +1 -0
- package/dist/native-compiler/workflow-role-union.d.ts +31 -0
- package/dist/native-compiler/workflow-role-union.d.ts.map +1 -0
- package/dist/native-compiler/workflow-role-union.js +38 -0
- package/dist/native-compiler/workflow-role-union.js.map +1 -0
- package/dist/native-compiler/workflow-step-data.d.ts +28 -0
- package/dist/native-compiler/workflow-step-data.d.ts.map +1 -0
- package/dist/native-compiler/workflow-step-data.js +34 -0
- package/dist/native-compiler/workflow-step-data.js.map +1 -0
- package/dist/native-compiler/workflow-task-page.d.ts +11 -4
- package/dist/native-compiler/workflow-task-page.d.ts.map +1 -1
- package/dist/native-compiler/workflow-task-page.js +7 -5
- package/dist/native-compiler/workflow-task-page.js.map +1 -1
- package/dist/native-version.d.ts +22 -0
- package/dist/native-version.d.ts.map +1 -1
- package/dist/native-version.js +22 -0
- package/dist/native-version.js.map +1 -1
- package/dist/native.d.ts +9 -0
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js.map +1 -1
- package/dist/references.d.ts +2 -0
- package/dist/references.d.ts.map +1 -1
- package/dist/schemas.d.ts +1838 -80
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +153 -30
- package/dist/schemas.js.map +1 -1
- package/dist/surface.d.ts +1 -0
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js.map +1 -1
- package/dist/types.d.ts +89 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +30 -1
- package/dist/validation.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Declaration slots share the existing global byte, depth and JSON-node budgets. */
|
|
2
|
+
export const NATIVE_CONTRACT_CAPACITY_V2 = Object.freeze({
|
|
3
|
+
perspectives: 100, resources: 512, dataPolicies: 512, roles: 256,
|
|
4
|
+
subjectReadSurfaces: 50, capabilities: 4096, operations: 500,
|
|
5
|
+
eventConsumers: 100, eventProducers: 1000, eventSchemas: 100, eventTypes: 500,
|
|
6
|
+
workflows: 512, routes: 2048, adminPages: 2048,
|
|
7
|
+
adminNavigationGroups: 100, adminNavigationItems: 1024,
|
|
8
|
+
});
|
|
9
|
+
/** Shared slot projection; keep catalog generation and capability negotiation aligned. */
|
|
10
|
+
export function generatedCrudCapabilityOperations(resource) {
|
|
11
|
+
const native = (resource.surface?.mutationOwner || 'native') === 'native';
|
|
12
|
+
return ['query', 'get', 'create', 'update', 'delete'].filter(operation => {
|
|
13
|
+
const generated = resource.surface?.generated;
|
|
14
|
+
if (operation === 'query')
|
|
15
|
+
return generated?.list ?? true;
|
|
16
|
+
if (operation === 'get')
|
|
17
|
+
return generated?.detail ?? true;
|
|
18
|
+
return generated?.[operation] ?? native;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/** Derived from the sealed declaration; applications cannot assert support. */
|
|
22
|
+
export function requiresExtendedDeclarationCapacity(config) {
|
|
23
|
+
const catalogSlots = (config.data?.resources || []).filter(resource => resource.status !== 'retired')
|
|
24
|
+
.reduce((count, resource) => count + generatedCrudCapabilityOperations(resource).length, 0) +
|
|
25
|
+
(config.backend?.operations || []).filter(operation => operation.ai).length;
|
|
26
|
+
return (config.data?.resources?.length || 0) > 100 || (config.authz?.dataPolicies?.length || 0) > 100 ||
|
|
27
|
+
(config.authz?.roles?.length || 0) > 100 || (config.authz?.capabilities?.length || 0) > 2000 ||
|
|
28
|
+
[config.workflows?.definitions, config.workflows?.bindings, config.workflows?.activations].some(entries => (entries?.length || 0) > 100) ||
|
|
29
|
+
(config.frontend?.routes?.length || 0) > 500 || catalogSlots > 500 ||
|
|
30
|
+
(config.frontend?.admin?.navigation || []).reduce((count, group) => count + group.items.length, 0) > 500;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=declaration-capacity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declaration-capacity.js","sourceRoot":"","sources":["../../src/native-compiler/declaration-capacity.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,CAAC;IACvD,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG;IAChE,mBAAmB,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG;IAC5D,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG;IAC7E,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;IAC9C,qBAAqB,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI;CAC9C,CAAC,CAAC;AAGZ,0FAA0F;AAC1F,MAAM,UAAU,iCAAiC,CAAC,QAAyB;IACzE,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,IAAI,QAAQ,CAAC,KAAK,QAAQ,CAAC;IAC1E,OAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;QAClF,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;QAC9C,IAAI,SAAS,KAAK,OAAO;YAAE,OAAO,SAAS,EAAE,IAAI,IAAI,IAAI,CAAC;QAC1D,IAAI,SAAS,KAAK,KAAK;YAAE,OAAO,SAAS,EAAE,MAAM,IAAI,IAAI,CAAC;QAC1D,OAAO,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAQD,+EAA+E;AAC/E,MAAM,UAAU,mCAAmC,CAAC,MAAmB;IACrE,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC;SAClG,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,GAAG,iCAAiC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3F,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IAC9E,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG;QACnG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI;QAC5F,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACxI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,YAAY,GAAG,GAAG;QAClE,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;AAC7G,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/** Transport only: identity, business execution and receipts remain platform-owned. */
|
|
2
|
+
export declare const DEVELOPMENT_BACKEND_FEATURE = "application.development-backend-events";
|
|
3
|
+
export declare const DEVELOPMENT_BACKEND_SCHEMA = "openxiangda.development-backend/v1";
|
|
4
|
+
export declare const DEVELOPMENT_BACKEND_INVOCATION_FEATURE = "application.development-backend-invocations";
|
|
5
|
+
export declare const DEVELOPMENT_BACKEND_INVOCATION_SCHEMA = "openxiangda.development-backend-invocation/v1";
|
|
6
|
+
export declare const DEVELOPMENT_BACKEND_INVOCATION_MAX_REQUEST_BYTES: number;
|
|
7
|
+
export declare const DEVELOPMENT_BACKEND_INVOCATION_MAX_RESPONSE_BYTES: number;
|
|
8
|
+
export declare const DEVELOPMENT_BACKEND_MAX_RESPONSE_BYTES: number;
|
|
9
|
+
export declare const DEVELOPMENT_BACKEND_MAX_REQUEST_BYTES: number;
|
|
10
|
+
export declare const DEVELOPMENT_BACKEND_MAX_INFLIGHT = 8;
|
|
11
|
+
export declare const DEVELOPMENT_BACKEND_CONNECTION_TTL_SECONDS = 45;
|
|
12
|
+
export declare const DEVELOPMENT_BACKEND_ENDPOINT_PATTERN: RegExp;
|
|
13
|
+
/** Derived only from a compiler-validated config bundle, never a client flag. */
|
|
14
|
+
export declare function requiresDevelopmentBackendCredential(configuration: {
|
|
15
|
+
backend?: {
|
|
16
|
+
operations?: unknown[];
|
|
17
|
+
};
|
|
18
|
+
workflows?: {
|
|
19
|
+
providers?: unknown[];
|
|
20
|
+
};
|
|
21
|
+
events?: {
|
|
22
|
+
subscriptions?: Array<{
|
|
23
|
+
execution?: {
|
|
24
|
+
kind?: string;
|
|
25
|
+
};
|
|
26
|
+
}>;
|
|
27
|
+
};
|
|
28
|
+
}): boolean;
|
|
29
|
+
export interface DevelopmentBackendBootstrap {
|
|
30
|
+
schemaVersion: typeof DEVELOPMENT_BACKEND_SCHEMA;
|
|
31
|
+
sessionId: string;
|
|
32
|
+
environmentId: string;
|
|
33
|
+
appVersionId: string;
|
|
34
|
+
headRevision: number;
|
|
35
|
+
/** Explicit CLI/platform negotiation; absent for an event-only connection. */
|
|
36
|
+
invocationContract?: typeof DEVELOPMENT_BACKEND_INVOCATION_SCHEMA;
|
|
37
|
+
/** Private CLI -> local Nest environment, never browser or status output. */
|
|
38
|
+
secretEnvironment: Record<string, string>;
|
|
39
|
+
}
|
|
40
|
+
export interface DevelopmentBackendEventRequest {
|
|
41
|
+
schemaVersion: typeof DEVELOPMENT_BACKEND_SCHEMA;
|
|
42
|
+
requestId: string;
|
|
43
|
+
sessionId: string;
|
|
44
|
+
appVersionId: string;
|
|
45
|
+
headRevision: number;
|
|
46
|
+
endpointPath: string;
|
|
47
|
+
headers: Record<string, string>;
|
|
48
|
+
body: string;
|
|
49
|
+
timeoutMs: number;
|
|
50
|
+
expiresAt: string;
|
|
51
|
+
}
|
|
52
|
+
export interface DevelopmentBackendInvocationRequest extends Omit<DevelopmentBackendEventRequest, 'schemaVersion'> {
|
|
53
|
+
schemaVersion: typeof DEVELOPMENT_BACKEND_INVOCATION_SCHEMA;
|
|
54
|
+
method: string;
|
|
55
|
+
canonicalQuery: string;
|
|
56
|
+
/** The unique operation selected from the current sealed configuration. */
|
|
57
|
+
operation: {
|
|
58
|
+
code: string;
|
|
59
|
+
method: string;
|
|
60
|
+
path: string;
|
|
61
|
+
};
|
|
62
|
+
/** Canonical base64 of the exact signed body, including the empty body. */
|
|
63
|
+
body: string;
|
|
64
|
+
}
|
|
65
|
+
export type DevelopmentBackendRequest = DevelopmentBackendEventRequest | DevelopmentBackendInvocationRequest;
|
|
66
|
+
export interface DevelopmentBackendResponse {
|
|
67
|
+
requestId: string;
|
|
68
|
+
status: number;
|
|
69
|
+
body: string;
|
|
70
|
+
/** Invocation replies use canonical base64; old event replies remain UTF-8. */
|
|
71
|
+
schemaVersion?: typeof DEVELOPMENT_BACKEND_INVOCATION_SCHEMA;
|
|
72
|
+
headers?: Record<string, string>;
|
|
73
|
+
}
|
|
74
|
+
export declare function developmentBackendInvocationRevision(sessionId: string): string;
|
|
75
|
+
/** Invalid encodings are rejected before allocation. No binary/text round-trip. */
|
|
76
|
+
export declare function developmentBackendBase64Bytes(value: unknown): number | null;
|
|
77
|
+
export declare function developmentBackendOperationMatches(method: string, path: string, operation: {
|
|
78
|
+
method: string;
|
|
79
|
+
path: string;
|
|
80
|
+
}): boolean;
|
|
81
|
+
export declare function developmentBackendInvocationHeadersValid(value: unknown, response?: boolean): value is Record<string, string>;
|
|
82
|
+
/** Both sides enforce the same bounded invocation envelope before local dispatch. */
|
|
83
|
+
export declare function developmentBackendInvocationRequestValid(input: DevelopmentBackendInvocationRequest): boolean;
|
|
84
|
+
//# sourceMappingURL=development-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"development-backend.d.ts","sourceRoot":"","sources":["../../src/native-compiler/development-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/** Transport only: identity, business execution and receipts remain platform-owned. */
|
|
2
|
+
export const DEVELOPMENT_BACKEND_FEATURE = 'application.development-backend-events';
|
|
3
|
+
export const DEVELOPMENT_BACKEND_SCHEMA = 'openxiangda.development-backend/v1';
|
|
4
|
+
export const DEVELOPMENT_BACKEND_INVOCATION_FEATURE = 'application.development-backend-invocations';
|
|
5
|
+
export const DEVELOPMENT_BACKEND_INVOCATION_SCHEMA = 'openxiangda.development-backend-invocation/v1';
|
|
6
|
+
export const DEVELOPMENT_BACKEND_INVOCATION_MAX_REQUEST_BYTES = 256 * 1024;
|
|
7
|
+
export const DEVELOPMENT_BACKEND_INVOCATION_MAX_RESPONSE_BYTES = 1024 * 1024;
|
|
8
|
+
export const DEVELOPMENT_BACKEND_MAX_RESPONSE_BYTES = 128 * 1024;
|
|
9
|
+
export const DEVELOPMENT_BACKEND_MAX_REQUEST_BYTES = 128 * 1024;
|
|
10
|
+
export const DEVELOPMENT_BACKEND_MAX_INFLIGHT = 8;
|
|
11
|
+
export const DEVELOPMENT_BACKEND_CONNECTION_TTL_SECONDS = 45;
|
|
12
|
+
export const DEVELOPMENT_BACKEND_ENDPOINT_PATTERN = /^\/__platform\/events\/[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
|
|
13
|
+
/** Derived only from a compiler-validated config bundle, never a client flag. */
|
|
14
|
+
export function requiresDevelopmentBackendCredential(configuration) {
|
|
15
|
+
return (configuration.backend?.operations?.length || 0) > 0 ||
|
|
16
|
+
(configuration.workflows?.providers?.length || 0) > 0 ||
|
|
17
|
+
(configuration.events?.subscriptions || []).some(subscription => subscription.execution?.kind !== 'native-data');
|
|
18
|
+
}
|
|
19
|
+
export function developmentBackendInvocationRevision(sessionId) {
|
|
20
|
+
return `connected-development:${sessionId}`;
|
|
21
|
+
}
|
|
22
|
+
/** Invalid encodings are rejected before allocation. No binary/text round-trip. */
|
|
23
|
+
export function developmentBackendBase64Bytes(value) {
|
|
24
|
+
if (typeof value !== 'string' || value.length % 4 !== 0 ||
|
|
25
|
+
!/^[A-Za-z0-9+/]*={0,2}$/.test(value))
|
|
26
|
+
return null;
|
|
27
|
+
const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
28
|
+
const padding = value.endsWith('==') ? 2 : value.endsWith('=') ? 1 : 0;
|
|
29
|
+
if (padding && alphabet.indexOf(value[value.length - padding - 1]) % (padding === 2 ? 16 : 4) !== 0)
|
|
30
|
+
return null;
|
|
31
|
+
return value.length / 4 * 3 - padding;
|
|
32
|
+
}
|
|
33
|
+
export function developmentBackendOperationMatches(method, path, operation) {
|
|
34
|
+
if (!['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'].includes(method) || operation.method !== method ||
|
|
35
|
+
typeof path !== 'string' || path.length > 2048 || !path.startsWith('/') || path.startsWith('//') ||
|
|
36
|
+
path.startsWith('/__platform') || /[\\?#\s\u0000-\u001f\u007f]/.test(path))
|
|
37
|
+
return false;
|
|
38
|
+
const parts = path.split('/'), declared = String(operation.path || '').split('/');
|
|
39
|
+
if (parts.length !== declared.length)
|
|
40
|
+
return false;
|
|
41
|
+
return parts.every((part, index) => {
|
|
42
|
+
if (index === 0)
|
|
43
|
+
return declared[index] === '';
|
|
44
|
+
let decoded;
|
|
45
|
+
try {
|
|
46
|
+
decoded = decodeURIComponent(part);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
if (!decoded || ['.', '..'].includes(decoded) || /[\/\\\s\u0000-\u001f\u007f]/.test(decoded))
|
|
52
|
+
return false;
|
|
53
|
+
return /^:[A-Za-z][A-Za-z0-9_]*$/.test(declared[index] || '') || part === declared[index];
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const requestHeader = /^(?:authorization|content-type|content-length|accept|if-match|idempotency-key|x-request-id|x-openxiangda-(?:gateway-assertion|forwarded-by|perspective|csrf-token|mcp-bus-token))$/i;
|
|
57
|
+
const responseHeader = /^(?:content-type|content-disposition|cache-control|etag|last-modified|retry-after)$/i;
|
|
58
|
+
export function developmentBackendInvocationHeadersValid(value, response = false) {
|
|
59
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
60
|
+
return false;
|
|
61
|
+
const entries = Object.entries(value), names = entries.map(([key]) => key.toLowerCase());
|
|
62
|
+
return entries.length <= 24 && new Set(names).size === names.length && entries.every(([key, item]) => (response ? responseHeader : requestHeader).test(key) && typeof item === 'string' &&
|
|
63
|
+
item.length <= 8192 && !/[\r\n\u0000]/.test(item));
|
|
64
|
+
}
|
|
65
|
+
/** Both sides enforce the same bounded invocation envelope before local dispatch. */
|
|
66
|
+
export function developmentBackendInvocationRequestValid(input) {
|
|
67
|
+
const bytes = developmentBackendBase64Bytes(input.body);
|
|
68
|
+
return input.schemaVersion === DEVELOPMENT_BACKEND_INVOCATION_SCHEMA &&
|
|
69
|
+
!!input.operation && typeof input.operation.code === 'string' && input.operation.code.length <= 128 &&
|
|
70
|
+
input.operation.code.length > 0 && developmentBackendOperationMatches(input.method, input.endpointPath, input.operation) &&
|
|
71
|
+
typeof input.canonicalQuery === 'string' && input.canonicalQuery.length <= 8192 && !/[\s#\u0000-\u001f\u007f]/.test(input.canonicalQuery) &&
|
|
72
|
+
bytes !== null && bytes <= DEVELOPMENT_BACKEND_INVOCATION_MAX_REQUEST_BYTES &&
|
|
73
|
+
developmentBackendInvocationHeadersValid(input.headers) &&
|
|
74
|
+
Object.entries(input.headers).some(([key, value]) => key.toLowerCase() === 'authorization' && /^Bearer \S+$/.test(value)) &&
|
|
75
|
+
Object.entries(input.headers).some(([key, value]) => key.toLowerCase() === 'x-openxiangda-gateway-assertion' && !!value);
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=development-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"development-backend.js","sourceRoot":"","sources":["../../src/native-compiler/development-backend.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,CAAC,MAAM,2BAA2B,GAAG,wCAAwC,CAAC;AACpF,MAAM,CAAC,MAAM,0BAA0B,GAAG,oCAAoC,CAAC;AAC/E,MAAM,CAAC,MAAM,sCAAsC,GAAG,6CAA6C,CAAC;AACpG,MAAM,CAAC,MAAM,qCAAqC,GAAG,+CAA+C,CAAC;AACrG,MAAM,CAAC,MAAM,gDAAgD,GAAG,GAAG,GAAG,IAAI,CAAC;AAC3E,MAAM,CAAC,MAAM,iDAAiD,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7E,MAAM,CAAC,MAAM,sCAAsC,GAAG,GAAG,GAAG,IAAI,CAAC;AACjE,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,GAAG,IAAI,CAAC;AAChE,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,0CAA0C,GAAG,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,oCAAoC,GAAG,uDAAuD,CAAC;AAE5G,iFAAiF;AACjF,MAAM,UAAU,oCAAoC,CAAC,aAIpD;IACC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QACzD,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QACrD,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,KAAK,aAAa,CAAC,CAAC;AACrH,CAAC;AA4CD,MAAM,UAAU,oCAAoC,CAAC,SAAiB;IACpE,OAAO,yBAAyB,SAAS,EAAE,CAAC;AAC9C,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;QACrD,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,QAAQ,GAAG,kEAAkE,CAAC;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAAE,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClH,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,MAAc,EAAE,IAAY,EAC7E,SAA2C;IAC3C,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM;QAC/G,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAChG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClF,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACnD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjC,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/C,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;QACnE,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3G,OAAO,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,aAAa,GAAG,qLAAqL,CAAC;AAC5M,MAAM,cAAc,GAAG,sFAAsF,CAAC;AAC9G,MAAM,UAAU,wCAAwC,CAAC,KAAc,EAAE,QAAQ,GAAG,KAAK;IACvF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACzF,OAAO,OAAO,CAAC,MAAM,IAAI,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CACnG,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ;QACjF,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,wCAAwC,CAAC,KAA0C;IACjG,MAAM,KAAK,GAAG,6BAA6B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,aAAa,KAAK,qCAAqC;QAClE,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG;QACnG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,kCAAkC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;QACxH,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QACzI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,gDAAgD;QAC3E,wCAAwC,CAAC,KAAK,CAAC,OAAO,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,eAAe,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzH,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,iCAAiC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7H,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { ConfigurationBundleV3, ContractBundleV3 } from "../native.js";
|
|
2
|
+
export declare const DEVELOPMENT_CONFIGURATION_SCHEMA = "openxiangda.development-configuration/v1";
|
|
3
|
+
export declare const DEVELOPMENT_CONFIGURATION_MANIFEST_SCHEMA = "openxiangda.development-configuration-manifest/v1";
|
|
4
|
+
export declare const DEVELOPMENT_CONFIGURATION_FEATURE = "application.development-configuration";
|
|
5
|
+
export declare const DEVELOPMENT_CONFIGURATION_ENDPOINT = "/openxiangda-api/v2/applications/{appCode}/dev-sessions/configuration";
|
|
6
|
+
export interface DevelopmentConfigurationInput {
|
|
7
|
+
schemaVersion: typeof DEVELOPMENT_CONFIGURATION_SCHEMA;
|
|
8
|
+
environmentKey: "preproduction";
|
|
9
|
+
expectedHeadRevision: number;
|
|
10
|
+
configDigest: string;
|
|
11
|
+
contractDigest: string;
|
|
12
|
+
configuration: ConfigurationBundleV3;
|
|
13
|
+
contract: ContractBundleV3;
|
|
14
|
+
source: {
|
|
15
|
+
repository: string | null;
|
|
16
|
+
commit: string | null;
|
|
17
|
+
dirty: boolean;
|
|
18
|
+
};
|
|
19
|
+
toolchainVersion: string;
|
|
20
|
+
}
|
|
21
|
+
export interface DevelopmentConfigurationManifest {
|
|
22
|
+
schemaVersion: typeof DEVELOPMENT_CONFIGURATION_MANIFEST_SCHEMA;
|
|
23
|
+
appCode: string;
|
|
24
|
+
version: string;
|
|
25
|
+
configDigest: string;
|
|
26
|
+
contractDigest: string;
|
|
27
|
+
source: DevelopmentConfigurationInput["source"];
|
|
28
|
+
toolchain: {
|
|
29
|
+
version: string;
|
|
30
|
+
contractVersion: string;
|
|
31
|
+
};
|
|
32
|
+
artifacts: Array<{
|
|
33
|
+
kind: "config" | "contracts";
|
|
34
|
+
digest: string;
|
|
35
|
+
mediaType: "application/json";
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
export interface DevelopmentConfigurationResult {
|
|
39
|
+
schemaVersion: typeof DEVELOPMENT_CONFIGURATION_SCHEMA;
|
|
40
|
+
appCode: string;
|
|
41
|
+
environmentKey: "preproduction";
|
|
42
|
+
environmentId: string;
|
|
43
|
+
appVersionId: string;
|
|
44
|
+
configurationRunId: string;
|
|
45
|
+
headRevision: number;
|
|
46
|
+
configDigest: string;
|
|
47
|
+
contractDigest: string;
|
|
48
|
+
reused: boolean;
|
|
49
|
+
runtimeArtifactsDeployed: false;
|
|
50
|
+
backendEventsAvailable: false;
|
|
51
|
+
}
|
|
52
|
+
export declare class DevelopmentConfigurationContractError extends Error {
|
|
53
|
+
readonly code: string;
|
|
54
|
+
readonly pointer: string;
|
|
55
|
+
readonly status = 400;
|
|
56
|
+
readonly data: {
|
|
57
|
+
pointer: string;
|
|
58
|
+
};
|
|
59
|
+
constructor(code: string, pointer: string);
|
|
60
|
+
}
|
|
61
|
+
export declare function assertDevelopmentConfigurationManifest(value: unknown): DevelopmentConfigurationManifest;
|
|
62
|
+
export declare function createDevelopmentConfigurationManifest(appCode: string, input: DevelopmentConfigurationInput): DevelopmentConfigurationManifest;
|
|
63
|
+
export declare function developmentConfigurationKey(manifest: DevelopmentConfigurationManifest, expectedHeadRevision: number): string;
|
|
64
|
+
export declare function assertDevelopmentConfigurationResult(value: unknown, appCode: string, input: Pick<DevelopmentConfigurationInput, "configDigest" | "contractDigest" | "expectedHeadRevision">): DevelopmentConfigurationResult;
|
|
65
|
+
//# sourceMappingURL=development-configuration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"development-configuration.d.ts","sourceRoot":"","sources":["../../src/native-compiler/development-configuration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAG5E,eAAO,MAAM,gCAAgC,6CACD,CAAC;AAC7C,eAAO,MAAM,yCAAyC,sDACD,CAAC;AACtD,eAAO,MAAM,iCAAiC,0CACL,CAAC;AAC1C,eAAO,MAAM,kCAAkC,0EAC0B,CAAC;AAE1E,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,OAAO,gCAAgC,CAAC;IACvD,cAAc,EAAE,eAAe,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,qBAAqB,CAAC;IACrC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7E,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,OAAO,yCAAyC,CAAC;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IAChD,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,kBAAkB,CAAC;KAC/B,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,8BAA8B;IAC7C,aAAa,EAAE,OAAO,gCAAgC,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,eAAe,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,wBAAwB,EAAE,KAAK,CAAC;IAChC,sBAAsB,EAAE,KAAK,CAAC;CAC/B;AAED,qBAAa,qCAAsC,SAAQ,KAAK;IAGlD,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM;IAF3D,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;gBACd,IAAI,EAAE,MAAM,EAAW,OAAO,EAAE,MAAM;CAI5D;AASD,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,OAAO,GACb,gCAAgC,CAgElC;AAED,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,6BAA6B,GACnC,gCAAgC,CAyBlC;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,gCAAgC,EAC1C,oBAAoB,EAAE,MAAM,GAC3B,MAAM,CAIR;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,IAAI,CACT,6BAA6B,EAC7B,cAAc,GAAG,gBAAgB,GAAG,sBAAsB,CAC3D,GACA,8BAA8B,CAuChC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { canonicalJson, sha256Digest } from "../canonical.js";
|
|
2
|
+
import { OPENXIANGDA_CONTRACT_VERSION } from "../native-version.js";
|
|
3
|
+
export const DEVELOPMENT_CONFIGURATION_SCHEMA = "openxiangda.development-configuration/v1";
|
|
4
|
+
export const DEVELOPMENT_CONFIGURATION_MANIFEST_SCHEMA = "openxiangda.development-configuration-manifest/v1";
|
|
5
|
+
export const DEVELOPMENT_CONFIGURATION_FEATURE = "application.development-configuration";
|
|
6
|
+
export const DEVELOPMENT_CONFIGURATION_ENDPOINT = "/openxiangda-api/v2/applications/{appCode}/dev-sessions/configuration";
|
|
7
|
+
export class DevelopmentConfigurationContractError extends Error {
|
|
8
|
+
code;
|
|
9
|
+
pointer;
|
|
10
|
+
status = 400;
|
|
11
|
+
data;
|
|
12
|
+
constructor(code, pointer) {
|
|
13
|
+
super(code);
|
|
14
|
+
this.code = code;
|
|
15
|
+
this.pointer = pointer;
|
|
16
|
+
this.data = { pointer };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function fail(pointer) {
|
|
20
|
+
throw new DevelopmentConfigurationContractError("OPENXIANGDA_CONNECTED_DEV_CONFIGURATION_INVALID", pointer);
|
|
21
|
+
}
|
|
22
|
+
export function assertDevelopmentConfigurationManifest(value) {
|
|
23
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
24
|
+
fail("/packageManifest");
|
|
25
|
+
const m = value;
|
|
26
|
+
const keys = [
|
|
27
|
+
"schemaVersion",
|
|
28
|
+
"appCode",
|
|
29
|
+
"version",
|
|
30
|
+
"configDigest",
|
|
31
|
+
"contractDigest",
|
|
32
|
+
"source",
|
|
33
|
+
"toolchain",
|
|
34
|
+
"artifacts",
|
|
35
|
+
];
|
|
36
|
+
if (Object.keys(m).some((key) => !keys.includes(key)) ||
|
|
37
|
+
m.schemaVersion !== DEVELOPMENT_CONFIGURATION_MANIFEST_SCHEMA ||
|
|
38
|
+
typeof m.appCode !== "string" ||
|
|
39
|
+
!/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/.test(m.appCode) ||
|
|
40
|
+
!/^[a-f0-9]{64}$/.test(m.configDigest) ||
|
|
41
|
+
!/^[a-f0-9]{64}$/.test(m.contractDigest) ||
|
|
42
|
+
m.version !== `development-${m.configDigest}`)
|
|
43
|
+
fail("/packageManifest");
|
|
44
|
+
if (!m.source ||
|
|
45
|
+
typeof m.source !== "object" ||
|
|
46
|
+
Array.isArray(m.source) ||
|
|
47
|
+
Object.keys(m.source).some((key) => !["repository", "commit", "dirty"].includes(key)) ||
|
|
48
|
+
![null, "string"].includes(m.source.repository === null ? null : typeof m.source.repository) ||
|
|
49
|
+
(m.source.repository !== null &&
|
|
50
|
+
(m.source.repository.length > 1024 ||
|
|
51
|
+
/[\r\n\0]/.test(m.source.repository))) ||
|
|
52
|
+
(m.source.commit !== null &&
|
|
53
|
+
(typeof m.source.commit !== "string" ||
|
|
54
|
+
!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(m.source.commit))) ||
|
|
55
|
+
typeof m.source.dirty !== "boolean")
|
|
56
|
+
fail("/packageManifest/source");
|
|
57
|
+
if (!m.toolchain ||
|
|
58
|
+
Object.keys(m.toolchain).some((key) => !["version", "contractVersion"].includes(key)) ||
|
|
59
|
+
typeof m.toolchain.version !== "string" ||
|
|
60
|
+
!/^[A-Za-z0-9][A-Za-z0-9.+_-]{0,127}$/.test(m.toolchain.version) ||
|
|
61
|
+
m.toolchain.contractVersion !== OPENXIANGDA_CONTRACT_VERSION)
|
|
62
|
+
fail("/packageManifest/toolchain");
|
|
63
|
+
const artifacts = [
|
|
64
|
+
{ kind: "config", digest: m.configDigest, mediaType: "application/json" },
|
|
65
|
+
{
|
|
66
|
+
kind: "contracts",
|
|
67
|
+
digest: m.contractDigest,
|
|
68
|
+
mediaType: "application/json",
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
if (canonicalJson(m.artifacts) !== canonicalJson(artifacts))
|
|
72
|
+
fail("/packageManifest/artifacts");
|
|
73
|
+
return m;
|
|
74
|
+
}
|
|
75
|
+
export function createDevelopmentConfigurationManifest(appCode, input) {
|
|
76
|
+
return assertDevelopmentConfigurationManifest({
|
|
77
|
+
schemaVersion: DEVELOPMENT_CONFIGURATION_MANIFEST_SCHEMA,
|
|
78
|
+
appCode,
|
|
79
|
+
version: `development-${input.configDigest}`,
|
|
80
|
+
configDigest: input.configDigest,
|
|
81
|
+
contractDigest: input.contractDigest,
|
|
82
|
+
source: { ...input.source },
|
|
83
|
+
toolchain: {
|
|
84
|
+
version: input.toolchainVersion,
|
|
85
|
+
contractVersion: OPENXIANGDA_CONTRACT_VERSION,
|
|
86
|
+
},
|
|
87
|
+
artifacts: [
|
|
88
|
+
{
|
|
89
|
+
kind: "config",
|
|
90
|
+
digest: input.configDigest,
|
|
91
|
+
mediaType: "application/json",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
kind: "contracts",
|
|
95
|
+
digest: input.contractDigest,
|
|
96
|
+
mediaType: "application/json",
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
export function developmentConfigurationKey(manifest, expectedHeadRevision) {
|
|
102
|
+
if (!Number.isSafeInteger(expectedHeadRevision) || expectedHeadRevision < 1)
|
|
103
|
+
fail("/expectedHeadRevision");
|
|
104
|
+
return `development:${sha256Digest({ manifest, expectedHeadRevision })}`;
|
|
105
|
+
}
|
|
106
|
+
export function assertDevelopmentConfigurationResult(value, appCode, input) {
|
|
107
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
108
|
+
fail("/result");
|
|
109
|
+
const r = value;
|
|
110
|
+
const keys = [
|
|
111
|
+
"schemaVersion",
|
|
112
|
+
"appCode",
|
|
113
|
+
"environmentKey",
|
|
114
|
+
"environmentId",
|
|
115
|
+
"appVersionId",
|
|
116
|
+
"configurationRunId",
|
|
117
|
+
"headRevision",
|
|
118
|
+
"configDigest",
|
|
119
|
+
"contractDigest",
|
|
120
|
+
"reused",
|
|
121
|
+
"runtimeArtifactsDeployed",
|
|
122
|
+
"backendEventsAvailable",
|
|
123
|
+
];
|
|
124
|
+
const uuid = /^[a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/i;
|
|
125
|
+
if (Object.keys(r).some((key) => !keys.includes(key)) ||
|
|
126
|
+
r.schemaVersion !== DEVELOPMENT_CONFIGURATION_SCHEMA ||
|
|
127
|
+
r.appCode !== appCode ||
|
|
128
|
+
r.environmentKey !== "preproduction" ||
|
|
129
|
+
r.configDigest !== input.configDigest ||
|
|
130
|
+
r.contractDigest !== input.contractDigest ||
|
|
131
|
+
!uuid.test(r.environmentId) ||
|
|
132
|
+
!uuid.test(r.appVersionId) ||
|
|
133
|
+
!uuid.test(r.configurationRunId) ||
|
|
134
|
+
typeof r.reused !== "boolean" ||
|
|
135
|
+
!Number.isSafeInteger(r.headRevision) ||
|
|
136
|
+
r.headRevision < 1 ||
|
|
137
|
+
(!r.reused && r.headRevision !== input.expectedHeadRevision + 1) ||
|
|
138
|
+
r.runtimeArtifactsDeployed !== false ||
|
|
139
|
+
r.backendEventsAvailable !== false)
|
|
140
|
+
fail("/result");
|
|
141
|
+
return r;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=development-configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"development-configuration.js","sourceRoot":"","sources":["../../src/native-compiler/development-configuration.ts"],"names":[],"mappings":"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"}
|