@hot-updater/plugin-core 0.36.7 → 1.0.0-rc.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.
Files changed (161) hide show
  1. package/dist/assetStorageLayout.cjs +36 -18
  2. package/dist/assetStorageLayout.d.cts +21 -6
  3. package/dist/assetStorageLayout.d.mts +21 -6
  4. package/dist/assetStorageLayout.mjs +36 -18
  5. package/dist/bundleStorageLayout.cjs +2 -3
  6. package/dist/bundleStorageLayout.mjs +2 -3
  7. package/dist/contentAddressedAssets.cjs +5 -0
  8. package/dist/contentAddressedAssets.d.cts +2 -1
  9. package/dist/contentAddressedAssets.d.mts +2 -1
  10. package/dist/contentAddressedAssets.mjs +5 -1
  11. package/dist/createDatabasePlugin.cjs +775 -284
  12. package/dist/createDatabasePlugin.d.cts +20 -64
  13. package/dist/createDatabasePlugin.d.mts +20 -64
  14. package/dist/createDatabasePlugin.mjs +773 -284
  15. package/dist/createStorageKeyBuilder.cjs +9 -2
  16. package/dist/createStorageKeyBuilder.mjs +9 -2
  17. package/dist/createStoragePlugin.cjs +6 -145
  18. package/dist/createStoragePlugin.d.cts +7 -52
  19. package/dist/createStoragePlugin.d.mts +7 -52
  20. package/dist/createStoragePlugin.mjs +5 -143
  21. package/dist/databaseClient.cjs +112 -0
  22. package/dist/databaseClient.d.cts +33 -0
  23. package/dist/databaseClient.d.mts +33 -0
  24. package/dist/databaseClient.mjs +110 -0
  25. package/dist/databaseClientReads.cjs +113 -0
  26. package/dist/databaseClientReads.mjs +112 -0
  27. package/dist/databaseClientUpdates.cjs +39 -0
  28. package/dist/databaseClientUpdates.d.cts +11 -0
  29. package/dist/databaseClientUpdates.d.mts +11 -0
  30. package/dist/databaseClientUpdates.mjs +36 -0
  31. package/dist/databaseJsonValue.cjs +37 -0
  32. package/dist/databaseJsonValue.d.cts +5 -0
  33. package/dist/databaseJsonValue.d.mts +5 -0
  34. package/dist/databaseJsonValue.mjs +37 -0
  35. package/dist/databaseMetadata.cjs +13 -0
  36. package/dist/databaseMetadata.mjs +12 -0
  37. package/dist/databasePluginCrud.cjs +86 -0
  38. package/dist/databasePluginCrud.d.cts +1 -0
  39. package/dist/databasePluginCrud.d.mts +1 -0
  40. package/dist/databasePluginCrud.mjs +86 -0
  41. package/dist/databasePluginCrudValidation.d.cts +1 -0
  42. package/dist/databasePluginCrudValidation.d.mts +1 -0
  43. package/dist/databasePluginCrudValidationErrors.cjs +10 -0
  44. package/dist/databasePluginCrudValidationErrors.d.cts +9 -0
  45. package/dist/databasePluginCrudValidationErrors.d.mts +9 -0
  46. package/dist/databasePluginCrudValidationErrors.mjs +10 -0
  47. package/dist/databasePluginCrudValidationFields.cjs +291 -0
  48. package/dist/databasePluginCrudValidationFields.d.cts +1 -0
  49. package/dist/databasePluginCrudValidationFields.d.mts +1 -0
  50. package/dist/databasePluginCrudValidationFields.mjs +281 -0
  51. package/dist/databasePluginCrudValidationMutations.cjs +88 -0
  52. package/dist/databasePluginCrudValidationMutations.d.cts +1 -0
  53. package/dist/databasePluginCrudValidationMutations.d.mts +1 -0
  54. package/dist/databasePluginCrudValidationMutations.mjs +82 -0
  55. package/dist/databasePluginCrudValidationQueries.cjs +103 -0
  56. package/dist/databasePluginCrudValidationQueries.d.cts +1 -0
  57. package/dist/databasePluginCrudValidationQueries.d.mts +1 -0
  58. package/dist/databasePluginCrudValidationQueries.mjs +97 -0
  59. package/dist/databasePluginCrudValidationRows.cjs +55 -0
  60. package/dist/databasePluginCrudValidationRows.d.cts +1 -0
  61. package/dist/databasePluginCrudValidationRows.d.mts +1 -0
  62. package/dist/databasePluginCrudValidationRows.mjs +53 -0
  63. package/dist/databasePluginTransaction.cjs +7 -0
  64. package/dist/databasePluginTransaction.mjs +7 -0
  65. package/dist/databaseRows.cjs +149 -0
  66. package/dist/databaseRows.d.cts +34 -0
  67. package/dist/databaseRows.d.mts +34 -0
  68. package/dist/databaseRows.mjs +141 -0
  69. package/dist/index.cjs +76 -24
  70. package/dist/index.d.cts +22 -12
  71. package/dist/index.d.mts +22 -12
  72. package/dist/index.mjs +21 -14
  73. package/dist/internal.cjs +6 -0
  74. package/dist/internal.d.cts +9 -0
  75. package/dist/internal.d.mts +9 -0
  76. package/dist/internal.mjs +3 -0
  77. package/dist/node_modules/.pnpm/verkit@0.3.2/node_modules/verkit/dist/index.cjs +345 -0
  78. package/dist/node_modules/.pnpm/verkit@0.3.2/node_modules/verkit/dist/index.mjs +341 -0
  79. package/dist/paginateBundles.d.cts +6 -4
  80. package/dist/paginateBundles.d.mts +6 -4
  81. package/dist/parseStorageUri.cjs +46 -30
  82. package/dist/parseStorageUri.d.cts +20 -17
  83. package/dist/parseStorageUri.d.mts +20 -17
  84. package/dist/parseStorageUri.mjs +46 -30
  85. package/dist/queryBundles.cjs +1 -7
  86. package/dist/queryBundles.d.cts +3 -1
  87. package/dist/queryBundles.d.mts +3 -1
  88. package/dist/queryBundles.mjs +1 -7
  89. package/dist/releaseCatalogCompiler.cjs +391 -0
  90. package/dist/releaseCatalogCompiler.d.cts +55 -0
  91. package/dist/releaseCatalogCompiler.d.mts +55 -0
  92. package/dist/releaseCatalogCompiler.mjs +386 -0
  93. package/dist/releaseCatalogMutation.cjs +303 -0
  94. package/dist/releaseCatalogMutation.d.cts +86 -0
  95. package/dist/releaseCatalogMutation.d.mts +86 -0
  96. package/dist/releaseCatalogMutation.mjs +297 -0
  97. package/dist/releaseManagement.cjs +231 -0
  98. package/dist/releaseManagement.d.cts +48 -0
  99. package/dist/releaseManagement.d.mts +48 -0
  100. package/dist/releaseManagement.mjs +224 -0
  101. package/dist/remoteBundleSigning.cjs +294 -0
  102. package/dist/remoteBundleSigning.d.cts +41 -0
  103. package/dist/remoteBundleSigning.d.mts +41 -0
  104. package/dist/remoteBundleSigning.mjs +289 -0
  105. package/dist/requestBundleCache.cjs +22 -0
  106. package/dist/requestBundleCache.d.cts +9 -0
  107. package/dist/requestBundleCache.d.mts +9 -0
  108. package/dist/requestBundleCache.mjs +22 -0
  109. package/dist/semverSatisfies.cjs +3 -4
  110. package/dist/semverSatisfies.mjs +1 -1
  111. package/dist/storageDownloadPath.cjs +48 -0
  112. package/dist/storageDownloadPath.d.cts +15 -0
  113. package/dist/storageDownloadPath.d.mts +15 -0
  114. package/dist/storageDownloadPath.mjs +46 -0
  115. package/dist/types/database.d.cts +4 -0
  116. package/dist/types/database.d.mts +4 -0
  117. package/dist/types/databaseFields.cjs +92 -0
  118. package/dist/types/databaseFields.d.cts +12 -0
  119. package/dist/types/databaseFields.d.mts +12 -0
  120. package/dist/types/databaseFields.mjs +92 -0
  121. package/dist/types/databaseOperations.d.cts +173 -0
  122. package/dist/types/databaseOperations.d.mts +173 -0
  123. package/dist/types/databasePlugin.d.cts +240 -0
  124. package/dist/types/databasePlugin.d.mts +240 -0
  125. package/dist/types/databaseQuery.d.cts +47 -0
  126. package/dist/types/databaseQuery.d.mts +47 -0
  127. package/dist/types/databaseRows.d.cts +120 -0
  128. package/dist/types/databaseRows.d.mts +120 -0
  129. package/dist/types/index.d.cts +119 -161
  130. package/dist/types/index.d.mts +119 -161
  131. package/dist/types/internal.d.cts +7 -0
  132. package/dist/types/internal.d.mts +7 -0
  133. package/dist/types/public.d.cts +3 -0
  134. package/dist/types/public.d.mts +3 -0
  135. package/dist/uuidv7.cjs +9 -0
  136. package/dist/uuidv7.d.cts +4 -1
  137. package/dist/uuidv7.d.mts +4 -1
  138. package/dist/uuidv7.mjs +8 -1
  139. package/package.json +10 -5
  140. package/dist/bundleUnitOfWork.cjs +0 -158
  141. package/dist/bundleUnitOfWork.mjs +0 -158
  142. package/dist/bundleUnitOfWorkStore.cjs +0 -15
  143. package/dist/bundleUnitOfWorkStore.mjs +0 -15
  144. package/dist/createBlobDatabasePlugin.cjs +0 -382
  145. package/dist/createBlobDatabasePlugin.d.cts +0 -29
  146. package/dist/createBlobDatabasePlugin.d.mts +0 -29
  147. package/dist/createBlobDatabasePlugin.mjs +0 -381
  148. package/dist/legacyAssetStorageLayout.cjs +0 -12
  149. package/dist/legacyAssetStorageLayout.mjs +0 -12
  150. package/dist/requestUpdateBundleState.cjs +0 -26
  151. package/dist/requestUpdateBundleState.d.cts +0 -12
  152. package/dist/requestUpdateBundleState.d.mts +0 -12
  153. package/dist/requestUpdateBundleState.mjs +0 -24
  154. package/dist/resolveUpdateInfoFromBundles.cjs +0 -14
  155. package/dist/resolveUpdateInfoFromBundles.d.cts +0 -16
  156. package/dist/resolveUpdateInfoFromBundles.d.mts +0 -16
  157. package/dist/resolveUpdateInfoFromBundles.mjs +0 -13
  158. package/dist/storageProfile.cjs +0 -15
  159. package/dist/storageProfile.d.cts +0 -9
  160. package/dist/storageProfile.d.mts +0 -9
  161. package/dist/storageProfile.mjs +0 -12
