|
2 | 2 | <img src="./logo.png" alt="Logo" width="300" /> |
3 | 3 | </p> |
4 | 4 |
|
5 | | -[](https://www.npmjs.com/package/@cloud-push/cloud) |
6 | | -[](https://www.npmjs.com/package/@cloud-push/expo) |
7 | | -[](https://www.npmjs.com/package/@cloud-push/next) |
8 | | -[](https://www.npmjs.com/package/@cloud-push/expo) |
9 | | -[](https://www.npmjs.com/package/@cloud-push/next) |
| 5 | +[](https://www.npmjs.com/package/@cloud-push/cloud) |
| 6 | +[](https://www.npmjs.com/package/@cloud-push/expo) |
| 7 | +[](https://www.npmjs.com/package/@cloud-push/next) |
| 8 | +[](https://www.npmjs.com/package/@cloud-push/expo) |
| 9 | +[](https://www.npmjs.com/package/@cloud-push/next) |
| 10 | + |
| 11 | +## **Typescript Only, Zero kotlin, Zero Swift, Zero java, Zero Object-C** |
10 | 12 |
|
11 | 13 | **OTA Update solution compatible with Expo Updates** |
12 | 14 | → Self-hosted update distribution system |
@@ -44,109 +46,85 @@ It follows [Expo Updates technical specs](https://docs.expo.dev/technical-specs/ |
44 | 46 | ### Supabase |
45 | 47 |
|
46 | 48 | ```ts |
47 | | -import { defineConfig } from "@cloud-push/expo"; |
| 49 | +import { defineConfig } from "@cloud-push/cli"; |
48 | 50 | import { SupabaseStorageClient, SupabaseDbClient } from "@cloud-push/cloud"; |
49 | | -import version from "./version"; |
50 | | - |
51 | | -const storageClient = new SupabaseStorageClient({ |
52 | | - bucketName: process.env.SUPABASE_BUCKET_NAME!, |
53 | | - supabaseUrl: process.env.SUPABASE_URL!, |
54 | | - supabaseKey: process.env.SUPABASE_KEY!, |
55 | | -}); |
56 | | - |
57 | | -const dbClient = new SupabaseDbClient({ |
58 | | - tableName: process.env.SUPABASE_TABLE_NAME!, |
59 | | - supabaseUrl: process.env.SUPABASE_URL!, |
60 | | - supabaseKey: process.env.SUPABASE_KEY!, |
61 | | -}); |
62 | 51 |
|
63 | 52 | export default defineConfig(() => ({ |
64 | | - runtimeVersion: version.runtimeVersion, |
65 | | - storage: storageClient, |
66 | | - db: dbClient, |
| 53 | + loadClients: () => { |
| 54 | + |
| 55 | + const storageClient = new SupabaseStorageClient({ |
| 56 | + bucketName: process.env.SUPABASE_BUCKET_NAME!, |
| 57 | + supabaseUrl: process.env.SUPABASE_URL!, |
| 58 | + supabaseKey: process.env.SUPABASE_KEY!, |
| 59 | + }); |
| 60 | + |
| 61 | + const dbClient = new SupabaseDbClient({ |
| 62 | + tableName: process.env.SUPABASE_TABLE_NAME!, |
| 63 | + supabaseUrl: process.env.SUPABASE_URL!, |
| 64 | + supabaseKey: process.env.SUPABASE_KEY!, |
| 65 | + }); |
| 66 | + |
| 67 | + return { |
| 68 | + storage: storageClient, |
| 69 | + db: dbClient, |
| 70 | + }; |
| 71 | + }, |
67 | 72 | })); |
68 | 73 | ``` |
69 | 74 |
|
70 | 75 | ### AWS S3 + lowdb |
71 | 76 |
|
72 | 77 | ```ts |
73 | | -import { defineConfig } from "@cloud-push/expo"; |
| 78 | +import { defineConfig } from "@cloud-push/cli"; |
74 | 79 | import { AWSS3StorageClient, LowDbClient } from "@cloud-push/cloud"; |
75 | | -import version from "./version"; |
76 | | - |
77 | | -const storageClient = new AWSS3StorageClient({ |
78 | | - accessKeyId: process.env.AWS_ACCESS_KEY_ID!, |
79 | | - bucketName: process.env.AWS_BUCKET_NAME!, |
80 | | - region: process.env.AWS_REGION!, |
81 | | - secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!, |
82 | | -}); |
83 | | - |
84 | | -const dbClient = new LowDbClient({ |
85 | | - downloadJSONFile: () => storageClient.getFile({ key: "cursor.json" }), |
86 | | - uploadJSONFile: (file: Uint8Array) => |
87 | | - storageClient.uploadFile({ key: "cursor.json", file }), |
88 | | -}); |
89 | 80 |
|
90 | 81 | export default defineConfig(() => ({ |
91 | | - runtimeVersion: version.runtimeVersion, |
92 | | - storage: storageClient, |
93 | | - db: dbClient, |
| 82 | + loadClients: () => { |
| 83 | + |
| 84 | + const storageClient = new AWSS3StorageClient({ |
| 85 | + accessKeyId: process.env.AWS_ACCESS_KEY_ID!, |
| 86 | + bucketName: process.env.AWS_BUCKET_NAME!, |
| 87 | + region: process.env.AWS_REGION!, |
| 88 | + secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!, |
| 89 | + }); |
| 90 | + |
| 91 | + const dbClient = new LowDbClient({ |
| 92 | + downloadJSONFile: () => storageClient.getFile({ key: "cursor.json" }), |
| 93 | + uploadJSONFile: (file: Uint8Array) => |
| 94 | + storageClient.uploadFile({ key: "cursor.json", file }), |
| 95 | + }); |
| 96 | + |
| 97 | + return { |
| 98 | + storage: storageClient, |
| 99 | + db: dbClient, |
| 100 | + }; |
| 101 | + }, |
94 | 102 | })); |
95 | 103 | ``` |
96 | 104 |
|
97 | 105 | ### Firebase |
98 | 106 |
|
99 | 107 | ```ts |
100 | | -import { defineConfig } from "@cloud-push/expo"; |
| 108 | +import { defineConfig } from "@cloud-push/cli"; |
101 | 109 | import { FirebaseStorageClient, FirebaseDbClient } from "@cloud-push/cloud"; |
102 | | -import version from "./version"; |
103 | | - |
104 | | -const storageClient = new FirebaseStorageClient({ |
105 | | - credential: process.env.FIREBASE_CREDENTIAL!, |
106 | | - bucketName: process.env.FIREBASE_BUCKET_NAME!, |
107 | | -}); |
108 | | - |
109 | | -const dbClient = new FirebaseDbClient({ |
110 | | - credential: process.env.FIREBASE_CREDENTIAL!, |
111 | | - databaseId: process.env.FIREBASE_DATABASE_ID!, |
112 | | -}); |
113 | | - |
114 | | -export default defineConfig(() => ({ |
115 | | - runtimeVersion: version.runtimeVersion, |
116 | | - storage: storageClient, |
117 | | - db: dbClient, |
118 | | -})); |
119 | | -``` |
120 | | - |
121 | | -### Custom |
122 | | - |
123 | | -```ts |
124 | | -import { defineConfig } from "@cloud-push/expo"; |
125 | | -import { StorageClient, DbClient } from "@cloud-push/cloud"; |
126 | | -import version from "./version"; |
127 | | - |
128 | | -const storageClient: StorageClient = { |
129 | | - getFile: () => {}, |
130 | | - getFileSignedUrl: () => {}, |
131 | | - uploadDirectory: () => {}, |
132 | | - uploadFile: () => {}, |
133 | | - uploadLocalFile: () => {}, |
134 | | -}; |
135 | | - |
136 | | -const dbClient: DbClient = { |
137 | | - create: () => {}, |
138 | | - delete: () => {}, |
139 | | - find: () => {}, |
140 | | - findAll: () => {}, |
141 | | - readAll: () => {}, |
142 | | - toUint8Array: () => {}, |
143 | | - update: () => {}, |
144 | | -}; |
145 | 110 |
|
146 | 111 | export default defineConfig(() => ({ |
147 | | - runtimeVersion: version.runtimeVersion, |
148 | | - storage: storageClient, |
149 | | - db: dbClient, |
| 112 | + loadClients: () => { |
| 113 | + const storageClient = new FirebaseStorageClient({ |
| 114 | + credential: process.env.FIREBASE_CREDENTIAL!, |
| 115 | + bucketName: process.env.BUCKET_NAME!, |
| 116 | + }); |
| 117 | + |
| 118 | + const dbClient = new FirebaseDbClient({ |
| 119 | + credential: process.env.FIREBASE_CREDENTIAL!, |
| 120 | + databaseId: process.env.FIREBASE_DATABASE_ID!, |
| 121 | + }); |
| 122 | + |
| 123 | + return { |
| 124 | + storage: storageClient, |
| 125 | + db: dbClient, |
| 126 | + }; |
| 127 | + }, |
150 | 128 | })); |
151 | 129 | ``` |
152 | 130 |
|
|
0 commit comments