@flowerforce/flowerbase-client 0.3.0 → 0.3.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/types.ts CHANGED
@@ -24,12 +24,38 @@ export type ProfileData = {
24
24
  data?: Record<string, unknown>
25
25
  }
26
26
 
27
- export type FunctionCallPayload = {
28
- name: string
29
- arguments: unknown[]
30
- service?: string
27
+ export type MongoDbDocument = Record<string, unknown>
28
+ export type MongoDbServiceName = 'mongodb-atlas'
29
+
30
+ export type MongoDbServiceArgument = {
31
+ database: string
32
+ collection: string
33
+ query?: MongoDbDocument
34
+ filter?: MongoDbDocument
35
+ update?: MongoDbDocument | MongoDbDocument[]
36
+ projection?: MongoDbDocument
37
+ options?: MongoDbDocument
38
+ returnNewDocument?: boolean
39
+ document?: MongoDbDocument
40
+ documents?: MongoDbDocument[]
41
+ pipeline?: MongoDbDocument[]
42
+ replacement?: MongoDbDocument
31
43
  }
32
44
 
45
+ export type MongoDbServiceArguments = [MongoDbServiceArgument]
46
+
47
+ export type FunctionCallPayload =
48
+ | {
49
+ name: string
50
+ arguments: unknown[]
51
+ service?: undefined
52
+ }
53
+ | {
54
+ name: string
55
+ arguments: MongoDbServiceArguments
56
+ service: MongoDbServiceName
57
+ }
58
+
33
59
  export type WatchConfig = {
34
60
  appId: string
35
61
  baseUrl: string
@@ -107,7 +133,7 @@ export interface UserLike {
107
133
  callFunction: (name: string, ...args: unknown[]) => Promise<unknown>
108
134
  refreshAccessToken: () => Promise<string>
109
135
  refreshCustomData: () => Promise<Record<string, unknown>>
110
- mongoClient: (serviceName: string) => MongoClientLike
136
+ mongoClient: (serviceName: MongoDbServiceName) => MongoClientLike
111
137
  addListener: (callback: () => void) => void
112
138
  removeListener: (callback: () => void) => void
113
139
  removeAllListeners: () => void
package/src/user.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { App } from './app'
2
2
  import { createFunctionsProxy } from './functions'
3
3
  import { createMongoClient } from './mongo'
4
- import { MongoClientLike, UserLike } from './types'
4
+ import { MongoClientLike, MongoDbServiceName, UserLike } from './types'
5
5
 
6
6
  export class User implements UserLike {
7
7
  readonly id: string
@@ -122,7 +122,7 @@ export class User implements UserLike {
122
122
  return this.customData
123
123
  }
124
124
 
125
- mongoClient(serviceName: string): MongoClientLike {
125
+ mongoClient(serviceName: MongoDbServiceName): MongoClientLike {
126
126
  return createMongoClient(this.app, serviceName, this.id)
127
127
  }
128
128
 
@@ -1,14 +0,0 @@
1
- import { SessionData } from './types';
2
- export declare class SessionManager {
3
- private readonly key;
4
- private session;
5
- private readonly asyncStorage;
6
- private hydrationPromise;
7
- constructor(appId: string);
8
- private hydrateFromAsyncStorage;
9
- load(): SessionData | null;
10
- get(): SessionData | null;
11
- set(session: SessionData): void;
12
- clear(): void;
13
- }
14
- //# sourceMappingURL=session.native.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.native.d.ts","sourceRoot":"","sources":["../src/session.native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAsBrC,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,gBAAgB,CAA6B;gBAEzC,KAAK,EAAE,MAAM;IAMzB,OAAO,CAAC,uBAAuB;IAwB/B,IAAI,IAAI,WAAW,GAAG,IAAI;IAI1B,GAAG;IAIH,GAAG,CAAC,OAAO,EAAE,WAAW;IAYxB,KAAK;CAUN"}
@@ -1,76 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SessionManager = void 0;
7
- const async_storage_1 = __importDefault(require("@react-native-async-storage/async-storage"));
8
- const memoryStore = new Map();
9
- const getAsyncStorage = () => async_storage_1.default;
10
- const parseSession = (raw) => {
11
- if (!raw)
12
- return null;
13
- try {
14
- return JSON.parse(raw);
15
- }
16
- catch {
17
- return null;
18
- }
19
- };
20
- class SessionManager {
21
- constructor(appId) {
22
- this.session = null;
23
- this.asyncStorage = getAsyncStorage();
24
- this.hydrationPromise = null;
25
- this.key = `flowerbase:${appId}:session`;
26
- this.session = this.load();
27
- void this.hydrateFromAsyncStorage();
28
- }
29
- hydrateFromAsyncStorage() {
30
- if (!this.asyncStorage) {
31
- return Promise.resolve();
32
- }
33
- if (this.hydrationPromise) {
34
- return this.hydrationPromise;
35
- }
36
- this.hydrationPromise = this.asyncStorage
37
- .getItem(this.key)
38
- .then((raw) => {
39
- const parsed = parseSession(raw);
40
- if (!parsed)
41
- return;
42
- this.session = parsed;
43
- memoryStore.set(this.key, JSON.stringify(parsed));
44
- })
45
- .catch(() => {
46
- // Ignore storage read failures and keep memory fallback.
47
- });
48
- return this.hydrationPromise;
49
- }
50
- load() {
51
- return parseSession(memoryStore.get(this.key) ?? null);
52
- }
53
- get() {
54
- return this.session;
55
- }
56
- set(session) {
57
- this.session = session;
58
- const raw = JSON.stringify(session);
59
- memoryStore.set(this.key, raw);
60
- if (this.asyncStorage) {
61
- void this.asyncStorage.setItem(this.key, raw).catch(() => {
62
- // Ignore write failures and keep memory fallback.
63
- });
64
- }
65
- }
66
- clear() {
67
- this.session = null;
68
- memoryStore.delete(this.key);
69
- if (this.asyncStorage) {
70
- void this.asyncStorage.removeItem(this.key).catch(() => {
71
- // Ignore delete failures and keep memory fallback.
72
- });
73
- }
74
- }
75
- }
76
- exports.SessionManager = SessionManager;
@@ -1,89 +0,0 @@
1
- import { SessionData } from './types'
2
- import AsyncStorage from '@react-native-async-storage/async-storage'
3
-
4
- type StorageLike = {
5
- getItem: (key: string) => Promise<string | null>
6
- setItem: (key: string, value: string) => Promise<void>
7
- removeItem: (key: string) => Promise<void>
8
- }
9
-
10
- const memoryStore = new Map<string, string>()
11
-
12
- const getAsyncStorage = (): StorageLike => AsyncStorage
13
-
14
- const parseSession = (raw: string | null): SessionData | null => {
15
- if (!raw) return null
16
- try {
17
- return JSON.parse(raw) as SessionData
18
- } catch {
19
- return null
20
- }
21
- }
22
-
23
- export class SessionManager {
24
- private readonly key: string
25
- private session: SessionData | null = null
26
- private readonly asyncStorage = getAsyncStorage()
27
- private hydrationPromise: Promise<void> | null = null
28
-
29
- constructor(appId: string) {
30
- this.key = `flowerbase:${appId}:session`
31
- this.session = this.load()
32
- void this.hydrateFromAsyncStorage()
33
- }
34
-
35
- private hydrateFromAsyncStorage() {
36
- if (!this.asyncStorage) {
37
- return Promise.resolve()
38
- }
39
-
40
- if (this.hydrationPromise) {
41
- return this.hydrationPromise
42
- }
43
-
44
- this.hydrationPromise = this.asyncStorage
45
- .getItem(this.key)
46
- .then((raw) => {
47
- const parsed = parseSession(raw)
48
- if (!parsed) return
49
- this.session = parsed
50
- memoryStore.set(this.key, JSON.stringify(parsed))
51
- })
52
- .catch(() => {
53
- // Ignore storage read failures and keep memory fallback.
54
- })
55
-
56
- return this.hydrationPromise
57
- }
58
-
59
- load(): SessionData | null {
60
- return parseSession(memoryStore.get(this.key) ?? null)
61
- }
62
-
63
- get() {
64
- return this.session
65
- }
66
-
67
- set(session: SessionData) {
68
- this.session = session
69
- const raw = JSON.stringify(session)
70
- memoryStore.set(this.key, raw)
71
-
72
- if (this.asyncStorage) {
73
- void this.asyncStorage.setItem(this.key, raw).catch(() => {
74
- // Ignore write failures and keep memory fallback.
75
- })
76
- }
77
- }
78
-
79
- clear() {
80
- this.session = null
81
- memoryStore.delete(this.key)
82
-
83
- if (this.asyncStorage) {
84
- void this.asyncStorage.removeItem(this.key).catch(() => {
85
- // Ignore delete failures and keep memory fallback.
86
- })
87
- }
88
- }
89
- }