@entropic-bond/firebase 1.7.9 → 1.8.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/lib/auth/firebase-auth.d.ts +3 -3
- package/lib/auth/firebase-auth.js +54 -41
- package/lib/auth/firebase-auth.js.map +1 -1
- package/lib/cloud-functions/firebase-cloud-functions.d.ts +1 -1
- package/lib/cloud-functions/firebase-cloud-functions.js +3 -14
- package/lib/cloud-functions/firebase-cloud-functions.js.map +1 -1
- package/lib/cloud-functions/firebase-cloud-functions.spec.d.ts +2 -2
- package/lib/cloud-functions/firebase-cloud-functions.spec.js +6 -15
- package/lib/cloud-functions/firebase-cloud-functions.spec.js.map +1 -1
- package/lib/cloud-storage/firebase-cloud-storage.js +14 -9
- package/lib/cloud-storage/firebase-cloud-storage.js.map +1 -1
- package/lib/cloud-storage/firebase-cloud-storage.spec.js +36 -44
- package/lib/cloud-storage/firebase-cloud-storage.spec.js.map +1 -1
- package/lib/firebase-helper.d.ts +9 -8
- package/lib/firebase-helper.js +17 -13
- package/lib/firebase-helper.js.map +1 -1
- package/lib/mocks/test-user.d.ts +18 -18
- package/lib/mocks/test-user.js.map +1 -1
- package/lib/store/firebase-datasource.d.ts +2 -0
- package/lib/store/firebase-datasource.js +31 -29
- package/lib/store/firebase-datasource.js.map +1 -1
- package/lib/store/firebase-datasource.spec.js +234 -222
- package/lib/store/firebase-datasource.spec.js.map +1 -1
- package/package.json +10 -10
|
@@ -7,12 +7,12 @@ export declare class FirebaseAuth extends AuthService {
|
|
|
7
7
|
login<T extends {}>(signData: SignData): Promise<UserCredentials<T>>;
|
|
8
8
|
logout(): Promise<void>;
|
|
9
9
|
resetEmailPassword(email: string): Promise<void>;
|
|
10
|
-
onAuthStateChange<T extends {}>(onChange: (userCredentials: UserCredentials<T>) => void): void;
|
|
10
|
+
onAuthStateChange<T extends {}>(onChange: (userCredentials: UserCredentials<T> | undefined) => void): void;
|
|
11
11
|
linkAdditionalProvider(provider: AuthProvider): Promise<unknown>;
|
|
12
12
|
unlinkProvider(provider: AuthProvider): Promise<unknown>;
|
|
13
13
|
private toUserCredentials;
|
|
14
|
-
static convertCredentials<T>(nativeUserCredential: User, claims: T): UserCredentials<T>;
|
|
15
|
-
registerCredentialProvider(name: string, providerFactory: (singData
|
|
14
|
+
static convertCredentials<T extends {}>(nativeUserCredential: User, claims: T): UserCredentials<T>;
|
|
15
|
+
registerCredentialProvider(name: string, providerFactory: (singData: SignData) => Promise<UserCredential>): void;
|
|
16
16
|
private registerCredentialProviders;
|
|
17
17
|
private credentialProviders;
|
|
18
18
|
}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.FirebaseAuth = void 0;
|
|
13
4
|
const entropic_bond_1 = require("entropic-bond");
|
|
@@ -27,6 +18,8 @@ class FirebaseAuth extends entropic_bond_1.AuthService {
|
|
|
27
18
|
firebase_helper_1.FirebaseHelper.useEmulator(emulator);
|
|
28
19
|
if ((_a = firebase_helper_1.FirebaseHelper.emulator) === null || _a === void 0 ? void 0 : _a.emulate) {
|
|
29
20
|
const { host, authPort } = firebase_helper_1.FirebaseHelper.emulator;
|
|
21
|
+
if (!host || !authPort)
|
|
22
|
+
throw new Error(`You should define a host and an auth emulator port to use the emulator`);
|
|
30
23
|
(0, auth_1.connectAuthEmulator)(firebase_helper_1.FirebaseHelper.instance.auth(), `http://${host}:${authPort}`);
|
|
31
24
|
}
|
|
32
25
|
this.registerCredentialProviders();
|
|
@@ -34,21 +27,23 @@ class FirebaseAuth extends entropic_bond_1.AuthService {
|
|
|
34
27
|
signUp(signData) {
|
|
35
28
|
const { authProvider, verificationLink } = signData;
|
|
36
29
|
if (authProvider.slice(0, 5) === 'email') {
|
|
37
|
-
return new Promise((resolve, reject) =>
|
|
30
|
+
return new Promise(async (resolve, reject) => {
|
|
38
31
|
try {
|
|
39
32
|
const credentialFactory = this.credentialProviders['email-sign-up'];
|
|
40
|
-
|
|
33
|
+
if (!credentialFactory)
|
|
34
|
+
throw new Error(`The provider ${authProvider} is not registered`);
|
|
35
|
+
const userCredentials = await credentialFactory(signData);
|
|
41
36
|
if (signData.name) {
|
|
42
|
-
|
|
37
|
+
await (0, auth_1.updateProfile)(userCredentials.user, {
|
|
43
38
|
displayName: signData.name
|
|
44
39
|
});
|
|
45
40
|
}
|
|
46
41
|
if (verificationLink) {
|
|
47
|
-
|
|
42
|
+
await (0, auth_1.sendEmailVerification)(userCredentials.user, {
|
|
48
43
|
url: verificationLink
|
|
49
44
|
});
|
|
50
45
|
}
|
|
51
|
-
resolve(
|
|
46
|
+
resolve(await this.toUserCredentials(userCredentials.user));
|
|
52
47
|
}
|
|
53
48
|
catch (error) {
|
|
54
49
|
reject({
|
|
@@ -56,18 +51,20 @@ class FirebaseAuth extends entropic_bond_1.AuthService {
|
|
|
56
51
|
message: error.message
|
|
57
52
|
});
|
|
58
53
|
}
|
|
59
|
-
})
|
|
54
|
+
});
|
|
60
55
|
}
|
|
61
56
|
else
|
|
62
57
|
return this.login(signData);
|
|
63
58
|
}
|
|
64
59
|
login(signData) {
|
|
65
60
|
const { authProvider } = signData;
|
|
66
|
-
return new Promise((resolve, reject) =>
|
|
61
|
+
return new Promise(async (resolve, reject) => {
|
|
67
62
|
try {
|
|
68
63
|
const credentialFactory = this.credentialProviders[authProvider];
|
|
69
|
-
|
|
70
|
-
|
|
64
|
+
if (!credentialFactory)
|
|
65
|
+
throw new Error(`The provider ${authProvider} is not registered`);
|
|
66
|
+
const userCredentials = await credentialFactory(signData);
|
|
67
|
+
resolve(await this.toUserCredentials(userCredentials.user));
|
|
71
68
|
}
|
|
72
69
|
catch (error) {
|
|
73
70
|
reject({
|
|
@@ -75,15 +72,15 @@ class FirebaseAuth extends entropic_bond_1.AuthService {
|
|
|
75
72
|
message: error.message
|
|
76
73
|
});
|
|
77
74
|
}
|
|
78
|
-
})
|
|
75
|
+
});
|
|
79
76
|
}
|
|
80
77
|
logout() {
|
|
81
78
|
return firebase_helper_1.FirebaseHelper.instance.auth().signOut();
|
|
82
79
|
}
|
|
83
80
|
resetEmailPassword(email) {
|
|
84
|
-
return new Promise((resolve, reject) =>
|
|
81
|
+
return new Promise(async (resolve, reject) => {
|
|
85
82
|
try {
|
|
86
|
-
|
|
83
|
+
await (0, auth_1.sendPasswordResetEmail)(firebase_helper_1.FirebaseHelper.instance.auth(), email);
|
|
87
84
|
resolve();
|
|
88
85
|
}
|
|
89
86
|
catch (error) {
|
|
@@ -92,54 +89,70 @@ class FirebaseAuth extends entropic_bond_1.AuthService {
|
|
|
92
89
|
message: error.message
|
|
93
90
|
});
|
|
94
91
|
}
|
|
95
|
-
})
|
|
92
|
+
});
|
|
96
93
|
}
|
|
97
94
|
onAuthStateChange(onChange) {
|
|
98
|
-
firebase_helper_1.FirebaseHelper.instance.auth().onAuthStateChanged((credentials) =>
|
|
99
|
-
onChange(
|
|
100
|
-
})
|
|
95
|
+
firebase_helper_1.FirebaseHelper.instance.auth().onAuthStateChanged(async (credentials) => {
|
|
96
|
+
onChange(credentials ? await this.toUserCredentials(credentials) : undefined);
|
|
97
|
+
});
|
|
101
98
|
}
|
|
102
99
|
linkAdditionalProvider(provider) {
|
|
103
100
|
const providerInstance = providerFactory[provider]();
|
|
104
101
|
const currentUser = firebase_helper_1.FirebaseHelper.instance.auth().currentUser;
|
|
102
|
+
if (!currentUser)
|
|
103
|
+
throw new Error(`There is no logged in user`);
|
|
105
104
|
return (0, auth_1.linkWithPopup)(currentUser, providerInstance);
|
|
106
105
|
}
|
|
107
106
|
unlinkProvider(provider) {
|
|
108
107
|
const { currentUser } = firebase_helper_1.FirebaseHelper.instance.auth();
|
|
108
|
+
if (!currentUser)
|
|
109
|
+
throw new Error(`There is no logged in user`);
|
|
109
110
|
currentUser.providerData;
|
|
110
111
|
return (0, auth_1.unlink)(currentUser, providerFactory[provider]().providerId);
|
|
111
112
|
}
|
|
112
|
-
toUserCredentials(nativeUserCredential) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return FirebaseAuth.convertCredentials(nativeUserCredential, claims);
|
|
118
|
-
});
|
|
113
|
+
async toUserCredentials(nativeUserCredential) {
|
|
114
|
+
if (!nativeUserCredential)
|
|
115
|
+
throw new Error(`The user in user credentials is not defined`);
|
|
116
|
+
const claims = (await nativeUserCredential.getIdTokenResult()).claims;
|
|
117
|
+
return FirebaseAuth.convertCredentials(nativeUserCredential, claims);
|
|
119
118
|
}
|
|
120
119
|
static convertCredentials(nativeUserCredential, claims) {
|
|
120
|
+
var _a, _b, _c, _d;
|
|
121
121
|
return ({
|
|
122
122
|
id: nativeUserCredential.uid,
|
|
123
|
-
email: nativeUserCredential.email,
|
|
124
|
-
name: nativeUserCredential.displayName,
|
|
125
|
-
pictureUrl: nativeUserCredential.photoURL,
|
|
126
|
-
phoneNumber: nativeUserCredential.phoneNumber,
|
|
123
|
+
email: (_a = nativeUserCredential.email) !== null && _a !== void 0 ? _a : '',
|
|
124
|
+
name: (_b = nativeUserCredential.displayName) !== null && _b !== void 0 ? _b : undefined,
|
|
125
|
+
pictureUrl: (_c = nativeUserCredential.photoURL) !== null && _c !== void 0 ? _c : undefined,
|
|
126
|
+
phoneNumber: (_d = nativeUserCredential.phoneNumber) !== null && _d !== void 0 ? _d : undefined,
|
|
127
127
|
emailVerified: nativeUserCredential.emailVerified,
|
|
128
|
-
customData:
|
|
128
|
+
customData: { ...claims },
|
|
129
129
|
lastLogin: Date.now(),
|
|
130
|
-
creationDate: new Date(nativeUserCredential.metadata.creationTime).getTime()
|
|
130
|
+
creationDate: nativeUserCredential.metadata.creationTime ? new Date(nativeUserCredential.metadata.creationTime).getTime() : undefined,
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
133
|
registerCredentialProvider(name, providerFactory) {
|
|
134
134
|
this.credentialProviders[name] = providerFactory;
|
|
135
135
|
}
|
|
136
136
|
registerCredentialProviders() {
|
|
137
|
-
this.registerCredentialProvider('email-sign-up', signData =>
|
|
138
|
-
|
|
137
|
+
this.registerCredentialProvider('email-sign-up', signData => {
|
|
138
|
+
if (!signData.email || !signData.password)
|
|
139
|
+
throw new Error(`Email and password are required`);
|
|
140
|
+
return (0, auth_1.createUserWithEmailAndPassword)(firebase_helper_1.FirebaseHelper.instance.auth(), signData.email, signData.password);
|
|
141
|
+
});
|
|
142
|
+
this.registerCredentialProvider('email', signData => {
|
|
143
|
+
if (!signData.email || !signData.password)
|
|
144
|
+
throw new Error(`Email and password are required`);
|
|
145
|
+
return (0, auth_1.signInWithEmailAndPassword)(firebase_helper_1.FirebaseHelper.instance.auth(), signData.email, signData.password);
|
|
146
|
+
});
|
|
139
147
|
this.registerCredentialProvider('google', () => (0, auth_1.signInWithPopup)(firebase_helper_1.FirebaseHelper.instance.auth(), new auth_1.GoogleAuthProvider()));
|
|
140
148
|
this.registerCredentialProvider('facebook', () => (0, auth_1.signInWithPopup)(firebase_helper_1.FirebaseHelper.instance.auth(), new auth_1.FacebookAuthProvider()));
|
|
141
149
|
this.registerCredentialProvider('twitter', () => (0, auth_1.signInWithPopup)(firebase_helper_1.FirebaseHelper.instance.auth(), new auth_1.TwitterAuthProvider()));
|
|
142
|
-
this.registerCredentialProvider('link-twitter', () =>
|
|
150
|
+
this.registerCredentialProvider('link-twitter', () => {
|
|
151
|
+
const currentUser = firebase_helper_1.FirebaseHelper.instance.auth().currentUser;
|
|
152
|
+
if (!currentUser)
|
|
153
|
+
throw new Error(`There is no logged in user`);
|
|
154
|
+
return (0, auth_1.linkWithPopup)(currentUser, new auth_1.TwitterAuthProvider());
|
|
155
|
+
});
|
|
143
156
|
this.registerCredentialProvider('anonymous', () => (0, auth_1.signInAnonymously)(firebase_helper_1.FirebaseHelper.instance.auth()));
|
|
144
157
|
}
|
|
145
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-auth.js","sourceRoot":"","sources":["../../src/auth/firebase-auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firebase-auth.js","sourceRoot":"","sources":["../../src/auth/firebase-auth.ts"],"names":[],"mappings":";;;AAAA,iDAAiJ;AACjJ,wCAA6T;AAC7T,wDAAmE;AAMnE,MAAM,eAAe,GAAG;IACvB,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,0BAAmB,EAAE;IAC1C,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,2BAAoB,EAAE;IAC5C,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,yBAAkB,EAAE;CACxC,CAAA;AAED,MAAa,YAAa,SAAQ,2BAAW;IAC5C,YAAa,QAAyB;;QACrC,KAAK,EAAE,CAAA;QAmKA,wBAAmB,GAAwB,EAAE,CAAA;QAlKpD,IAAK,QAAQ;YAAG,gCAAc,CAAC,WAAW,CAAE,QAAQ,CAAE,CAAA;QAEtD,IAAK,MAAA,gCAAc,CAAC,QAAQ,0CAAE,OAAO,EAAG;YACvC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,gCAAc,CAAC,QAAQ,CAAA;YAClD,IAAK,CAAC,IAAI,IAAI,CAAC,QAAQ;gBAAG,MAAM,IAAI,KAAK,CAAE,wEAAwE,CAAE,CAAA;YAErH,IAAA,0BAAmB,EAAE,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAW,IAAK,IAAK,QAAS,EAAE,CAAE,CAAA;SACvF;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAA;IACnC,CAAC;IAED,MAAM,CAAgB,QAAkB;QACvC,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAA;QAEnD,IAAK,YAAY,CAAC,KAAK,CAAE,CAAC,EAAE,CAAC,CAAE,KAAK,OAAO,EAAG;YAC7C,OAAO,IAAI,OAAO,CAAsB,KAAK,EAAG,OAA2B,EAAE,MAAwB,EAAG,EAAE;gBACzG,IAAI;oBACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAE,eAAe,CAAE,CAAA;oBACrE,IAAK,CAAC,iBAAiB;wBAAG,MAAM,IAAI,KAAK,CAAE,gBAAiB,YAAa,oBAAoB,CAAE,CAAA;oBAE/F,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAE,QAAQ,CAAE,CAAA;oBAE3D,IAAK,QAAQ,CAAC,IAAI,EAAG;wBACpB,MAAM,IAAA,oBAAa,EAAE,eAAe,CAAC,IAAI,EAAE;4BAC1C,WAAW,EAAE,QAAQ,CAAC,IAAI;yBAC1B,CAAC,CAAA;qBACF;oBAED,IAAK,gBAAgB,EAAG;wBACvB,MAAM,IAAA,4BAAqB,EAAE,eAAe,CAAC,IAAI,EAAE;4BAClD,GAAG,EAAE,gBAAgB;yBACrB,CAAC,CAAA;qBACF;oBAED,OAAO,CAAE,MAAM,IAAI,CAAC,iBAAiB,CAAE,eAAe,CAAC,IAAI,CAAE,CAAE,CAAA;iBAC/D;gBACD,OAAO,KAAK,EAAG;oBACd,MAAM,CAAC;wBACN,IAAI,EAAE,IAAA,yBAAS,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,CAAE,CAAmB;wBACzD,OAAO,EAAE,KAAK,CAAC,OAAO;qBACtB,CAAC,CAAA;iBACF;YACF,CAAC,CAAC,CAAA;SACF;;YACI,OAAO,IAAI,CAAC,KAAK,CAAE,QAAQ,CAAE,CAAA;IACnC,CAAC;IAED,KAAK,CAAgB,QAAkB;QACtC,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAA;QAEjC,OAAO,IAAI,OAAO,CAAsB,KAAK,EAAG,OAA2B,EAAE,MAAwB,EAAG,EAAE;YACzG,IAAI;gBACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAE,YAAY,CAAE,CAAA;gBAClE,IAAK,CAAC,iBAAiB;oBAAG,MAAM,IAAI,KAAK,CAAE,gBAAiB,YAAa,oBAAoB,CAAE,CAAA;gBAC/F,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAE,QAAQ,CAAE,CAAA;gBAC3D,OAAO,CAAE,MAAM,IAAI,CAAC,iBAAiB,CAAK,eAAe,CAAC,IAAI,CAAE,CAAE,CAAA;aAClE;YACD,OAAO,KAAK,EAAG;gBACd,MAAM,CAAC;oBACN,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,GAAG,CAAA,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAA,yBAAS,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,CAAE,CAAkB;oBAChG,OAAO,EAAE,KAAK,CAAC,OAAO;iBACtB,CAAC,CAAA;aACF;QACF,CAAC,CAAC,CAAA;IACH,CAAC;IAED,MAAM;QACL,OAAO,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAChD,CAAC;IAED,kBAAkB,CAAE,KAAa;QAChC,OAAO,IAAI,OAAO,CAAQ,KAAK,EAAG,OAAO,EAAE,MAAM,EAAG,EAAE;YACrD,IAAI;gBACH,MAAM,IAAA,6BAAsB,EAAE,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,CAAE,CAAA;gBACrE,OAAO,EAAE,CAAA;aACT;YACD,OAAO,KAAK,EAAG;gBACd,MAAM,CAAC;oBACN,IAAI,EAAE,IAAA,yBAAS,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,CAAE,CAAmB;oBACzD,OAAO,EAAE,KAAK,CAAC,OAAO;iBACtB,CAAC,CAAA;aACF;QACF,CAAC,CAAC,CAAA;IACH,CAAC;IAED,iBAAiB,CAAgB,QAAmE;QACnG,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAE,KAAK,EAAC,WAAW,EAAC,EAAE;YACtE,QAAQ,CAAE,WAAW,CAAA,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAE,WAAW,CAAE,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QACjF,CAAC,CAAC,CAAA;IACH,CAAC;IAED,sBAAsB,CAAE,QAAsB;QAC7C,MAAM,gBAAgB,GAAG,eAAe,CAAE,QAAQ,CAAE,EAAE,CAAA;QACtD,MAAM,WAAW,GAAG,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,CAAA;QAC9D,IAAK,CAAC,WAAW;YAAG,MAAM,IAAI,KAAK,CAAE,4BAA4B,CAAE,CAAA;QAEnE,OAAO,IAAA,oBAAa,EAAE,WAAW,EAAE,gBAAgB,CAAE,CAAA;IACtD,CAAC;IAED,cAAc,CAAE,QAAsB;QACrC,MAAM,EAAE,WAAW,EAAE,GAAG,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACtD,IAAK,CAAC,WAAW;YAAG,MAAM,IAAI,KAAK,CAAE,4BAA4B,CAAE,CAAA;QAEnE,WAAW,CAAC,YAAY,CAAA;QACxB,OAAO,IAAA,aAAM,EAAE,WAAW,EAAE,eAAe,CAAE,QAAQ,CAAE,EAAE,CAAC,UAAU,CAAE,CAAA;IACvE,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAgB,oBAA0B;QACxE,IAAK,CAAC,oBAAoB;YAAG,MAAM,IAAI,KAAK,CAAE,6CAA6C,CAAE,CAAA;QAE7F,MAAM,MAAM,GAAG,CAAE,MAAM,oBAAoB,CAAC,gBAAgB,EAAE,CAAE,CAAC,MAAW,CAAA;QAE5E,OAAO,YAAY,CAAC,kBAAkB,CAAK,oBAAoB,EAAE,MAAM,CAAE,CAAA;IAC1E,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAgB,oBAA0B,EAAE,MAAS;;QAC7E,OAAO,CAAC;YACP,EAAE,EAAE,oBAAoB,CAAC,GAAG;YAC5B,KAAK,EAAE,MAAA,oBAAoB,CAAC,KAAK,mCAAI,EAAE;YACvC,IAAI,EAAE,MAAA,oBAAoB,CAAC,WAAW,mCAAI,SAAS;YACnD,UAAU,EAAE,MAAA,oBAAoB,CAAC,QAAQ,mCAAI,SAAS;YACtD,WAAW,EAAE,MAAA,oBAAoB,CAAC,WAAW,mCAAI,SAAS;YAC1D,aAAa,EAAE,oBAAoB,CAAC,aAAa;YACjD,UAAU,EAAE,EAAC,GAAG,MAAM,EAAC;YACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,YAAY,EAAE,oBAAoB,CAAC,QAAQ,CAAC,YAAY,CAAA,CAAC,CAAC,IAAI,IAAI,CAAE,oBAAoB,CAAC,QAAQ,CAAC,YAAY,CAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;SACtI,CAAC,CAAA;IACH,CAAC;IAED,0BAA0B,CAAE,IAAY,EAAE,eAAkE;QAC3G,IAAI,CAAC,mBAAmB,CAAE,IAAI,CAAE,GAAG,eAAe,CAAA;IACnD,CAAC;IAEO,2BAA2B;QAClC,IAAI,CAAC,0BAA0B,CAAE,eAAe,EAAE,QAAQ,CAAC,EAAE;YAC5D,IAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ;gBAAG,MAAM,IAAI,KAAK,CAAE,iCAAiC,CAAE,CAAA;YACjG,OAAO,IAAA,qCAA8B,EAAE,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAE,CAAA;QAC3G,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,0BAA0B,CAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;YACpD,IAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ;gBAAG,MAAM,IAAI,KAAK,CAAE,iCAAiC,CAAE,CAAA;YACjG,OAAO,IAAA,iCAA0B,EAAE,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAE,CAAA;QACvG,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,0BAA0B,CAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,sBAAe,EAC/D,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,yBAAkB,EAAE,CACxD,CAAC,CAAA;QACF,IAAI,CAAC,0BAA0B,CAAE,UAAU,EAAE,GAAG,EAAE,CAAC,IAAA,sBAAe,EACjE,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,2BAAoB,EAAE,CAC1D,CAAC,CAAA;QACF,IAAI,CAAC,0BAA0B,CAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,sBAAe,EAChE,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,0BAAmB,EAAE,CACzD,CAAC,CAAA;QACF,IAAI,CAAC,0BAA0B,CAAE,cAAc,EAAE,GAAG,EAAE;YACrD,MAAM,WAAW,GAAG,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,CAAA;YAC9D,IAAK,CAAC,WAAW;gBAAG,MAAM,IAAI,KAAK,CAAE,4BAA4B,CAAE,CAAA;YACnE,OAAO,IAAA,oBAAa,EAAE,WAAW,EAAE,IAAI,0BAAmB,EAAE,CAAE,CAAA;QAC/D,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,0BAA0B,CAAE,WAAW,EAAE,GAAG,EAAE,CAAC,IAAA,wBAAiB,EACpE,gCAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAC9B,CAAC,CAAA;IACH,CAAC;CAGD;AAtKD,oCAsKC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CloudFunction, CloudFunctionsService } from 'entropic-bond';
|
|
2
2
|
import { EmulatorConfig } from '../firebase-helper';
|
|
3
3
|
export declare class FirebaseCloudFunctions implements CloudFunctionsService {
|
|
4
|
-
constructor(region?: string, emulator?: EmulatorConfig);
|
|
4
|
+
constructor(region?: string, emulator?: Partial<EmulatorConfig>);
|
|
5
5
|
retrieveFunction<P, R>(cloudFunction: string): CloudFunction<P, R>;
|
|
6
6
|
callFunction<P, R>(func: CloudFunction<P, R>, params: P): Promise<R>;
|
|
7
7
|
}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.FirebaseCloudFunctions = void 0;
|
|
13
4
|
const functions_1 = require("firebase/functions");
|
|
@@ -27,11 +18,9 @@ class FirebaseCloudFunctions {
|
|
|
27
18
|
retrieveFunction(cloudFunction) {
|
|
28
19
|
return (0, functions_1.httpsCallable)(firebase_helper_1.FirebaseHelper.instance.functions(), cloudFunction);
|
|
29
20
|
}
|
|
30
|
-
callFunction(func, params) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return res.data;
|
|
34
|
-
});
|
|
21
|
+
async callFunction(func, params) {
|
|
22
|
+
const res = await func(params);
|
|
23
|
+
return res.data;
|
|
35
24
|
}
|
|
36
25
|
}
|
|
37
26
|
exports.FirebaseCloudFunctions = FirebaseCloudFunctions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-cloud-functions.js","sourceRoot":"","sources":["../../src/cloud-functions/firebase-cloud-functions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firebase-cloud-functions.js","sourceRoot":"","sources":["../../src/cloud-functions/firebase-cloud-functions.ts"],"names":[],"mappings":";;;AACA,kDAA4E;AAC5E,wDAAmE;AAEnE,MAAa,sBAAsB;IAClC,YAAa,MAAe,EAAE,QAAkC;;QAC/D,IAAK,MAAM;YAAG,gCAAc,CAAC,SAAS,CAAE,MAAM,CAAE,CAAA;QAChD,IAAK,QAAQ;YAAG,gCAAc,CAAC,WAAW,CAAE,QAAQ,CAAE,CAAA;QAEtD,IAAK,MAAA,gCAAc,CAAC,QAAQ,0CAAE,OAAO,EAAG;YACvC,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,gCAAc,CAAC,QAAQ,CAAA;YACvD,IAAA,oCAAwB,EAAE,gCAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,CAAE,CAAA;SACpF;IAEF,CAAC;IAED,gBAAgB,CAAQ,aAAqB;QAC5C,OAAO,IAAA,yBAAa,EAAO,gCAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,aAAa,CAAoC,CAAA;IAClH,CAAC;IAED,KAAK,CAAC,YAAY,CAAQ,IAAyB,EAAE,MAAS;QAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAE,MAAM,CAAS,CAAA;QACvC,OAAO,GAAG,CAAC,IAAI,CAAA;IAChB,CAAC;CACD;AApBD,wDAoBC"}
|
|
@@ -5,15 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
9
|
exports.ParamWrapper = void 0;
|
|
19
10
|
const entropic_bond_1 = require("entropic-bond");
|
|
@@ -45,18 +36,18 @@ describe('Cloud functions', () => {
|
|
|
45
36
|
firebase_helper_1.FirebaseHelper.useEmulator();
|
|
46
37
|
entropic_bond_1.CloudFunctions.useCloudFunctionsService(new firebase_cloud_functions_1.FirebaseCloudFunctions('europe-west1', { emulate: true }));
|
|
47
38
|
});
|
|
48
|
-
it('should call cloud functions with plain types', () =>
|
|
39
|
+
it('should call cloud functions with plain types', async () => {
|
|
49
40
|
const testCallablePlain = entropic_bond_1.CloudFunctions.instance.getFunction('testCallablePlain');
|
|
50
|
-
const result =
|
|
41
|
+
const result = await testCallablePlain('Hello');
|
|
51
42
|
expect(result).toBe(5);
|
|
52
|
-
})
|
|
53
|
-
it('should call cloud function for Persistent', () =>
|
|
43
|
+
});
|
|
44
|
+
it('should call cloud function for Persistent', async () => {
|
|
54
45
|
const testCallablePersistent = entropic_bond_1.CloudFunctions.instance.getFunction('testCallablePersistent');
|
|
55
46
|
const paramWrapper = new ParamWrapper('test', 30);
|
|
56
47
|
const a = paramWrapper.toObject();
|
|
57
|
-
const result =
|
|
48
|
+
const result = await testCallablePersistent(paramWrapper);
|
|
58
49
|
expect(result._a).toEqual('test');
|
|
59
50
|
expect(result._b).toEqual(30);
|
|
60
|
-
})
|
|
51
|
+
});
|
|
61
52
|
});
|
|
62
53
|
//# sourceMappingURL=firebase-cloud-functions.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-cloud-functions.spec.js","sourceRoot":"","sources":["../../src/cloud-functions/firebase-cloud-functions.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firebase-cloud-functions.spec.js","sourceRoot":"","sources":["../../src/cloud-functions/firebase-cloud-functions.spec.ts"],"names":[],"mappings":";;;;;;;;;AAAA,iDAA+F;AAC/F,wDAAmD;AACnD,yEAAmE;AAG5D,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,0BAAU;IAC3C,YAAa,CAAU,EAAE,CAAU;QAClC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QACX,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;IACZ,CAAC;CAGD,CAAA;AAFY;IAAX,0BAAU;wCAAuB;AACtB;IAAX,0BAAU;wCAAuB;AAPtB,YAAY;IADxB,IAAA,uCAAuB,EAAE,cAAc,CAAE;GAC7B,YAAY,CAQxB;AARY,oCAAY;AAUzB,QAAQ,CAAE,iBAAiB,EAAE,GAAE,EAAE;IAEhC,UAAU,CAAC,GAAE,EAAE;QACd,gCAAc,CAAC,iBAAiB,CAAC;YAChC,SAAS,EAAE,WAAW;YACtB,aAAa,EAAE,gBAAgB;SAC/B,CAAC,CAAA;QAEF,gCAAc,CAAC,WAAW,EAAE,CAAA;QAC5B,8BAAc,CAAC,wBAAwB,CACtC,IAAI,iDAAsB,CAAE,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAC9D,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAE,8CAA8C,EAAE,KAAK,IAAG,EAAE;QAC7D,MAAM,iBAAiB,GAAG,8BAAc,CAAC,QAAQ,CAAC,WAAW,CAAkB,mBAAmB,CAAE,CAAA;QACpG,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAE,OAAO,CAAE,CAAA;QAEjD,MAAM,CAAE,MAAM,CAAE,CAAC,IAAI,CAAE,CAAC,CAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAE,2CAA2C,EAAE,KAAK,IAAG,EAAE;QAC1D,MAAM,sBAAsB,GAAG,8BAAc,CAAC,QAAQ,CAAC,WAAW,CAA8B,wBAAwB,CAAE,CAAA;QAC1H,MAAM,YAAY,GAAG,IAAI,YAAY,CAAE,MAAM,EAAE,EAAE,CAAE,CAAA;QAEnD,MAAM,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAA;QAEjC,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAE,YAAY,CAAE,CAAA;QAC3D,MAAM,CAAE,MAAM,CAAC,EAAE,CAAE,CAAC,OAAO,CAAE,MAAM,CAAE,CAAA;QACrC,MAAM,CAAE,MAAM,CAAC,EAAE,CAAE,CAAC,OAAO,CAAE,EAAE,CAAE,CAAA;IAClC,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -38,20 +38,25 @@ let FirebaseCloudStorage = FirebaseCloudStorage_1 = class FirebaseCloudStorage e
|
|
|
38
38
|
}
|
|
39
39
|
getUrl(reference) {
|
|
40
40
|
if (!reference)
|
|
41
|
-
return Promise.
|
|
41
|
+
return Promise.reject('needs a reference');
|
|
42
42
|
const storage = firebase_helper_1.FirebaseHelper.instance.storage();
|
|
43
43
|
return (0, storage_1.getDownloadURL)((0, storage_1.ref)(storage, reference));
|
|
44
44
|
}
|
|
45
45
|
uploadControl() {
|
|
46
|
+
if (!this._uploadTask)
|
|
47
|
+
throw new Error(`You should call save() before uploadControl()`);
|
|
46
48
|
return {
|
|
47
|
-
cancel: () => this._uploadTask.cancel(),
|
|
48
|
-
pause: () => this._uploadTask.pause(),
|
|
49
|
-
resume: () => this._uploadTask.resume(),
|
|
50
|
-
onProgress: (callback) =>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
cancel: () => { var _a; return (_a = this._uploadTask) === null || _a === void 0 ? void 0 : _a.cancel(); },
|
|
50
|
+
pause: () => { var _a; return (_a = this._uploadTask) === null || _a === void 0 ? void 0 : _a.pause(); },
|
|
51
|
+
resume: () => { var _a; return (_a = this._uploadTask) === null || _a === void 0 ? void 0 : _a.resume(); },
|
|
52
|
+
onProgress: (callback) => {
|
|
53
|
+
var _a;
|
|
54
|
+
return (_a = this._uploadTask) === null || _a === void 0 ? void 0 : _a.on('state_changed', snapShot => {
|
|
55
|
+
if (callback) {
|
|
56
|
+
callback(snapShot.bytesTransferred, snapShot.totalBytes);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
55
60
|
};
|
|
56
61
|
}
|
|
57
62
|
delete(reference) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-cloud-storage.js","sourceRoot":"","sources":["../../src/cloud-storage/firebase-cloud-storage.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,iDAAiG;AACjG,8CAA8H;AAC9H,wDAAmE;AAG5D,IAAM,oBAAoB,4BAA1B,MAAM,oBAAqB,SAAQ,4BAAY;IACrD,YAAa,QAAyB;;QACrC,KAAK,EAAE,CAAA;QACP,IAAK,QAAQ;YAAG,gCAAc,CAAC,WAAW,CAAE,QAAQ,CAAE,CAAA;QAEtD,IAAK,MAAA,gCAAc,CAAC,QAAQ,0CAAE,OAAO,EAAG;YACvC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,gCAAc,CAAC,QAAQ,CAAA;YACrD,IAAA,gCAAsB,EAAE,gCAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,CAAE,CAAA;SAC9E;IACF,CAAC;IAED,IAAI,CAAE,EAAU,EAAE,IAAqC,EAAE,QAAyB;QACjF,MAAM,OAAO,GAAG,gCAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;QAEjD,OAAO,IAAI,OAAO,CAAS,CAAE,OAAO,EAAE,MAAM,EAAG,EAAE;YAChD,IAAI,CAAC,WAAW,GAAG,IAAA,8BAAoB,EAAE,IAAA,aAAG,EAAE,OAAO,EAAE,EAAE,CAAE,EAAE,IAAI,CAAE,CAAA;YAEnE,IAAK,QAAQ,EAAG;gBACf,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAE,eAAe,EACrD,QAAQ,CAAC,EAAE;oBACV,QAAQ,CAAE,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,UAAU,CAAE,CAAA;gBAC3D,CAAC,EACD,IAAI,EACJ,GAAE,EAAE,CAAA,WAAW,EAAE,CACjB,CAAC;aACF;YAED,IAAI,CAAC,WAAW;iBACd,IAAI,CAAE,GAAG,EAAE,CAAC,OAAO,CAAE,EAAE,CAAE,CAAE;iBAC3B,KAAK,CAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAE,KAAK,CAAE,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;IACH,CAAC;IAED,MAAM,CAAE,SAAiB;QACxB,IAAK,CAAC,SAAS;YAAG,OAAO,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"firebase-cloud-storage.js","sourceRoot":"","sources":["../../src/cloud-storage/firebase-cloud-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,15 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
10
|
};
|
|
@@ -22,11 +13,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
22
13
|
* @jest-environment node
|
|
23
14
|
*/
|
|
24
15
|
global.XMLHttpRequest = require('xhr2');
|
|
25
|
-
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
26
16
|
const firebase_cloud_storage_1 = require("./firebase-cloud-storage");
|
|
27
17
|
const firebase_helper_1 = require("../firebase-helper");
|
|
28
18
|
const firebase_datasource_1 = require("../store/firebase-datasource");
|
|
29
19
|
const entropic_bond_1 = require("entropic-bond");
|
|
20
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
30
21
|
// Note about tests leaking. I've been checking and looks like firebase.storage
|
|
31
22
|
// methods are the responsible for the test leaking (as firebase v. 8.6.3).
|
|
32
23
|
class File {
|
|
@@ -61,30 +52,31 @@ describe('Firebase Cloud Storage', () => {
|
|
|
61
52
|
entropic_bond_1.CloudStorage.useCloudStorage(new firebase_cloud_storage_1.FirebaseCloudStorage());
|
|
62
53
|
file = new entropic_bond_1.StoredFile();
|
|
63
54
|
});
|
|
64
|
-
it('should save and get a url', () =>
|
|
65
|
-
|
|
55
|
+
it('should save and get a url', async () => {
|
|
56
|
+
await file.save({ data: blobData1 });
|
|
66
57
|
expect(file.url).toContain(file.id);
|
|
67
|
-
})
|
|
68
|
-
it('should report metadata', () =>
|
|
69
|
-
|
|
58
|
+
});
|
|
59
|
+
it('should report metadata', async () => {
|
|
60
|
+
await file.save({ data: blobData1, fileName: 'test.dat' });
|
|
70
61
|
expect(file.originalFileName).toEqual('test.dat');
|
|
71
62
|
expect(file.provider.className).toEqual('FirebaseCloudStorage');
|
|
72
|
-
})
|
|
73
|
-
it('should delete file', () =>
|
|
74
|
-
|
|
75
|
-
|
|
63
|
+
});
|
|
64
|
+
it('should delete file', async () => {
|
|
65
|
+
await file.save({ data: blobData1 });
|
|
66
|
+
await file.delete();
|
|
76
67
|
expect(file.url).not.toBeDefined();
|
|
77
|
-
})
|
|
78
|
-
it('should overwrite file on subsequent writes', () =>
|
|
79
|
-
|
|
68
|
+
});
|
|
69
|
+
it('should overwrite file on subsequent writes', async () => {
|
|
70
|
+
var _a;
|
|
71
|
+
await file.save({ data: blobData1 });
|
|
80
72
|
const firstUrl = file.url;
|
|
81
|
-
let resp =
|
|
82
|
-
expect(
|
|
83
|
-
|
|
84
|
-
resp =
|
|
85
|
-
expect(file.url.slice(0, file.url.indexOf('token'))).toEqual(firstUrl.slice(0, firstUrl.indexOf('token')));
|
|
86
|
-
expect(
|
|
87
|
-
})
|
|
73
|
+
let resp = await (0, node_fetch_1.default)(file.url);
|
|
74
|
+
expect(await resp.text()).toEqual('Hello, world!');
|
|
75
|
+
await file.save({ data: blobData2 });
|
|
76
|
+
resp = await (0, node_fetch_1.default)(file.url);
|
|
77
|
+
expect((_a = file.url) === null || _a === void 0 ? void 0 : _a.slice(0, file.url.indexOf('token'))).toEqual(firstUrl === null || firstUrl === void 0 ? void 0 : firstUrl.slice(0, firstUrl.indexOf('token')));
|
|
78
|
+
expect(await resp.text()).toEqual('llo,He world!');
|
|
79
|
+
});
|
|
88
80
|
it('should trigger events', done => {
|
|
89
81
|
const cb = jest.fn();
|
|
90
82
|
file.save({ data: blobData1 }).then(() => {
|
|
@@ -100,25 +92,25 @@ describe('Firebase Cloud Storage', () => {
|
|
|
100
92
|
testObj = new Test();
|
|
101
93
|
model = entropic_bond_1.Store.getModel(testObj);
|
|
102
94
|
});
|
|
103
|
-
it('should load object with StoredFile', () =>
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const newTestObj =
|
|
107
|
-
expect(newTestObj.file).toBeInstanceOf(entropic_bond_1.StoredFile);
|
|
108
|
-
expect(newTestObj.file.url).toContain(testObj.file.id);
|
|
109
|
-
})
|
|
110
|
-
it('should replace file on save after load', () =>
|
|
95
|
+
it('should load object with StoredFile', async () => {
|
|
96
|
+
await testObj.file.save({ data: blobData1, fileName: 'test.dat' });
|
|
97
|
+
await model.save(testObj);
|
|
98
|
+
const newTestObj = await model.findById(testObj.id);
|
|
99
|
+
expect(newTestObj === null || newTestObj === void 0 ? void 0 : newTestObj.file).toBeInstanceOf(entropic_bond_1.StoredFile);
|
|
100
|
+
expect(newTestObj === null || newTestObj === void 0 ? void 0 : newTestObj.file.url).toContain(testObj.file.id);
|
|
101
|
+
});
|
|
102
|
+
it('should replace file on save after load', async () => {
|
|
111
103
|
const deleteSpy = jest.spyOn(testObj.file, 'delete');
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const newTestObj =
|
|
115
|
-
expect(newTestObj.file).toBeInstanceOf(entropic_bond_1.StoredFile);
|
|
116
|
-
expect(newTestObj.file.url).toContain(testObj.file.id);
|
|
104
|
+
await testObj.file.save({ data: blobData1, fileName: 'test.dat' });
|
|
105
|
+
await model.save(testObj);
|
|
106
|
+
const newTestObj = await model.findById(testObj.id);
|
|
107
|
+
expect(newTestObj === null || newTestObj === void 0 ? void 0 : newTestObj.file).toBeInstanceOf(entropic_bond_1.StoredFile);
|
|
108
|
+
expect(newTestObj === null || newTestObj === void 0 ? void 0 : newTestObj.file.url).toContain(testObj.file.id);
|
|
117
109
|
expect(deleteSpy).not.toHaveBeenCalled();
|
|
118
110
|
testObj.file.setDataToStore(blobData2);
|
|
119
|
-
|
|
111
|
+
await testObj.file.save();
|
|
120
112
|
expect(deleteSpy).toHaveBeenCalled();
|
|
121
|
-
})
|
|
113
|
+
});
|
|
122
114
|
});
|
|
123
115
|
});
|
|
124
116
|
//# sourceMappingURL=firebase-cloud-storage.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-cloud-storage.spec.js","sourceRoot":"","sources":["../../src/cloud-storage/firebase-cloud-storage.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firebase-cloud-storage.spec.js","sourceRoot":"","sources":["../../src/cloud-storage/firebase-cloud-storage.spec.ts"],"names":[],"mappings":"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"}
|
package/lib/firebase-helper.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CollectionReference, DocumentData, Query } from 'firebase/firestore';
|
|
2
|
-
export
|
|
2
|
+
export type FirebaseQuery = CollectionReference<DocumentData> | Query<DocumentData>;
|
|
3
3
|
export interface FirebaseConfig {
|
|
4
4
|
apiKey?: string;
|
|
5
5
|
authDomain?: string;
|
|
@@ -11,16 +11,17 @@ export interface FirebaseConfig {
|
|
|
11
11
|
measurementId?: string;
|
|
12
12
|
}
|
|
13
13
|
export interface EmulatorConfig {
|
|
14
|
-
host
|
|
15
|
-
firestorePort
|
|
16
|
-
storagePort
|
|
17
|
-
authPort
|
|
18
|
-
functionsPort
|
|
19
|
-
emulate
|
|
14
|
+
host: string;
|
|
15
|
+
firestorePort: number;
|
|
16
|
+
storagePort: number;
|
|
17
|
+
authPort: number;
|
|
18
|
+
functionsPort: number;
|
|
19
|
+
emulate: boolean;
|
|
20
20
|
}
|
|
21
21
|
export declare class FirebaseHelper {
|
|
22
22
|
static setFirebaseConfig(config: FirebaseConfig): void;
|
|
23
|
-
static
|
|
23
|
+
private static defaultEmulatorConfig;
|
|
24
|
+
static useEmulator(emulatorConfig?: Partial<EmulatorConfig>): void;
|
|
24
25
|
static get emulator(): EmulatorConfig;
|
|
25
26
|
private constructor();
|
|
26
27
|
static get instance(): FirebaseHelper;
|
package/lib/firebase-helper.js
CHANGED
|
@@ -7,28 +7,23 @@ const auth_1 = require("firebase/auth");
|
|
|
7
7
|
const storage_1 = require("firebase/storage");
|
|
8
8
|
const functions_1 = require("firebase/functions");
|
|
9
9
|
class FirebaseHelper {
|
|
10
|
-
constructor() {
|
|
11
|
-
if (!FirebaseHelper._firebaseConfig)
|
|
12
|
-
throw new Error('You should set a firebase config object before using Firebase');
|
|
13
|
-
this._firebaseApp = (0, app_1.initializeApp)(FirebaseHelper._firebaseConfig);
|
|
14
|
-
}
|
|
15
10
|
static setFirebaseConfig(config) {
|
|
16
11
|
FirebaseHelper._firebaseConfig = config;
|
|
17
12
|
}
|
|
18
13
|
static useEmulator(emulatorConfig) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
storagePort: 9199,
|
|
23
|
-
authPort: 9099,
|
|
24
|
-
functionsPort: 5001,
|
|
25
|
-
emulate: true
|
|
14
|
+
this._emulatorConfig = {
|
|
15
|
+
...FirebaseHelper.defaultEmulatorConfig,
|
|
16
|
+
...emulatorConfig
|
|
26
17
|
};
|
|
27
|
-
this._emulatorConfig = Object.assign(Object.assign({}, defaultConfig), emulatorConfig);
|
|
28
18
|
}
|
|
29
19
|
static get emulator() {
|
|
30
20
|
return this._emulatorConfig;
|
|
31
21
|
}
|
|
22
|
+
constructor() {
|
|
23
|
+
if (!FirebaseHelper._firebaseConfig)
|
|
24
|
+
throw new Error('You should set a firebase config object before using Firebase');
|
|
25
|
+
this._firebaseApp = (0, app_1.initializeApp)(FirebaseHelper._firebaseConfig);
|
|
26
|
+
}
|
|
32
27
|
static get instance() {
|
|
33
28
|
return this._instance || (this._instance = new FirebaseHelper());
|
|
34
29
|
}
|
|
@@ -49,4 +44,13 @@ class FirebaseHelper {
|
|
|
49
44
|
}
|
|
50
45
|
}
|
|
51
46
|
exports.FirebaseHelper = FirebaseHelper;
|
|
47
|
+
FirebaseHelper.defaultEmulatorConfig = {
|
|
48
|
+
host: 'localhost',
|
|
49
|
+
firestorePort: 8080,
|
|
50
|
+
storagePort: 9199,
|
|
51
|
+
authPort: 9099,
|
|
52
|
+
functionsPort: 5001,
|
|
53
|
+
emulate: true
|
|
54
|
+
};
|
|
55
|
+
FirebaseHelper._emulatorConfig = FirebaseHelper.defaultEmulatorConfig;
|
|
52
56
|
//# sourceMappingURL=firebase-helper.js.map
|