@forestadmin/forest-cloud
Version:
Utility to bootstrap and publish forest admin cloud projects customization
71 lines • 5.21 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const apollo_cache_inmemory_1 = require("apollo-cache-inmemory");
const apollo_client_1 = require("apollo-client");
const apollo_link_ws_1 = require("apollo-link-ws");
const graphql_tag_1 = __importDefault(require("graphql-tag"));
const subscriptions_transport_ws_1 = require("subscriptions-transport-ws");
const ws_1 = __importDefault(require("ws"));
const errors_1 = require("../errors");
const CUSTOMIZATION_FAILED_SUBSCRIPTION = (0, graphql_tag_1.default) `
subscription FullHostedCustomizationFailed($publishId: String!) {
fullHostedCustomizationFailed(publishId: $publishId) {
error
}
}
`;
const CUSTOMIZATION_DEPLOYED_SUBSCRIPTION = (0, graphql_tag_1.default) `
subscription FullHostedCustomizationDeployed($publishId: String!) {
fullHostedCustomizationDeployed(publishId: $publishId) {
timestamp
}
}
`;
class EventSubscriber {
constructor(subscriptionUrl, bearerToken) {
this.subscriptionClient = new subscriptions_transport_ws_1.SubscriptionClient(subscriptionUrl, {
connectionParams: {
authToken: bearerToken,
},
}, ws_1.default);
const wsLink = new apollo_link_ws_1.WebSocketLink(this.subscriptionClient);
this.client = new apollo_client_1.ApolloClient({
link: wsLink,
cache: new apollo_cache_inmemory_1.InMemoryCache(),
});
}
async subscribeToCodeCustomization(subscriptionId) {
return new Promise((resolve, reject) => {
this.failureSubscription = this.client
.subscribe({
query: CUSTOMIZATION_FAILED_SUBSCRIPTION,
variables: { publishId: subscriptionId },
})
.subscribe(({ data }) => resolve(data.fullHostedCustomizationFailed), error => reject(error));
this.deployedSubscription = this.client
.subscribe({
query: CUSTOMIZATION_DEPLOYED_SUBSCRIPTION,
variables: { publishId: subscriptionId },
})
.subscribe(({ data }) => resolve(data.fullHostedCustomizationDeployed), error => reject(error));
}).catch(error => {
throw new errors_1.BusinessError(`Error while listening to code customization events: ${error.message}`);
});
}
destroy() {
try {
this.failureSubscription?.unsubscribe();
this.deployedSubscription?.unsubscribe();
this.client.stop();
this.subscriptionClient.close();
}
catch (e) {
/* do nothing */
}
}
}
exports.default = EventSubscriber;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc3Vic2NyaWJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9ldmVudC1zdWJzY3JpYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUVBQTZFO0FBQzdFLGlEQUE2QztBQUM3QyxtREFBK0M7QUFDL0MsOERBQThCO0FBQzlCLDJFQUFnRTtBQUNoRSw0Q0FBMkI7QUFFM0Isc0NBQTBDO0FBRTFDLE1BQU0saUNBQWlDLEdBQUcsSUFBQSxxQkFBRyxFQUFBOzs7Ozs7Q0FNNUMsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQUcsSUFBQSxxQkFBRyxFQUFBOzs7Ozs7Q0FNOUMsQ0FBQztBQUVGLE1BQXFCLGVBQWU7SUFPbEMsWUFBWSxlQUF1QixFQUFFLFdBQW1CO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLCtDQUFrQixDQUM5QyxlQUFlLEVBQ2Y7WUFDRSxnQkFBZ0IsRUFBRTtnQkFDaEIsU0FBUyxFQUFFLFdBQVc7YUFDdkI7U0FDRixFQUNELFlBQVMsQ0FDVixDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSw4QkFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSw0QkFBWSxDQUFDO1lBQzdCLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLElBQUkscUNBQWEsRUFBRTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLDRCQUE0QixDQUFDLGNBQXNCO1FBQ3ZELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNO2lCQUNuQyxTQUFTLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLGlDQUFpQztnQkFDeEMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTthQUN6QyxDQUFDO2lCQUNELFNBQVMsQ0FDUixDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsRUFDekQsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQ3ZCLENBQUM7WUFFSixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU07aUJBQ3BDLFNBQVMsQ0FBQztnQkFDVCxLQUFLLEVBQUUsbUNBQW1DO2dCQUMxQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2FBQ3pDLENBQUM7aUJBQ0QsU0FBUyxDQUNSLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxFQUMzRCxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FDdkIsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLE1BQU0sSUFBSSxzQkFBYSxDQUNyQix1REFBd0QsS0FBZSxDQUFDLE9BQU8sRUFBRSxDQUNsRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUk7WUFDRixJQUFJLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2pDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixnQkFBZ0I7U0FDakI7SUFDSCxDQUFDO0NBQ0Y7QUEvREQsa0NBK0RDIn0=