@lumi.new/sdk 0.0.3 → 0.0.5

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/README.md CHANGED
@@ -22,10 +22,10 @@ First, initialize the Lumi client. You can get your `projectId` from your Lumi p
22
22
  ```typescript
23
23
  import { createClient } from '@lumi.new/sdk'
24
24
 
25
- const lumi = createClient({
25
+ export const lumi = createClient({
26
26
  projectId: 'YOUR_PROJECT_ID',
27
- apiBaseUrl: 'https://your-api.lumi.new', // Your Lumi API endpoint
28
- authOrigin: 'https://your-auth.lumi.new', // Your Lumi Auth origin
27
+ apiBaseUrl: 'YOUR_API_BASE_URL',
28
+ authOrigin: 'YOUR_AUTH_ORIGIN',
29
29
  })
30
30
  ```
31
31
 
@@ -109,13 +109,23 @@ Retrieve a list of records from an entity. This method returns an object contain
109
109
  async function getPosts() {
110
110
  const { list, total } = await lumi.entities.Posts.list({
111
111
  filter: { published: true },
112
- sort: '-createdAt', // Sort by creation date in descending order
112
+ sort: { createdAt: -1 }, // Sort by creation date in descending order
113
113
  limit: 10,
114
114
  skip: 0,
115
115
  })
116
116
  console.log('Posts:', list)
117
117
  console.log('Total records:', total)
118
118
  }
119
+
120
+ // Example Request:
121
+ getPosts();
122
+
123
+ // Example Response:
124
+ // Posts: [
125
+ // { id: 'post-id-1', title: 'First Post', content: '...', published: true, createdAt: '...' },
126
+ // { id: 'post-id-2', title: 'Second Post', content: '...', published: true, createdAt: '...' }
127
+ // ]
128
+ // Total records: 2
119
129
  ```
120
130
 
121
131
  ### Get a Single Record
@@ -127,6 +137,12 @@ async function getPost(id: string) {
127
137
  const post = await lumi.entities.Posts.get(id)
128
138
  console.log('Post:', post)
129
139
  }
140
+
141
+ // Example Request:
142
+ getPost('your-post-id');
143
+
144
+ // Example Response:
145
+ // Post: { id: 'post-id-1', title: 'My Post', content: '...', published: true, createdAt: '...' }
130
146
  ```
131
147
 
132
148
  ### Create a Record
@@ -142,6 +158,12 @@ async function createPost(title: string, content: string) {
142
158
  })
143
159
  console.log('Created post:', newPost)
144
160
  }
161
+
162
+ // Example Request:
163
+ createPost('My Awesome Post', 'This is the content of my new post.');
164
+
165
+ // Example Response:
166
+ // Created post: { id: 'new-post-id', title: 'My Awesome Post', content: 'This is the content of my new post.', published: false, creator: 'user-id-123', createdAt: '2024-01-16T10:30:00Z', updatedAt: '2024-01-16T10:30:00Z' }
145
167
  ```
146
168
 
147
169
  ### Create Multiple Records
@@ -149,10 +171,23 @@ async function createPost(title: string, content: string) {
149
171
  Create multiple records in a single request.
150
172
 
151
173
  ```typescript
