firebase-app-distribution
Version:
A library that uses Firebase App Distribution APIs.
187 lines (185 loc) • 5.9 kB
JavaScript
import {
APP_DISTRIBUTION_ENDPOINT,
ENDPOINT_VERSION,
__async,
__spreadProps,
__spreadValues,
makeRequest
} from "./chunk-PTPJZ7KZ.mjs";
// src/groups.ts
function getGroupIdFromName(groupName) {
return groupName.split("/").pop();
}
var Groups = class {
constructor(parent) {
this.parent = parent;
}
create(displayName, groupId) {
return __async(this, null, function* () {
const accessToken = yield this.parent.getAccessToken();
const projectNumber = yield this.parent.getProjectNumber();
const url = new URL(
`${APP_DISTRIBUTION_ENDPOINT}/${ENDPOINT_VERSION}/projects/${projectNumber}/groups`
);
if (groupId) {
url.searchParams.set("groupId", groupId);
}
const requestBody = JSON.stringify({
displayName
});
const response = yield makeRequest(url, {
headers: {
authorization: `Bearer ${accessToken}`
},
body: requestBody,
method: "POST"
});
return __spreadProps(__spreadValues({}, response), { id: getGroupIdFromName(response.name) });
});
}
delete(groupId) {
return __async(this, null, function* () {
const accessToken = yield this.parent.getAccessToken();
const projectNumber = yield this.parent.getProjectNumber();
const url = new URL(
`${APP_DISTRIBUTION_ENDPOINT}/${ENDPOINT_VERSION}/projects/${projectNumber}/groups/${groupId}`
);
const response = yield makeRequest(url, {
headers: {
authorization: `Bearer ${accessToken}`
},
body: null,
method: "DELETE"
});
return response;
});
}
get(groupId) {
return __async(this, null, function* () {
const accessToken = yield this.parent.getAccessToken();
const projectNumber = yield this.parent.getProjectNumber();
const url = new URL(
`${APP_DISTRIBUTION_ENDPOINT}/${ENDPOINT_VERSION}/projects/${projectNumber}/groups/${groupId}`
);
const response = yield makeRequest(url, {
headers: {
authorization: `Bearer ${accessToken}`
},
body: null,
method: "GET"
});
if (response.name === void 0) {
return null;
}
return __spreadProps(__spreadValues({}, response), { id: getGroupIdFromName(response.name) });
});
}
list() {
return __async(this, arguments, function* ({ pageSize = 25, maxPages = 10 } = {}) {
const accessToken = yield this.parent.getAccessToken();
const projectNumber = yield this.parent.getProjectNumber();
const groupList = [];
const url = new URL(
`${APP_DISTRIBUTION_ENDPOINT}/${ENDPOINT_VERSION}/projects/${projectNumber}/groups`
);
url.searchParams.set("pageSize", pageSize.toString());
let nextPageToken = "";
for (let page = 0; page < maxPages; page++) {
if (nextPageToken) {
url.searchParams.set("pageToken", nextPageToken);
} else {
url.searchParams.delete("pageToken");
}
const response = yield makeRequest(url, {
headers: {
authorization: `Bearer ${accessToken}`
},
body: null,
method: "GET"
});
if (response.groups === void 0) {
break;
}
for (let group of response.groups) {
groupList.push(__spreadProps(__spreadValues({}, group), {
id: getGroupIdFromName(group.name)
}));
}
if (response.nextPageToken !== void 0) {
nextPageToken = response.nextPageToken;
} else {
break;
}
}
return groupList;
});
}
update(_0, _1) {
return __async(this, arguments, function* (groupId, { displayName }) {
const accessToken = yield this.parent.getAccessToken();
const projectNumber = yield this.parent.getProjectNumber();
const url = new URL(
`${APP_DISTRIBUTION_ENDPOINT}/${ENDPOINT_VERSION}/projects/${projectNumber}/groups/${groupId}`
);
if (displayName) {
url.searchParams.set("updateMask", "displayName");
}
const requestBody = JSON.stringify({
displayName
});
const response = yield makeRequest(url, {
headers: {
authorization: `Bearer ${accessToken}`
},
body: requestBody,
method: "PATCH"
});
return __spreadProps(__spreadValues({}, response), { id: getGroupIdFromName(response.name) });
});
}
removeTesters(groupId, emails) {
return __async(this, null, function* () {
const accessToken = yield this.parent.getAccessToken();
const projectNumber = yield this.parent.getProjectNumber();
const url = new URL(
`${APP_DISTRIBUTION_ENDPOINT}/${ENDPOINT_VERSION}/projects/${projectNumber}/groups/${groupId}:batchLeave`
);
const reuqestBody = JSON.stringify({
emails
});
const response = yield makeRequest(url, {
headers: {
authorization: `Bearer ${accessToken}`
},
body: reuqestBody,
method: "POST"
});
return response;
});
}
addTesters(groupId, emails) {
return __async(this, null, function* () {
const accessToken = yield this.parent.getAccessToken();
const projectNumber = yield this.parent.getProjectNumber();
const url = new URL(
`${APP_DISTRIBUTION_ENDPOINT}/${ENDPOINT_VERSION}/projects/${projectNumber}/groups/${groupId}:batchJoin`
);
const reuqestBody = JSON.stringify({
emails,
createMissingTesters: true
});
const response = yield makeRequest(url, {
headers: {
authorization: `Bearer ${accessToken}`
},
body: reuqestBody,
method: "POST"
});
return response;
});
}
};
export {
Groups
};
//# sourceMappingURL=chunk-2OREYMMB.mjs.map