@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.
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 +296 -0
  102. package/dist/remoteBundleSigning.d.cts +43 -0
  103. package/dist/remoteBundleSigning.d.mts +43 -0
  104. package/dist/remoteBundleSigning.mjs +291 -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 +120 -162
  130. package/dist/types/index.d.mts +120 -162
  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
@@ -0,0 +1,47 @@
1
+ import { DatabaseField, DatabaseModel, DatabaseRow } from "./databaseRows.cjs";
2
+
3
+ //#region src/types/databaseQuery.d.ts
4
+ type DatabaseWhereOperator = "eq" | "ne" | "lt" | "lte" | "gt" | "gte" | "in" | "not_in" | "contains" | "starts_with" | "ends_with";
5
+ type DatabaseWhereConnector = "AND" | "OR";
6
+ type DatabaseStringComparisonMode = "sensitive" | "insensitive";
7
+ type DatabaseSortNulls = "first" | "last";
8
+ type WhereBase<TField extends string> = {
9
+ readonly field: TField;
10
+ readonly connector?: DatabaseWhereConnector;
11
+ };
12
+ type EqualityWhere<TField extends string, TValue> = WhereBase<TField> & {
13
+ readonly operator?: "eq" | "ne";
14
+ readonly value: TValue;
15
+ };
16
+ type StringWhere<TField extends string> = WhereBase<TField> & {
17
+ readonly operator?: "eq" | "ne" | "contains" | "starts_with" | "ends_with";
18
+ readonly value: string;
19
+ readonly mode?: DatabaseStringComparisonMode;
20
+ };
21
+ type OrderedWhere<TField extends string, TValue extends number | string> = WhereBase<TField> & {
22
+ readonly operator: "gt" | "gte" | "lt" | "lte";
23
+ readonly value: TValue;
24
+ };
25
+ type SetWhere<TField extends string, TValue extends boolean | number | string> = WhereBase<TField> & {
26
+ readonly operator: "in" | "not_in";
27
+ readonly value: readonly TValue[];
28
+ };
29
+ type ScalarWhereValue<TValue> = unknown extends TValue ? never : Extract<TValue, readonly unknown[] | object> extends never ? Extract<TValue, boolean | number | string | null> : never;
30
+ type FieldWhere<TField extends string, TValue> = ([ScalarWhereValue<TValue>] extends [never] ? never : EqualityWhere<TField, ScalarWhereValue<TValue>>) | (Extract<TValue, string> extends never ? never : StringWhere<TField>) | (Extract<TValue, number | string> extends never ? never : OrderedWhere<TField, Extract<TValue, number | string>>) | (Extract<TValue, boolean | number | string> extends never ? never : SetWhere<TField, Extract<TValue, boolean | number | string>>);
31
+ type DatabaseWhere<TModel extends DatabaseModel> = { readonly [TField in DatabaseField<TModel>]: FieldWhere<TField, DatabaseRow<TModel>[TField]> }[DatabaseField<TModel>];
32
+ type DatabaseSelect<TModel extends DatabaseModel> = readonly DatabaseField<TModel>[];
33
+ type SelectedDatabaseRow<TModel extends DatabaseModel, TSelect extends DatabaseSelect<TModel> | undefined> = TSelect extends DatabaseSelect<TModel> ? Pick<DatabaseRow<TModel>, TSelect[number]> : DatabaseRow<TModel>;
34
+ type DatabaseSortableField<TModel extends DatabaseModel> = { readonly [TField in DatabaseField<TModel>]: Exclude<DatabaseRow<TModel>[TField], null> extends number | string ? TField : never }[DatabaseField<TModel>];
35
+ interface DatabaseSortClause<TModel extends DatabaseModel> {
36
+ readonly field: DatabaseSortableField<TModel>;
37
+ readonly direction: "asc" | "desc";
38
+ readonly nulls?: DatabaseSortNulls;
39
+ }
40
+ type DatabaseSortBy<TModel extends DatabaseModel> = DatabaseSortClause<TModel>;
41
+ type DatabaseOrderBy<TModel extends DatabaseModel> = readonly [DatabaseSortClause<TModel>, ...DatabaseSortClause<TModel>[]];
42
+ type DatabaseDistinctFields<TModel extends DatabaseModel> = readonly [DatabaseField<TModel>, ...DatabaseField<TModel>[]];
43
+ interface DatabaseDistinctOn<TModel extends DatabaseModel> {
44
+ readonly fields: DatabaseDistinctFields<TModel>;
45
+ }
46
+ //#endregion
47
+ export { DatabaseDistinctFields, DatabaseDistinctOn, DatabaseOrderBy, DatabaseSelect, DatabaseSortBy, DatabaseSortClause, DatabaseSortNulls, DatabaseStringComparisonMode, DatabaseWhere, DatabaseWhereConnector, DatabaseWhereOperator, SelectedDatabaseRow };
@@ -0,0 +1,47 @@
1
+ import { DatabaseField, DatabaseModel, DatabaseRow } from "./databaseRows.mjs";
2
+
3
+ //#region src/types/databaseQuery.d.ts
4
+ type DatabaseWhereOperator = "eq" | "ne" | "lt" | "lte" | "gt" | "gte" | "in" | "not_in" | "contains" | "starts_with" | "ends_with";
5
+ type DatabaseWhereConnector = "AND" | "OR";
6
+ type DatabaseStringComparisonMode = "sensitive" | "insensitive";
7
+ type DatabaseSortNulls = "first" | "last";
8
+ type WhereBase<TField extends string> = {
9
+ readonly field: TField;
10
+ readonly connector?: DatabaseWhereConnector;
11
+ };
12
+ type EqualityWhere<TField extends string, TValue> = WhereBase<TField> & {
13
+ readonly operator?: "eq" | "ne";
14
+ readonly value: TValue;
15
+ };
16
+ type StringWhere<TField extends string> = WhereBase<TField> & {
17
+ readonly operator?: "eq" | "ne" | "contains" | "starts_with" | "ends_with";
18
+ readonly value: string;
19
+ readonly mode?: DatabaseStringComparisonMode;
20
+ };
21
+ type OrderedWhere<TField extends string, TValue extends number | string> = WhereBase<TField> & {
22
+ readonly operator: "gt" | "gte" | "lt" | "lte";
23
+ readonly value: TValue;
24
+ };
25
+ type SetWhere<TField extends string, TValue extends boolean | number | string> = WhereBase<TField> & {
26
+ readonly operator: "in" | "not_in";
27
+ readonly value: readonly TValue[];
28
+ };
29
+ type ScalarWhereValue<TValue> = unknown extends TValue ? never : Extract<TValue, readonly unknown[] | object> extends never ? Extract<TValue, boolean | number | string | null> : never;
30
+ type FieldWhere<TField extends string, TValue> = ([ScalarWhereValue<TValue>] extends [never] ? never : EqualityWhere<TField, ScalarWhereValue<TValue>>) | (Extract<TValue, string> extends never ? never : StringWhere<TField>) | (Extract<TValue, number | string> extends never ? never : OrderedWhere<TField, Extract<TValue, number | string>>) | (Extract<TValue, boolean | number | string> extends never ? never : SetWhere<TField, Extract<TValue, boolean | number | string>>);
31
+ type DatabaseWhere<TModel extends DatabaseModel> = { readonly [TField in DatabaseField<TModel>]: FieldWhere<TField, DatabaseRow<TModel>[TField]> }[DatabaseField<TModel>];
32
+ type DatabaseSelect<TModel extends DatabaseModel> = readonly DatabaseField<TModel>[];
33
+ type SelectedDatabaseRow<TModel extends DatabaseModel, TSelect extends DatabaseSelect<TModel> | undefined> = TSelect extends DatabaseSelect<TModel> ? Pick<DatabaseRow<TModel>, TSelect[number]> : DatabaseRow<TModel>;
34
+ type DatabaseSortableField<TModel extends DatabaseModel> = { readonly [TField in DatabaseField<TModel>]: Exclude<DatabaseRow<TModel>[TField], null> extends number | string ? TField : never }[DatabaseField<TModel>];
35
+ interface DatabaseSortClause<TModel extends DatabaseModel> {
36
+ readonly field: DatabaseSortableField<TModel>;
37
+ readonly direction: "asc" | "desc";
38
+ readonly nulls?: DatabaseSortNulls;
39
+ }
40
+ type DatabaseSortBy<TModel extends DatabaseModel> = DatabaseSortClause<TModel>;
41
+ type DatabaseOrderBy<TModel extends DatabaseModel> = readonly [DatabaseSortClause<TModel>, ...DatabaseSortClause<TModel>[]];
42
+ type DatabaseDistinctFields<TModel extends DatabaseModel> = readonly [DatabaseField<TModel>, ...DatabaseField<TModel>[]];
43
+ interface DatabaseDistinctOn<TModel extends DatabaseModel> {
44
+ readonly fields: DatabaseDistinctFields<TModel>;
45
+ }
46
+ //#endregion
47
+ export { DatabaseDistinctFields, DatabaseDistinctOn, DatabaseOrderBy, DatabaseSelect, DatabaseSortBy, DatabaseSortClause, DatabaseSortNulls, DatabaseStringComparisonMode, DatabaseWhere, DatabaseWhereConnector, DatabaseWhereOperator, SelectedDatabaseRow };
@@ -0,0 +1,120 @@
1
+ import { Platform } from "@hot-updater/core";
2
+
3
+ //#region src/types/databaseRows.d.ts
4
+ type DatabaseJsonValue = boolean | number | string | null | readonly DatabaseJsonValue[] | DatabaseJsonObject;
5
+ type DatabaseJsonObject = {
6
+ readonly [key: string]: DatabaseJsonValue;
7
+ };
8
+ type DatabaseBundleMetadata = DatabaseJsonObject & {
9
+ readonly app_version?: string;
10
+ };
11
+ interface BundleRow {
12
+ readonly id: string;
13
+ readonly platform: Platform;
14
+ readonly file_hash: string;
15
+ readonly git_commit_hash: string | null;
16
+ readonly storage_uri: string;
17
+ readonly archive_byte_size: number;
18
+ readonly metadata: DatabaseBundleMetadata;
19
+ readonly manifest_storage_uri: string | null;
20
+ readonly manifest_file_hash: string | null;
21
+ readonly asset_base_storage_uri: string | null;
22
+ }
23
+ interface BundlePatchRow {
24
+ readonly id: string;
25
+ readonly bundle_id: string;
26
+ readonly base_bundle_id: string;
27
+ readonly base_file_hash: string;
28
+ readonly patch_file_hash: string;
29
+ readonly patch_storage_uri: string;
30
+ readonly byte_size: number;
31
+ readonly order_index: number;
32
+ }
33
+ interface ReleaseRow {
34
+ readonly id: string;
35
+ readonly revision: number;
36
+ readonly scope_key: string;
37
+ readonly channel_id: string;
38
+ readonly platform: Platform;
39
+ readonly kind: "BUNDLE" | "EMBEDDED";
40
+ readonly bundle_id: string | null;
41
+ readonly strategy: "APP_VERSION" | "FINGERPRINT";
42
+ readonly target_app_version: string | null;
43
+ readonly fingerprint_hash: string | null;
44
+ readonly enabled: boolean;
45
+ readonly should_force_update: boolean;
46
+ readonly message: string | null;
47
+ readonly rollout_cohort_count: number;
48
+ readonly target_cohorts: readonly string[];
49
+ readonly operation: "DEPLOY" | "PROMOTE" | "ROLLBACK";
50
+ readonly source_release_id: string | null;
51
+ readonly created_at_ms: number;
52
+ readonly updated_at_ms: number;
53
+ }
54
+ interface ReleaseCatalogRow {
55
+ readonly scope_key: string;
56
+ readonly catalog_id: string;
57
+ readonly strategy: "APP_VERSION" | "FINGERPRINT";
58
+ readonly channel_id: string;
59
+ readonly channel_key: string;
60
+ readonly platform: Platform;
61
+ readonly fingerprint_hash: string | null;
62
+ readonly generation: number;
63
+ readonly payload: string;
64
+ readonly catalog_hash: string;
65
+ readonly byte_size: number;
66
+ readonly is_tombstone: boolean;
67
+ readonly updated_at_ms: number;
68
+ }
69
+ interface ChannelRow {
70
+ readonly id: string;
71
+ readonly name: string;
72
+ }
73
+ type BundleEventRowBase = {
74
+ readonly id: string;
75
+ readonly install_id: string;
76
+ readonly user_id: string | null;
77
+ readonly username: string | null;
78
+ readonly from_release_id: string | null;
79
+ readonly to_release_id: string | null;
80
+ readonly to_bundle_id: string;
81
+ readonly platform: Platform;
82
+ readonly app_version: string;
83
+ readonly channel: string;
84
+ readonly cohort: string;
85
+ readonly fingerprint_hash: string | null;
86
+ readonly sdk_version: string | null;
87
+ readonly received_at_ms: number;
88
+ };
89
+ type BundleEventRow = (BundleEventRowBase & {
90
+ readonly type: "UPDATE_APPLIED" | "RECOVERED" | "RELEASE_ADOPTED";
91
+ readonly from_bundle_id: string;
92
+ readonly update_strategy: "fingerprint" | "appVersion";
93
+ }) | (BundleEventRowBase & {
94
+ readonly type: "UNCHANGED";
95
+ readonly from_bundle_id: null;
96
+ readonly update_strategy: null;
97
+ });
98
+ interface ApiKeyRow {
99
+ readonly id: string;
100
+ readonly hash: string;
101
+ readonly name: string;
102
+ readonly prefix: string;
103
+ readonly role: "client";
104
+ readonly created_at_ms: number;
105
+ readonly revoked_at_ms: number | null;
106
+ }
107
+ interface DatabaseModelMap {
108
+ readonly bundles: BundleRow;
109
+ readonly bundle_patches: BundlePatchRow;
110
+ readonly releases: ReleaseRow;
111
+ readonly release_catalogs: ReleaseCatalogRow;
112
+ readonly channels: ChannelRow;
113
+ readonly bundle_events: BundleEventRow;
114
+ readonly api_keys: ApiKeyRow;
115
+ }
116
+ type DatabaseModel = keyof DatabaseModelMap;
117
+ type DatabaseRow<TModel extends DatabaseModel> = DatabaseModelMap[TModel];
118
+ type DatabaseField<TModel extends DatabaseModel> = Extract<keyof DatabaseRow<TModel>, string>;
119
+ //#endregion
120
+ export { ApiKeyRow, BundleEventRow, BundleEventRowBase, BundlePatchRow, BundleRow, ChannelRow, DatabaseBundleMetadata, DatabaseField, DatabaseJsonObject, DatabaseJsonValue, DatabaseModel, DatabaseModelMap, DatabaseRow, ReleaseCatalogRow, ReleaseRow };
@@ -0,0 +1,120 @@
1
+ import { Platform } from "@hot-updater/core";
2
+
3
+ //#region src/types/databaseRows.d.ts
4
+ type DatabaseJsonValue = boolean | number | string | null | readonly DatabaseJsonValue[] | DatabaseJsonObject;
5
+ type DatabaseJsonObject = {
6
+ readonly [key: string]: DatabaseJsonValue;
7
+ };
8
+ type DatabaseBundleMetadata = DatabaseJsonObject & {
9
+ readonly app_version?: string;
10
+ };
11
+ interface BundleRow {
12
+ readonly id: string;
13
+ readonly platform: Platform;
14
+ readonly file_hash: string;
15
+ readonly git_commit_hash: string | null;
16
+ readonly storage_uri: string;
17
+ readonly archive_byte_size: number;
18
+ readonly metadata: DatabaseBundleMetadata;
19
+ readonly manifest_storage_uri: string | null;
20
+ readonly manifest_file_hash: string | null;
21
+ readonly asset_base_storage_uri: string | null;
22
+ }
23
+ interface BundlePatchRow {
24
+ readonly id: string;
25
+ readonly bundle_id: string;
26
+ readonly base_bundle_id: string;
27
+ readonly base_file_hash: string;
28
+ readonly patch_file_hash: string;
29
+ readonly patch_storage_uri: string;
30
+ readonly byte_size: number;
31
+ readonly order_index: number;
32
+ }
33
+ interface ReleaseRow {
34
+ readonly id: string;
35
+ readonly revision: number;
36
+ readonly scope_key: string;
37
+ readonly channel_id: string;
38
+ readonly platform: Platform;
39
+ readonly kind: "BUNDLE" | "EMBEDDED";
40
+ readonly bundle_id: string | null;
41
+ readonly strategy: "APP_VERSION" | "FINGERPRINT";
42
+ readonly target_app_version: string | null;
43
+ readonly fingerprint_hash: string | null;
44
+ readonly enabled: boolean;
45
+ readonly should_force_update: boolean;
46
+ readonly message: string | null;
47
+ readonly rollout_cohort_count: number;
48
+ readonly target_cohorts: readonly string[];
49
+ readonly operation: "DEPLOY" | "PROMOTE" | "ROLLBACK";
50
+ readonly source_release_id: string | null;
51
+ readonly created_at_ms: number;
52
+ readonly updated_at_ms: number;
53
+ }
54
+ interface ReleaseCatalogRow {
55
+ readonly scope_key: string;
56
+ readonly catalog_id: string;
57
+ readonly strategy: "APP_VERSION" | "FINGERPRINT";
58
+ readonly channel_id: string;
59
+ readonly channel_key: string;
60
+ readonly platform: Platform;
61
+ readonly fingerprint_hash: string | null;
62
+ readonly generation: number;
63
+ readonly payload: string;
64
+ readonly catalog_hash: string;
65
+ readonly byte_size: number;
66
+ readonly is_tombstone: boolean;
67
+ readonly updated_at_ms: number;
68
+ }
69
+ interface ChannelRow {
70
+ readonly id: string;
71
+ readonly name: string;
72
+ }
73
+ type BundleEventRowBase = {
74
+ readonly id: string;
75
+ readonly install_id: string;
76
+ readonly user_id: string | null;
77
+ readonly username: string | null;
78
+ readonly from_release_id: string | null;
79
+ readonly to_release_id: string | null;
80
+ readonly to_bundle_id: string;
81
+ readonly platform: Platform;
82
+ readonly app_version: string;
83
+ readonly channel: string;
84
+ readonly cohort: string;
85
+ readonly fingerprint_hash: string | null;
86
+ readonly sdk_version: string | null;
87
+ readonly received_at_ms: number;
88
+ };
89
+ type BundleEventRow = (BundleEventRowBase & {
90
+ readonly type: "UPDATE_APPLIED" | "RECOVERED" | "RELEASE_ADOPTED";
91
+ readonly from_bundle_id: string;
92
+ readonly update_strategy: "fingerprint" | "appVersion";
93
+ }) | (BundleEventRowBase & {
94
+ readonly type: "UNCHANGED";
95
+ readonly from_bundle_id: null;
96
+ readonly update_strategy: null;
97
+ });
98
+ interface ApiKeyRow {
99
+ readonly id: string;
100
+ readonly hash: string;
101
+ readonly name: string;
102
+ readonly prefix: string;
103
+ readonly role: "client";
104
+ readonly created_at_ms: number;
105
+ readonly revoked_at_ms: number | null;
106
+ }
107
+ interface DatabaseModelMap {
108
+ readonly bundles: BundleRow;
109
+ readonly bundle_patches: BundlePatchRow;
110
+ readonly releases: ReleaseRow;
111
+ readonly release_catalogs: ReleaseCatalogRow;
112
+ readonly channels: ChannelRow;
113
+ readonly bundle_events: BundleEventRow;
114
+ readonly api_keys: ApiKeyRow;
115
+ }
116
+ type DatabaseModel = keyof DatabaseModelMap;
117
+ type DatabaseRow<TModel extends DatabaseModel> = DatabaseModelMap[TModel];
118
+ type DatabaseField<TModel extends DatabaseModel> = Extract<keyof DatabaseRow<TModel>, string>;
119
+ //#endregion
120
+ export { ApiKeyRow, BundleEventRow, BundleEventRowBase, BundlePatchRow, BundleRow, ChannelRow, DatabaseBundleMetadata, DatabaseField, DatabaseJsonObject, DatabaseJsonValue, DatabaseModel, DatabaseModelMap, DatabaseRow, ReleaseCatalogRow, ReleaseRow };