@vmz/vmz 0.0.2 → 0.0.4
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/README.md +19 -13
- package/dist/application-cmd.d.ts +1 -2
- package/dist/application-cmd.js +9 -10
- package/dist/bundler-adapter.d.ts +2 -3
- package/dist/bundler-adapter.js +2 -3
- package/dist/cdn-policy.d.ts +178 -0
- package/dist/cdn-policy.js +344 -0
- package/dist/cli.d.ts +10 -2
- package/dist/cli.js +179 -16
- package/dist/content-addressed-assets.d.ts +69 -0
- package/dist/content-addressed-assets.js +206 -0
- package/dist/dev-session.d.ts +2 -2
- package/dist/dev-session.js +51 -16
- package/dist/document-build.js +1 -2
- package/dist/document-check.d.ts +1 -1
- package/dist/document-check.js +4 -4
- package/dist/document-cmd.d.ts +1 -2
- package/dist/document-cmd.js +2 -3
- package/dist/document-designs.js +31 -3
- package/dist/document-enrich.js +2 -3
- package/dist/document-evidence.d.ts +4 -4
- package/dist/document-evidence.js +20 -12
- package/dist/document-integrate.d.ts +0 -1
- package/dist/document-integrate.js +0 -1
- package/dist/document-interactive.d.ts +11 -11
- package/dist/document-interactive.js +12 -13
- package/dist/document-locale.d.ts +1 -1
- package/dist/document-locale.js +1 -1
- package/dist/document-markdown.d.ts +1 -2
- package/dist/document-markdown.js +13 -7
- package/dist/document-scan.d.ts +4 -4
- package/dist/document-scan.js +4 -4
- package/dist/document-schema.d.ts +28 -29
- package/dist/document-schema.js +28 -29
- package/dist/explain-cmd.js +3 -3
- package/dist/index.d.ts +349 -789
- package/dist/index.js +109 -85
- package/dist/invocation.d.ts +68 -0
- package/dist/invocation.js +169 -0
- package/dist/locale-check.d.ts +19 -3
- package/dist/locale-check.js +130 -6
- package/dist/locale-cmd.js +6 -7
- package/dist/locale-delivery.d.ts +38 -38
- package/dist/locale-delivery.js +39 -40
- package/dist/locale-router.d.ts +39 -40
- package/dist/locale-router.js +39 -40
- package/dist/locale-runtime.d.ts +39 -39
- package/dist/locale-runtime.js +44 -45
- package/dist/locale-schema.d.ts +1 -2
- package/dist/locale-schema.js +1 -2
- package/dist/locale-tooling.d.ts +13 -13
- package/dist/locale-tooling.js +14 -15
- package/dist/log.d.ts +1 -1
- package/dist/log.js +1 -1
- package/dist/packages.d.ts +1 -2
- package/dist/packages.js +1 -2
- package/dist/plugin-host.d.ts +11 -3
- package/dist/plugin-host.js +21 -5
- package/dist/port.d.ts +10 -0
- package/dist/port.js +46 -0
- package/dist/production-observability.d.ts +286 -0
- package/dist/production-observability.js +469 -0
- package/dist/production-test-pack.d.ts +158 -0
- package/dist/production-test-pack.js +452 -0
- package/dist/refactor-cmd.d.ts +1 -1
- package/dist/refactor-cmd.js +6 -6
- package/dist/release-cmd.d.ts +8 -0
- package/dist/release-cmd.js +126 -0
- package/dist/release-pack.d.ts +96 -0
- package/dist/release-pack.js +337 -0
- package/dist/resolve-native-cli.d.ts +14 -0
- package/dist/resolve-native-cli.js +84 -0
- package/dist/resolve.d.ts +1 -2
- package/dist/resolve.js +1 -2
- package/dist/site-delivery.d.ts +134 -0
- package/dist/site-delivery.js +345 -0
- package/dist/static-emit.d.ts +136 -0
- package/dist/static-emit.js +463 -0
- package/dist/test-cmd.d.ts +2 -2
- package/dist/test-cmd.js +37 -17
- package/dist/watch-diff.d.ts +1 -1
- package/dist/watch-diff.js +1 -1
- package/package.json +32 -17
package/dist/locale-tooling.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
/**
|
|
3
|
-
* Locale
|
|
4
|
-
* Design: 规划设计/vmz/28 §12–§13
|
|
3
|
+
* Locale tooling: explain · diff · extract · pseudo · cross-host conformance.
|
|
5
4
|
*/
|
|
6
5
|
import fs from 'node:fs';
|
|
7
6
|
import path from 'node:path';
|
|
@@ -11,10 +10,10 @@ import { assertHostMessageInvariant, buildLocaleDeliveryResolution } from './loc
|
|
|
11
10
|
/**
|
|
12
11
|
* Explain one MessageId: definition, params, variants, fallback, delivery reachability.
|
|
13
12
|
* @param {{
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
13
|
+
* messageId: string,
|
|
14
|
+
* locale?: string|null,
|
|
15
|
+
* deliveryId?: string|null,
|
|
16
|
+
* checkReport: any,
|
|
18
17
|
* }} input
|
|
19
18
|
*/
|
|
20
19
|
export function explainLocaleMessage(input) {
|
|
@@ -81,9 +80,9 @@ export function explainLocaleMessage(input) {
|
|
|
81
80
|
/**
|
|
82
81
|
* Diff two locales' catalogs.
|
|
83
82
|
* @param {{
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
83
|
+
* baseLocale: string,
|
|
84
|
+
* targetLocale: string,
|
|
85
|
+
* messages: Array<{ messageId: string, variants: Record<string, { template: string, params?: any[] }> }>,
|
|
87
86
|
* }} input
|
|
88
87
|
*/
|
|
89
88
|
export function diffLocaleCatalogs(input) {
|
|
@@ -250,9 +249,9 @@ export function extractHardcodedText(projectRoot, opts = {}) {
|
|
|
250
249
|
* Pseudo-localize a source locale for layout/overflow testing.
|
|
251
250
|
* Preserves ICU placeholders; marks provenance — never a production fallback.
|
|
252
251
|
* @param {{
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
252
|
+
* sourceLocale: string,
|
|
253
|
+
* messages: Array<{ messageId: string, variants: Record<string, { template: string }> }>,
|
|
254
|
+
* production?: boolean,
|
|
256
255
|
* }} input
|
|
257
256
|
*/
|
|
258
257
|
export function pseudoLocalizeCatalog(input) {
|
|
@@ -296,9 +295,9 @@ export function pseudoLocalizeCatalog(input) {
|
|
|
296
295
|
/**
|
|
297
296
|
* Cross-host conformance: same MessageId set + catalog hashes + formatter version.
|
|
298
297
|
* @param {{
|
|
299
|
-
*
|
|
300
|
-
*
|
|
301
|
-
*
|
|
298
|
+
* manifest: any,
|
|
299
|
+
* messages: any[],
|
|
300
|
+
* routeIds?: string[],
|
|
302
301
|
* }} input
|
|
303
302
|
*/
|
|
304
303
|
export function checkLocaleConformance(input) {
|
package/dist/log.d.ts
CHANGED
package/dist/log.js
CHANGED
package/dist/packages.d.ts
CHANGED
package/dist/packages.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
/**
|
|
3
|
-
* npm / pnpm workspace package resolution helpers (
|
|
4
|
-
* Design: `规划设计/vmz/14` — Node owns package resolution; Rust owns semantics.
|
|
3
|
+
* npm / pnpm workspace package resolution helpers (session).
|
|
5
4
|
*/
|
|
6
5
|
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
7
6
|
import path from 'node:path';
|
package/dist/plugin-host.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Plugin protocol v1 helpers
|
|
3
|
-
* Design: 瑙勫垝璁捐/vmz/14-Node-NAPI涓庢彃浠跺涓?md
|
|
2
|
+
* Plugin protocol v1 helpers + typed config loading.
|
|
4
3
|
*/
|
|
5
4
|
import { contentHash, defineConfig, definePlugin } from '@vmz/plugin';
|
|
6
5
|
export { contentHash, defineConfig, definePlugin };
|
|
@@ -13,11 +12,20 @@ export declare function importMaybeTs(full: any): Promise<any>;
|
|
|
13
12
|
/**
|
|
14
13
|
* Load `vmz.config.*` from project root (+ optional root `vmz.plugin.*`).
|
|
15
14
|
* @param {string} project
|
|
16
|
-
* @returns {Promise<{
|
|
15
|
+
* @returns {Promise<{
|
|
16
|
+
* plugins: import('@vmz/plugin').VmzPlugin[],
|
|
17
|
+
* engines: import('@vmz/plugin').VmzEngines,
|
|
18
|
+
* delivery: import('@vmz/plugin').SiteDeliveryAuthoring | null,
|
|
19
|
+
* application: { id?: string } | null,
|
|
20
|
+
* path: string | null,
|
|
21
|
+
* pluginPath: string | null,
|
|
22
|
+
* }>}
|
|
17
23
|
*/
|
|
18
24
|
export declare function loadVmzConfig(project: any): Promise<{
|
|
19
25
|
plugins: any[];
|
|
20
26
|
engines: {};
|
|
27
|
+
delivery: any;
|
|
28
|
+
application: any;
|
|
21
29
|
path: any;
|
|
22
30
|
pluginPath: any;
|
|
23
31
|
}>;
|
package/dist/plugin-host.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
/**
|
|
3
|
-
* Plugin protocol v1 helpers
|
|
4
|
-
* Design: 瑙勫垝璁捐/vmz/14-Node-NAPI涓庢彃浠跺涓?md
|
|
3
|
+
* Plugin protocol v1 helpers + typed config loading.
|
|
5
4
|
*/
|
|
6
5
|
import { existsSync } from 'node:fs';
|
|
7
6
|
import path from 'node:path';
|
|
@@ -33,13 +32,24 @@ export async function importMaybeTs(full) {
|
|
|
33
32
|
/**
|
|
34
33
|
* Load `vmz.config.*` from project root (+ optional root `vmz.plugin.*`).
|
|
35
34
|
* @param {string} project
|
|
36
|
-
* @returns {Promise<{
|
|
35
|
+
* @returns {Promise<{
|
|
36
|
+
* plugins: import('@vmz/plugin').VmzPlugin[],
|
|
37
|
+
* engines: import('@vmz/plugin').VmzEngines,
|
|
38
|
+
* delivery: import('@vmz/plugin').SiteDeliveryAuthoring | null,
|
|
39
|
+
* application: { id?: string } | null,
|
|
40
|
+
* path: string | null,
|
|
41
|
+
* pluginPath: string | null,
|
|
42
|
+
* }>}
|
|
37
43
|
*/
|
|
38
44
|
export async function loadVmzConfig(project) {
|
|
39
45
|
/** @type {import('@vmz/plugin').VmzPlugin[]} */
|
|
40
46
|
const plugins = [];
|
|
41
47
|
/** @type {import('@vmz/plugin').VmzEngines} */
|
|
42
48
|
let engines = {};
|
|
49
|
+
/** @type {import('@vmz/plugin').SiteDeliveryAuthoring | null} */
|
|
50
|
+
let delivery = null;
|
|
51
|
+
/** @type {{ id?: string } | null} */
|
|
52
|
+
let application = null;
|
|
43
53
|
/** @type {string | null} */
|
|
44
54
|
let configPath = null;
|
|
45
55
|
/** @type {string | null} */
|
|
@@ -52,6 +62,12 @@ export async function loadVmzConfig(project) {
|
|
|
52
62
|
const cfg = await importMaybeTs(full);
|
|
53
63
|
const raw = cfg?.plugins ?? [];
|
|
54
64
|
engines = cfg?.engines && typeof cfg.engines === 'object' ? { ...cfg.engines } : {};
|
|
65
|
+
if (cfg?.delivery && typeof cfg.delivery === 'object') {
|
|
66
|
+
delivery = cfg.delivery;
|
|
67
|
+
}
|
|
68
|
+
if (cfg?.application && typeof cfg.application === 'object') {
|
|
69
|
+
application = cfg.application;
|
|
70
|
+
}
|
|
55
71
|
for (const entry of raw) {
|
|
56
72
|
plugins.push(await resolvePluginEntry(project, entry));
|
|
57
73
|
}
|
|
@@ -65,7 +81,7 @@ export async function loadVmzConfig(project) {
|
|
|
65
81
|
plugins.push(await resolvePluginEntry(project, full));
|
|
66
82
|
break;
|
|
67
83
|
}
|
|
68
|
-
return { plugins, engines, path: configPath, pluginPath };
|
|
84
|
+
return { plugins, engines, delivery, application, path: configPath, pluginPath };
|
|
69
85
|
}
|
|
70
86
|
/**
|
|
71
87
|
* @param {string} project
|
|
@@ -158,7 +174,7 @@ export async function applyPlugins(workspace, plugins, opts) {
|
|
|
158
174
|
return reports;
|
|
159
175
|
}
|
|
160
176
|
/**
|
|
161
|
-
* Only math/code/markdown register interchangeable engines (see design
|
|
177
|
+
* Only math/code/markdown register interchangeable engines (see design .
|
|
162
178
|
* @param {{ code: Set<string>, math: Set<string>, markdown: Set<string> }} registered
|
|
163
179
|
* @param {any} item
|
|
164
180
|
*/
|
package/dist/port.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Probe for a free TCP port starting at `start` (inclusive).
|
|
3
|
+
* Used by `vmz dev` when `--port` is omitted.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} host
|
|
6
|
+
* @param {number} [start=5173]
|
|
7
|
+
* @param {number} [maxTries=50]
|
|
8
|
+
* @returns {Promise<number>}
|
|
9
|
+
*/
|
|
10
|
+
export declare function findAvailablePort(host: any, start?: number, maxTries?: number): Promise<unknown>;
|
package/dist/port.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import net from 'node:net';
|
|
3
|
+
/**
|
|
4
|
+
* Probe for a free TCP port starting at `start` (inclusive).
|
|
5
|
+
* Used by `vmz dev` when `--port` is omitted.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} host
|
|
8
|
+
* @param {number} [start=5173]
|
|
9
|
+
* @param {number} [maxTries=50]
|
|
10
|
+
* @returns {Promise<number>}
|
|
11
|
+
*/
|
|
12
|
+
export function findAvailablePort(host, start = 5173, maxTries = 50) {
|
|
13
|
+
const first = Number(start);
|
|
14
|
+
if (!Number.isFinite(first) || first <= 0) {
|
|
15
|
+
return Promise.reject(new Error(`invalid start port: ${start}`));
|
|
16
|
+
}
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
let port = first;
|
|
19
|
+
const attempt = () => {
|
|
20
|
+
if (port > first + maxTries) {
|
|
21
|
+
reject(new Error(`no free port in ${first}..${first + maxTries} on ${host}`));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const server = net.createServer();
|
|
25
|
+
server.unref();
|
|
26
|
+
server.once('error', (err) => {
|
|
27
|
+
if (err && err.code === 'EADDRINUSE') {
|
|
28
|
+
port += 1;
|
|
29
|
+
attempt();
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
reject(err);
|
|
33
|
+
});
|
|
34
|
+
server.once('listening', () => {
|
|
35
|
+
server.close((closeErr) => {
|
|
36
|
+
if (closeErr)
|
|
37
|
+
reject(closeErr);
|
|
38
|
+
else
|
|
39
|
+
resolve(port);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
server.listen(port, host);
|
|
43
|
+
};
|
|
44
|
+
attempt();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A5: Production observability — trace facets, redaction, CSP/security,
|
|
3
|
+
* performance budgets, health/readiness, capability closure.
|
|
4
|
+
*/
|
|
5
|
+
export declare const PRODUCTION_OBSERVABILITY_SCHEMA = "vmz.production.observability.v0";
|
|
6
|
+
export declare const PRODUCTION_TRACE_SCHEMA = "vmz.production.trace.v0";
|
|
7
|
+
/** Facets that production traces must be able to carry (08 A5). */
|
|
8
|
+
export declare const REQUIRED_TRACE_FACETS: readonly string[];
|
|
9
|
+
/**
|
|
10
|
+
* Default Browser Production Profile observability contract.
|
|
11
|
+
* @param {Record<string, unknown>} [overrides]
|
|
12
|
+
*/
|
|
13
|
+
export declare function browserProductionObservability(overrides?: {}): {
|
|
14
|
+
schema: string;
|
|
15
|
+
id: any;
|
|
16
|
+
trace: {
|
|
17
|
+
schema: string;
|
|
18
|
+
requiredFacets: any;
|
|
19
|
+
retainOnFailure: any;
|
|
20
|
+
};
|
|
21
|
+
redaction: {
|
|
22
|
+
mode: string;
|
|
23
|
+
replaceWith: any;
|
|
24
|
+
allowPublicProvenance: boolean;
|
|
25
|
+
sensitiveKeyPattern: string;
|
|
26
|
+
};
|
|
27
|
+
security: {
|
|
28
|
+
csp: any;
|
|
29
|
+
requireIntegrityForRemote: boolean;
|
|
30
|
+
originIsolation: boolean;
|
|
31
|
+
requireNonceForInline: boolean;
|
|
32
|
+
cookieNamespace: any;
|
|
33
|
+
sessionNamespace: any;
|
|
34
|
+
};
|
|
35
|
+
capability: {
|
|
36
|
+
allowlistRequired: boolean;
|
|
37
|
+
inputOutputSchemaRequired: boolean;
|
|
38
|
+
timeoutMsDefault: number;
|
|
39
|
+
cancelSupported: boolean;
|
|
40
|
+
serverSecretClosure: boolean;
|
|
41
|
+
};
|
|
42
|
+
budgets: {
|
|
43
|
+
irrelevantBindingWork: number;
|
|
44
|
+
irrelevantRouteRegionRebuild: number;
|
|
45
|
+
wholeTreeRerender: number;
|
|
46
|
+
maxArtifactBytes: number;
|
|
47
|
+
maxHtmlBytes: number;
|
|
48
|
+
maxClientJsBytes: number;
|
|
49
|
+
maxPatchCountPerTransition: number;
|
|
50
|
+
};
|
|
51
|
+
health: {
|
|
52
|
+
livePath: any;
|
|
53
|
+
readyPath: any;
|
|
54
|
+
gracefulShutdown: {
|
|
55
|
+
stopAccepting: boolean;
|
|
56
|
+
drainInFlight: boolean;
|
|
57
|
+
timeoutMs: number;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
sampling: {
|
|
61
|
+
diagnosticSampleRate: number;
|
|
62
|
+
rollbackOnErrorRate: number;
|
|
63
|
+
latencyBudgetMs: {
|
|
64
|
+
p95: number;
|
|
65
|
+
p99: number;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* @param {unknown} raw
|
|
71
|
+
*/
|
|
72
|
+
export declare function normalizeObservability(raw: any): {
|
|
73
|
+
schema: string;
|
|
74
|
+
id: any;
|
|
75
|
+
trace: {
|
|
76
|
+
schema: string;
|
|
77
|
+
requiredFacets: any;
|
|
78
|
+
retainOnFailure: any;
|
|
79
|
+
};
|
|
80
|
+
redaction: {
|
|
81
|
+
mode: string;
|
|
82
|
+
replaceWith: any;
|
|
83
|
+
allowPublicProvenance: boolean;
|
|
84
|
+
sensitiveKeyPattern: string;
|
|
85
|
+
};
|
|
86
|
+
security: {
|
|
87
|
+
csp: any;
|
|
88
|
+
requireIntegrityForRemote: boolean;
|
|
89
|
+
originIsolation: boolean;
|
|
90
|
+
requireNonceForInline: boolean;
|
|
91
|
+
cookieNamespace: any;
|
|
92
|
+
sessionNamespace: any;
|
|
93
|
+
};
|
|
94
|
+
capability: {
|
|
95
|
+
allowlistRequired: boolean;
|
|
96
|
+
inputOutputSchemaRequired: boolean;
|
|
97
|
+
timeoutMsDefault: number;
|
|
98
|
+
cancelSupported: boolean;
|
|
99
|
+
serverSecretClosure: boolean;
|
|
100
|
+
};
|
|
101
|
+
budgets: {
|
|
102
|
+
irrelevantBindingWork: number;
|
|
103
|
+
irrelevantRouteRegionRebuild: number;
|
|
104
|
+
wholeTreeRerender: number;
|
|
105
|
+
maxArtifactBytes: number;
|
|
106
|
+
maxHtmlBytes: number;
|
|
107
|
+
maxClientJsBytes: number;
|
|
108
|
+
maxPatchCountPerTransition: number;
|
|
109
|
+
};
|
|
110
|
+
health: {
|
|
111
|
+
livePath: any;
|
|
112
|
+
readyPath: any;
|
|
113
|
+
gracefulShutdown: {
|
|
114
|
+
stopAccepting: boolean;
|
|
115
|
+
drainInFlight: boolean;
|
|
116
|
+
timeoutMs: number;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
sampling: {
|
|
120
|
+
diagnosticSampleRate: number;
|
|
121
|
+
rollbackOnErrorRate: number;
|
|
122
|
+
latencyBudgetMs: {
|
|
123
|
+
p95: number;
|
|
124
|
+
p99: number;
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Redact sensitive keys recursively. Never returns secrets for public provenance.
|
|
130
|
+
* @param {unknown} value
|
|
131
|
+
* @param {Record<string, any>} [policy]
|
|
132
|
+
* @param {{ privilege?: 'public' | 'operator' }} [opts]
|
|
133
|
+
*/
|
|
134
|
+
export declare function redactSensitive(value: any, policy?: {}, opts?: {}): any;
|
|
135
|
+
/**
|
|
136
|
+
* Validate a production trace carries required facets (as event.facet or mapped kind).
|
|
137
|
+
* @param {unknown} raw
|
|
138
|
+
* @param {string[]} [requiredFacets]
|
|
139
|
+
*/
|
|
140
|
+
export declare function validateProductionTrace(raw: any, requiredFacets?: readonly string[]): {
|
|
141
|
+
ok: boolean;
|
|
142
|
+
covered: unknown[];
|
|
143
|
+
errors: any[];
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Build a minimal valid production trace covering all required facets (for CI assembly).
|
|
147
|
+
* @param {Record<string, unknown>} [meta]
|
|
148
|
+
*/
|
|
149
|
+
export declare function buildCoveringProductionTrace(meta?: {}): {
|
|
150
|
+
schema: string;
|
|
151
|
+
status: string;
|
|
152
|
+
applicationId: any;
|
|
153
|
+
artifactDigest: any;
|
|
154
|
+
events: {
|
|
155
|
+
facet: string;
|
|
156
|
+
kind: string;
|
|
157
|
+
stableId: {
|
|
158
|
+
kind: string;
|
|
159
|
+
id: string;
|
|
160
|
+
};
|
|
161
|
+
generation: number;
|
|
162
|
+
redacted: boolean;
|
|
163
|
+
payload: any;
|
|
164
|
+
}[];
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* @param {Record<string, any>} measured
|
|
168
|
+
* @param {Record<string, any>} budgets
|
|
169
|
+
*/
|
|
170
|
+
export declare function checkProductionBudgets(measured: any, budgets: any): {
|
|
171
|
+
ok: boolean;
|
|
172
|
+
violations: any[];
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* Validate capability production closure (allowlist + schema + timeout + secret).
|
|
176
|
+
* @param {Record<string, any>} cap
|
|
177
|
+
* @param {Record<string, any>} policy
|
|
178
|
+
*/
|
|
179
|
+
export declare function checkCapabilityClosure(cap: any, policy: any): {
|
|
180
|
+
ok: boolean;
|
|
181
|
+
errors: any[];
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Merge CSP / security headers into a CDN policy headers list (HTML matches).
|
|
185
|
+
* @param {Record<string, any>} cdnPolicy
|
|
186
|
+
* @param {Record<string, any>} security
|
|
187
|
+
*/
|
|
188
|
+
export declare function applySecurityHeadersToCdnPolicy(cdnPolicy: any, security: any): any;
|
|
189
|
+
/**
|
|
190
|
+
* Measure dist sizes for budget gates.
|
|
191
|
+
* @param {string} distDir
|
|
192
|
+
*/
|
|
193
|
+
export declare function measureDistBudgets(distDir: any): {
|
|
194
|
+
artifactBytes: number;
|
|
195
|
+
htmlBytes: number;
|
|
196
|
+
clientJsBytes: number;
|
|
197
|
+
irrelevantBindingWork: number;
|
|
198
|
+
irrelevantRouteRegionRebuild: number;
|
|
199
|
+
wholeTreeRerender: number;
|
|
200
|
+
patchCount: number;
|
|
201
|
+
};
|
|
202
|
+
/**
|
|
203
|
+
* Write observability contract (+ covering trace sample) under dist/_vmz.
|
|
204
|
+
* @param {string} distDir
|
|
205
|
+
* @param {Record<string, unknown>} [overrides]
|
|
206
|
+
* @param {{ applicationId?: string, artifactDigest?: string }} [meta]
|
|
207
|
+
*/
|
|
208
|
+
export declare function emitProductionObservability(distDir: any, overrides?: {}, meta?: {}): {
|
|
209
|
+
contract: {
|
|
210
|
+
schema: string;
|
|
211
|
+
id: any;
|
|
212
|
+
trace: {
|
|
213
|
+
schema: string;
|
|
214
|
+
requiredFacets: any;
|
|
215
|
+
retainOnFailure: any;
|
|
216
|
+
};
|
|
217
|
+
redaction: {
|
|
218
|
+
mode: string;
|
|
219
|
+
replaceWith: any;
|
|
220
|
+
allowPublicProvenance: boolean;
|
|
221
|
+
sensitiveKeyPattern: string;
|
|
222
|
+
};
|
|
223
|
+
security: {
|
|
224
|
+
csp: any;
|
|
225
|
+
requireIntegrityForRemote: boolean;
|
|
226
|
+
originIsolation: boolean;
|
|
227
|
+
requireNonceForInline: boolean;
|
|
228
|
+
cookieNamespace: any;
|
|
229
|
+
sessionNamespace: any;
|
|
230
|
+
};
|
|
231
|
+
capability: {
|
|
232
|
+
allowlistRequired: boolean;
|
|
233
|
+
inputOutputSchemaRequired: boolean;
|
|
234
|
+
timeoutMsDefault: number;
|
|
235
|
+
cancelSupported: boolean;
|
|
236
|
+
serverSecretClosure: boolean;
|
|
237
|
+
};
|
|
238
|
+
budgets: {
|
|
239
|
+
irrelevantBindingWork: number;
|
|
240
|
+
irrelevantRouteRegionRebuild: number;
|
|
241
|
+
wholeTreeRerender: number;
|
|
242
|
+
maxArtifactBytes: number;
|
|
243
|
+
maxHtmlBytes: number;
|
|
244
|
+
maxClientJsBytes: number;
|
|
245
|
+
maxPatchCountPerTransition: number;
|
|
246
|
+
};
|
|
247
|
+
health: {
|
|
248
|
+
livePath: any;
|
|
249
|
+
readyPath: any;
|
|
250
|
+
gracefulShutdown: {
|
|
251
|
+
stopAccepting: boolean;
|
|
252
|
+
drainInFlight: boolean;
|
|
253
|
+
timeoutMs: number;
|
|
254
|
+
};
|
|
255
|
+
};
|
|
256
|
+
sampling: {
|
|
257
|
+
diagnosticSampleRate: number;
|
|
258
|
+
rollbackOnErrorRate: number;
|
|
259
|
+
latencyBudgetMs: {
|
|
260
|
+
p95: number;
|
|
261
|
+
p99: number;
|
|
262
|
+
};
|
|
263
|
+
};
|
|
264
|
+
};
|
|
265
|
+
trace: {
|
|
266
|
+
schema: string;
|
|
267
|
+
status: string;
|
|
268
|
+
applicationId: any;
|
|
269
|
+
artifactDigest: any;
|
|
270
|
+
events: {
|
|
271
|
+
facet: string;
|
|
272
|
+
kind: string;
|
|
273
|
+
stableId: {
|
|
274
|
+
kind: string;
|
|
275
|
+
id: string;
|
|
276
|
+
};
|
|
277
|
+
generation: number;
|
|
278
|
+
redacted: boolean;
|
|
279
|
+
payload: any;
|
|
280
|
+
}[];
|
|
281
|
+
};
|
|
282
|
+
contractPath: string;
|
|
283
|
+
tracePath: string;
|
|
284
|
+
};
|
|
285
|
+
export declare function observabilityDigest(contract: any): any;
|
|
286
|
+
export declare function sha256Text(text: any): string;
|