152
- async function createMultiplePosts(newPostsData) {
174
+ async function createMultiplePosts(newPostsData: any[]) {
153
175
  const newPosts = await lumi.entities.Posts.createMany(newPostsData)
154
176
  console.log('Created posts:', newPosts)
155
177
  }
178
+
179
+ // Example Request:
180
+ const postsToCreate = [
181
+ { title: 'First Awesome Post', content: 'Content for the first post.' },
182
+ { title: 'Second Awesome Post', content: 'Content for the second post.' }
183
+ ];
184
+ createMultiplePosts(postsToCreate);
185
+
186
+ // Example Response:
187
+ // Created posts: [
188
+ // { id: 'post-1', title: 'Post 1', content: '...', published: false, creator: 'user-id-123', createdAt: '...', updatedAt: '...' },
189
+ // { id: 'post-2', title: 'Post 2', content: '...', published: false, creator: 'user-id-123', createdAt: '...', updatedAt: '...' }
190
+ // ]
156
191
  ```
157
192
 
158
193
  ### Update a Record
@@ -164,6 +199,12 @@ async function updatePost(id: string, updates: Record<string, any>) {
164
199
  const updatedPost = await lumi.entities.Posts.update(id, updates)
165
200
  console.log('Updated post:', updatedPost)
166
201
  }
202
+
203
+ // Example Request:
204
+ updatePost('your-post-id', { published: true, title: 'My Updated Post' });
205
+
206
+ // Example Response:
207
+ // Updated post: { id: 'post-id-1', title: 'My Updated Post', content: '...', published: true, creator: 'user-id-123', createdAt: '...', updatedAt: '...' }
167
208
  ```
168
209
 
169
210
  ### Delete a Record
@@ -175,6 +216,12 @@ async function deletePost(id: string) {
175
216
  await lumi.entities.Posts.delete(id)
176
217
  console.log('Post deleted.')
177
218
  }
219
+
220
+ // Example Request:
221
+ deletePost('your-post-id');
222
+
223
+ // The console will output:
224
+ // Post deleted.
178
225
  ```
179
226
 
180
227
  ### Delete Multiple Records
@@ -186,4 +233,10 @@ async function deleteMultiplePosts(ids: string[]) {
186
233
  await lumi.entities.Posts.deleteMany(ids)
187
234
  console.log('Posts deleted.')
188
235
  }
236
+
237
+ // Example Request:
238
+ deleteMultiplePosts(['post-id-1', 'post-id-2']);
239
+
240
+ // The console will output:
241
+ // Posts deleted.
189
242
  ```
package/dist/index.d.mts CHANGED
@@ -13,7 +13,7 @@ declare class EntityClient {
13
13
  /** 查询文档列表 */
14
14
  list({ filter, sort, limit, skip }?: {
15
15
  filter?: any;
16
- sort?: string;
16
+ sort?: Record<string, 1 | -1>;
17
17
  limit?: number;
18
18
  skip?: number;
19
19
  }): Promise<PaginationData<Entity>>;
package/dist/index.d.ts CHANGED
@@ -13,7 +13,7 @@ declare class EntityClient {
13
13
  /** 查询文档列表 */
14
14
  list({ filter, sort, limit, skip }?: {
15
15
  filter?: any;
16
- sort?: string;
16
+ sort?: Record<string, 1 | -1>;
17
17
  limit?: number;
18
18
  skip?: number;
19
19
  }): Promise<PaginationData<Entity>>;
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var I=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames,S=Object.getOwnPropertySymbols;var P=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var R=i=>{throw TypeError(i)};var A=(i,e,t)=>e in i?I(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,x=(i,e)=>{for(var t in e||(e={}))P.call(e,t)&&A(i,t,e[t]);if(S)for(var t of S(e))j.call(e,t)&&A(i,t,e[t]);return i};var _=(i,e)=>{for(var t in e)I(i,t,{get:e[t],enumerable:!0})},q=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of U(e))!P.call(i,a)&&a!==t&&I(i,a,{get:()=>e[a],enumerable:!(n=$(e,a))||n.enumerable});return i};var K=i=>q(I({},"__esModule",{value:!0}),i);var M=(i,e,t)=>e.has(i)||R("Cannot "+t);var r=(i,e,t)=>(M(i,e,"read from private field"),t?t.call(i):e.get(i)),h=(i,e,t)=>e.has(i)?R("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(i):e.set(i,t),d=(i,e,t,n)=>(M(i,e,"write to private field"),n?n.call(i,t):e.set(i,t),t);var u=(i,e,t)=>new Promise((n,a)=>{var s=l=>{try{f(t.next(l))}catch(y){a(y)}},m=l=>{try{f(t.throw(l))}catch(y){a(y)}},f=l=>l.done?n(l.value):Promise.resolve(l.value).then(s,m);f((t=t.apply(i,e)).next())});var G={};_(G,{EntitiesClient:()=>b,EntityClient:()=>E,LumiAuthClient:()=>w,LumiClient:()=>C,createClient:()=>B});module.exports=K(G);var D=require("ofetch");function c(i,e,t={}){return i.auth.accessToken&&(t.headers=x({Authorization:`Bearer ${i.auth.accessToken}`},t.headers)),(0,D.ofetch)(e,x({baseURL:i.config.apiBaseUrl},t))}function k(){var i,e;return(e=(i=document.querySelector('link[rel="icon"]'))==null?void 0:i.href)!=null?e:null}function v(){var i;return(i=document.title)!=null?i:null}var p,w=class{constructor(e){h(this,p);d(this,p,e)}get accessToken(){return localStorage.getItem("lumi-access-token")}set accessToken(e){e?localStorage.setItem("lumi-access-token",e):localStorage.removeItem("lumi-access-token")}get isAuthenticated(){return!!this.accessToken}signIn(){let n=(window.screen.width-800)/2,a=(window.screen.height-600)/2,s=window.open(r(this,p).config.authOrigin,"_blank",`width=800,height=600,left=${n},top=${a}`),m;return new Promise((f,l)=>{if(!s)return l(new Error("Open auth window failed"));let y=setInterval(()=>{s.closed&&l(new Error("Auth window closed"))},1e3),L=({data:g,origin:O,source:N})=>{if(!(O!==r(this,p).config.authOrigin||N!==s))switch(g==null?void 0:g.type){case"lumi-ready":{s.postMessage({type:"lumi-init",data:{projectId:r(this,p).config.projectId,icon:k(),title:v()}},r(this,p).config.authOrigin);break}case"lumi-sign-in":{if(g.data.projectId!==r(this,p).config.projectId)break;s.close(),this.accessToken=g.data.accessToken,f(g.data);break}}};window.addEventListener("message",L),m=()=>{clearInterval(y),window.removeEventListener("message",L)}}).finally(()=>m==null?void 0:m())}signOut(){this.accessToken=null}getUser(){return u(this,null,function*(){let e=yield c(r(this,p),"/lm/user/info");if(e.code!==200)throw new Error(e.message);return e.data})}};p=new WeakMap;var o,E=class{constructor(e,t){h(this,o);d(this,o,e),this.entityName=t}list(){return u(this,arguments,function*({filter:e,sort:t,limit:n,skip:a}={}){if(n){let s=yield c(r(this,o),this.uri("/find"),{method:"POST",body:{filter:e,sort:t,limit:n,skip:a}});if(s.code!==200)throw new Error(s.message);return s.data}else{let s=yield c(r(this,o),this.uri("/list"),{method:"POST",body:{filter:e,sort:t}});if(s.code!==200)throw new Error(s.message);return{total:s.data.length,list:s.data}}})}get(e){return u(this,null,function*(){let t=yield c(r(this,o),this.uri(`/${e}`),{method:"GET"});if(t.code!==200)throw new Error(t.message);return t.data})}create(e){return u(this,null,function*(){let t=yield c(r(this,o),this.uri(),{method:"POST",body:e});if(t.code!==200)throw new Error(t.message);return t.data})}createMany(e){return u(this,null,function*(){let t=yield c(r(this,o),this.uri("/batch"),{method:"POST",body:e});if(t.code!==200)throw new Error(t.message);return t.data})}update(e,t){return u(this,null,function*(){let n=yield c(r(this,o),this.uri(),{method:"PUT",body:{filter:{_id:e},update:t}});if(n.code!==200)throw new Error(n.message);return n.data})}delete(e){return u(this,null,function*(){let t=yield c(r(this,o),this.uri(`/${e}`),{method:"DELETE"});if(t.code!==200)throw new Error(t.message)})}deleteMany(e){return u(this,null,function*(){let t=yield c(r(this,o),this.uri("/batch-by-ids"),{method:"DELETE",params:{ids:e}});if(t.code!==200)throw new Error(t.message)})}uri(e=""){return`/lm/${r(this,o).config.projectId}/${this.entityName}/documents${e}`}};o=new WeakMap;var T,b=class{constructor(e){h(this,T);return d(this,T,e),new Proxy(this,{get(t,n){return n in t||(t[n]=new E(r(t,T),n)),t[n]}})}};T=new WeakMap;var C=class{constructor(e){this.config=e,this.auth=new w(this),this.entities=new b(this)}};function B(i){return new C(i)}0&&(module.exports={EntitiesClient,EntityClient,LumiAuthClient,LumiClient,createClient});
1
+ "use strict";var I=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames,S=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var P=i=>{throw TypeError(i)};var R=(i,e,t)=>e in i?I(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,x=(i,e)=>{for(var t in e||(e={}))A.call(e,t)&&R(i,t,e[t]);if(S)for(var t of S(e))j.call(e,t)&&R(i,t,e[t]);return i};var _=(i,e)=>{for(var t in e)I(i,t,{get:e[t],enumerable:!0})},q=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of U(e))!A.call(i,a)&&a!==t&&I(i,a,{get:()=>e[a],enumerable:!(r=$(e,a))||r.enumerable});return i};var K=i=>q(I({},"__esModule",{value:!0}),i);var M=(i,e,t)=>e.has(i)||P("Cannot "+t);var n=(i,e,t)=>(M(i,e,"read from private field"),t?t.call(i):e.get(i)),h=(i,e,t)=>e.has(i)?P("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(i):e.set(i,t),d=(i,e,t,r)=>(M(i,e,"write to private field"),r?r.call(i,t):e.set(i,t),t);var u=(i,e,t)=>new Promise((r,a)=>{var s=l=>{try{f(t.next(l))}catch(y){a(y)}},m=l=>{try{f(t.throw(l))}catch(y){a(y)}},f=l=>l.done?r(l.value):Promise.resolve(l.value).then(s,m);f((t=t.apply(i,e)).next())});var G={};_(G,{EntitiesClient:()=>b,EntityClient:()=>E,LumiAuthClient:()=>w,LumiClient:()=>C,createClient:()=>B});module.exports=K(G);var D=require("ofetch");function c(i,e,t={}){return i.auth.accessToken&&(t.headers=x({Authorization:`Bearer ${i.auth.accessToken}`},t.headers)),(0,D.ofetch)(e,x({baseURL:i.config.apiBaseUrl},t))}function k(){var i,e;return(e=(i=document.querySelector('link[rel="icon"]'))==null?void 0:i.href)!=null?e:null}function v(){var i;return(i=document.title)!=null?i:null}var p,w=class{constructor(e){h(this,p);d(this,p,e)}get accessToken(){return localStorage.getItem("lumi-access-token")}set accessToken(e){e?localStorage.setItem("lumi-access-token",e):localStorage.removeItem("lumi-access-token")}get isAuthenticated(){return!!this.accessToken}signIn(){let r=(window.screen.width-800)/2,a=(window.screen.height-600)/2,s=window.open(n(this,p).config.authOrigin,"_blank",`width=800,height=600,left=${r},top=${a}`),m;return new Promise((f,l)=>{if(!s)return l(new Error("Open auth window failed"));let y=setInterval(()=>{s.closed&&l(new Error("Auth window closed"))},1e3),L=({data:g,origin:O,source:N})=>{if(!(O!==n(this,p).config.authOrigin||N!==s))switch(g==null?void 0:g.type){case"lumi-ready":{s.postMessage({type:"lumi-init",data:{projectId:n(this,p).config.projectId,icon:k(),title:v()}},n(this,p).config.authOrigin);break}case"lumi-sign-in":{if(g.data.projectId!==n(this,p).config.projectId)break;s.close(),this.accessToken=g.data.accessToken,f(g.data);break}}};window.addEventListener("message",L),m=()=>{clearInterval(y),window.removeEventListener("message",L)}}).finally(()=>m==null?void 0:m())}signOut(){this.accessToken=null}getUser(){return u(this,null,function*(){let e=yield c(n(this,p),"/lm/user/info");if(e.code!==200)throw new Error(e.message);return e.data})}};p=new WeakMap;var o,E=class{constructor(e,t){h(this,o);d(this,o,e),this.entityName=t}list(){return u(this,arguments,function*({filter:e,sort:t,limit:r,skip:a}={}){if(r){let s=yield c(n(this,o),this.uri("/find"),{method:"POST",body:{filter:e,sort:t,limit:r,skip:a}});if(s.code!==200)throw new Error(s.message);return s.data}else{let s=yield c(n(this,o),this.uri("/list"),{method:"POST",body:{filter:e,sort:t}});if(s.code!==200)throw new Error(s.message);return{total:s.data.length,list:s.data}}})}get(e){return u(this,null,function*(){let t=yield c(n(this,o),this.uri(`/${e}`),{method:"GET"});if(t.code!==200)throw new Error(t.message);return t.data})}create(e){return u(this,null,function*(){let t=yield c(n(this,o),this.uri(),{method:"POST",body:e});if(t.code!==200)throw new Error(t.message);return t.data})}createMany(e){return u(this,null,function*(){let t=yield c(n(this,o),this.uri("/batch"),{method:"POST",body:e});if(t.code!==200)throw new Error(t.message);return t.data})}update(e,t){return u(this,null,function*(){let r=yield c(n(this,o),this.uri(),{method:"PUT",body:{filter:{_id:e},update:t}});if(r.code!==200)throw new Error(r.message);return r.data})}delete(e){return u(this,null,function*(){let t=yield c(n(this,o),this.uri(`/${e}`),{method:"DELETE"});if(t.code!==200)throw new Error(t.message)})}deleteMany(e){return u(this,null,function*(){let t=yield c(n(this,o),this.uri("/batch-by-ids"),{method:"DELETE",params:{ids:e}});if(t.code!==200)throw new Error(t.message)})}uri(e=""){return`/lm/${n(this,o).config.projectId}/${this.entityName}/documents${e}`}};o=new WeakMap;var T,b=class{constructor(e){h(this,T);return d(this,T,e),new Proxy(this,{get(t,r){return r in t||(t[r]=new E(n(t,T),r)),t[r]}})}};T=new WeakMap;var C=class{constructor(e){this.config=e,this.auth=new w(this),this.entities=new b(this)}};function B(i){return new C(i)}0&&(module.exports={EntitiesClient,EntityClient,LumiAuthClient,LumiClient,createClient});
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/lib/request.ts","../src/utils/common.ts","../src/core/auth-client.ts","../src/core/entity-client.ts","../src/core/entities-client.ts","../src/core/lumi-client.ts"],"sourcesContent":["export * from './core/auth-client'\nexport * from './core/entities-client'\nexport * from './core/entity-client'\nexport * from './core/lumi-client'\n","import type { FetchOptions } from 'ofetch'\nimport type { LumiClient } from '@/core/lumi-client'\nimport { ofetch } from 'ofetch'\n\nexport interface ApiResponse<T> {\n code: number\n message: string\n data: T\n}\n\nexport interface PaginationData<T> {\n total: number\n list: T[]\n}\n\nexport function request<T>(lumi: LumiClient, uri: string, options: FetchOptions<'json'> = {}): Promise<T> {\n if (lumi.auth.accessToken) {\n options.headers = {\n Authorization: `Bearer ${lumi.auth.accessToken}`,\n ...options.headers,\n }\n }\n\n return ofetch<T>(uri, {\n baseURL: lumi.config.apiBaseUrl,\n ...options,\n })\n}\n","export function getIcon(): string | null {\n return document.querySelector<HTMLLinkElement>('link[rel=\"icon\"]')?.href ?? null\n}\n\nexport function getTitle(): string | null {\n return document.title ?? null\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport type { ApiResponse } from '@/lib/request'\nimport { MessageType, StorageKey } from '@/constants'\nimport { request } from '@/lib/request'\nimport { getIcon, getTitle } from '@/utils/common'\n\nexport interface User {\n userId: string\n email: string\n}\n\nexport interface MessageSignInData {\n projectId: string\n accessToken: string\n user: User\n}\n\nexport type MessageDataReceive = {\n type: MessageType.READY\n} | {\n type: MessageType.SIGN_IN\n data: MessageSignInData\n}\n\nexport interface MessageInitData {\n projectId: string\n icon: string | null\n title: string | null\n}\n\nexport interface MessageDataSend {\n type: MessageType.INIT\n data: MessageInitData\n}\n\nexport class LumiAuthClient {\n readonly #lumi: LumiClient\n\n constructor(lumi: LumiClient) {\n this.#lumi = lumi\n }\n\n public get accessToken(): string | null {\n return localStorage.getItem(StorageKey.ACCESS_TOKEN)\n }\n\n public set accessToken(accessToken: string | null) {\n if (accessToken)\n localStorage.setItem(StorageKey.ACCESS_TOKEN, accessToken)\n else\n localStorage.removeItem(StorageKey.ACCESS_TOKEN)\n }\n\n public get isAuthenticated(): boolean {\n return !!this.accessToken\n }\n\n /** 登录 */\n public signIn(): Promise<MessageSignInData> {\n const width = 800\n const height = 600\n const left = (window.screen.width - width) / 2\n const top = (window.screen.height - height) / 2\n const popup = window.open(this.#lumi.config.authOrigin, '_blank', `width=${width},height=${height},left=${left},top=${top}`)\n\n let cleanup: () => void\n return new Promise<MessageSignInData>((resolve, reject) => {\n if (!popup)\n return reject(new Error('Open auth window failed'))\n\n const timer = setInterval(() => {\n if (popup.closed)\n reject(new Error('Auth window closed'))\n }, 1000)\n\n const handleMessage = ({ data, origin, source }: MessageEvent<MessageDataReceive | null>): void => {\n if (origin !== this.#lumi.config.authOrigin || source !== popup)\n return\n\n switch (data?.type) {\n case MessageType.READY: {\n popup.postMessage({\n type: MessageType.INIT,\n data: {\n projectId: this.#lumi.config.projectId,\n icon: getIcon(),\n title: getTitle(),\n },\n } satisfies MessageDataSend, this.#lumi.config.authOrigin)\n break\n }\n case MessageType.SIGN_IN: {\n if (data.data.projectId !== this.#lumi.config.projectId)\n break\n popup.close()\n this.accessToken = data.data.accessToken\n resolve(data.data)\n break\n }\n }\n }\n window.addEventListener('message', handleMessage)\n\n cleanup = () => {\n clearInterval(timer)\n window.removeEventListener('message', handleMessage)\n }\n }).finally(() => cleanup?.())\n }\n\n /** 退出登录 */\n public signOut(): void {\n this.accessToken = null\n }\n\n /** 获取当前用户 */\n public async getUser(): Promise<User> {\n const res = await request<ApiResponse<User>>(this.#lumi, '/lm/user/info')\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport type { ApiResponse, PaginationData } from '@/lib/request'\nimport { request } from '@/lib/request'\n\nexport interface Entity extends Record<string, any> {\n id: string\n}\n\nexport class EntityClient {\n readonly #lumi: LumiClient\n public readonly entityName: string\n\n constructor(lumi: LumiClient, entityName: string) {\n this.#lumi = lumi\n this.entityName = entityName\n }\n\n /** 查询文档列表 */\n public async list({ filter, sort, limit, skip }: {\n filter?: any\n sort?: string\n limit?: number\n skip?: number\n } = {}): Promise<PaginationData<Entity>> {\n if (!limit) {\n const res = await request<ApiResponse<Entity[]>>(this.#lumi, this.uri('/list'), {\n method: 'POST',\n body: { filter, sort },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return {\n total: res.data.length,\n list: res.data,\n }\n }\n else {\n const res = await request<ApiResponse<PaginationData<Entity>>>(this.#lumi, this.uri('/find'), {\n method: 'POST',\n body: { filter, sort, limit, skip },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n }\n\n /** 获取单个文档 */\n public async get(id: string): Promise<Entity | null> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(`/${id}`), {\n method: 'GET',\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 创建文档 */\n public async create(data: Record<string, any>): Promise<Entity> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(), {\n method: 'POST',\n body: data,\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 批量创建文档 */\n public async createMany(data: Record<string, any>[]): Promise<Entity[]> {\n const res = await request<ApiResponse<Entity[]>>(this.#lumi, this.uri('/batch'), {\n method: 'POST',\n body: data,\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 更新文档 */\n public async update(id: string, data: Record<string, any>): Promise<Entity> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(), {\n method: 'PUT',\n body: { filter: { _id: id }, update: data },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 删除文档 */\n public async delete(id: string): Promise<void> {\n const res = await request<ApiResponse<null>>(this.#lumi, this.uri(`/${id}`), {\n method: 'DELETE',\n })\n if (res.code !== 200)\n throw new Error(res.message)\n }\n\n /** 批量删除文档 */\n public async deleteMany(ids: string[]): Promise<void> {\n const res = await request<ApiResponse<null>>(this.#lumi, this.uri('/batch-by-ids'), {\n method: 'DELETE',\n params: { ids },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n }\n\n private uri(suffix = ''): string {\n return `/lm/${this.#lumi.config.projectId}/${this.entityName}/documents${suffix}`\n }\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport { EntityClient } from '@/core/entity-client'\n\nexport class EntitiesClient {\n readonly #lumi: LumiClient\n [key: string]: EntityClient\n\n constructor(lumi: LumiClient) {\n this.#lumi = lumi\n return new Proxy(this, {\n get(target: EntitiesClient, p: string) {\n if (!(p in target))\n target[p] = new EntityClient(target.#lumi, p)\n return target[p]\n },\n }) as this\n }\n}\n","import { LumiAuthClient } from '@/core/auth-client'\nimport { EntitiesClient } from '@/core/entities-client'\n\nexport interface LumiClientConfig {\n projectId: string\n apiBaseUrl: string\n authOrigin: string\n}\n\nexport class LumiClient {\n public config: LumiClientConfig\n\n public auth: LumiAuthClient\n public entities: EntitiesClient\n\n constructor(config: LumiClientConfig) {\n this.config = config\n this.auth = new LumiAuthClient(this)\n this.entities = new EntitiesClient(this)\n }\n}\n\nexport function createClient(config: LumiClientConfig): LumiClient {\n return new LumiClient(config)\n}\n"],"mappings":"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","names":["index_exports","__export","EntitiesClient","EntityClient","LumiAuthClient","LumiClient","createClient","__toCommonJS","import_ofetch","request","lumi","uri","options","__spreadValues","getIcon","_a","_b","getTitle","_lumi","LumiAuthClient","lumi","__privateAdd","__privateSet","accessToken","left","top","popup","__privateGet","cleanup","resolve","reject","timer","handleMessage","data","origin","source","getIcon","getTitle","__async","res","request","_lumi","EntityClient","lumi","entityName","__privateAdd","__privateSet","__async","filter","sort","limit","skip","res","request","__privateGet","id","data","ids","suffix","_lumi","EntitiesClient","lumi","__privateAdd","__privateSet","target","p","EntityClient","__privateGet","LumiClient","config","LumiAuthClient","EntitiesClient","createClient"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/lib/request.ts","../src/utils/common.ts","../src/core/auth-client.ts","../src/core/entity-client.ts","../src/core/entities-client.ts","../src/core/lumi-client.ts"],"sourcesContent":["export * from './core/auth-client'\nexport * from './core/entities-client'\nexport * from './core/entity-client'\nexport * from './core/lumi-client'\n","import type { FetchOptions } from 'ofetch'\nimport type { LumiClient } from '@/core/lumi-client'\nimport { ofetch } from 'ofetch'\n\nexport interface ApiResponse<T> {\n code: number\n message: string\n data: T\n}\n\nexport interface PaginationData<T> {\n total: number\n list: T[]\n}\n\nexport function request<T>(lumi: LumiClient, uri: string, options: FetchOptions<'json'> = {}): Promise<T> {\n if (lumi.auth.accessToken) {\n options.headers = {\n Authorization: `Bearer ${lumi.auth.accessToken}`,\n ...options.headers,\n }\n }\n\n return ofetch<T>(uri, {\n baseURL: lumi.config.apiBaseUrl,\n ...options,\n })\n}\n","export function getIcon(): string | null {\n return document.querySelector<HTMLLinkElement>('link[rel=\"icon\"]')?.href ?? null\n}\n\nexport function getTitle(): string | null {\n return document.title ?? null\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport type { ApiResponse } from '@/lib/request'\nimport { MessageType, StorageKey } from '@/constants'\nimport { request } from '@/lib/request'\nimport { getIcon, getTitle } from '@/utils/common'\n\nexport interface User {\n userId: string\n email: string\n}\n\nexport interface MessageSignInData {\n projectId: string\n accessToken: string\n user: User\n}\n\nexport type MessageDataReceive = {\n type: MessageType.READY\n} | {\n type: MessageType.SIGN_IN\n data: MessageSignInData\n}\n\nexport interface MessageInitData {\n projectId: string\n icon: string | null\n title: string | null\n}\n\nexport interface MessageDataSend {\n type: MessageType.INIT\n data: MessageInitData\n}\n\nexport class LumiAuthClient {\n readonly #lumi: LumiClient\n\n constructor(lumi: LumiClient) {\n this.#lumi = lumi\n }\n\n public get accessToken(): string | null {\n return localStorage.getItem(StorageKey.ACCESS_TOKEN)\n }\n\n public set accessToken(accessToken: string | null) {\n if (accessToken)\n localStorage.setItem(StorageKey.ACCESS_TOKEN, accessToken)\n else\n localStorage.removeItem(StorageKey.ACCESS_TOKEN)\n }\n\n public get isAuthenticated(): boolean {\n return !!this.accessToken\n }\n\n /** 登录 */\n public signIn(): Promise<MessageSignInData> {\n const width = 800\n const height = 600\n const left = (window.screen.width - width) / 2\n const top = (window.screen.height - height) / 2\n const popup = window.open(this.#lumi.config.authOrigin, '_blank', `width=${width},height=${height},left=${left},top=${top}`)\n\n let cleanup: () => void\n return new Promise<MessageSignInData>((resolve, reject) => {\n if (!popup)\n return reject(new Error('Open auth window failed'))\n\n const timer = setInterval(() => {\n if (popup.closed)\n reject(new Error('Auth window closed'))\n }, 1000)\n\n const handleMessage = ({ data, origin, source }: MessageEvent<MessageDataReceive | null>): void => {\n if (origin !== this.#lumi.config.authOrigin || source !== popup)\n return\n\n switch (data?.type) {\n case MessageType.READY: {\n popup.postMessage({\n type: MessageType.INIT,\n data: {\n projectId: this.#lumi.config.projectId,\n icon: getIcon(),\n title: getTitle(),\n },\n } satisfies MessageDataSend, this.#lumi.config.authOrigin)\n break\n }\n case MessageType.SIGN_IN: {\n if (data.data.projectId !== this.#lumi.config.projectId)\n break\n popup.close()\n this.accessToken = data.data.accessToken\n resolve(data.data)\n break\n }\n }\n }\n window.addEventListener('message', handleMessage)\n\n cleanup = () => {\n clearInterval(timer)\n window.removeEventListener('message', handleMessage)\n }\n }).finally(() => cleanup?.())\n }\n\n /** 退出登录 */\n public signOut(): void {\n this.accessToken = null\n }\n\n /** 获取当前用户 */\n public async getUser(): Promise<User> {\n const res = await request<ApiResponse<User>>(this.#lumi, '/lm/user/info')\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport type { ApiResponse, PaginationData } from '@/lib/request'\nimport { request } from '@/lib/request'\n\nexport interface Entity extends Record<string, any> {\n id: string\n}\n\nexport class EntityClient {\n readonly #lumi: LumiClient\n public readonly entityName: string\n\n constructor(lumi: LumiClient, entityName: string) {\n this.#lumi = lumi\n this.entityName = entityName\n }\n\n /** 查询文档列表 */\n public async list({ filter, sort, limit, skip }: {\n filter?: any\n sort?: Record<string, 1 | -1>\n limit?: number\n skip?: number\n } = {}): Promise<PaginationData<Entity>> {\n if (!limit) {\n const res = await request<ApiResponse<Entity[]>>(this.#lumi, this.uri('/list'), {\n method: 'POST',\n body: { filter, sort },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return {\n total: res.data.length,\n list: res.data,\n }\n }\n else {\n const res = await request<ApiResponse<PaginationData<Entity>>>(this.#lumi, this.uri('/find'), {\n method: 'POST',\n body: { filter, sort, limit, skip },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n }\n\n /** 获取单个文档 */\n public async get(id: string): Promise<Entity | null> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(`/${id}`), {\n method: 'GET',\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 创建文档 */\n public async create(data: Record<string, any>): Promise<Entity> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(), {\n method: 'POST',\n body: data,\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 批量创建文档 */\n public async createMany(data: Record<string, any>[]): Promise<Entity[]> {\n const res = await request<ApiResponse<Entity[]>>(this.#lumi, this.uri('/batch'), {\n method: 'POST',\n body: data,\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 更新文档 */\n public async update(id: string, data: Record<string, any>): Promise<Entity> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(), {\n method: 'PUT',\n body: { filter: { _id: id }, update: data },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 删除文档 */\n public async delete(id: string): Promise<void> {\n const res = await request<ApiResponse<null>>(this.#lumi, this.uri(`/${id}`), {\n method: 'DELETE',\n })\n if (res.code !== 200)\n throw new Error(res.message)\n }\n\n /** 批量删除文档 */\n public async deleteMany(ids: string[]): Promise<void> {\n const res = await request<ApiResponse<null>>(this.#lumi, this.uri('/batch-by-ids'), {\n method: 'DELETE',\n params: { ids },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n }\n\n private uri(suffix = ''): string {\n return `/lm/${this.#lumi.config.projectId}/${this.entityName}/documents${suffix}`\n }\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport { EntityClient } from '@/core/entity-client'\n\nexport class EntitiesClient {\n readonly #lumi: LumiClient\n [key: string]: EntityClient\n\n constructor(lumi: LumiClient) {\n this.#lumi = lumi\n return new Proxy(this, {\n get(target: EntitiesClient, p: string) {\n if (!(p in target))\n target[p] = new EntityClient(target.#lumi, p)\n return target[p]\n },\n }) as this\n }\n}\n","import { LumiAuthClient } from '@/core/auth-client'\nimport { EntitiesClient } from '@/core/entities-client'\n\nexport interface LumiClientConfig {\n projectId: string\n apiBaseUrl: string\n authOrigin: string\n}\n\nexport class LumiClient {\n public config: LumiClientConfig\n\n public auth: LumiAuthClient\n public entities: EntitiesClient\n\n constructor(config: LumiClientConfig) {\n this.config = config\n this.auth = new LumiAuthClient(this)\n this.entities = new EntitiesClient(this)\n }\n}\n\nexport function createClient(config: LumiClientConfig): LumiClient {\n return new LumiClient(config)\n}\n"],"mappings":"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","names":["index_exports","__export","EntitiesClient","EntityClient","LumiAuthClient","LumiClient","createClient","__toCommonJS","import_ofetch","request","lumi","uri","options","__spreadValues","getIcon","_a","_b","getTitle","_lumi","LumiAuthClient","lumi","__privateAdd","__privateSet","accessToken","left","top","popup","__privateGet","cleanup","resolve","reject","timer","handleMessage","data","origin","source","getIcon","getTitle","__async","res","request","_lumi","EntityClient","lumi","entityName","__privateAdd","__privateSet","__async","filter","sort","limit","skip","res","request","__privateGet","id","data","ids","suffix","_lumi","EntitiesClient","lumi","__privateAdd","__privateSet","target","p","EntityClient","__privateGet","LumiClient","config","LumiAuthClient","EntitiesClient","createClient"]}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- var v=Object.defineProperty;var L=Object.getOwnPropertySymbols;var O=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable;var A=i=>{throw TypeError(i)};var S=(i,e,t)=>e in i?v(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,I=(i,e)=>{for(var t in e||(e={}))O.call(e,t)&&S(i,t,e[t]);if(L)for(var t of L(e))N.call(e,t)&&S(i,t,e[t]);return i};var P=(i,e,t)=>e.has(i)||A("Cannot "+t);var n=(i,e,t)=>(P(i,e,"read from private field"),t?t.call(i):e.get(i)),h=(i,e,t)=>e.has(i)?A("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(i):e.set(i,t),d=(i,e,t,r)=>(P(i,e,"write to private field"),r?r.call(i,t):e.set(i,t),t);var l=(i,e,t)=>new Promise((r,p)=>{var s=c=>{try{f(t.next(c))}catch(y){p(y)}},m=c=>{try{f(t.throw(c))}catch(y){p(y)}},f=c=>c.done?r(c.value):Promise.resolve(c.value).then(s,m);f((t=t.apply(i,e)).next())});import{ofetch as $}from"ofetch";function a(i,e,t={}){return i.auth.accessToken&&(t.headers=I({Authorization:`Bearer ${i.auth.accessToken}`},t.headers)),$(e,I({baseURL:i.config.apiBaseUrl},t))}function R(){var i,e;return(e=(i=document.querySelector('link[rel="icon"]'))==null?void 0:i.href)!=null?e:null}function M(){var i;return(i=document.title)!=null?i:null}var u,E=class{constructor(e){h(this,u);d(this,u,e)}get accessToken(){return localStorage.getItem("lumi-access-token")}set accessToken(e){e?localStorage.setItem("lumi-access-token",e):localStorage.removeItem("lumi-access-token")}get isAuthenticated(){return!!this.accessToken}signIn(){let r=(window.screen.width-800)/2,p=(window.screen.height-600)/2,s=window.open(n(this,u).config.authOrigin,"_blank",`width=800,height=600,left=${r},top=${p}`),m;return new Promise((f,c)=>{if(!s)return c(new Error("Open auth window failed"));let y=setInterval(()=>{s.closed&&c(new Error("Auth window closed"))},1e3),x=({data:g,origin:D,source:k})=>{if(!(D!==n(this,u).config.authOrigin||k!==s))switch(g==null?void 0:g.type){case"lumi-ready":{s.postMessage({type:"lumi-init",data:{projectId:n(this,u).config.projectId,icon:R(),title:M()}},n(this,u).config.authOrigin);break}case"lumi-sign-in":{if(g.data.projectId!==n(this,u).config.projectId)break;s.close(),this.accessToken=g.data.accessToken,f(g.data);break}}};window.addEventListener("message",x),m=()=>{clearInterval(y),window.removeEventListener("message",x)}}).finally(()=>m==null?void 0:m())}signOut(){this.accessToken=null}getUser(){return l(this,null,function*(){let e=yield a(n(this,u),"/lm/user/info");if(e.code!==200)throw new Error(e.message);return e.data})}};u=new WeakMap;var o,b=class{constructor(e,t){h(this,o);d(this,o,e),this.entityName=t}list(){return l(this,arguments,function*({filter:e,sort:t,limit:r,skip:p}={}){if(r){let s=yield a(n(this,o),this.uri("/find"),{method:"POST",body:{filter:e,sort:t,limit:r,skip:p}});if(s.code!==200)throw new Error(s.message);return s.data}else{let s=yield a(n(this,o),this.uri("/list"),{method:"POST",body:{filter:e,sort:t}});if(s.code!==200)throw new Error(s.message);return{total:s.data.length,list:s.data}}})}get(e){return l(this,null,function*(){let t=yield a(n(this,o),this.uri(`/${e}`),{method:"GET"});if(t.code!==200)throw new Error(t.message);return t.data})}create(e){return l(this,null,function*(){let t=yield a(n(this,o),this.uri(),{method:"POST",body:e});if(t.code!==200)throw new Error(t.message);return t.data})}createMany(e){return l(this,null,function*(){let t=yield a(n(this,o),this.uri("/batch"),{method:"POST",body:e});if(t.code!==200)throw new Error(t.message);return t.data})}update(e,t){return l(this,null,function*(){let r=yield a(n(this,o),this.uri(),{method:"PUT",body:{filter:{_id:e},update:t}});if(r.code!==200)throw new Error(r.message);return r.data})}delete(e){return l(this,null,function*(){let t=yield a(n(this,o),this.uri(`/${e}`),{method:"DELETE"});if(t.code!==200)throw new Error(t.message)})}deleteMany(e){return l(this,null,function*(){let t=yield a(n(this,o),this.uri("/batch-by-ids"),{method:"DELETE",params:{ids:e}});if(t.code!==200)throw new Error(t.message)})}uri(e=""){return`/lm/${n(this,o).config.projectId}/${this.entityName}/documents${e}`}};o=new WeakMap;var w,T=class{constructor(e){h(this,w);return d(this,w,e),new Proxy(this,{get(t,r){return r in t||(t[r]=new b(n(t,w),r)),t[r]}})}};w=new WeakMap;var C=class{constructor(e){this.config=e,this.auth=new E(this),this.entities=new T(this)}};function ee(i){return new C(i)}export{T as EntitiesClient,b as EntityClient,E as LumiAuthClient,C as LumiClient,ee as createClient};
1
+ var v=Object.defineProperty;var L=Object.getOwnPropertySymbols;var O=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable;var R=i=>{throw TypeError(i)};var S=(i,e,t)=>e in i?v(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,I=(i,e)=>{for(var t in e||(e={}))O.call(e,t)&&S(i,t,e[t]);if(L)for(var t of L(e))N.call(e,t)&&S(i,t,e[t]);return i};var A=(i,e,t)=>e.has(i)||R("Cannot "+t);var r=(i,e,t)=>(A(i,e,"read from private field"),t?t.call(i):e.get(i)),h=(i,e,t)=>e.has(i)?R("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(i):e.set(i,t),d=(i,e,t,n)=>(A(i,e,"write to private field"),n?n.call(i,t):e.set(i,t),t);var l=(i,e,t)=>new Promise((n,p)=>{var s=c=>{try{f(t.next(c))}catch(y){p(y)}},m=c=>{try{f(t.throw(c))}catch(y){p(y)}},f=c=>c.done?n(c.value):Promise.resolve(c.value).then(s,m);f((t=t.apply(i,e)).next())});import{ofetch as $}from"ofetch";function a(i,e,t={}){return i.auth.accessToken&&(t.headers=I({Authorization:`Bearer ${i.auth.accessToken}`},t.headers)),$(e,I({baseURL:i.config.apiBaseUrl},t))}function P(){var i,e;return(e=(i=document.querySelector('link[rel="icon"]'))==null?void 0:i.href)!=null?e:null}function M(){var i;return(i=document.title)!=null?i:null}var u,E=class{constructor(e){h(this,u);d(this,u,e)}get accessToken(){return localStorage.getItem("lumi-access-token")}set accessToken(e){e?localStorage.setItem("lumi-access-token",e):localStorage.removeItem("lumi-access-token")}get isAuthenticated(){return!!this.accessToken}signIn(){let n=(window.screen.width-800)/2,p=(window.screen.height-600)/2,s=window.open(r(this,u).config.authOrigin,"_blank",`width=800,height=600,left=${n},top=${p}`),m;return new Promise((f,c)=>{if(!s)return c(new Error("Open auth window failed"));let y=setInterval(()=>{s.closed&&c(new Error("Auth window closed"))},1e3),x=({data:g,origin:D,source:k})=>{if(!(D!==r(this,u).config.authOrigin||k!==s))switch(g==null?void 0:g.type){case"lumi-ready":{s.postMessage({type:"lumi-init",data:{projectId:r(this,u).config.projectId,icon:P(),title:M()}},r(this,u).config.authOrigin);break}case"lumi-sign-in":{if(g.data.projectId!==r(this,u).config.projectId)break;s.close(),this.accessToken=g.data.accessToken,f(g.data);break}}};window.addEventListener("message",x),m=()=>{clearInterval(y),window.removeEventListener("message",x)}}).finally(()=>m==null?void 0:m())}signOut(){this.accessToken=null}getUser(){return l(this,null,function*(){let e=yield a(r(this,u),"/lm/user/info");if(e.code!==200)throw new Error(e.message);return e.data})}};u=new WeakMap;var o,b=class{constructor(e,t){h(this,o);d(this,o,e),this.entityName=t}list(){return l(this,arguments,function*({filter:e,sort:t,limit:n,skip:p}={}){if(n){let s=yield a(r(this,o),this.uri("/find"),{method:"POST",body:{filter:e,sort:t,limit:n,skip:p}});if(s.code!==200)throw new Error(s.message);return s.data}else{let s=yield a(r(this,o),this.uri("/list"),{method:"POST",body:{filter:e,sort:t}});if(s.code!==200)throw new Error(s.message);return{total:s.data.length,list:s.data}}})}get(e){return l(this,null,function*(){let t=yield a(r(this,o),this.uri(`/${e}`),{method:"GET"});if(t.code!==200)throw new Error(t.message);return t.data})}create(e){return l(this,null,function*(){let t=yield a(r(this,o),this.uri(),{method:"POST",body:e});if(t.code!==200)throw new Error(t.message);return t.data})}createMany(e){return l(this,null,function*(){let t=yield a(r(this,o),this.uri("/batch"),{method:"POST",body:e});if(t.code!==200)throw new Error(t.message);return t.data})}update(e,t){return l(this,null,function*(){let n=yield a(r(this,o),this.uri(),{method:"PUT",body:{filter:{_id:e},update:t}});if(n.code!==200)throw new Error(n.message);return n.data})}delete(e){return l(this,null,function*(){let t=yield a(r(this,o),this.uri(`/${e}`),{method:"DELETE"});if(t.code!==200)throw new Error(t.message)})}deleteMany(e){return l(this,null,function*(){let t=yield a(r(this,o),this.uri("/batch-by-ids"),{method:"DELETE",params:{ids:e}});if(t.code!==200)throw new Error(t.message)})}uri(e=""){return`/lm/${r(this,o).config.projectId}/${this.entityName}/documents${e}`}};o=new WeakMap;var w,T=class{constructor(e){h(this,w);return d(this,w,e),new Proxy(this,{get(t,n){return n in t||(t[n]=new b(r(t,w),n)),t[n]}})}};w=new WeakMap;var C=class{constructor(e){this.config=e,this.auth=new E(this),this.entities=new T(this)}};function ee(i){return new C(i)}export{T as EntitiesClient,b as EntityClient,E as LumiAuthClient,C as LumiClient,ee as createClient};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/request.ts","../src/utils/common.ts","../src/core/auth-client.ts","../src/core/entity-client.ts","../src/core/entities-client.ts","../src/core/lumi-client.ts"],"sourcesContent":["import type { FetchOptions } from 'ofetch'\nimport type { LumiClient } from '@/core/lumi-client'\nimport { ofetch } from 'ofetch'\n\nexport interface ApiResponse<T> {\n code: number\n message: string\n data: T\n}\n\nexport interface PaginationData<T> {\n total: number\n list: T[]\n}\n\nexport function request<T>(lumi: LumiClient, uri: string, options: FetchOptions<'json'> = {}): Promise<T> {\n if (lumi.auth.accessToken) {\n options.headers = {\n Authorization: `Bearer ${lumi.auth.accessToken}`,\n ...options.headers,\n }\n }\n\n return ofetch<T>(uri, {\n baseURL: lumi.config.apiBaseUrl,\n ...options,\n })\n}\n","export function getIcon(): string | null {\n return document.querySelector<HTMLLinkElement>('link[rel=\"icon\"]')?.href ?? null\n}\n\nexport function getTitle(): string | null {\n return document.title ?? null\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport type { ApiResponse } from '@/lib/request'\nimport { MessageType, StorageKey } from '@/constants'\nimport { request } from '@/lib/request'\nimport { getIcon, getTitle } from '@/utils/common'\n\nexport interface User {\n userId: string\n email: string\n}\n\nexport interface MessageSignInData {\n projectId: string\n accessToken: string\n user: User\n}\n\nexport type MessageDataReceive = {\n type: MessageType.READY\n} | {\n type: MessageType.SIGN_IN\n data: MessageSignInData\n}\n\nexport interface MessageInitData {\n projectId: string\n icon: string | null\n title: string | null\n}\n\nexport interface MessageDataSend {\n type: MessageType.INIT\n data: MessageInitData\n}\n\nexport class LumiAuthClient {\n readonly #lumi: LumiClient\n\n constructor(lumi: LumiClient) {\n this.#lumi = lumi\n }\n\n public get accessToken(): string | null {\n return localStorage.getItem(StorageKey.ACCESS_TOKEN)\n }\n\n public set accessToken(accessToken: string | null) {\n if (accessToken)\n localStorage.setItem(StorageKey.ACCESS_TOKEN, accessToken)\n else\n localStorage.removeItem(StorageKey.ACCESS_TOKEN)\n }\n\n public get isAuthenticated(): boolean {\n return !!this.accessToken\n }\n\n /** 登录 */\n public signIn(): Promise<MessageSignInData> {\n const width = 800\n const height = 600\n const left = (window.screen.width - width) / 2\n const top = (window.screen.height - height) / 2\n const popup = window.open(this.#lumi.config.authOrigin, '_blank', `width=${width},height=${height},left=${left},top=${top}`)\n\n let cleanup: () => void\n return new Promise<MessageSignInData>((resolve, reject) => {\n if (!popup)\n return reject(new Error('Open auth window failed'))\n\n const timer = setInterval(() => {\n if (popup.closed)\n reject(new Error('Auth window closed'))\n }, 1000)\n\n const handleMessage = ({ data, origin, source }: MessageEvent<MessageDataReceive | null>): void => {\n if (origin !== this.#lumi.config.authOrigin || source !== popup)\n return\n\n switch (data?.type) {\n case MessageType.READY: {\n popup.postMessage({\n type: MessageType.INIT,\n data: {\n projectId: this.#lumi.config.projectId,\n icon: getIcon(),\n title: getTitle(),\n },\n } satisfies MessageDataSend, this.#lumi.config.authOrigin)\n break\n }\n case MessageType.SIGN_IN: {\n if (data.data.projectId !== this.#lumi.config.projectId)\n break\n popup.close()\n this.accessToken = data.data.accessToken\n resolve(data.data)\n break\n }\n }\n }\n window.addEventListener('message', handleMessage)\n\n cleanup = () => {\n clearInterval(timer)\n window.removeEventListener('message', handleMessage)\n }\n }).finally(() => cleanup?.())\n }\n\n /** 退出登录 */\n public signOut(): void {\n this.accessToken = null\n }\n\n /** 获取当前用户 */\n public async getUser(): Promise<User> {\n const res = await request<ApiResponse<User>>(this.#lumi, '/lm/user/info')\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport type { ApiResponse, PaginationData } from '@/lib/request'\nimport { request } from '@/lib/request'\n\nexport interface Entity extends Record<string, any> {\n id: string\n}\n\nexport class EntityClient {\n readonly #lumi: LumiClient\n public readonly entityName: string\n\n constructor(lumi: LumiClient, entityName: string) {\n this.#lumi = lumi\n this.entityName = entityName\n }\n\n /** 查询文档列表 */\n public async list({ filter, sort, limit, skip }: {\n filter?: any\n sort?: string\n limit?: number\n skip?: number\n } = {}): Promise<PaginationData<Entity>> {\n if (!limit) {\n const res = await request<ApiResponse<Entity[]>>(this.#lumi, this.uri('/list'), {\n method: 'POST',\n body: { filter, sort },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return {\n total: res.data.length,\n list: res.data,\n }\n }\n else {\n const res = await request<ApiResponse<PaginationData<Entity>>>(this.#lumi, this.uri('/find'), {\n method: 'POST',\n body: { filter, sort, limit, skip },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n }\n\n /** 获取单个文档 */\n public async get(id: string): Promise<Entity | null> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(`/${id}`), {\n method: 'GET',\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 创建文档 */\n public async create(data: Record<string, any>): Promise<Entity> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(), {\n method: 'POST',\n body: data,\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 批量创建文档 */\n public async createMany(data: Record<string, any>[]): Promise<Entity[]> {\n const res = await request<ApiResponse<Entity[]>>(this.#lumi, this.uri('/batch'), {\n method: 'POST',\n body: data,\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 更新文档 */\n public async update(id: string, data: Record<string, any>): Promise<Entity> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(), {\n method: 'PUT',\n body: { filter: { _id: id }, update: data },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 删除文档 */\n public async delete(id: string): Promise<void> {\n const res = await request<ApiResponse<null>>(this.#lumi, this.uri(`/${id}`), {\n method: 'DELETE',\n })\n if (res.code !== 200)\n throw new Error(res.message)\n }\n\n /** 批量删除文档 */\n public async deleteMany(ids: string[]): Promise<void> {\n const res = await request<ApiResponse<null>>(this.#lumi, this.uri('/batch-by-ids'), {\n method: 'DELETE',\n params: { ids },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n }\n\n private uri(suffix = ''): string {\n return `/lm/${this.#lumi.config.projectId}/${this.entityName}/documents${suffix}`\n }\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport { EntityClient } from '@/core/entity-client'\n\nexport class EntitiesClient {\n readonly #lumi: LumiClient\n [key: string]: EntityClient\n\n constructor(lumi: LumiClient) {\n this.#lumi = lumi\n return new Proxy(this, {\n get(target: EntitiesClient, p: string) {\n if (!(p in target))\n target[p] = new EntityClient(target.#lumi, p)\n return target[p]\n },\n }) as this\n }\n}\n","import { LumiAuthClient } from '@/core/auth-client'\nimport { EntitiesClient } from '@/core/entities-client'\n\nexport interface LumiClientConfig {\n projectId: string\n apiBaseUrl: string\n authOrigin: string\n}\n\nexport class LumiClient {\n public config: LumiClientConfig\n\n public auth: LumiAuthClient\n public entities: EntitiesClient\n\n constructor(config: LumiClientConfig) {\n this.config = config\n this.auth = new LumiAuthClient(this)\n this.entities = new EntitiesClient(this)\n }\n}\n\nexport function createClient(config: LumiClientConfig): LumiClient {\n return new LumiClient(config)\n}\n"],"mappings":"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","names":["ofetch","request","lumi","uri","options","__spreadValues","ofetch","getIcon","_a","_b","getTitle","_lumi","LumiAuthClient","lumi","__privateAdd","__privateSet","accessToken","left","top","popup","__privateGet","cleanup","resolve","reject","timer","handleMessage","data","origin","source","getIcon","getTitle","__async","res","request","_lumi","EntityClient","lumi","entityName","__privateAdd","__privateSet","__async","filter","sort","limit","skip","res","request","__privateGet","id","data","ids","suffix","_lumi","EntitiesClient","lumi","__privateAdd","__privateSet","target","p","EntityClient","__privateGet","LumiClient","config","LumiAuthClient","EntitiesClient","createClient"]}
1
+ {"version":3,"sources":["../src/lib/request.ts","../src/utils/common.ts","../src/core/auth-client.ts","../src/core/entity-client.ts","../src/core/entities-client.ts","../src/core/lumi-client.ts"],"sourcesContent":["import type { FetchOptions } from 'ofetch'\nimport type { LumiClient } from '@/core/lumi-client'\nimport { ofetch } from 'ofetch'\n\nexport interface ApiResponse<T> {\n code: number\n message: string\n data: T\n}\n\nexport interface PaginationData<T> {\n total: number\n list: T[]\n}\n\nexport function request<T>(lumi: LumiClient, uri: string, options: FetchOptions<'json'> = {}): Promise<T> {\n if (lumi.auth.accessToken) {\n options.headers = {\n Authorization: `Bearer ${lumi.auth.accessToken}`,\n ...options.headers,\n }\n }\n\n return ofetch<T>(uri, {\n baseURL: lumi.config.apiBaseUrl,\n ...options,\n })\n}\n","export function getIcon(): string | null {\n return document.querySelector<HTMLLinkElement>('link[rel=\"icon\"]')?.href ?? null\n}\n\nexport function getTitle(): string | null {\n return document.title ?? null\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport type { ApiResponse } from '@/lib/request'\nimport { MessageType, StorageKey } from '@/constants'\nimport { request } from '@/lib/request'\nimport { getIcon, getTitle } from '@/utils/common'\n\nexport interface User {\n userId: string\n email: string\n}\n\nexport interface MessageSignInData {\n projectId: string\n accessToken: string\n user: User\n}\n\nexport type MessageDataReceive = {\n type: MessageType.READY\n} | {\n type: MessageType.SIGN_IN\n data: MessageSignInData\n}\n\nexport interface MessageInitData {\n projectId: string\n icon: string | null\n title: string | null\n}\n\nexport interface MessageDataSend {\n type: MessageType.INIT\n data: MessageInitData\n}\n\nexport class LumiAuthClient {\n readonly #lumi: LumiClient\n\n constructor(lumi: LumiClient) {\n this.#lumi = lumi\n }\n\n public get accessToken(): string | null {\n return localStorage.getItem(StorageKey.ACCESS_TOKEN)\n }\n\n public set accessToken(accessToken: string | null) {\n if (accessToken)\n localStorage.setItem(StorageKey.ACCESS_TOKEN, accessToken)\n else\n localStorage.removeItem(StorageKey.ACCESS_TOKEN)\n }\n\n public get isAuthenticated(): boolean {\n return !!this.accessToken\n }\n\n /** 登录 */\n public signIn(): Promise<MessageSignInData> {\n const width = 800\n const height = 600\n const left = (window.screen.width - width) / 2\n const top = (window.screen.height - height) / 2\n const popup = window.open(this.#lumi.config.authOrigin, '_blank', `width=${width},height=${height},left=${left},top=${top}`)\n\n let cleanup: () => void\n return new Promise<MessageSignInData>((resolve, reject) => {\n if (!popup)\n return reject(new Error('Open auth window failed'))\n\n const timer = setInterval(() => {\n if (popup.closed)\n reject(new Error('Auth window closed'))\n }, 1000)\n\n const handleMessage = ({ data, origin, source }: MessageEvent<MessageDataReceive | null>): void => {\n if (origin !== this.#lumi.config.authOrigin || source !== popup)\n return\n\n switch (data?.type) {\n case MessageType.READY: {\n popup.postMessage({\n type: MessageType.INIT,\n data: {\n projectId: this.#lumi.config.projectId,\n icon: getIcon(),\n title: getTitle(),\n },\n } satisfies MessageDataSend, this.#lumi.config.authOrigin)\n break\n }\n case MessageType.SIGN_IN: {\n if (data.data.projectId !== this.#lumi.config.projectId)\n break\n popup.close()\n this.accessToken = data.data.accessToken\n resolve(data.data)\n break\n }\n }\n }\n window.addEventListener('message', handleMessage)\n\n cleanup = () => {\n clearInterval(timer)\n window.removeEventListener('message', handleMessage)\n }\n }).finally(() => cleanup?.())\n }\n\n /** 退出登录 */\n public signOut(): void {\n this.accessToken = null\n }\n\n /** 获取当前用户 */\n public async getUser(): Promise<User> {\n const res = await request<ApiResponse<User>>(this.#lumi, '/lm/user/info')\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport type { ApiResponse, PaginationData } from '@/lib/request'\nimport { request } from '@/lib/request'\n\nexport interface Entity extends Record<string, any> {\n id: string\n}\n\nexport class EntityClient {\n readonly #lumi: LumiClient\n public readonly entityName: string\n\n constructor(lumi: LumiClient, entityName: string) {\n this.#lumi = lumi\n this.entityName = entityName\n }\n\n /** 查询文档列表 */\n public async list({ filter, sort, limit, skip }: {\n filter?: any\n sort?: Record<string, 1 | -1>\n limit?: number\n skip?: number\n } = {}): Promise<PaginationData<Entity>> {\n if (!limit) {\n const res = await request<ApiResponse<Entity[]>>(this.#lumi, this.uri('/list'), {\n method: 'POST',\n body: { filter, sort },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return {\n total: res.data.length,\n list: res.data,\n }\n }\n else {\n const res = await request<ApiResponse<PaginationData<Entity>>>(this.#lumi, this.uri('/find'), {\n method: 'POST',\n body: { filter, sort, limit, skip },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n }\n\n /** 获取单个文档 */\n public async get(id: string): Promise<Entity | null> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(`/${id}`), {\n method: 'GET',\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 创建文档 */\n public async create(data: Record<string, any>): Promise<Entity> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(), {\n method: 'POST',\n body: data,\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 批量创建文档 */\n public async createMany(data: Record<string, any>[]): Promise<Entity[]> {\n const res = await request<ApiResponse<Entity[]>>(this.#lumi, this.uri('/batch'), {\n method: 'POST',\n body: data,\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 更新文档 */\n public async update(id: string, data: Record<string, any>): Promise<Entity> {\n const res = await request<ApiResponse<Entity>>(this.#lumi, this.uri(), {\n method: 'PUT',\n body: { filter: { _id: id }, update: data },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n return res.data\n }\n\n /** 删除文档 */\n public async delete(id: string): Promise<void> {\n const res = await request<ApiResponse<null>>(this.#lumi, this.uri(`/${id}`), {\n method: 'DELETE',\n })\n if (res.code !== 200)\n throw new Error(res.message)\n }\n\n /** 批量删除文档 */\n public async deleteMany(ids: string[]): Promise<void> {\n const res = await request<ApiResponse<null>>(this.#lumi, this.uri('/batch-by-ids'), {\n method: 'DELETE',\n params: { ids },\n })\n if (res.code !== 200)\n throw new Error(res.message)\n }\n\n private uri(suffix = ''): string {\n return `/lm/${this.#lumi.config.projectId}/${this.entityName}/documents${suffix}`\n }\n}\n","import type { LumiClient } from '@/core/lumi-client'\nimport { EntityClient } from '@/core/entity-client'\n\nexport class EntitiesClient {\n readonly #lumi: LumiClient\n [key: string]: EntityClient\n\n constructor(lumi: LumiClient) {\n this.#lumi = lumi\n return new Proxy(this, {\n get(target: EntitiesClient, p: string) {\n if (!(p in target))\n target[p] = new EntityClient(target.#lumi, p)\n return target[p]\n },\n }) as this\n }\n}\n","import { LumiAuthClient } from '@/core/auth-client'\nimport { EntitiesClient } from '@/core/entities-client'\n\nexport interface LumiClientConfig {\n projectId: string\n apiBaseUrl: string\n authOrigin: string\n}\n\nexport class LumiClient {\n public config: LumiClientConfig\n\n public auth: LumiAuthClient\n public entities: EntitiesClient\n\n constructor(config: LumiClientConfig) {\n this.config = config\n this.auth = new LumiAuthClient(this)\n this.entities = new EntitiesClient(this)\n }\n}\n\nexport function createClient(config: LumiClientConfig): LumiClient {\n return new LumiClient(config)\n}\n"],"mappings":"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","names":["ofetch","request","lumi","uri","options","__spreadValues","ofetch","getIcon","_a","_b","getTitle","_lumi","LumiAuthClient","lumi","__privateAdd","__privateSet","accessToken","left","top","popup","__privateGet","cleanup","resolve","reject","timer","handleMessage","data","origin","source","getIcon","getTitle","__async","res","request","_lumi","EntityClient","lumi","entityName","__privateAdd","__privateSet","__async","filter","sort","limit","skip","res","request","__privateGet","id","data","ids","suffix","_lumi","EntitiesClient","lumi","__privateAdd","__privateSet","target","p","EntityClient","__privateGet","LumiClient","config","LumiAuthClient","EntitiesClient","createClient"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumi.new/sdk",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "SDK for Lumi.new",
5
5
  "sideEffects": false,
6
6
  "main": "dist/index.js",