@@ -1,70 +1,26 @@
1
- import { DatabaseBundleQueryOptions, DatabasePlugin, DatabasePluginHooks, HotUpdaterContext, Paginated } from "./types/index.cjs";
2
- import { Bundle, GetBundlesArgs, UpdateInfo } from "@hot-updater/core";
3
-
1
+ import { DatabasePlugin } from "./types/databasePlugin.cjs";
2
+ import { DatabasePluginImplementation } from "./types/databaseOperations.cjs";
3
+ import { DatabasePluginInputError, DatabasePluginInputErrorCode } from "./databasePluginCrudValidationErrors.cjs";
4
4
  //#region src/createDatabasePlugin.d.ts
5
- interface AbstractDatabasePlugin<TContext = unknown> {
6
- supportsCursorPagination?: boolean;
7
- getBundleById: (bundleId: string, context?: HotUpdaterContext<TContext>) => Promise<Bundle | null>;
8
- getUpdateInfo?: (args: GetBundlesArgs, context?: HotUpdaterContext<TContext>) => Promise<UpdateInfo | null>;
9
- getBundles: (options: DatabaseBundleQueryOptions & {
10
- offset?: number;
11
- }, context?: HotUpdaterContext<TContext>) => Promise<Paginated<Bundle[]>>;
12
- getChannels: (context?: HotUpdaterContext<TContext>) => Promise<string[]>;
13
- onUnmount?: () => Promise<void>;
14
- commitBundle: (params: {
15
- changedSets: {
16
- operation: "insert" | "update" | "delete";
17
- data: Bundle;
18
- }[];
19
- }, context?: HotUpdaterContext<TContext>) => Promise<void>;
5
+ declare class DatabaseAtomicCommitUnsupportedError extends Error {
6
+ readonly pluginName: string;
7
+ readonly name = "DatabaseAtomicCommitUnsupportedError";
8
+ constructor(pluginName: string);
20
9
  }
21
10
  /**
22
- * Database plugin methods without name
23
- */
24
- type DatabasePluginMethods<TContext = unknown> = Omit<AbstractDatabasePlugin<TContext>, never>;
25
- /**
26
- * Factory function that creates database plugin methods
27
- */
28
- type DatabasePluginFactory<TConfig, TContext = unknown> = (config: TConfig) => DatabasePluginMethods<TContext>;
29
- /**
30
- * Configuration options for creating a database plugin
31
- */
32
- interface CreateDatabasePluginOptions<TConfig, TContext = unknown> {
33
- /**
34
- * The name of the database plugin (e.g., "postgres", "d1Database")
35
- */
36
- name: string;
37
- /**
38
- * Function that creates the database plugin methods
39
- */
40
- factory: DatabasePluginFactory<TConfig, TContext>;
41
- }
42
- /**
43
- * Creates a database plugin with lazy initialization and automatic hook execution.
44
- *
45
- * This factory function abstracts the double currying pattern used by all database plugins,
46
- * ensuring consistent lazy initialization behavior across different database providers.
47
- * Hooks are automatically executed at appropriate times without requiring manual invocation.
11
+ * Internal provider signal for a delete rejected by a live reference.
48
12
  *
49
- * @param options - Configuration options for the database plugin
50
- * @returns A double-curried function that lazily initializes the database plugin
51
- *
52
- * @example
53
- * ```typescript
54
- * export const postgres = createDatabasePlugin<PostgresConfig>({
55
- * name: "postgres",
56
- * factory: (config) => {
57
- * const db = new Kysely(config);
58
- * return {
59
- * async getBundleById(bundleId) { ... },
60
- * async getBundles(options) { ... },
61
- * async getChannels() { ... },
62
- * async commitBundle({ changedSets }) { ... }
63
- * };
64
- * }
65
- * });
66
- * ```
13
+ * Provider implementations throw this after translating their native
14
+ * foreign-key or reference-condition error. The public database contract
15
+ * observes only the indexed `referenced` commit conflict.
67
16
  */
68
- declare function createDatabasePlugin<TConfig, TContext = unknown>(options: CreateDatabasePluginOptions<TConfig, TContext>): (config: TConfig, hooks?: DatabasePluginHooks) => (() => DatabasePlugin<TContext>);
17
+ declare class DatabaseRowReferencedError extends Error {
18
+ readonly name = "DatabaseRowReferencedError";
19
+ constructor();
20
+ }
21
+ type CreateDatabasePluginOptions = DatabasePlugin;
22
+ type DatabasePluginAdapter = Omit<DatabasePlugin, "name">;
23
+ declare const createDatabasePluginAdapter: (name: string, implementation: DatabasePluginImplementation) => DatabasePluginAdapter;
24
+ declare const createDatabasePlugin: (options: CreateDatabasePluginOptions) => DatabasePlugin;
69
25
  //#endregion
70
- export { AbstractDatabasePlugin, CreateDatabasePluginOptions, createDatabasePlugin };
26
+ export { CreateDatabasePluginOptions, DatabaseAtomicCommitUnsupportedError, DatabasePluginAdapter, DatabaseRowReferencedError, createDatabasePlugin, createDatabasePluginAdapter };
@@ -1,70 +1,26 @@
1
- import { DatabaseBundleQueryOptions, DatabasePlugin, DatabasePluginHooks, HotUpdaterContext, Paginated } from "./types/index.mjs";
2
- import { Bundle, GetBundlesArgs, UpdateInfo } from "@hot-updater/core";
3
-
1
+ import { DatabasePlugin } from "./types/databasePlugin.mjs";
2
+ import { DatabasePluginImplementation } from "./types/databaseOperations.mjs";
3
+ import { DatabasePluginInputError, DatabasePluginInputErrorCode } from "./databasePluginCrudValidationErrors.mjs";
4
4
  //#region src/createDatabasePlugin.d.ts
5
- interface AbstractDatabasePlugin<TContext = unknown> {
6
- supportsCursorPagination?: boolean;
7
- getBundleById: (bundleId: string, context?: HotUpdaterContext<TContext>) => Promise<Bundle | null>;
8
- getUpdateInfo?: (args: GetBundlesArgs, context?: HotUpdaterContext<TContext>) => Promise<UpdateInfo | null>;
9
- getBundles: (options: DatabaseBundleQueryOptions & {
10
- offset?: number;
11
- }, context?: HotUpdaterContext<TContext>) => Promise<Paginated<Bundle[]>>;
12
- getChannels: (context?: HotUpdaterContext<TContext>) => Promise<string[]>;
13
- onUnmount?: () => Promise<void>;
14
- commitBundle: (params: {
15
- changedSets: {
16
- operation: "insert" | "update" | "delete";
17
- data: Bundle;
18
- }[];
19
- }, context?: HotUpdaterContext<TContext>) => Promise<void>;
5
+ declare class DatabaseAtomicCommitUnsupportedError extends Error {
6
+ readonly pluginName: string;
7
+ readonly name = "DatabaseAtomicCommitUnsupportedError";
8
+ constructor(pluginName: string);
20
9
  }
21
10
  /**
22
- * Database plugin methods without name
23
- */
24
- type DatabasePluginMethods<TContext = unknown> = Omit<AbstractDatabasePlugin<TContext>, never>;
25
- /**
26
- * Factory function that creates database plugin methods
27
- */
28
- type DatabasePluginFactory<TConfig, TContext = unknown> = (config: TConfig) => DatabasePluginMethods<TContext>;
29
- /**
30
- * Configuration options for creating a database plugin
31
- */
32
- interface CreateDatabasePluginOptions<TConfig, TContext = unknown> {
33
- /**
34
- * The name of the database plugin (e.g., "postgres", "d1Database")
35
- */
36
- name: string;
37
- /**
38
- * Function that creates the database plugin methods
39
- */
40
- factory: DatabasePluginFactory<TConfig, TContext>;
41
- }
42
- /**
43
- * Creates a database plugin with lazy initialization and automatic hook execution.
44
- *
45
- * This factory function abstracts the double currying pattern used by all database plugins,
46
- * ensuring consistent lazy initialization behavior across different database providers.
47
- * Hooks are automatically executed at appropriate times without requiring manual invocation.
11
+ * Internal provider signal for a delete rejected by a live reference.
48
12
  *
49
- * @param options - Configuration options for the database plugin
50
- * @returns A double-curried function that lazily initializes the database plugin
51
- *
52
- * @example
53
- * ```typescript
54
- * export const postgres = createDatabasePlugin<PostgresConfig>({
55
- * name: "postgres",
56
- * factory: (config) => {
57
- * const db = new Kysely(config);
58
- * return {
59
- * async getBundleById(bundleId) { ... },
60
- * async getBundles(options) { ... },
61
- * async getChannels() { ... },
62
- * async commitBundle({ changedSets }) { ... }
63
- * };
64
- * }
65
- * });
66
- * ```
13
+ * Provider implementations throw this after translating their native
14
+ * foreign-key or reference-condition error. The public database contract
15
+ * observes only the indexed `referenced` commit conflict.
67
16
  */
68
- declare function createDatabasePlugin<TConfig, TContext = unknown>(options: CreateDatabasePluginOptions<TConfig, TContext>): (config: TConfig, hooks?: DatabasePluginHooks) => (() => DatabasePlugin<TContext>);
17
+ declare class DatabaseRowReferencedError extends Error {
18
+ readonly name = "DatabaseRowReferencedError";
19
+ constructor();
20
+ }
21
+ type CreateDatabasePluginOptions = DatabasePlugin;
22
+ type DatabasePluginAdapter = Omit<DatabasePlugin, "name">;
23
+ declare const createDatabasePluginAdapter: (name: string, implementation: DatabasePluginImplementation) => DatabasePluginAdapter;
24
+ declare const createDatabasePlugin: (options: CreateDatabasePluginOptions) => DatabasePlugin;
69
25
  //#endregion
70
- export { AbstractDatabasePlugin, CreateDatabasePluginOptions, createDatabasePlugin };
26
+ export { CreateDatabasePluginOptions, DatabaseAtomicCommitUnsupportedError, DatabasePluginAdapter, DatabaseRowReferencedError, createDatabasePlugin, createDatabasePluginAdapter };