@hot-updater/plugin-core 0.36.7 → 1.0.0-rc.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/assetStorageLayout.cjs +36 -18
- package/dist/assetStorageLayout.d.cts +21 -6
- package/dist/assetStorageLayout.d.mts +21 -6
- package/dist/assetStorageLayout.mjs +36 -18
- package/dist/bundleStorageLayout.cjs +2 -3
- package/dist/bundleStorageLayout.mjs +2 -3
- package/dist/contentAddressedAssets.cjs +5 -0
- package/dist/contentAddressedAssets.d.cts +2 -1
- package/dist/contentAddressedAssets.d.mts +2 -1
- package/dist/contentAddressedAssets.mjs +5 -1
- package/dist/createDatabasePlugin.cjs +775 -284
- package/dist/createDatabasePlugin.d.cts +20 -64
- package/dist/createDatabasePlugin.d.mts +20 -64
- package/dist/createDatabasePlugin.mjs +773 -284
- package/dist/createStorageKeyBuilder.cjs +9 -2
- package/dist/createStorageKeyBuilder.mjs +9 -2
- package/dist/createStoragePlugin.cjs +6 -145
- package/dist/createStoragePlugin.d.cts +7 -52
- package/dist/createStoragePlugin.d.mts +7 -52
- package/dist/createStoragePlugin.mjs +5 -143
- package/dist/databaseClient.cjs +112 -0
- package/dist/databaseClient.d.cts +33 -0
- package/dist/databaseClient.d.mts +33 -0
- package/dist/databaseClient.mjs +110 -0
- package/dist/databaseClientReads.cjs +113 -0
- package/dist/databaseClientReads.mjs +112 -0
- package/dist/databaseClientUpdates.cjs +39 -0
- package/dist/databaseClientUpdates.d.cts +11 -0
- package/dist/databaseClientUpdates.d.mts +11 -0
- package/dist/databaseClientUpdates.mjs +36 -0
- package/dist/databaseJsonValue.cjs +37 -0
- package/dist/databaseJsonValue.d.cts +5 -0
- package/dist/databaseJsonValue.d.mts +5 -0
- package/dist/databaseJsonValue.mjs +37 -0
- package/dist/databaseMetadata.cjs +13 -0
- package/dist/databaseMetadata.mjs +12 -0
- package/dist/databasePluginCrud.cjs +86 -0
- package/dist/databasePluginCrud.d.cts +1 -0
- package/dist/databasePluginCrud.d.mts +1 -0
- package/dist/databasePluginCrud.mjs +86 -0
- package/dist/databasePluginCrudValidation.d.cts +1 -0
- package/dist/databasePluginCrudValidation.d.mts +1 -0
- package/dist/databasePluginCrudValidationErrors.cjs +10 -0
- package/dist/databasePluginCrudValidationErrors.d.cts +9 -0
- package/dist/databasePluginCrudValidationErrors.d.mts +9 -0
- package/dist/databasePluginCrudValidationErrors.mjs +10 -0
- package/dist/databasePluginCrudValidationFields.cjs +291 -0
- package/dist/databasePluginCrudValidationFields.d.cts +1 -0
- package/dist/databasePluginCrudValidationFields.d.mts +1 -0
- package/dist/databasePluginCrudValidationFields.mjs +281 -0
- package/dist/databasePluginCrudValidationMutations.cjs +88 -0
- package/dist/databasePluginCrudValidationMutations.d.cts +1 -0
- package/dist/databasePluginCrudValidationMutations.d.mts +1 -0
- package/dist/databasePluginCrudValidationMutations.mjs +82 -0
- package/dist/databasePluginCrudValidationQueries.cjs +103 -0
- package/dist/databasePluginCrudValidationQueries.d.cts +1 -0
- package/dist/databasePluginCrudValidationQueries.d.mts +1 -0
- package/dist/databasePluginCrudValidationQueries.mjs +97 -0
- package/dist/databasePluginCrudValidationRows.cjs +55 -0
- package/dist/databasePluginCrudValidationRows.d.cts +1 -0
- package/dist/databasePluginCrudValidationRows.d.mts +1 -0
- package/dist/databasePluginCrudValidationRows.mjs +53 -0
- package/dist/databasePluginTransaction.cjs +7 -0
- package/dist/databasePluginTransaction.mjs +7 -0
- package/dist/databaseRows.cjs +149 -0
- package/dist/databaseRows.d.cts +34 -0
- package/dist/databaseRows.d.mts +34 -0
- package/dist/databaseRows.mjs +141 -0
- package/dist/index.cjs +76 -24
- package/dist/index.d.cts +22 -12
- package/dist/index.d.mts +22 -12
- package/dist/index.mjs +21 -14
- package/dist/internal.cjs +6 -0
- package/dist/internal.d.cts +9 -0
- package/dist/internal.d.mts +9 -0
- package/dist/internal.mjs +3 -0
- package/dist/node_modules/.pnpm/verkit@0.3.2/node_modules/verkit/dist/index.cjs +345 -0
- package/dist/node_modules/.pnpm/verkit@0.3.2/node_modules/verkit/dist/index.mjs +341 -0
- package/dist/paginateBundles.d.cts +6 -4
- package/dist/paginateBundles.d.mts +6 -4
- package/dist/parseStorageUri.cjs +46 -30
- package/dist/parseStorageUri.d.cts +20 -17
- package/dist/parseStorageUri.d.mts +20 -17
- package/dist/parseStorageUri.mjs +46 -30
- package/dist/queryBundles.cjs +1 -7
- package/dist/queryBundles.d.cts +3 -1
- package/dist/queryBundles.d.mts +3 -1
- package/dist/queryBundles.mjs +1 -7
- package/dist/releaseCatalogCompiler.cjs +391 -0
- package/dist/releaseCatalogCompiler.d.cts +55 -0
- package/dist/releaseCatalogCompiler.d.mts +55 -0
- package/dist/releaseCatalogCompiler.mjs +386 -0
- package/dist/releaseCatalogMutation.cjs +303 -0
- package/dist/releaseCatalogMutation.d.cts +86 -0
- package/dist/releaseCatalogMutation.d.mts +86 -0
- package/dist/releaseCatalogMutation.mjs +297 -0
- package/dist/releaseManagement.cjs +231 -0
- package/dist/releaseManagement.d.cts +48 -0
- package/dist/releaseManagement.d.mts +48 -0
- package/dist/releaseManagement.mjs +224 -0
- package/dist/remoteBundleSigning.cjs +296 -0
- package/dist/remoteBundleSigning.d.cts +43 -0
- package/dist/remoteBundleSigning.d.mts +43 -0
- package/dist/remoteBundleSigning.mjs +291 -0
- package/dist/requestBundleCache.cjs +22 -0
- package/dist/requestBundleCache.d.cts +9 -0
- package/dist/requestBundleCache.d.mts +9 -0
- package/dist/requestBundleCache.mjs +22 -0
- package/dist/semverSatisfies.cjs +3 -4
- package/dist/semverSatisfies.mjs +1 -1
- package/dist/storageDownloadPath.cjs +48 -0
- package/dist/storageDownloadPath.d.cts +15 -0
- package/dist/storageDownloadPath.d.mts +15 -0
- package/dist/storageDownloadPath.mjs +46 -0
- package/dist/types/database.d.cts +4 -0
- package/dist/types/database.d.mts +4 -0
- package/dist/types/databaseFields.cjs +92 -0
- package/dist/types/databaseFields.d.cts +12 -0
- package/dist/types/databaseFields.d.mts +12 -0
- package/dist/types/databaseFields.mjs +92 -0
- package/dist/types/databaseOperations.d.cts +173 -0
- package/dist/types/databaseOperations.d.mts +173 -0
- package/dist/types/databasePlugin.d.cts +240 -0
- package/dist/types/databasePlugin.d.mts +240 -0
- package/dist/types/databaseQuery.d.cts +47 -0
- package/dist/types/databaseQuery.d.mts +47 -0
- package/dist/types/databaseRows.d.cts +120 -0
- package/dist/types/databaseRows.d.mts +120 -0
- package/dist/types/index.d.cts +120 -162
- package/dist/types/index.d.mts +120 -162
- package/dist/types/internal.d.cts +7 -0
- package/dist/types/internal.d.mts +7 -0
- package/dist/types/public.d.cts +3 -0
- package/dist/types/public.d.mts +3 -0
- package/dist/uuidv7.cjs +9 -0
- package/dist/uuidv7.d.cts +4 -1
- package/dist/uuidv7.d.mts +4 -1
- package/dist/uuidv7.mjs +8 -1
- package/package.json +10 -5
- package/dist/bundleUnitOfWork.cjs +0 -158
- package/dist/bundleUnitOfWork.mjs +0 -158
- package/dist/bundleUnitOfWorkStore.cjs +0 -15
- package/dist/bundleUnitOfWorkStore.mjs +0 -15
- package/dist/createBlobDatabasePlugin.cjs +0 -382
- package/dist/createBlobDatabasePlugin.d.cts +0 -29
- package/dist/createBlobDatabasePlugin.d.mts +0 -29
- package/dist/createBlobDatabasePlugin.mjs +0 -381
- package/dist/legacyAssetStorageLayout.cjs +0 -12
- package/dist/legacyAssetStorageLayout.mjs +0 -12
- package/dist/requestUpdateBundleState.cjs +0 -26
- package/dist/requestUpdateBundleState.d.cts +0 -12
- package/dist/requestUpdateBundleState.d.mts +0 -12
- package/dist/requestUpdateBundleState.mjs +0 -24
- package/dist/resolveUpdateInfoFromBundles.cjs +0 -14
- package/dist/resolveUpdateInfoFromBundles.d.cts +0 -16
- package/dist/resolveUpdateInfoFromBundles.d.mts +0 -16
- package/dist/resolveUpdateInfoFromBundles.mjs +0 -13
- package/dist/storageProfile.cjs +0 -15
- package/dist/storageProfile.d.cts +0 -9
- package/dist/storageProfile.d.mts +0 -9
- package/dist/storageProfile.mjs +0 -12
package/dist/types/index.d.mts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { ApiKeyRow, BundleEventRow, BundleEventRowBase, BundlePatchRow, BundleRow, ChannelRow, DatabaseBundleMetadata, DatabaseJsonObject, DatabaseJsonValue, ReleaseCatalogRow, ReleaseRow } from "./databaseRows.mjs";
|
|
2
|
+
import { AnalyticsModel, AnalyticsScanCursor, AnalyticsScanInput, ApiKeyModel, BundleModel, BundleModelQuery, BundlePatchModel, BundleRepository, BundleRepositoryChange, BundleRepositoryCommit, ChannelDeleteInput, ChannelDeleteResult, ChannelInsertInput, ChannelInsertResult, ChannelModel, DatabaseChange, DatabaseCommit, DatabaseCommitExpectation, DatabaseCommitResult, DatabaseModels, DatabasePlugin, ReleaseCatalogModel, ReleaseModel } from "./databasePlugin.mjs";
|
|
3
|
+
import { BundleRowUpdate, ReleaseCatalogRowUpdate, ReleaseRowUpdate } from "./databaseOperations.mjs";
|
|
1
4
|
import { BuiltIns, HasMultipleCallSignatures, Primitive, RequiredDeep } from "./utils.mjs";
|
|
2
|
-
import {
|
|
5
|
+
import { Bundle, Bundle as Bundle$1, Platform, Platform as Platform$1 } from "@hot-updater/core";
|
|
3
6
|
|
|
4
7
|
//#region src/types/index.d.ts
|
|
5
8
|
interface BasePluginArgs {
|
|
@@ -28,65 +31,53 @@ interface DatabaseBundleIdFilter {
|
|
|
28
31
|
in?: string[];
|
|
29
32
|
}
|
|
30
33
|
interface DatabaseBundleQueryWhere {
|
|
31
|
-
channel?: string;
|
|
32
34
|
platform?: Platform;
|
|
33
|
-
enabled?: boolean;
|
|
34
35
|
id?: DatabaseBundleIdFilter;
|
|
35
|
-
targetAppVersion?: string | null;
|
|
36
|
-
targetAppVersionIn?: string[];
|
|
37
|
-
targetAppVersionNotNull?: boolean;
|
|
38
|
-
fingerprintHash?: string | null;
|
|
39
36
|
}
|
|
40
37
|
interface DatabaseBundleQueryOrder {
|
|
41
38
|
field: "id";
|
|
42
39
|
direction: "asc" | "desc";
|
|
43
40
|
}
|
|
44
|
-
|
|
41
|
+
type DatabaseBundleCursor = {
|
|
45
42
|
/**
|
|
46
43
|
* Fetch the next window after this bundle ID.
|
|
47
44
|
*
|
|
48
45
|
* This is the preferred pagination mode for bundle-management queries.
|
|
49
46
|
*/
|
|
50
|
-
after
|
|
47
|
+
after: string;
|
|
48
|
+
before?: never;
|
|
49
|
+
} | {
|
|
50
|
+
after?: never;
|
|
51
51
|
/**
|
|
52
52
|
* Fetch the previous window before this bundle ID.
|
|
53
53
|
*
|
|
54
54
|
* This is the preferred pagination mode for bundle-management queries.
|
|
55
55
|
*/
|
|
56
|
-
before
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
where?: DatabaseBundleQueryWhere;
|
|
60
|
-
limit: number;
|
|
56
|
+
before: string;
|
|
57
|
+
};
|
|
58
|
+
type DatabaseBundlePaginationOptions = {
|
|
61
59
|
/**
|
|
62
|
-
* Optional page number used by management UIs to keep page boundaries
|
|
63
|
-
* even when new bundles are inserted ahead of the current cursor
|
|
60
|
+
* Optional page number used by management UIs to keep page boundaries
|
|
61
|
+
* stable even when new bundles are inserted ahead of the current cursor
|
|
62
|
+
* window.
|
|
64
63
|
*/
|
|
65
64
|
page?: number;
|
|
65
|
+
cursor?: never;
|
|
66
|
+
} | {
|
|
67
|
+
page?: never;
|
|
66
68
|
/**
|
|
67
69
|
* Preferred cursor-based pagination for bundle-management queries.
|
|
68
70
|
*/
|
|
69
71
|
cursor?: DatabaseBundleCursor;
|
|
72
|
+
};
|
|
73
|
+
type DatabaseBundleQueryOptions = {
|
|
74
|
+
where?: DatabaseBundleQueryWhere;
|
|
75
|
+
limit: number;
|
|
70
76
|
orderBy?: DatabaseBundleQueryOrder;
|
|
71
|
-
}
|
|
77
|
+
} & DatabaseBundlePaginationOptions;
|
|
72
78
|
interface BuildPluginConfig {
|
|
73
79
|
outDir?: string;
|
|
74
80
|
}
|
|
75
|
-
interface DatabasePlugin<TContext = unknown> {
|
|
76
|
-
getChannels: (context?: HotUpdaterContext<TContext>) => Promise<string[]>;
|
|
77
|
-
getBundleById: (bundleId: string, context?: HotUpdaterContext<TContext>) => Promise<Bundle | null>;
|
|
78
|
-
getUpdateInfo?: (args: GetBundlesArgs, context?: HotUpdaterContext<TContext>) => Promise<UpdateInfo | null>;
|
|
79
|
-
getBundles: (options: DatabaseBundleQueryOptions, context?: HotUpdaterContext<TContext>) => Promise<Paginated<Bundle[]>>;
|
|
80
|
-
updateBundle: (targetBundleId: string, newBundle: Partial<Bundle>, context?: HotUpdaterContext<TContext>) => Promise<void>;
|
|
81
|
-
appendBundle: (insertBundle: Bundle, context?: HotUpdaterContext<TContext>) => Promise<void>;
|
|
82
|
-
commitBundle: (context?: HotUpdaterContext<TContext>) => Promise<void>;
|
|
83
|
-
onUnmount?: () => Promise<void>;
|
|
84
|
-
name: string;
|
|
85
|
-
deleteBundle: (deleteBundle: Bundle, context?: HotUpdaterContext<TContext>) => Promise<void>;
|
|
86
|
-
}
|
|
87
|
-
interface DatabasePluginHooks {
|
|
88
|
-
onDatabaseUpdated?: () => Promise<void>;
|
|
89
|
-
}
|
|
90
81
|
interface BuildPlugin {
|
|
91
82
|
nativeBuild?: {
|
|
92
83
|
prebuild?: (args: {
|
|
@@ -239,16 +230,6 @@ interface PlatformConfig {
|
|
|
239
230
|
* @example ["android/app/src/main/AndroidManifest.xml"]
|
|
240
231
|
*/
|
|
241
232
|
androidManifestPaths?: string[];
|
|
242
|
-
/**
|
|
243
|
-
* Android string resource paths.
|
|
244
|
-
*
|
|
245
|
-
* @deprecated Android Hot Updater config is stored in AndroidManifest.xml.
|
|
246
|
-
* This remains supported as a legacy read fallback.
|
|
247
|
-
*
|
|
248
|
-
* @default all strings.xml files in the android directory
|
|
249
|
-
* @example ["android/app/src/main/res/values/strings.xml"]
|
|
250
|
-
*/
|
|
251
|
-
stringResourcePaths?: string[];
|
|
252
233
|
};
|
|
253
234
|
/**
|
|
254
235
|
* iOS platform configuration.
|
|
@@ -273,125 +254,115 @@ interface NativeBuildArgs {
|
|
|
273
254
|
*/
|
|
274
255
|
ios?: Record<string, NativeBuildIosScheme>;
|
|
275
256
|
}
|
|
276
|
-
interface
|
|
277
|
-
|
|
278
|
-
|
|
257
|
+
interface StoragePutInput {
|
|
258
|
+
/** Complete object key below the provider's configured base path. */
|
|
259
|
+
readonly key: string;
|
|
260
|
+
readonly body: ReadableStream<Uint8Array>;
|
|
261
|
+
readonly contentLength?: number;
|
|
262
|
+
readonly contentType: string;
|
|
279
263
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
interface StorageObject {
|
|
283
|
-
/** Object key relative to the storage plugin's configured base path. */
|
|
284
|
-
key: string;
|
|
285
|
-
storageUri: string;
|
|
286
|
-
size: number;
|
|
287
|
-
lastModifiedAt?: Date;
|
|
264
|
+
interface StoragePutResult {
|
|
265
|
+
readonly storageUri: string;
|
|
288
266
|
}
|
|
289
|
-
interface
|
|
290
|
-
|
|
291
|
-
storageUri: string;
|
|
292
|
-
}>;
|
|
293
|
-
/**
|
|
294
|
-
* Returns true when the object can be safely reused by deploy without
|
|
295
|
-
* uploading it again. Providers may validate more than physical existence
|
|
296
|
-
* when runtime access needs an additional readiness check.
|
|
297
|
-
*/
|
|
298
|
-
exists: (storageUri: string) => Promise<boolean>;
|
|
299
|
-
delete: (storageUri: string) => Promise<void>;
|
|
300
|
-
downloadFile: (storageUri: string, filePath: string) => Promise<void>;
|
|
301
|
-
/**
|
|
302
|
-
* Optional management capabilities used by storage garbage collection.
|
|
303
|
-
* Object keys are relative to the configured storage base path.
|
|
304
|
-
* `deleteObjects` must delete only the exact keys it receives.
|
|
305
|
-
*/
|
|
306
|
-
listObjects?: (prefix?: string) => Promise<StorageObject[]>;
|
|
307
|
-
deleteObjects?: (keys: readonly string[]) => Promise<void>;
|
|
267
|
+
interface StorageGetInput {
|
|
268
|
+
readonly storageUri: string;
|
|
308
269
|
}
|
|
309
|
-
interface
|
|
310
|
-
|
|
311
|
-
fileUrl: string;
|
|
312
|
-
}>;
|
|
313
|
-
readText: (storageUri: string, context?: StorageResolveContext<TContext>) => Promise<string | null>;
|
|
270
|
+
interface StorageGetResult {
|
|
271
|
+
readonly response: Response | null;
|
|
314
272
|
}
|
|
315
|
-
interface
|
|
316
|
-
|
|
317
|
-
* Node/deploy/console profile.
|
|
318
|
-
*
|
|
319
|
-
* Use this profile when the caller can materialize storage objects to the
|
|
320
|
-
* local filesystem.
|
|
321
|
-
*/
|
|
322
|
-
node?: NodeStorageProfile;
|
|
323
|
-
/**
|
|
324
|
-
* Runtime update-check profile.
|
|
325
|
-
*
|
|
326
|
-
* Use this profile when the caller needs signed/public client URLs and direct
|
|
327
|
-
* server-side reads for small control-plane text objects such as manifests.
|
|
328
|
-
*/
|
|
329
|
-
runtime?: RuntimeStorageProfile<TContext>;
|
|
273
|
+
interface StorageExistsInput {
|
|
274
|
+
readonly storageUri: string;
|
|
330
275
|
}
|
|
331
|
-
interface
|
|
332
|
-
|
|
333
|
-
* Protocol this storage plugin can resolve.
|
|
334
|
-
* @example "s3", "r2", "supabase-storage".
|
|
335
|
-
*/
|
|
336
|
-
supportedProtocol: string;
|
|
337
|
-
name: string;
|
|
338
|
-
profiles: StoragePluginProfiles<TContext>;
|
|
276
|
+
interface StorageExistsResult {
|
|
277
|
+
readonly exists: boolean;
|
|
339
278
|
}
|
|
340
|
-
interface
|
|
341
|
-
|
|
342
|
-
node: NodeStorageProfile;
|
|
343
|
-
runtime?: RuntimeStorageProfile<TContext>;
|
|
344
|
-
};
|
|
279
|
+
interface StorageDeleteInput {
|
|
280
|
+
readonly storageUri: string;
|
|
345
281
|
}
|
|
346
|
-
interface
|
|
347
|
-
|
|
348
|
-
node?: NodeStorageProfile;
|
|
349
|
-
runtime: RuntimeStorageProfile<TContext>;
|
|
350
|
-
};
|
|
282
|
+
interface StorageDeleteResult {
|
|
283
|
+
readonly deleted: true;
|
|
351
284
|
}
|
|
352
|
-
interface
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
285
|
+
interface StorageObject {
|
|
286
|
+
/** Object key relative to the storage plugin's configured base path. */
|
|
287
|
+
readonly key: string;
|
|
288
|
+
readonly storageUri: string;
|
|
289
|
+
readonly size: number;
|
|
290
|
+
readonly lastModifiedAt?: Date;
|
|
357
291
|
}
|
|
358
|
-
interface
|
|
359
|
-
|
|
292
|
+
interface StorageGetDownloadUrlInput {
|
|
293
|
+
readonly storageUri: string;
|
|
294
|
+
}
|
|
295
|
+
interface StorageGetDownloadUrlResult {
|
|
296
|
+
readonly url: string;
|
|
360
297
|
}
|
|
361
298
|
/**
|
|
362
|
-
*
|
|
363
|
-
*
|
|
364
|
-
*
|
|
299
|
+
* Runtime-independent object storage contract.
|
|
300
|
+
*
|
|
301
|
+
* `storageUri` values are hierarchical identifiers in the form
|
|
302
|
+
* `protocol://bucket/slash-separated-encoded-key`.
|
|
303
|
+
*
|
|
304
|
+
* SDK clients, platform bindings, credentials, and local file I/O belong to
|
|
305
|
+
* provider implementations and consumers, never to this interface.
|
|
365
306
|
*/
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
* Enable bundle signing during deployment.
|
|
369
|
-
* When false, signing is disabled and privateKeyPath is optional.
|
|
370
|
-
*/
|
|
371
|
-
enabled: false;
|
|
372
|
-
/**
|
|
373
|
-
* Path to RSA private key file in PEM format (PKCS#8).
|
|
374
|
-
* Optional when signing is disabled.
|
|
375
|
-
*/
|
|
376
|
-
privateKeyPath?: string;
|
|
377
|
-
} | {
|
|
307
|
+
interface StoragePlugin {
|
|
308
|
+
readonly name: string;
|
|
378
309
|
/**
|
|
379
|
-
*
|
|
380
|
-
*
|
|
310
|
+
* Protocol this plugin resolves and stores in database storage URIs.
|
|
311
|
+
* @example "s3", "r2", "supabase-storage".
|
|
381
312
|
*/
|
|
382
|
-
|
|
313
|
+
readonly protocol: string;
|
|
314
|
+
readonly put?: (input: StoragePutInput) => Promise<StoragePutResult>;
|
|
315
|
+
readonly get?: (input: StorageGetInput) => Promise<StorageGetResult>;
|
|
316
|
+
/** Resolves the URL an update client uses to download the object. */
|
|
317
|
+
readonly getDownloadUrl?: (input: StorageGetDownloadUrlInput) => Promise<StorageGetDownloadUrlResult>;
|
|
318
|
+
/**
|
|
319
|
+
* Returns true when an object can be safely reused by deploy. Providers may
|
|
320
|
+
* validate more than physical existence when download readiness is required.
|
|
321
|
+
*/
|
|
322
|
+
readonly exists?: (input: StorageExistsInput) => Promise<StorageExistsResult>;
|
|
323
|
+
/** Deletes exactly the object referenced by `storageUri`. */
|
|
324
|
+
readonly delete?: (input: StorageDeleteInput) => Promise<StorageDeleteResult>;
|
|
325
|
+
/** Lists objects below the optional base-path-relative prefix. */
|
|
326
|
+
readonly listObjects?: (prefix?: string) => Promise<StorageObject[]>;
|
|
327
|
+
/** Deletes only the exact base-path-relative keys supplied by the caller. */
|
|
328
|
+
readonly deleteObjects?: (keys: readonly string[]) => Promise<void>;
|
|
329
|
+
}
|
|
330
|
+
interface BundleSigningPlugin {
|
|
331
|
+
readonly name: string;
|
|
332
|
+
/** Path to the pinned RSA public key embedded in native builds. */
|
|
333
|
+
readonly publicKeyPath: string;
|
|
334
|
+
/** Returns the RSA public key used by this provider in SPKI PEM format. */
|
|
335
|
+
readonly getPublicKey: (input?: {
|
|
336
|
+
readonly cwd?: string;
|
|
337
|
+
}) => Promise<{
|
|
338
|
+
readonly publicKey: string;
|
|
339
|
+
}>;
|
|
383
340
|
/**
|
|
384
|
-
*
|
|
385
|
-
* Generate with: npx hot-updater keys:generate
|
|
341
|
+
* Signs `message` with RSA PKCS#1 v1.5 SHA-256.
|
|
386
342
|
*
|
|
387
|
-
*
|
|
388
|
-
*
|
|
389
|
-
*
|
|
390
|
-
* @example "./keys/private-key.pem"
|
|
391
|
-
* @example "/secure/path/to/private-key.pem"
|
|
343
|
+
* Hot Updater passes the 32 raw bytes decoded from a SHA-256 file hash.
|
|
344
|
+
* Remote signing services must treat this value as the raw message, not as
|
|
345
|
+
* an already-computed digest.
|
|
392
346
|
*/
|
|
393
|
-
|
|
394
|
-
|
|
347
|
+
readonly sign: (input: {
|
|
348
|
+
readonly message: Uint8Array;
|
|
349
|
+
readonly cwd?: string;
|
|
350
|
+
}) => Promise<{
|
|
351
|
+
readonly signature: Uint8Array;
|
|
352
|
+
}>;
|
|
353
|
+
}
|
|
354
|
+
/** Built-in local PEM signing, compatible with the v0 configuration. */
|
|
355
|
+
type LocalSigningConfig = {
|
|
356
|
+
/** Optional pinned RSA SPKI public key. Also enables public-key-only builds. */readonly publicKeyPath?: string;
|
|
357
|
+
} & ({
|
|
358
|
+
readonly enabled: true; /** Path to an RSA private key in PEM format. */
|
|
359
|
+
readonly privateKeyPath: string;
|
|
360
|
+
} | {
|
|
361
|
+
readonly enabled: false;
|
|
362
|
+
readonly privateKeyPath?: string;
|
|
363
|
+
});
|
|
364
|
+
/** Local config or signing plugin. Signing is disabled when omitted. */
|
|
365
|
+
type SigningConfig = BundleSigningPlugin | LocalSigningConfig;
|
|
395
366
|
/**
|
|
396
367
|
* Extra fingerprint sources.
|
|
397
368
|
*
|
|
@@ -411,13 +382,6 @@ type ConfigInput = {
|
|
|
411
382
|
* @default "node_modules/.hot-updater"
|
|
412
383
|
*/
|
|
413
384
|
cacheDir?: string | null;
|
|
414
|
-
/**
|
|
415
|
-
* The channel used when building the native app.
|
|
416
|
-
* Used to replace __HOT_UPDATER_CHANNEL at build time.
|
|
417
|
-
*
|
|
418
|
-
* @deprecated Use the `hot-updater channel create` command to create a channel.
|
|
419
|
-
*/
|
|
420
|
-
releaseChannel?: string;
|
|
421
385
|
/**
|
|
422
386
|
* The strategy used to update the app.
|
|
423
387
|
*
|
|
@@ -507,26 +471,20 @@ type ConfigInput = {
|
|
|
507
471
|
* Code signing configuration for bundle verification.
|
|
508
472
|
* Enables RSA-SHA256 cryptographic signatures for bundle integrity.
|
|
509
473
|
*
|
|
510
|
-
* @optional Feature is opt-in
|
|
474
|
+
* @optional Feature is opt-in.
|
|
511
475
|
*
|
|
512
476
|
* @example
|
|
513
477
|
* ```ts
|
|
514
|
-
* // Signing enabled - privateKeyPath is required
|
|
515
478
|
* signing: {
|
|
516
479
|
* enabled: true,
|
|
517
|
-
* privateKeyPath: './keys/private-key.pem'
|
|
518
|
-
* }
|
|
519
|
-
*
|
|
520
|
-
* // Signing disabled - privateKeyPath is optional
|
|
521
|
-
* signing: {
|
|
522
|
-
* enabled: false
|
|
480
|
+
* privateKeyPath: './keys/private-key.pem',
|
|
523
481
|
* }
|
|
524
482
|
* ```
|
|
525
483
|
*/
|
|
526
484
|
signing?: SigningConfig;
|
|
527
485
|
build: (args: BasePluginArgs) => Promise<BuildPlugin> | BuildPlugin;
|
|
528
|
-
storage:
|
|
529
|
-
database:
|
|
486
|
+
storage: StoragePlugin;
|
|
487
|
+
database: BundleRepository;
|
|
530
488
|
};
|
|
531
489
|
interface NativeBuildOptions {
|
|
532
490
|
outputPath?: string;
|
|
@@ -535,4 +493,4 @@ interface NativeBuildOptions {
|
|
|
535
493
|
scheme?: string;
|
|
536
494
|
}
|
|
537
495
|
//#endregion
|
|
538
|
-
export {
|
|
496
|
+
export { ApplePlatform, BasePluginArgs, BuildPlugin, BuildPluginConfig, type Bundle$1 as Bundle, BundleSigningPlugin, ConfigInput, DatabaseBundleCursor, DatabaseBundleIdFilter, DatabaseBundleQueryOptions, DatabaseBundleQueryOrder, DatabaseBundleQueryWhere, FingerprintExtraSources, IosBuildDestination, LocalSigningConfig, NativeBuildAndroidScheme, NativeBuildArgs, NativeBuildIosScheme, NativeBuildOptions, Paginated, PaginatedResult, PaginationInfo, type Platform$1 as Platform, PlatformConfig, SigningConfig, StorageDeleteInput, StorageDeleteResult, StorageExistsInput, StorageExistsResult, StorageGetDownloadUrlInput, StorageGetDownloadUrlResult, StorageGetInput, StorageGetResult, StorageObject, StoragePlugin, StoragePutInput, StoragePutResult, supportedIosPlatforms };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ApiKeyRow, BundleEventRow, BundleEventRowBase, BundlePatchRow, BundleRow, ChannelRow, DatabaseBundleMetadata, DatabaseField, DatabaseJsonObject, DatabaseJsonValue, DatabaseModel, DatabaseModelMap, DatabaseRow, ReleaseCatalogRow, ReleaseRow } from "./databaseRows.cjs";
|
|
2
|
+
import { AnalyticsModel, AnalyticsScanCursor, AnalyticsScanInput, ApiKeyModel, BundleModel, BundleModelQuery, BundlePatchModel, BundleRepository, BundleRepositoryChange, BundleRepositoryCommit, ChannelDeleteInput, ChannelDeleteResult, ChannelInsertInput, ChannelInsertResult, ChannelModel, DatabaseChange, DatabaseCommit, DatabaseCommitExpectation, DatabaseCommitResult, DatabaseModels, DatabasePlugin, ReleaseCatalogModel, ReleaseModel } from "./databasePlugin.cjs";
|
|
3
|
+
import { DatabaseDistinctFields, DatabaseDistinctOn, DatabaseOrderBy, DatabaseSelect, DatabaseSortBy, DatabaseSortClause, DatabaseSortNulls, DatabaseStringComparisonMode, DatabaseWhere, DatabaseWhereConnector, DatabaseWhereOperator, SelectedDatabaseRow } from "./databaseQuery.cjs";
|
|
4
|
+
import { ApiKeyRowUpdate, BundleRowUpdate, CountBundlesDatabaseImplementationInput, CountBundlesDatabaseInput, CountDatabaseImplementationInput, CountDatabaseInput, CountDatabaseModel, CreateDatabaseImplementationInput, CreateDatabaseInput, CreateDatabaseModel, DatabaseCapability, DatabaseDeleteModel, DatabaseFindOneModel, DatabaseImplementationResult, DatabaseModelCapabilities, DatabaseModelsWithCapability, DatabasePluginCrud, DatabasePluginImplementation, DatabaseRowUpdate, DeleteDatabaseImplementationInput, DeleteDatabaseInput, DeleteDatabaseModel, FindManyDatabaseImplementationInput, FindManyDatabaseInput, FindManyDatabaseModel, FindManyDatabasePluginInput, FindOneDatabaseImplementationInput, FindOneDatabaseInput, FindOneDatabaseModel, ReleaseCatalogRowUpdate, ReleaseRowUpdate, SelectedDatabaseInputRow, TransactionDatabasePluginImplementation, UpdateBundleDatabaseImplementationInput, UpdateBundleDatabaseInput, UpdateDatabaseImplementationInput, UpdateDatabaseInput, UpdateDatabaseModel } from "./databaseOperations.cjs";
|
|
5
|
+
import { BuiltIns, HasMultipleCallSignatures, Primitive, RequiredDeep } from "./utils.cjs";
|
|
6
|
+
import { ApplePlatform, BasePluginArgs, BuildPlugin, BuildPluginConfig, Bundle, BundleSigningPlugin, ConfigInput, DatabaseBundleCursor, DatabaseBundleIdFilter, DatabaseBundleQueryOptions, DatabaseBundleQueryOrder, DatabaseBundleQueryWhere, FingerprintExtraSources, IosBuildDestination, LocalSigningConfig, NativeBuildAndroidScheme, NativeBuildArgs, NativeBuildIosScheme, NativeBuildOptions, Paginated, PaginatedResult, PaginationInfo, Platform, PlatformConfig, SigningConfig, StorageDeleteInput, StorageDeleteResult, StorageExistsInput, StorageExistsResult, StorageGetDownloadUrlInput, StorageGetDownloadUrlResult, StorageGetInput, StorageGetResult, StorageObject, StoragePlugin, StoragePutInput, StoragePutResult, supportedIosPlatforms } from "./index.cjs";
|
|
7
|
+
import { databaseFields } from "./databaseFields.cjs";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ApiKeyRow, BundleEventRow, BundleEventRowBase, BundlePatchRow, BundleRow, ChannelRow, DatabaseBundleMetadata, DatabaseField, DatabaseJsonObject, DatabaseJsonValue, DatabaseModel, DatabaseModelMap, DatabaseRow, ReleaseCatalogRow, ReleaseRow } from "./databaseRows.mjs";
|
|
2
|
+
import { AnalyticsModel, AnalyticsScanCursor, AnalyticsScanInput, ApiKeyModel, BundleModel, BundleModelQuery, BundlePatchModel, BundleRepository, BundleRepositoryChange, BundleRepositoryCommit, ChannelDeleteInput, ChannelDeleteResult, ChannelInsertInput, ChannelInsertResult, ChannelModel, DatabaseChange, DatabaseCommit, DatabaseCommitExpectation, DatabaseCommitResult, DatabaseModels, DatabasePlugin, ReleaseCatalogModel, ReleaseModel } from "./databasePlugin.mjs";
|
|
3
|
+
import { DatabaseDistinctFields, DatabaseDistinctOn, DatabaseOrderBy, DatabaseSelect, DatabaseSortBy, DatabaseSortClause, DatabaseSortNulls, DatabaseStringComparisonMode, DatabaseWhere, DatabaseWhereConnector, DatabaseWhereOperator, SelectedDatabaseRow } from "./databaseQuery.mjs";
|
|
4
|
+
import { ApiKeyRowUpdate, BundleRowUpdate, CountBundlesDatabaseImplementationInput, CountBundlesDatabaseInput, CountDatabaseImplementationInput, CountDatabaseInput, CountDatabaseModel, CreateDatabaseImplementationInput, CreateDatabaseInput, CreateDatabaseModel, DatabaseCapability, DatabaseDeleteModel, DatabaseFindOneModel, DatabaseImplementationResult, DatabaseModelCapabilities, DatabaseModelsWithCapability, DatabasePluginCrud, DatabasePluginImplementation, DatabaseRowUpdate, DeleteDatabaseImplementationInput, DeleteDatabaseInput, DeleteDatabaseModel, FindManyDatabaseImplementationInput, FindManyDatabaseInput, FindManyDatabaseModel, FindManyDatabasePluginInput, FindOneDatabaseImplementationInput, FindOneDatabaseInput, FindOneDatabaseModel, ReleaseCatalogRowUpdate, ReleaseRowUpdate, SelectedDatabaseInputRow, TransactionDatabasePluginImplementation, UpdateBundleDatabaseImplementationInput, UpdateBundleDatabaseInput, UpdateDatabaseImplementationInput, UpdateDatabaseInput, UpdateDatabaseModel } from "./databaseOperations.mjs";
|
|
5
|
+
import { BuiltIns, HasMultipleCallSignatures, Primitive, RequiredDeep } from "./utils.mjs";
|
|
6
|
+
import { ApplePlatform, BasePluginArgs, BuildPlugin, BuildPluginConfig, Bundle, BundleSigningPlugin, ConfigInput, DatabaseBundleCursor, DatabaseBundleIdFilter, DatabaseBundleQueryOptions, DatabaseBundleQueryOrder, DatabaseBundleQueryWhere, FingerprintExtraSources, IosBuildDestination, LocalSigningConfig, NativeBuildAndroidScheme, NativeBuildArgs, NativeBuildIosScheme, NativeBuildOptions, Paginated, PaginatedResult, PaginationInfo, Platform, PlatformConfig, SigningConfig, StorageDeleteInput, StorageDeleteResult, StorageExistsInput, StorageExistsResult, StorageGetDownloadUrlInput, StorageGetDownloadUrlResult, StorageGetInput, StorageGetResult, StorageObject, StoragePlugin, StoragePutInput, StoragePutResult, supportedIosPlatforms } from "./index.mjs";
|
|
7
|
+
import { databaseFields } from "./databaseFields.mjs";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ApiKeyRow, BundleEventRow, BundleEventRowBase, BundlePatchRow, BundleRow, ChannelRow, DatabaseBundleMetadata, DatabaseJsonObject, DatabaseJsonValue, ReleaseCatalogRow, ReleaseRow } from "./databaseRows.cjs";
|
|
2
|
+
import { AnalyticsModel, AnalyticsScanCursor, AnalyticsScanInput, ApiKeyModel, BundleModel, BundleModelQuery, BundlePatchModel, BundleRepository, BundleRepositoryChange, BundleRepositoryCommit, ChannelDeleteInput, ChannelDeleteResult, ChannelInsertInput, ChannelInsertResult, ChannelModel, DatabaseChange, DatabaseCommit, DatabaseCommitExpectation, DatabaseCommitResult, DatabaseModels, DatabasePlugin, ReleaseCatalogModel, ReleaseModel } from "./databasePlugin.cjs";
|
|
3
|
+
import { BundleRowUpdate, ReleaseCatalogRowUpdate, ReleaseRowUpdate } from "./databaseOperations.cjs";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ApiKeyRow, BundleEventRow, BundleEventRowBase, BundlePatchRow, BundleRow, ChannelRow, DatabaseBundleMetadata, DatabaseJsonObject, DatabaseJsonValue, ReleaseCatalogRow, ReleaseRow } from "./databaseRows.mjs";
|
|
2
|
+
import { AnalyticsModel, AnalyticsScanCursor, AnalyticsScanInput, ApiKeyModel, BundleModel, BundleModelQuery, BundlePatchModel, BundleRepository, BundleRepositoryChange, BundleRepositoryCommit, ChannelDeleteInput, ChannelDeleteResult, ChannelInsertInput, ChannelInsertResult, ChannelModel, DatabaseChange, DatabaseCommit, DatabaseCommitExpectation, DatabaseCommitResult, DatabaseModels, DatabasePlugin, ReleaseCatalogModel, ReleaseModel } from "./databasePlugin.mjs";
|
|
3
|
+
import { BundleRowUpdate, ReleaseCatalogRowUpdate, ReleaseRowUpdate } from "./databaseOperations.mjs";
|
package/dist/uuidv7.cjs
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
require("./_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
let _hot_updater_core = require("@hot-updater/core");
|
|
1
3
|
//#region src/uuidv7.ts
|
|
2
4
|
const extractTimestampFromUUIDv7 = (uuid) => {
|
|
5
|
+
if (!(0, _hot_updater_core.isUUIDv7)(uuid)) throw new TypeError("Expected a canonical lowercase UUIDv7");
|
|
3
6
|
const timestampHex = uuid.split("-").join("").slice(0, 12);
|
|
4
7
|
return Number.parseInt(timestampHex, 16);
|
|
5
8
|
};
|
|
@@ -20,10 +23,16 @@ function createUUIDv7FromTimestampHex(timestampHex) {
|
|
|
20
23
|
].join("-");
|
|
21
24
|
}
|
|
22
25
|
const createUUIDv7 = () => createUUIDv7FromTimestampHex(Date.now().toString(16).padStart(12, "0"));
|
|
26
|
+
const createUUIDv7After = (floor, nowMs = Date.now()) => {
|
|
27
|
+
const timestamp = Math.max(nowMs, floor === null ? 0 : extractTimestampFromUUIDv7(floor) + 1);
|
|
28
|
+
if (!Number.isSafeInteger(timestamp) || timestamp < 0 || timestamp >= 2 ** 48) throw new RangeError("UUIDv7 timestamp is out of range");
|
|
29
|
+
return createUUIDv7FromTimestampHex(timestamp.toString(16).padStart(12, "0"));
|
|
30
|
+
};
|
|
23
31
|
const createUUIDv7WithSameTimestamp = (originalUuid) => {
|
|
24
32
|
return createUUIDv7FromTimestampHex(originalUuid.split("-").join("").slice(0, 12));
|
|
25
33
|
};
|
|
26
34
|
//#endregion
|
|
27
35
|
exports.createUUIDv7 = createUUIDv7;
|
|
36
|
+
exports.createUUIDv7After = createUUIDv7After;
|
|
28
37
|
exports.createUUIDv7WithSameTimestamp = createUUIDv7WithSameTimestamp;
|
|
29
38
|
exports.extractTimestampFromUUIDv7 = extractTimestampFromUUIDv7;
|
package/dist/uuidv7.d.cts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { isUUIDv7 } from "@hot-updater/core";
|
|
2
|
+
|
|
1
3
|
//#region src/uuidv7.d.ts
|
|
2
4
|
declare const extractTimestampFromUUIDv7: (uuid: string) => number;
|
|
3
5
|
declare const createUUIDv7: () => string;
|
|
6
|
+
declare const createUUIDv7After: (floor: string | null, nowMs?: number) => string;
|
|
4
7
|
declare const createUUIDv7WithSameTimestamp: (originalUuid: string) => string;
|
|
5
8
|
//#endregion
|
|
6
|
-
export { createUUIDv7, createUUIDv7WithSameTimestamp, extractTimestampFromUUIDv7 };
|
|
9
|
+
export { createUUIDv7, createUUIDv7After, createUUIDv7WithSameTimestamp, extractTimestampFromUUIDv7, isUUIDv7 };
|
package/dist/uuidv7.d.mts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { isUUIDv7 as isUUIDv7$1 } from "@hot-updater/core";
|
|
2
|
+
|
|
1
3
|
//#region src/uuidv7.d.ts
|
|
2
4
|
declare const extractTimestampFromUUIDv7: (uuid: string) => number;
|
|
3
5
|
declare const createUUIDv7: () => string;
|
|
6
|
+
declare const createUUIDv7After: (floor: string | null, nowMs?: number) => string;
|
|
4
7
|
declare const createUUIDv7WithSameTimestamp: (originalUuid: string) => string;
|
|
5
8
|
//#endregion
|
|
6
|
-
export { createUUIDv7, createUUIDv7WithSameTimestamp, extractTimestampFromUUIDv7 };
|
|
9
|
+
export { createUUIDv7, createUUIDv7After, createUUIDv7WithSameTimestamp, extractTimestampFromUUIDv7, isUUIDv7$1 as isUUIDv7 };
|
package/dist/uuidv7.mjs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { isUUIDv7, isUUIDv7 as isUUIDv7$1 } from "@hot-updater/core";
|
|
1
2
|
//#region src/uuidv7.ts
|
|
2
3
|
const extractTimestampFromUUIDv7 = (uuid) => {
|
|
4
|
+
if (!isUUIDv7(uuid)) throw new TypeError("Expected a canonical lowercase UUIDv7");
|
|
3
5
|
const timestampHex = uuid.split("-").join("").slice(0, 12);
|
|
4
6
|
return Number.parseInt(timestampHex, 16);
|
|
5
7
|
};
|
|
@@ -20,8 +22,13 @@ function createUUIDv7FromTimestampHex(timestampHex) {
|
|
|
20
22
|
].join("-");
|
|
21
23
|
}
|
|
22
24
|
const createUUIDv7 = () => createUUIDv7FromTimestampHex(Date.now().toString(16).padStart(12, "0"));
|
|
25
|
+
const createUUIDv7After = (floor, nowMs = Date.now()) => {
|
|
26
|
+
const timestamp = Math.max(nowMs, floor === null ? 0 : extractTimestampFromUUIDv7(floor) + 1);
|
|
27
|
+
if (!Number.isSafeInteger(timestamp) || timestamp < 0 || timestamp >= 2 ** 48) throw new RangeError("UUIDv7 timestamp is out of range");
|
|
28
|
+
return createUUIDv7FromTimestampHex(timestamp.toString(16).padStart(12, "0"));
|
|
29
|
+
};
|
|
23
30
|
const createUUIDv7WithSameTimestamp = (originalUuid) => {
|
|
24
31
|
return createUUIDv7FromTimestampHex(originalUuid.split("-").join("").slice(0, 12));
|
|
25
32
|
};
|
|
26
33
|
//#endregion
|
|
27
|
-
export { createUUIDv7, createUUIDv7WithSameTimestamp, extractTimestampFromUUIDv7 };
|
|
34
|
+
export { createUUIDv7, createUUIDv7After, createUUIDv7WithSameTimestamp, extractTimestampFromUUIDv7, isUUIDv7$1 as isUUIDv7 };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hot-updater/plugin-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-rc.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "React Native OTA solution for self-hosted",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
"import": "./dist/index.mjs",
|
|
13
13
|
"require": "./dist/index.cjs"
|
|
14
14
|
},
|
|
15
|
+
"./internal": {
|
|
16
|
+
"import": "./dist/internal.mjs",
|
|
17
|
+
"require": "./dist/internal.cjs"
|
|
18
|
+
},
|
|
15
19
|
"./package.json": "./package.json"
|
|
16
20
|
},
|
|
17
21
|
"files": [
|
|
@@ -45,14 +49,15 @@
|
|
|
45
49
|
"es-toolkit": "^1.32.0",
|
|
46
50
|
"mime": "^4.0.4",
|
|
47
51
|
"verkit": "0.3.2",
|
|
48
|
-
"@hot-updater/core": "0.
|
|
49
|
-
"@hot-updater/js": "0.36.7"
|
|
52
|
+
"@hot-updater/core": "1.0.0-rc.0"
|
|
50
53
|
},
|
|
51
54
|
"devDependencies": {
|
|
52
55
|
"@types/node": "^20",
|
|
53
56
|
"@typescript/native": "npm:typescript@7.0.2",
|
|
54
|
-
"typescript": "npm:@typescript/typescript6@6.0.2"
|
|
55
|
-
|
|
57
|
+
"typescript": "npm:@typescript/typescript6@6.0.2"
|
|
58
|
+
},
|
|
59
|
+
"inlinedDependencies": {
|
|
60
|
+
"verkit": "0.3.2"
|
|
56
61
|
},
|
|
57
62
|
"scripts": {
|
|
58
63
|
"build": "tsdown",
|