@kubuild/core 0.0.1
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/binding-resolver.d.ts +16 -0
- package/dist/binding-resolver.d.ts.map +1 -0
- package/dist/command-tree-utils.d.ts +60 -0
- package/dist/command-tree-utils.d.ts.map +1 -0
- package/dist/commands.d.ts +99 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/document-utils.d.ts +51 -0
- package/dist/document-utils.d.ts.map +1 -0
- package/dist/exporter.d.ts +89 -0
- package/dist/exporter.d.ts.map +1 -0
- package/dist/history.d.ts +107 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/importer.d.ts +243 -0
- package/dist/importer.d.ts.map +1 -0
- package/dist/index.cjs +3686 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3614 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces.d.ts +71 -0
- package/dist/interfaces.d.ts.map +1 -0
- package/dist/migration.d.ts +86 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/round-trip-comparator.d.ts +38 -0
- package/dist/round-trip-comparator.d.ts.map +1 -0
- package/dist/security.d.ts +99 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/template-utils.d.ts +124 -0
- package/dist/template-utils.d.ts.map +1 -0
- package/dist/validator.d.ts +43 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/variable-catalog.d.ts +9 -0
- package/dist/variable-catalog.d.ts.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { PageDocument, DocumentMetadata, Manifest, ManifestAssetItem } from '@kubuild/schema';
|
|
2
|
+
import { ComponentRegistryLike } from './validator';
|
|
3
|
+
import { MigrationRegistry } from './migration';
|
|
4
|
+
import type { AssetProvider, AssetInfo } from './interfaces';
|
|
5
|
+
export interface SecurityLimits {
|
|
6
|
+
/**
|
|
7
|
+
* Maximum allowed size for the compressed archive in bytes (default: 50MB).
|
|
8
|
+
*/
|
|
9
|
+
maxArchiveSize?: number;
|
|
10
|
+
/**
|
|
11
|
+
* Maximum total uncompressed size across all files in bytes (default: 100MB).
|
|
12
|
+
*/
|
|
13
|
+
maxUncompressedSize?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Maximum number of files in the archive (default: 1000).
|
|
16
|
+
*/
|
|
17
|
+
maxFileCount?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Maximum size for any individual asset in bytes (default: 25MB).
|
|
20
|
+
*/
|
|
21
|
+
maxAssetSize?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare const DEFAULT_SECURITY_LIMITS: Required<SecurityLimits>;
|
|
24
|
+
export type MissingDependencyPolicy = 'cancel' | 'import-with-placeholder' | 'install-or-register-before-import';
|
|
25
|
+
export type AssetCollisionStrategy = 'reject' | 'rename' | 'overwrite' | 'reuse-existing';
|
|
26
|
+
export interface AssetConflict {
|
|
27
|
+
assetId: string;
|
|
28
|
+
path: string;
|
|
29
|
+
mimeType: string;
|
|
30
|
+
size: number;
|
|
31
|
+
existingAsset?: AssetInfo | Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
export interface AssetConflictResolution {
|
|
34
|
+
action: AssetCollisionStrategy;
|
|
35
|
+
newAssetId?: string;
|
|
36
|
+
}
|
|
37
|
+
export type PreflightDiagnosticCode = 'ARCHIVE_EMPTY' | 'ARCHIVE_CORRUPT' | 'SIZE_LIMIT_EXCEEDED' | 'FILE_COUNT_EXCEEDED' | 'ZIP_SLIP_DETECTED' | 'EXECUTABLE_ASSET_DETECTED' | 'PROTOTYPE_POLLUTION_DETECTED' | 'MISSING_MANIFEST' | 'INVALID_MANIFEST' | 'MISSING_PAGE_DOCUMENT' | 'INVALID_PAGE_DOCUMENT' | 'UNSUPPORTED_SCHEMA_VERSION' | 'NO_MIGRATION_PATH' | 'MIGRATION_FAILED' | 'ASSET_FILE_MISSING' | 'ASSET_SIZE_MISMATCH' | 'ASSET_CHECKSUM_MISMATCH' | 'ASSET_LIMIT_EXCEEDED' | 'ASSET_CONFLICT' | 'MISSING_COMPONENTS' | 'MISSING_CAPABILITIES' | 'HOST_ADAPTER_ERROR';
|
|
38
|
+
export interface PreflightDiagnostic {
|
|
39
|
+
code: PreflightDiagnosticCode;
|
|
40
|
+
severity: 'error' | 'warning' | 'info';
|
|
41
|
+
message: string;
|
|
42
|
+
path?: string;
|
|
43
|
+
details?: Record<string, unknown>;
|
|
44
|
+
}
|
|
45
|
+
export interface PreflightOptions {
|
|
46
|
+
/**
|
|
47
|
+
* Component registry to check required custom components.
|
|
48
|
+
*/
|
|
49
|
+
componentRegistry?: ComponentRegistryLike;
|
|
50
|
+
/**
|
|
51
|
+
* Allowlist of known component type names (used if componentRegistry is not provided or in combination).
|
|
52
|
+
*/
|
|
53
|
+
knownComponentTypes?: string[] | Set<string>;
|
|
54
|
+
/**
|
|
55
|
+
* Allowlist of capabilities supported by host.
|
|
56
|
+
*/
|
|
57
|
+
supportedCapabilities?: string[] | Set<string>;
|
|
58
|
+
/**
|
|
59
|
+
* Security limits for archive and files.
|
|
60
|
+
*/
|
|
61
|
+
securityLimits?: SecurityLimits;
|
|
62
|
+
/**
|
|
63
|
+
* Custom migration registry.
|
|
64
|
+
*/
|
|
65
|
+
migrationRegistry?: MigrationRegistry;
|
|
66
|
+
/**
|
|
67
|
+
* Target schema version (defaults to CURRENT_SCHEMA_VERSION = "1.0.0").
|
|
68
|
+
*/
|
|
69
|
+
targetSchemaVersion?: string;
|
|
70
|
+
/**
|
|
71
|
+
* Policy for handling missing custom components and capabilities.
|
|
72
|
+
* - 'cancel' (default): Abort import with blocking errors when components/capabilities are missing.
|
|
73
|
+
* - 'import-with-placeholder': Allow import, keeping missing component nodes and props intact for placeholder rendering.
|
|
74
|
+
* - 'install-or-register-before-import': Call onMissingDependency to register/install before finalizing import.
|
|
75
|
+
*/
|
|
76
|
+
dependencyPolicy?: MissingDependencyPolicy;
|
|
77
|
+
/**
|
|
78
|
+
* Hook called when dependencyPolicy is 'install-or-register-before-import'.
|
|
79
|
+
*/
|
|
80
|
+
onMissingDependency?: (missing: {
|
|
81
|
+
components: string[];
|
|
82
|
+
capabilities: string[];
|
|
83
|
+
}, preflight: PreflightReport) => Promise<boolean | void> | boolean | void;
|
|
84
|
+
/**
|
|
85
|
+
* If true, missing components are treated as warnings rather than blocking errors.
|
|
86
|
+
* (Equivalent to setting dependencyPolicy: 'import-with-placeholder')
|
|
87
|
+
*/
|
|
88
|
+
allowMissingComponents?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* If true, missing capabilities are treated as warnings rather than blocking errors.
|
|
91
|
+
* (Equivalent to setting dependencyPolicy: 'import-with-placeholder')
|
|
92
|
+
*/
|
|
93
|
+
allowMissingCapabilities?: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Strategy for resolving asset collisions with existing host assets.
|
|
96
|
+
* - 'reject' (default): Refuse import if asset collision is detected without an explicit resolution strategy.
|
|
97
|
+
* - 'rename': Rename the incoming asset to avoid overwriting host assets, and automatically remap document asset references.
|
|
98
|
+
* - 'overwrite': Explicitly overwrite host assets with incoming archive assets.
|
|
99
|
+
* - 'reuse-existing': Reuse existing host assets and skip writing archive asset binaries.
|
|
100
|
+
*/
|
|
101
|
+
assetCollisionStrategy?: AssetCollisionStrategy;
|
|
102
|
+
/**
|
|
103
|
+
* Existing host asset IDs or checker function to detect collisions.
|
|
104
|
+
*/
|
|
105
|
+
existingAssetIds?: string[] | Set<string> | ((assetId: string) => boolean | Promise<boolean>);
|
|
106
|
+
/**
|
|
107
|
+
* Custom naming function when renaming colliding assets.
|
|
108
|
+
*/
|
|
109
|
+
renameAssetStrategy?: (incoming: ManifestAssetItem, existingIds: Set<string>) => string;
|
|
110
|
+
/**
|
|
111
|
+
* Host AssetProvider to resolve existing assets or upload extracted local assets.
|
|
112
|
+
*/
|
|
113
|
+
assetProvider?: AssetProvider;
|
|
114
|
+
/**
|
|
115
|
+
* Fine-grained callback for resolving individual asset conflicts.
|
|
116
|
+
*/
|
|
117
|
+
onAssetConflict?: (conflict: AssetConflict) => Promise<AssetConflictResolution | AssetCollisionStrategy> | AssetConflictResolution | AssetCollisionStrategy;
|
|
118
|
+
}
|
|
119
|
+
export interface PreflightReport {
|
|
120
|
+
/**
|
|
121
|
+
* True if archive is completely safe and syntactically valid.
|
|
122
|
+
*/
|
|
123
|
+
valid: boolean;
|
|
124
|
+
/**
|
|
125
|
+
* True if archive can be safely imported given the host's supported components/capabilities and asset policies.
|
|
126
|
+
*/
|
|
127
|
+
canImport: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Parsed manifest if available.
|
|
130
|
+
*/
|
|
131
|
+
manifest?: Manifest;
|
|
132
|
+
/**
|
|
133
|
+
* Parsed metadata if available.
|
|
134
|
+
*/
|
|
135
|
+
rawMetadata?: DocumentMetadata;
|
|
136
|
+
/**
|
|
137
|
+
* Schema version reported in the document/manifest.
|
|
138
|
+
*/
|
|
139
|
+
sourceVersion?: string;
|
|
140
|
+
/**
|
|
141
|
+
* Target schema version.
|
|
142
|
+
*/
|
|
143
|
+
targetVersion: string;
|
|
144
|
+
/**
|
|
145
|
+
* True if the document version differs from target version and requires migration.
|
|
146
|
+
*/
|
|
147
|
+
requiresMigration: boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Migration path version sequence if migration is needed.
|
|
150
|
+
*/
|
|
151
|
+
migrationPath?: string[];
|
|
152
|
+
/**
|
|
153
|
+
* List of custom component types required by package that are missing in host.
|
|
154
|
+
*/
|
|
155
|
+
missingComponents: string[];
|
|
156
|
+
/**
|
|
157
|
+
* List of capabilities required by package that are missing in host.
|
|
158
|
+
*/
|
|
159
|
+
missingCapabilities: string[];
|
|
160
|
+
/**
|
|
161
|
+
* Active policy for missing dependencies.
|
|
162
|
+
*/
|
|
163
|
+
dependencyPolicy: MissingDependencyPolicy;
|
|
164
|
+
/**
|
|
165
|
+
* Number of valid local assets declared in manifest.
|
|
166
|
+
*/
|
|
167
|
+
assetCount: number;
|
|
168
|
+
/**
|
|
169
|
+
* List of detected asset collisions with existing host assets.
|
|
170
|
+
*/
|
|
171
|
+
assetConflicts: AssetConflict[];
|
|
172
|
+
/**
|
|
173
|
+
* Active strategy for handling asset collisions.
|
|
174
|
+
*/
|
|
175
|
+
assetCollisionStrategy: AssetCollisionStrategy;
|
|
176
|
+
/**
|
|
177
|
+
* Total uncompressed size of all files in archive.
|
|
178
|
+
*/
|
|
179
|
+
totalUncompressedBytes: number;
|
|
180
|
+
/**
|
|
181
|
+
* Diagnostics collected during inspection.
|
|
182
|
+
*/
|
|
183
|
+
diagnostics: PreflightDiagnostic[];
|
|
184
|
+
}
|
|
185
|
+
export interface ImportPackageOptions extends PreflightOptions {
|
|
186
|
+
/**
|
|
187
|
+
* Custom asset importer hook called for each extracted asset.
|
|
188
|
+
*/
|
|
189
|
+
onAssetImport?: (assetId: string, assetBytes: Uint8Array, assetMeta: ManifestAssetItem) => Promise<AssetInfo | string | void> | AssetInfo | string | void;
|
|
190
|
+
}
|
|
191
|
+
export interface ExtractedAsset {
|
|
192
|
+
bytes: Uint8Array;
|
|
193
|
+
meta: ManifestAssetItem;
|
|
194
|
+
hostInfo?: AssetInfo | string;
|
|
195
|
+
}
|
|
196
|
+
export interface ImportPackageSuccess {
|
|
197
|
+
success: true;
|
|
198
|
+
document: PageDocument;
|
|
199
|
+
manifest: Manifest;
|
|
200
|
+
metadata: DocumentMetadata;
|
|
201
|
+
extractedAssets: Map<string, ExtractedAsset>;
|
|
202
|
+
renamedAssets?: Record<string, string>;
|
|
203
|
+
preflight: PreflightReport;
|
|
204
|
+
}
|
|
205
|
+
export interface ImportPackageFailure {
|
|
206
|
+
success: false;
|
|
207
|
+
errors: PreflightDiagnostic[];
|
|
208
|
+
diagnosticMessage: string;
|
|
209
|
+
preflight?: PreflightReport;
|
|
210
|
+
}
|
|
211
|
+
export type ImportPackageResult = ImportPackageSuccess | ImportPackageFailure;
|
|
212
|
+
/**
|
|
213
|
+
* Checks if a zip entry path contains zip-slip or directory traversal attempts.
|
|
214
|
+
*/
|
|
215
|
+
export declare function isDangerousPath(filepath: string): boolean;
|
|
216
|
+
/**
|
|
217
|
+
* Inspects a .stora archive and runs non-destructive preflight validation.
|
|
218
|
+
* Verifies security limits, path safety, manifest, checksums, component/capability requirements, and migration status.
|
|
219
|
+
*/
|
|
220
|
+
export declare function preflightPackage(archiveData: Uint8Array | ArrayBuffer, options?: PreflightOptions): Promise<PreflightReport>;
|
|
221
|
+
/**
|
|
222
|
+
* Preview a .stora package without mutating host state.
|
|
223
|
+
* Returns missing dependencies, asset conflicts, schema migration status, and diagnostics.
|
|
224
|
+
*/
|
|
225
|
+
export declare const previewImportPackage: typeof preflightPackage;
|
|
226
|
+
/**
|
|
227
|
+
* Alias for preflightPackage.
|
|
228
|
+
*/
|
|
229
|
+
export declare const inspectPackage: typeof preflightPackage;
|
|
230
|
+
/**
|
|
231
|
+
* Default generator for renaming colliding asset IDs.
|
|
232
|
+
*/
|
|
233
|
+
export declare function defaultRenameAssetStrategy(incoming: ManifestAssetItem, existingIds: Set<string>): string;
|
|
234
|
+
/**
|
|
235
|
+
* Imports a .stora package with preflight safety checks, schema migration, missing dependency policy,
|
|
236
|
+
* and host-controlled asset collision handling.
|
|
237
|
+
*/
|
|
238
|
+
export declare function importPackage(archiveData: Uint8Array | ArrayBuffer, options?: ImportPackageOptions): Promise<ImportPackageResult>;
|
|
239
|
+
/**
|
|
240
|
+
* Alias for importPackage.
|
|
241
|
+
*/
|
|
242
|
+
export declare const importStoraPackage: typeof importPackage;
|
|
243
|
+
//# sourceMappingURL=importer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../src/importer.ts"],"names":[],"mappings":"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"}
|