@mathrunet/masamune 3.4.1 → 3.4.3
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/CHANGELOG.md +18 -0
- package/dist/functions/collection_model_firestore.js +67 -26
- package/dist/functions/collection_model_firestore.js.map +1 -1
- package/dist/functions/document_model_firestore.js +64 -19
- package/dist/functions/document_model_firestore.js.map +1 -1
- package/dist/functions/storage_firebase.js +39 -10
- package/dist/functions/storage_firebase.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
## [3.4.3](https://github.com/mathrunet/node_masamune/compare/v3.4.2...v3.4.3) (2025-09-13)
|
2
|
+
|
3
|
+
|
4
|
+
### chore
|
5
|
+
|
6
|
+
* Add error messages. ([d7f2b00](https://github.com/mathrunet/node_masamune/commit/d7f2b00590761aac98b25f03c1a36f2ee20be5c7))
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
## [3.4.2](https://github.com/mathrunet/node_masamune/compare/v3.4.1...v3.4.2) (2025-09-13)
|
11
|
+
|
12
|
+
|
13
|
+
### fix
|
14
|
+
|
15
|
+
* Fix the ServiceAccount key as it's unusable. ([e5fd4ce](https://github.com/mathrunet/node_masamune/commit/e5fd4ce8dc98eefd487e59f4611d8d57d9957f4c))
|
16
|
+
|
17
|
+
|
18
|
+
|
1
19
|
## [3.4.1](https://github.com/mathrunet/node_masamune/compare/v3.4.0...v3.4.1) (2025-09-12)
|
2
20
|
|
3
21
|
|
@@ -94,19 +94,36 @@ module.exports = (regions, options, data) => {
|
|
94
94
|
// 環境変数からサービスアカウントJSONを取得
|
95
95
|
let serviceAccount;
|
96
96
|
try {
|
97
|
-
const serviceAccountJson = (_a = process.env.FIRESTORE_SERVICE_ACCOUNT) !== null && _a !== void 0 ? _a : process.env.
|
97
|
+
const serviceAccountJson = (_a = process.env.FIRESTORE_SERVICE_ACCOUNT) !== null && _a !== void 0 ? _a : process.env.SERVICE_ACCOUNT;
|
98
98
|
if (!serviceAccountJson) {
|
99
99
|
throw new functions.https.HttpsError("failed-precondition", "Service account JSON not found in environment variable: FIRESTORE_SERVICE_ACCOUNT");
|
100
100
|
}
|
101
101
|
serviceAccount = JSON.parse(serviceAccountJson);
|
102
|
+
// サービスアカウントの必須フィールドを検証
|
103
|
+
if (!serviceAccount.project_id) {
|
104
|
+
throw new functions.https.HttpsError("invalid-argument", "Service account JSON is missing 'project_id' field");
|
105
|
+
}
|
106
|
+
if (!serviceAccount.client_email) {
|
107
|
+
throw new functions.https.HttpsError("invalid-argument", "Service account JSON is missing 'client_email' field");
|
108
|
+
}
|
109
|
+
if (!serviceAccount.private_key) {
|
110
|
+
throw new functions.https.HttpsError("invalid-argument", "Service account JSON is missing 'private_key' field");
|
111
|
+
}
|
112
|
+
console.log(`Using service account for project: ${serviceAccount.project_id}`);
|
102
113
|
}
|
103
114
|
catch (error) {
|
115
|
+
if (error instanceof functions.https.HttpsError) {
|
116
|
+
throw error;
|
117
|
+
}
|
104
118
|
throw new functions.https.HttpsError("invalid-argument", `Invalid service account JSON in environment variable: FIRESTORE_SERVICE_ACCOUNT`);
|
105
119
|
}
|
106
120
|
// Firestoreインスタンスを作成
|
121
|
+
// データベースIDが指定されていない場合は "(default)" を使用
|
122
|
+
const finalDatabaseId = databaseId || "(default)";
|
123
|
+
console.log(`Creating Firestore instance with projectId: ${serviceAccount.project_id}, databaseId: ${finalDatabaseId}`);
|
107
124
|
const firestoreInstance = new firestore_1.Firestore({
|
108
125
|
projectId: serviceAccount.project_id,
|
109
|
-
databaseId:
|
126
|
+
databaseId: finalDatabaseId,
|
110
127
|
credentials: {
|
111
128
|
client_email: serviceAccount.client_email,
|
112
129
|
private_key: serviceAccount.private_key,
|
@@ -125,44 +142,68 @@ module.exports = (regions, options, data) => {
|
|
125
142
|
// メソッドに応じて処理を実行
|
126
143
|
switch (method) {
|
127
144
|
case "get": {
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
145
|
+
console.log(`Attempting to get collection at path: ${path}`);
|
146
|
+
try {
|
147
|
+
const col = yield firestoreInstance.collection(path).get();
|
148
|
+
const data = {};
|
149
|
+
for (const doc of col.docs) {
|
150
|
+
if (doc.exists) {
|
151
|
+
data[doc.id] = doc.data();
|
152
|
+
}
|
133
153
|
}
|
154
|
+
console.log(`Successfully retrieved ${col.size} documents from ${path}`);
|
155
|
+
return {
|
156
|
+
status: 200,
|
157
|
+
data: data,
|
158
|
+
};
|
159
|
+
}
|
160
|
+
catch (error) {
|
161
|
+
console.error(`Error getting collection at ${path}:`, error);
|
162
|
+
throw new functions.https.HttpsError("not-found", `Failed to get collection at ${path}: ${error.message}`);
|
134
163
|
}
|
135
|
-
return {
|
136
|
-
status: 200,
|
137
|
-
data: data,
|
138
|
-
};
|
139
164
|
}
|
140
165
|
case "put":
|
141
166
|
case "post": {
|
142
167
|
if (!collectionData) {
|
143
168
|
throw new functions.https.HttpsError("invalid-argument", "No data specified for set operation.");
|
144
169
|
}
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
170
|
+
console.log(`Attempting to set documents in collection at path: ${path}`);
|
171
|
+
try {
|
172
|
+
// NullはFieldValue.delete()に変換される
|
173
|
+
for (const docId in collectionData) {
|
174
|
+
for (const key in collectionData[docId]) {
|
175
|
+
if (collectionData[docId][key] === null) {
|
176
|
+
collectionData[docId][key] = firestore_1.FieldValue.delete();
|
177
|
+
}
|
150
178
|
}
|
179
|
+
yield firestoreInstance.doc(path + "/" + docId).set(collectionData[docId], { merge: true });
|
151
180
|
}
|
152
|
-
|
181
|
+
console.log(`Successfully set ${Object.keys(collectionData).length} documents in ${path}`);
|
182
|
+
return {
|
183
|
+
status: 200,
|
184
|
+
};
|
185
|
+
}
|
186
|
+
catch (error) {
|
187
|
+
console.error(`Error setting documents in ${path}:`, error);
|
188
|
+
throw new functions.https.HttpsError("internal", `Failed to set documents in ${path}: ${error.message}`);
|
153
189
|
}
|
154
|
-
return {
|
155
|
-
status: 200,
|
156
|
-
};
|
157
190
|
}
|
158
191
|
case "delete": {
|
159
|
-
|
160
|
-
|
161
|
-
yield
|
192
|
+
console.log(`Attempting to delete collection at path: ${path}`);
|
193
|
+
try {
|
194
|
+
const col = yield firestoreInstance.collection(path).get();
|
195
|
+
for (const doc of col.docs) {
|
196
|
+
yield doc.ref.delete();
|
197
|
+
}
|
198
|
+
console.log(`Successfully deleted ${col.size} documents from ${path}`);
|
199
|
+
return {
|
200
|
+
status: 200,
|
201
|
+
};
|
202
|
+
}
|
203
|
+
catch (error) {
|
204
|
+
console.error(`Error deleting collection at ${path}:`, error);
|
205
|
+
throw new functions.https.HttpsError("internal", `Failed to delete collection at ${path}: ${error.message}`);
|
162
206
|
}
|
163
|
-
return {
|
164
|
-
status: 200,
|
165
|
-
};
|
166
207
|
}
|
167
208
|
default:
|
168
209
|
throw new functions.https.HttpsError("invalid-argument", `Unknown method: ${method}`);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"collection_model_firestore.js","sourceRoot":"","sources":["../../src/functions/collection_model_firestore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AAEnD,uDAAgE;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAA6B,EAC7B,IAA4B,EAC9B,EAAE;;IAAC,OAAA,SAAS,CAAC,KAAK,CAAC,MAAM,CACvB;QACI,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,OAAO;QACjC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,cAAc,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,mCAAI,SAAS;QACpD,eAAe,EAAE,MAAA,OAAO,CAAC,eAAe,mCAAI,SAAS;QACrD,oBAAoB,EAAE,MAAA,OAAO,CAAC,oBAAoB,mCAAI,SAAS;KAClE,EACD,CAAO,KAAK,EAAE,EAAE;;QACZ,IAAI,CAAC;YACD,qBAAqB;YACrB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAuC,CAAC;YAEtE,yBAAyB;YACzB,IAAI,cAAc,CAAC;YACnB,IAAI,CAAC;gBACD,MAAM,kBAAkB,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,mCAAI,OAAO,CAAC,GAAG,CAAC,
|
1
|
+
{"version":3,"file":"collection_model_firestore.js","sourceRoot":"","sources":["../../src/functions/collection_model_firestore.ts"],"names":[],"mappings":"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"}
|
@@ -94,19 +94,36 @@ module.exports = (regions, options, data) => {
|
|
94
94
|
// 環境変数からサービスアカウントJSONを取得
|
95
95
|
let serviceAccount;
|
96
96
|
try {
|
97
|
-
const serviceAccountJson = (_a = process.env.FIRESTORE_SERVICE_ACCOUNT) !== null && _a !== void 0 ? _a : process.env.
|
97
|
+
const serviceAccountJson = (_a = process.env.FIRESTORE_SERVICE_ACCOUNT) !== null && _a !== void 0 ? _a : process.env.SERVICE_ACCOUNT;
|
98
98
|
if (!serviceAccountJson) {
|
99
99
|
throw new functions.https.HttpsError("failed-precondition", "Service account JSON not found in environment variable: FIRESTORE_SERVICE_ACCOUNT");
|
100
100
|
}
|
101
101
|
serviceAccount = JSON.parse(serviceAccountJson);
|
102
|
+
// サービスアカウントの必須フィールドを検証
|
103
|
+
if (!serviceAccount.project_id) {
|
104
|
+
throw new functions.https.HttpsError("invalid-argument", "Service account JSON is missing 'project_id' field");
|
105
|
+
}
|
106
|
+
if (!serviceAccount.client_email) {
|
107
|
+
throw new functions.https.HttpsError("invalid-argument", "Service account JSON is missing 'client_email' field");
|
108
|
+
}
|
109
|
+
if (!serviceAccount.private_key) {
|
110
|
+
throw new functions.https.HttpsError("invalid-argument", "Service account JSON is missing 'private_key' field");
|
111
|
+
}
|
112
|
+
console.log(`Using service account for project: ${serviceAccount.project_id}`);
|
102
113
|
}
|
103
114
|
catch (error) {
|
115
|
+
if (error instanceof functions.https.HttpsError) {
|
116
|
+
throw error;
|
117
|
+
}
|
104
118
|
throw new functions.https.HttpsError("invalid-argument", `Invalid service account JSON in environment variable: FIRESTORE_SERVICE_ACCOUNT`);
|
105
119
|
}
|
106
120
|
// Firestoreインスタンスを作成
|
121
|
+
// データベースIDが指定されていない場合は "(default)" を使用
|
122
|
+
const finalDatabaseId = databaseId || "(default)";
|
123
|
+
console.log(`Creating Firestore instance with projectId: ${serviceAccount.project_id}, databaseId: ${finalDatabaseId}`);
|
107
124
|
const firestoreInstance = new firestore_1.Firestore({
|
108
125
|
projectId: serviceAccount.project_id,
|
109
|
-
databaseId:
|
126
|
+
databaseId: finalDatabaseId,
|
110
127
|
credentials: {
|
111
128
|
client_email: serviceAccount.client_email,
|
112
129
|
private_key: serviceAccount.private_key,
|
@@ -122,36 +139,64 @@ module.exports = (regions, options, data) => {
|
|
122
139
|
if (!path) {
|
123
140
|
throw new functions.https.HttpsError("invalid-argument", "No path specified.");
|
124
141
|
}
|
142
|
+
// パスの検証
|
143
|
+
if (!path.includes('/')) {
|
144
|
+
throw new functions.https.HttpsError("invalid-argument", `Invalid document path format: ${path}. Path must include collection and document ID (e.g., 'collection/document')`);
|
145
|
+
}
|
125
146
|
// メソッドに応じて処理を実行
|
126
147
|
switch (method) {
|
127
148
|
case "get": {
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
149
|
+
console.log(`Attempting to get document at path: ${path}`);
|
150
|
+
try {
|
151
|
+
const doc = yield firestoreInstance.doc(path).get();
|
152
|
+
console.log(`Document exists: ${doc.exists}`);
|
153
|
+
return {
|
154
|
+
status: 200,
|
155
|
+
data: doc.exists ? doc.data() : {},
|
156
|
+
};
|
157
|
+
}
|
158
|
+
catch (error) {
|
159
|
+
console.error(`Error getting document at ${path}:`, error);
|
160
|
+
throw new functions.https.HttpsError("not-found", `Failed to get document at ${path}: ${error.message}`);
|
161
|
+
}
|
133
162
|
}
|
134
163
|
case "put":
|
135
164
|
case "post": {
|
136
165
|
if (!documentData) {
|
137
166
|
throw new functions.https.HttpsError("invalid-argument", "No data specified for set operation.");
|
138
167
|
}
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
168
|
+
console.log(`Attempting to set document at path: ${path}`);
|
169
|
+
try {
|
170
|
+
// NullはFieldValue.delete()に変換される
|
171
|
+
for (const key in documentData) {
|
172
|
+
if (documentData[key] === null) {
|
173
|
+
documentData[key] = firestore_1.FieldValue.delete();
|
174
|
+
}
|
143
175
|
}
|
176
|
+
yield firestoreInstance.doc(path).set(documentData, { merge: true });
|
177
|
+
console.log(`Successfully set document at ${path}`);
|
178
|
+
return {
|
179
|
+
status: 200,
|
180
|
+
};
|
181
|
+
}
|
182
|
+
catch (error) {
|
183
|
+
console.error(`Error setting document at ${path}:`, error);
|
184
|
+
throw new functions.https.HttpsError("internal", `Failed to set document at ${path}: ${error.message}`);
|
144
185
|
}
|
145
|
-
yield firestoreInstance.doc(path).set(documentData, { merge: true });
|
146
|
-
return {
|
147
|
-
status: 200,
|
148
|
-
};
|
149
186
|
}
|
150
187
|
case "delete": {
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
188
|
+
console.log(`Attempting to delete document at path: ${path}`);
|
189
|
+
try {
|
190
|
+
yield firestoreInstance.doc(path).delete();
|
191
|
+
console.log(`Successfully deleted document at ${path}`);
|
192
|
+
return {
|
193
|
+
status: 200,
|
194
|
+
};
|
195
|
+
}
|
196
|
+
catch (error) {
|
197
|
+
console.error(`Error deleting document at ${path}:`, error);
|
198
|
+
throw new functions.https.HttpsError("internal", `Failed to delete document at ${path}: ${error.message}`);
|
199
|
+
}
|
155
200
|
}
|
156
201
|
default:
|
157
202
|
throw new functions.https.HttpsError("invalid-argument", `Unknown method: ${method}`);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"document_model_firestore.js","sourceRoot":"","sources":["../../src/functions/document_model_firestore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AAEnD,uDAAgE;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAA6B,EAC7B,IAA4B,EAC9B,EAAE;;IAAC,OAAA,SAAS,CAAC,KAAK,CAAC,MAAM,CACvB;QACI,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,OAAO;QACjC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,cAAc,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,mCAAI,SAAS;QACpD,eAAe,EAAE,MAAA,OAAO,CAAC,eAAe,mCAAI,SAAS;QACrD,oBAAoB,EAAE,MAAA,OAAO,CAAC,oBAAoB,mCAAI,SAAS;KAClE,EACD,CAAO,KAAK,EAAE,EAAE;;QACZ,IAAI,CAAC;YACD,qBAAqB;YACrB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAuC,CAAC;YAEtE,yBAAyB;YACzB,IAAI,cAAc,CAAC;YACnB,IAAI,CAAC;gBACD,MAAM,kBAAkB,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,mCAAI,OAAO,CAAC,GAAG,CAAC,
|
1
|
+
{"version":3,"file":"document_model_firestore.js","sourceRoot":"","sources":["../../src/functions/document_model_firestore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AAEnD,uDAAgE;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAA6B,EAC7B,IAA4B,EAC9B,EAAE;;IAAC,OAAA,SAAS,CAAC,KAAK,CAAC,MAAM,CACvB;QACI,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,OAAO;QACjC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,cAAc,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,mCAAI,SAAS;QACpD,eAAe,EAAE,MAAA,OAAO,CAAC,eAAe,mCAAI,SAAS;QACrD,oBAAoB,EAAE,MAAA,OAAO,CAAC,oBAAoB,mCAAI,SAAS;KAClE,EACD,CAAO,KAAK,EAAE,EAAE;;QACZ,IAAI,CAAC;YACD,qBAAqB;YACrB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAuC,CAAC;YAEtE,yBAAyB;YACzB,IAAI,cAAc,CAAC;YACnB,IAAI,CAAC;gBACD,MAAM,kBAAkB,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,mCAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;gBAChG,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACtB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,qBAAqB,EACrB,mFAAmF,CACtF,CAAC;gBACN,CAAC;gBACD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBAEhD,uBAAuB;gBACvB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;oBAC7B,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,kBAAkB,EAClB,oDAAoD,CACvD,CAAC;gBACN,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;oBAC/B,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,kBAAkB,EAClB,sDAAsD,CACzD,CAAC;gBACN,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;oBAC9B,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,kBAAkB,EAClB,qDAAqD,CACxD,CAAC;gBACN,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,sCAAsC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;YACnF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,KAAK,YAAY,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;oBAC9C,MAAM,KAAK,CAAC;gBAChB,CAAC;gBACD,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,kBAAkB,EAClB,iFAAiF,CACpF,CAAC;YACN,CAAC;YAED,qBAAqB;YACrB,uCAAuC;YACvC,MAAM,eAAe,GAAG,UAAU,IAAI,WAAW,CAAC;YAElD,OAAO,CAAC,GAAG,CAAC,+CAA+C,cAAc,CAAC,UAAU,iBAAiB,eAAe,EAAE,CAAC,CAAC;YAExH,MAAM,iBAAiB,GAAG,IAAI,qBAAS,CAAC;gBACpC,SAAS,EAAE,cAAc,CAAC,UAAU;gBACpC,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE;oBACT,YAAY,EAAE,cAAc,CAAC,YAAY;oBACzC,WAAW,EAAE,cAAc,CAAC,WAAW;iBAC1C;aACJ,CAAC,CAAC;YAEH,qBAAqB;YACrB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAiC,CAAC;YAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAmC,CAAC;YAC9D,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAiD,CAAC;YAElF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;YACnF,CAAC;YAED,QAAQ;YACR,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,kBAAkB,EAClB,iCAAiC,IAAI,8EAA8E,CACtH,CAAC;YACN,CAAC;YAED,gBAAgB;YAChB,QAAQ,MAAM,EAAE,CAAC;gBACb,KAAK,KAAK,CAAC,CAAC,CAAC;oBACT,OAAO,CAAC,GAAG,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;oBAC3D,IAAI,CAAC;wBACD,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;wBACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;wBAC9C,OAAO;4BACH,MAAM,EAAE,GAAG;4BACX,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;yBACrC,CAAC;oBACN,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBAClB,OAAO,CAAC,KAAK,CAAC,6BAA6B,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;wBAC3D,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,WAAW,EACX,6BAA6B,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CACxD,CAAC;oBACN,CAAC;gBACL,CAAC;gBACD,KAAK,KAAK,CAAC;gBACX,KAAK,MAAM,CAAC,CAAC,CAAC;oBACV,IAAI,CAAC,YAAY,EAAE,CAAC;wBAChB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,sCAAsC,CAAC,CAAC;oBACrG,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;oBAC3D,IAAI,CAAC;wBACD,iCAAiC;wBACjC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;4BAC7B,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gCAC7B,YAAY,CAAC,GAAG,CAAC,GAAG,sBAAU,CAAC,MAAM,EAAE,CAAC;4BAC5C,CAAC;wBACL,CAAC;wBACD,MAAM,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CACjC,YAAY,EACZ,EAAE,KAAK,EAAE,IAAI,EAAE,CAClB,CAAC;wBACF,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;wBACpD,OAAO;4BACH,MAAM,EAAE,GAAG;yBACd,CAAC;oBACN,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBAClB,OAAO,CAAC,KAAK,CAAC,6BAA6B,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;wBAC3D,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,UAAU,EACV,6BAA6B,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CACxD,CAAC;oBACN,CAAC;gBACL,CAAC;gBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;oBAC9D,IAAI,CAAC;wBACD,MAAM,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;wBAC3C,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;wBACxD,OAAO;4BACH,MAAM,EAAE,GAAG;yBACd,CAAC;oBACN,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBAClB,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;wBAC5D,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,UAAU,EACV,gCAAgC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAC3D,CAAC;oBACN,CAAC;gBACL,CAAC;gBACD;oBACI,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,mBAAmB,MAAM,EAAE,CAAC,CAAC;YAC9F,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,GAAG,YAAY,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC5C,MAAM,GAAG,CAAC;YACd,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,iDAAiD,CAAC,CAAC;QACxG,CAAC;IACL,CAAC,CAAA,CACJ,CAAA;CAAA,CAAC"}
|
@@ -49,7 +49,7 @@ const storage_1 = require("@google-cloud/storage");
|
|
49
49
|
*
|
50
50
|
* 外部のFirebase Storageを利用できるようにするためのFunction。
|
51
51
|
*
|
52
|
-
* @param {string} process.env.
|
52
|
+
* @param {string} process.env.STORAGE_SERVICE_ACCOUNT
|
53
53
|
* Service account JSON.
|
54
54
|
*
|
55
55
|
* サービスアカウントJSON。
|
@@ -92,16 +92,31 @@ module.exports = (regions, options, data) => {
|
|
92
92
|
// 環境変数からサービスアカウントJSONを取得
|
93
93
|
let serviceAccount;
|
94
94
|
try {
|
95
|
-
const serviceAccountJson = (_a = process.env.
|
95
|
+
const serviceAccountJson = (_a = process.env.STORAGE_SERVICE_ACCOUNT) !== null && _a !== void 0 ? _a : process.env.SERVICE_ACCOUNT;
|
96
96
|
if (!serviceAccountJson) {
|
97
|
-
throw new functions.https.HttpsError("failed-precondition", "Service account JSON not found in environment variable:
|
97
|
+
throw new functions.https.HttpsError("failed-precondition", "Service account JSON not found in environment variable: STORAGE_SERVICE_ACCOUNT");
|
98
98
|
}
|
99
99
|
serviceAccount = JSON.parse(serviceAccountJson);
|
100
|
+
// サービスアカウントの必須フィールドを検証
|
101
|
+
if (!serviceAccount.project_id) {
|
102
|
+
throw new functions.https.HttpsError("invalid-argument", "Service account JSON is missing 'project_id' field");
|
103
|
+
}
|
104
|
+
if (!serviceAccount.client_email) {
|
105
|
+
throw new functions.https.HttpsError("invalid-argument", "Service account JSON is missing 'client_email' field");
|
106
|
+
}
|
107
|
+
if (!serviceAccount.private_key) {
|
108
|
+
throw new functions.https.HttpsError("invalid-argument", "Service account JSON is missing 'private_key' field");
|
109
|
+
}
|
110
|
+
console.log(`Using service account for project: ${serviceAccount.project_id}`);
|
100
111
|
}
|
101
112
|
catch (error) {
|
102
|
-
|
113
|
+
if (error instanceof functions.https.HttpsError) {
|
114
|
+
throw error;
|
115
|
+
}
|
116
|
+
throw new functions.https.HttpsError("invalid-argument", `Invalid service account JSON in environment variable: STORAGE_SERVICE_ACCOUNT`);
|
103
117
|
}
|
104
118
|
// Storageインスタンスを作成
|
119
|
+
console.log(`Creating Storage instance with projectId: ${serviceAccount.project_id}`);
|
105
120
|
const storageInstance = new storage_1.Storage({
|
106
121
|
projectId: serviceAccount.project_id,
|
107
122
|
credentials: {
|
@@ -127,22 +142,26 @@ module.exports = (regions, options, data) => {
|
|
127
142
|
}
|
128
143
|
const bucketName = pathParts[0];
|
129
144
|
const filePath = pathParts.slice(1).join("/");
|
145
|
+
console.log(`Processing ${method} operation for bucket: ${bucketName}, filePath: ${filePath}`);
|
130
146
|
// バケットの参照を取得
|
131
147
|
const bucket = storageInstance.bucket(bucketName);
|
132
148
|
const file = bucket.file(filePath);
|
133
149
|
// メソッドに応じて処理を実行
|
134
150
|
switch (method) {
|
135
151
|
case "get": {
|
152
|
+
console.log(`Attempting to get file: ${bucketName}/${filePath}`);
|
136
153
|
try {
|
137
154
|
// ファイルの存在確認
|
138
155
|
const [exists] = yield file.exists();
|
139
156
|
if (!exists) {
|
157
|
+
console.log(`File not found: ${bucketName}/${filePath}`);
|
140
158
|
return {
|
141
159
|
status: 404,
|
142
160
|
data: null,
|
143
161
|
error: "File not found"
|
144
162
|
};
|
145
163
|
}
|
164
|
+
console.log(`File exists, downloading: ${bucketName}/${filePath}`);
|
146
165
|
// ファイルをダウンロードしてBase64エンコード
|
147
166
|
const [fileBuffer] = yield file.download();
|
148
167
|
const base64Data = fileBuffer.toString("base64");
|
@@ -156,6 +175,7 @@ module.exports = (regions, options, data) => {
|
|
156
175
|
// 公開URLを生成(Firebase Storage形式)
|
157
176
|
const encodedFilePath = encodeURIComponent(filePath);
|
158
177
|
const publicUrl = `https://firebasestorage.googleapis.com/v0/b/${bucketName}/o/${encodedFilePath}?alt=media`;
|
178
|
+
console.log(`Successfully downloaded file: ${bucketName}/${filePath}, size: ${metadata.size} bytes`);
|
159
179
|
return {
|
160
180
|
status: 200,
|
161
181
|
data: base64Data,
|
@@ -163,8 +183,8 @@ module.exports = (regions, options, data) => {
|
|
163
183
|
};
|
164
184
|
}
|
165
185
|
catch (error) {
|
166
|
-
console.error(
|
167
|
-
throw new functions.https.HttpsError("internal",
|
186
|
+
console.error(`Error downloading file ${bucketName}/${filePath}:`, error);
|
187
|
+
throw new functions.https.HttpsError("internal", `Failed to download file ${bucketName}/${filePath}: ${error.message}`);
|
168
188
|
}
|
169
189
|
}
|
170
190
|
case "put":
|
@@ -172,15 +192,18 @@ module.exports = (regions, options, data) => {
|
|
172
192
|
if (!binary) {
|
173
193
|
throw new functions.https.HttpsError("invalid-argument", "No binary data specified for upload operation.");
|
174
194
|
}
|
195
|
+
console.log(`Attempting to upload file: ${bucketName}/${filePath}`);
|
175
196
|
try {
|
176
197
|
// Base64データをBufferに変換
|
177
198
|
const buffer = Buffer.from(binary, "base64");
|
199
|
+
console.log(`Converting base64 data to buffer, size: ${buffer.length} bytes`);
|
178
200
|
// メタデータの設定
|
179
201
|
const options = {};
|
180
202
|
if (meta) {
|
181
203
|
// contentTypeの設定
|
182
204
|
if (meta.contentType) {
|
183
205
|
options.contentType = meta.contentType;
|
206
|
+
console.log(`Setting content type: ${meta.contentType}`);
|
184
207
|
}
|
185
208
|
// contentType以外のメタデータを設定
|
186
209
|
const customMetadata = Object.assign({}, meta);
|
@@ -190,10 +213,12 @@ module.exports = (regions, options, data) => {
|
|
190
213
|
options.metadata = {
|
191
214
|
metadata: customMetadata
|
192
215
|
};
|
216
|
+
console.log(`Setting custom metadata:`, customMetadata);
|
193
217
|
}
|
194
218
|
}
|
195
219
|
// ファイルをアップロード
|
196
220
|
yield file.save(buffer, options);
|
221
|
+
console.log(`File saved successfully: ${bucketName}/${filePath}`);
|
197
222
|
// アップロード後のメタデータを取得
|
198
223
|
const [uploadedMetadata] = yield file.getMetadata();
|
199
224
|
// ダウンロードURLを生成(署名付きURL、7日間有効)
|
@@ -204,6 +229,7 @@ module.exports = (regions, options, data) => {
|
|
204
229
|
// 公開URLを生成(Firebase Storage形式)
|
205
230
|
const encodedFilePath = encodeURIComponent(filePath);
|
206
231
|
const publicUrl = `https://firebasestorage.googleapis.com/v0/b/${bucketName}/o/${encodedFilePath}?alt=media`;
|
232
|
+
console.log(`Successfully uploaded file: ${bucketName}/${filePath}, final size: ${uploadedMetadata.size} bytes`);
|
207
233
|
return {
|
208
234
|
status: 200,
|
209
235
|
message: "File uploaded successfully",
|
@@ -215,15 +241,17 @@ module.exports = (regions, options, data) => {
|
|
215
241
|
};
|
216
242
|
}
|
217
243
|
catch (error) {
|
218
|
-
console.error(
|
219
|
-
throw new functions.https.HttpsError("internal",
|
244
|
+
console.error(`Error uploading file ${bucketName}/${filePath}:`, error);
|
245
|
+
throw new functions.https.HttpsError("internal", `Failed to upload file ${bucketName}/${filePath}: ${error.message}`);
|
220
246
|
}
|
221
247
|
}
|
222
248
|
case "delete": {
|
249
|
+
console.log(`Attempting to delete file: ${bucketName}/${filePath}`);
|
223
250
|
try {
|
224
251
|
// ファイルの存在確認
|
225
252
|
const [exists] = yield file.exists();
|
226
253
|
if (!exists) {
|
254
|
+
console.log(`File not found for deletion: ${bucketName}/${filePath}`);
|
227
255
|
return {
|
228
256
|
status: 404,
|
229
257
|
error: "File not found"
|
@@ -231,14 +259,15 @@ module.exports = (regions, options, data) => {
|
|
231
259
|
}
|
232
260
|
// ファイルを削除
|
233
261
|
yield file.delete();
|
262
|
+
console.log(`Successfully deleted file: ${bucketName}/${filePath}`);
|
234
263
|
return {
|
235
264
|
status: 200,
|
236
265
|
message: "File deleted successfully"
|
237
266
|
};
|
238
267
|
}
|
239
268
|
catch (error) {
|
240
|
-
console.error(
|
241
|
-
throw new functions.https.HttpsError("internal",
|
269
|
+
console.error(`Error deleting file ${bucketName}/${filePath}:`, error);
|
270
|
+
throw new functions.https.HttpsError("internal", `Failed to delete file ${bucketName}/${filePath}: ${error.message}`);
|
242
271
|
}
|
243
272
|
}
|
244
273
|
default:
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"storage_firebase.js","sourceRoot":"","sources":["../../src/functions/storage_firebase.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AAEnD,mDAAgD;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAA6B,EAC7B,IAA4B,EAC9B,EAAE;;IAAC,OAAA,SAAS,CAAC,KAAK,CAAC,MAAM,CACvB;QACI,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,OAAO;QACjC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,cAAc,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,mCAAI,SAAS;QACpD,eAAe,EAAE,MAAA,OAAO,CAAC,eAAe,mCAAI,SAAS;QACrD,oBAAoB,EAAE,MAAA,OAAO,CAAC,oBAAoB,mCAAI,SAAS;KAClE,EACD,CAAO,KAAK,EAAE,EAAE;;QACZ,IAAI,CAAC;YACD,yBAAyB;YACzB,IAAI,cAAc,CAAC;YACnB,IAAI,CAAC;gBACD,MAAM,kBAAkB,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,
|
1
|
+
{"version":3,"file":"storage_firebase.js","sourceRoot":"","sources":["../../src/functions/storage_firebase.ts"],"names":[],"mappings":"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"}
|