gulp-chrome-web-store
Advanced tools
Comparing version 0.0.2 to 0.1.0
@@ -45,54 +45,61 @@ "use strict"; | ||
var PLUGIN_NAME = 'gulp-chrome-web-store'; | ||
module.exports = function Plugin(id, credential, accessTokenResponse) { | ||
module.exports = function Plugin(credential, accessTokenResponse) { | ||
var api = new chrome_web_store_1.default(typeof credential === 'string' ? JSON.parse(credential) : credential, typeof accessTokenResponse === 'string' ? JSON.parse(accessTokenResponse) : accessTokenResponse); | ||
return { | ||
upload: function (uploadType) { | ||
if (uploadType === void 0) { uploadType = ''; } | ||
return new stream_1.default.Transform({ | ||
objectMode: true, | ||
transform: function (vinyl, encoding, callback) { | ||
var _this = this; | ||
api.Item.fetch(id).then(function (item) { return __awaiter(_this, void 0, void 0, function () { | ||
var result, message; | ||
return new /** @class */ (function () { | ||
function ChromeWebStore() { | ||
} | ||
ChromeWebStore.prototype.item = function (id) { | ||
return { | ||
upload: function (uploadType) { | ||
if (uploadType === void 0) { uploadType = ''; } | ||
return new stream_1.default.Transform({ | ||
objectMode: true, | ||
transform: function (vinyl, encoding, callback) { | ||
var _this = this; | ||
api.Item.fetch(id).then(function (item) { return __awaiter(_this, void 0, void 0, function () { | ||
var result, message; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, item.upload(vinyl.contents, uploadType)]; | ||
case 1: | ||
result = _a.sent(); | ||
if (result.uploadState === 'FAILURE') { | ||
message = (result.itemError || []).map(function (error) { return error.error_detail; }).join('\n'); | ||
throw new plugin_error_1.default(PLUGIN_NAME, message); | ||
} | ||
this.push(vinyl); | ||
return [2 /*return*/, null]; | ||
} | ||
}); | ||
}); }).then(callback).catch(function (error) { return callback(new plugin_error_1.default(PLUGIN_NAME, error)); }); | ||
}, | ||
}); | ||
}, | ||
publish: function (publishTarget) { | ||
if (publishTarget === void 0) { publishTarget = 'default'; } | ||
return __awaiter(this, void 0, void 0, function () { | ||
var item, result, error_1; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, item.upload(vinyl.contents, uploadType)]; | ||
case 0: | ||
_a.trys.push([0, 2, , 3]); | ||
item = new api.Item(id); | ||
return [4 /*yield*/, item.publish(publishTarget)]; | ||
case 1: | ||
result = _a.sent(); | ||
if (result.uploadState === 'FAILURE') { | ||
message = (result.itemError || []).map(function (error) { return error.error_detail; }).join('\n'); | ||
throw new plugin_error_1.default(PLUGIN_NAME, message); | ||
} | ||
this.push(vinyl); | ||
return [2 /*return*/, null]; | ||
(result.statusDetail || []).forEach(function (detail) { return console.log(detail); }); | ||
return [3 /*break*/, 3]; | ||
case 2: | ||
error_1 = _a.sent(); | ||
throw new plugin_error_1.default(PLUGIN_NAME, error_1); | ||
case 3: return [2 /*return*/]; | ||
} | ||
}); | ||
}); }).then(callback).catch(function (error) { return callback(new plugin_error_1.default(PLUGIN_NAME, error)); }); | ||
}); | ||
}, | ||
}); | ||
}, | ||
publish: function (publishTarget) { | ||
if (publishTarget === void 0) { publishTarget = 'default'; } | ||
return __awaiter(this, void 0, void 0, function () { | ||
var item, result, error_1; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
_a.trys.push([0, 2, , 3]); | ||
item = new api.Item(id); | ||
return [4 /*yield*/, item.publish(publishTarget)]; | ||
case 1: | ||
result = _a.sent(); | ||
(result.statusDetail || []).forEach(function (detail) { return console.log(detail); }); | ||
return [3 /*break*/, 3]; | ||
case 2: | ||
error_1 = _a.sent(); | ||
throw new plugin_error_1.default(PLUGIN_NAME, error_1); | ||
case 3: return [2 /*return*/]; | ||
} | ||
}); | ||
}); | ||
}, | ||
}; | ||
}; | ||
}; | ||
return ChromeWebStore; | ||
}())(); | ||
}; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOERBQXVDO0FBQ3ZDLGtEQUE0QjtBQUM1Qix3RUFBbUg7QUFFbkgsSUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUM7QUFHNUMsaUJBQVMsU0FBUyxNQUFNLENBQ3RCLEVBQVUsRUFDVixVQUErQixFQUMvQixtQkFBaUQ7SUFFakQsSUFBTSxHQUFHLEdBQUcsSUFBSSwwQkFBaUIsQ0FDL0IsT0FBTyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQ3BFLE9BQU8sbUJBQW1CLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUNoRyxDQUFDO0lBQ0YsT0FBTztRQUNMLE1BQU0sRUFBTixVQUFPLFVBQTJCO1lBQTNCLDJCQUFBLEVBQUEsZUFBMkI7WUFDaEMsT0FBTyxJQUFJLGdCQUFNLENBQUMsU0FBUyxDQUFDO2dCQUMxQixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsU0FBUyxZQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUTtvQkFBbkMsaUJBVUM7b0JBVEMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQU0sSUFBSTs7Ozt3Q0FDakIscUJBQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFBOztvQ0FBdEQsTUFBTSxHQUFHLFNBQTZDO29DQUM1RCxJQUFJLE1BQU0sQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO3dDQUM5QixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxZQUFZLEVBQWxCLENBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0NBQ3JGLE1BQU0sSUFBSSxzQkFBVyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztxQ0FDN0M7b0NBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQ0FDakIsc0JBQU8sSUFBSSxFQUFDOzs7eUJBQ2IsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxRQUFRLENBQUMsSUFBSSxzQkFBVyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUE3QyxDQUE2QyxDQUFDLENBQUM7Z0JBQ2xGLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0ssT0FBTyxFQUFiLFVBQWMsYUFBd0M7WUFBeEMsOEJBQUEsRUFBQSx5QkFBd0M7Ozs7Ozs7NEJBRTVDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ2YscUJBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBQTs7NEJBQTFDLE1BQU0sR0FBRyxTQUFpQzs0QkFDaEQsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQW5CLENBQW1CLENBQUMsQ0FBQzs7Ozs0QkFFbkUsTUFBTSxJQUFJLHNCQUFXLENBQUMsV0FBVyxFQUFFLE9BQUssQ0FBQyxDQUFDOzs7OztTQUU3QztLQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGx1Z2luRXJyb3IgZnJvbSAncGx1Z2luLWVycm9yJztcbmltcG9ydCBzdHJlYW0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCBDaHJvbWVXZWJTdG9yZUFQSSwgeyBBY2Nlc3NUb2tlblJlc3BvbnNlLCBDcmVkZW50aWFsLCBQdWJsaXNoVGFyZ2V0LCBVcGxvYWRUeXBlIH0gZnJvbSAnLi9jaHJvbWUtd2ViLXN0b3JlJztcblxuY29uc3QgUExVR0lOX05BTUUgPSAnZ3VscC1jaHJvbWUtd2ViLXN0b3JlJztcblxuLy8gdHNsaW50OmRpc2FibGU6IG5vLWNvbnNvbGVcbmV4cG9ydCA9IGZ1bmN0aW9uIFBsdWdpbihcbiAgaWQ6IHN0cmluZyxcbiAgY3JlZGVudGlhbDogc3RyaW5nIHwgQ3JlZGVudGlhbCxcbiAgYWNjZXNzVG9rZW5SZXNwb25zZTogc3RyaW5nIHwgQWNjZXNzVG9rZW5SZXNwb25zZSxcbikge1xuICBjb25zdCBhcGkgPSBuZXcgQ2hyb21lV2ViU3RvcmVBUEkoXG4gICAgdHlwZW9mIGNyZWRlbnRpYWwgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShjcmVkZW50aWFsKSA6IGNyZWRlbnRpYWwsXG4gICAgdHlwZW9mIGFjY2Vzc1Rva2VuUmVzcG9uc2UgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShhY2Nlc3NUb2tlblJlc3BvbnNlKSA6IGFjY2Vzc1Rva2VuUmVzcG9uc2UsXG4gICk7XG4gIHJldHVybiB7XG4gICAgdXBsb2FkKHVwbG9hZFR5cGU6IFVwbG9hZFR5cGUgPSAnJykge1xuICAgICAgcmV0dXJuIG5ldyBzdHJlYW0uVHJhbnNmb3JtKHtcbiAgICAgICAgb2JqZWN0TW9kZTogdHJ1ZSxcbiAgICAgICAgdHJhbnNmb3JtKHZpbnlsLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgICAgICAgICBhcGkuSXRlbS5mZXRjaChpZCkudGhlbihhc3luYyBpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGl0ZW0udXBsb2FkKHZpbnlsLmNvbnRlbnRzLCB1cGxvYWRUeXBlKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQudXBsb2FkU3RhdGUgPT09ICdGQUlMVVJFJykge1xuICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gKHJlc3VsdC5pdGVtRXJyb3IgfHwgW10pLm1hcChlcnJvciA9PiBlcnJvci5lcnJvcl9kZXRhaWwpLmpvaW4oJ1xcbicpO1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgUGx1Z2luRXJyb3IoUExVR0lOX05BTUUsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wdXNoKHZpbnlsKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0pLnRoZW4oY2FsbGJhY2spLmNhdGNoKGVycm9yID0+IGNhbGxiYWNrKG5ldyBQbHVnaW5FcnJvcihQTFVHSU5fTkFNRSwgZXJyb3IpKSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGFzeW5jIHB1Ymxpc2gocHVibGlzaFRhcmdldDogUHVibGlzaFRhcmdldCA9ICdkZWZhdWx0Jykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaXRlbSA9IG5ldyBhcGkuSXRlbShpZCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGl0ZW0ucHVibGlzaChwdWJsaXNoVGFyZ2V0KTtcbiAgICAgICAgKHJlc3VsdC5zdGF0dXNEZXRhaWwgfHwgW10pLmZvckVhY2goZGV0YWlsID0+IGNvbnNvbGUubG9nKGRldGFpbCkpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBsdWdpbkVycm9yKFBMVUdJTl9OQU1FLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn07XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QyxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBsdWdpbkVycm9yIGZyb20gJ3BsdWdpbi1lcnJvcic7XG5pbXBvcnQgc3RyZWFtIGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgQ2hyb21lV2ViU3RvcmVBUEksIHsgQWNjZXNzVG9rZW5SZXNwb25zZSwgQ3JlZGVudGlhbCwgUHVibGlzaFRhcmdldCwgVXBsb2FkVHlwZSB9IGZyb20gJy4vY2hyb21lLXdlYi1zdG9yZSc7XG5cbmNvbnN0IFBMVUdJTl9OQU1FID0gJ2d1bHAtY2hyb21lLXdlYi1zdG9yZSc7XG5cbi8vIHRzbGludDpkaXNhYmxlOiBuby1jb25zb2xlXG5leHBvcnQgPSBmdW5jdGlvbiBQbHVnaW4oXG4gIGNyZWRlbnRpYWw6IHN0cmluZyB8IENyZWRlbnRpYWwsXG4gIGFjY2Vzc1Rva2VuUmVzcG9uc2U6IHN0cmluZyB8IEFjY2Vzc1Rva2VuUmVzcG9uc2UsXG4pIHtcbiAgY29uc3QgYXBpID0gbmV3IENocm9tZVdlYlN0b3JlQVBJKFxuICAgIHR5cGVvZiBjcmVkZW50aWFsID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoY3JlZGVudGlhbCkgOiBjcmVkZW50aWFsLFxuICAgIHR5cGVvZiBhY2Nlc3NUb2tlblJlc3BvbnNlID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoYWNjZXNzVG9rZW5SZXNwb25zZSkgOiBhY2Nlc3NUb2tlblJlc3BvbnNlLFxuICApO1xuICByZXR1cm4gbmV3IGNsYXNzIENocm9tZVdlYlN0b3JlIHtcbiAgICBwdWJsaWMgaXRlbShpZDogc3RyaW5nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB1cGxvYWQodXBsb2FkVHlwZTogVXBsb2FkVHlwZSA9ICcnKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBzdHJlYW0uVHJhbnNmb3JtKHtcbiAgICAgICAgICAgIG9iamVjdE1vZGU6IHRydWUsXG4gICAgICAgICAgICB0cmFuc2Zvcm0odmlueWwsIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICBhcGkuSXRlbS5mZXRjaChpZCkudGhlbihhc3luYyBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpdGVtLnVwbG9hZCh2aW55bC5jb250ZW50cywgdXBsb2FkVHlwZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC51cGxvYWRTdGF0ZSA9PT0gJ0ZBSUxVUkUnKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gKHJlc3VsdC5pdGVtRXJyb3IgfHwgW10pLm1hcChlcnJvciA9PiBlcnJvci5lcnJvcl9kZXRhaWwpLmpvaW4oJ1xcbicpO1xuICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBsdWdpbkVycm9yKFBMVUdJTl9OQU1FLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wdXNoKHZpbnlsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgfSkudGhlbihjYWxsYmFjaykuY2F0Y2goZXJyb3IgPT4gY2FsbGJhY2sobmV3IFBsdWdpbkVycm9yKFBMVUdJTl9OQU1FLCBlcnJvcikpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIHB1Ymxpc2gocHVibGlzaFRhcmdldDogUHVibGlzaFRhcmdldCA9ICdkZWZhdWx0Jykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gbmV3IGFwaS5JdGVtKGlkKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGl0ZW0ucHVibGlzaChwdWJsaXNoVGFyZ2V0KTtcbiAgICAgICAgICAgIChyZXN1bHQuc3RhdHVzRGV0YWlsIHx8IFtdKS5mb3JFYWNoKGRldGFpbCA9PiBjb25zb2xlLmxvZyhkZXRhaWwpKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFBsdWdpbkVycm9yKFBMVUdJTl9OQU1FLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH0oKTtcbn07XG4iXX0= |
{ | ||
"name": "gulp-chrome-web-store", | ||
"version": "0.0.2", | ||
"version": "0.1.0", | ||
"description": "Upload and publish items to the Chrome Web Store with Gulp", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -6,1 +6,69 @@ # gulp-chrome-web-store | ||
Upload and publish items to the Chrome Web Store with Gulp | ||
## Installation | ||
```sh | ||
npm i -D gulp-chrome-web-store | ||
``` | ||
## Configuration | ||
Refer to [this page](https://developer.chrome.com/webstore/using_webstore_api) to get the response of credentials and access token. | ||
Set that value in an environment variable. | ||
- `CHROME_WEB_STORE_API_CREDENTIAL` | ||
- `CHROME_WEB_STORE_API_ACCESS_TOKEN_RESPONSE` | ||
For example: | ||
```sh | ||
export CHROME_WEB_STORE_API_CREDENTIAL=$( cat <<EOF | tr -d ' \r\n' | ||
{ | ||
"installed": { | ||
"client_id": "999999999999-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com", | ||
"project_id": "foo-bar-baz", | ||
"auth_uri": "https://accounts.google.com/o/oauth2/auth", | ||
"token_uri": "https://oauth2.googleapis.com/token", | ||
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", | ||
"client_secret": "abcdefghijklmnopqrstuvwx", | ||
"redirect_uris": [ | ||
"urn:ietf:wg:oauth:2.0:oob", | ||
"http://localhost" | ||
] | ||
} | ||
} | ||
EOF | ||
) | ||
export CHROME_WEB_STORE_API_ACCESS_TOKEN_RESPONSE=$(cat <<EOF | tr -d ' \r\n' | ||
{ | ||
"access_token": "vpvEyHWpX^{CQC`fREmnwCHb`ejN`ox^XxEbYDKXmghM`]lrL{ddTrxdgtgLEvAeX\oP]NkRgjFcvNE_enJZI`BNcvZScQOA\BAA|NSzB_Xg_ie_yXLrQ[sII_]r|jW{nzZULNP", | ||
"expires_in": 3599, | ||
"refresh_token": "riM{R[Lir|hyHT|DNeWZhQzVpOjvTbTMayHZdfNFlR{TB]KFSh^DyjNZySyj|aWYajb]dNCIRTZXmKKuB`bbUyoLRGkPWao|pibdNSk", | ||
"scope": "https://www.googleapis.com/auth/chromewebstore", | ||
"token_type": "Bearer" | ||
} | ||
EOF | ||
) | ||
``` | ||
## Usage | ||
For example: | ||
```js | ||
const gulp = require('gulp') | ||
const chromeWebStore = require('gulp-chrome-web-store')( | ||
process.env.CHROME_WEB_STORE_API_CREDENTIAL, | ||
process.evn.CHROME_WEB_STORE_API_ACCESS_TOKEN_RESPONSE, | ||
); | ||
const itemId = 'ID of your Chrome extension'; | ||
const item = chromeWebStore.item(itemId); | ||
exports.deploy = () => { | ||
return gulp.src('your-chrome-extension.zip') | ||
.pipe(item.upload()); | ||
} | ||
exports.publish = () => { | ||
return item.publish(); | ||
} | ||
``` |
@@ -9,3 +9,2 @@ import PluginError from 'plugin-error'; | ||
export = function Plugin( | ||
id: string, | ||
credential: string | Credential, | ||
@@ -18,29 +17,33 @@ accessTokenResponse: string | AccessTokenResponse, | ||
); | ||
return { | ||
upload(uploadType: UploadType = '') { | ||
return new stream.Transform({ | ||
objectMode: true, | ||
transform(vinyl, encoding, callback) { | ||
api.Item.fetch(id).then(async item => { | ||
const result = await item.upload(vinyl.contents, uploadType); | ||
if (result.uploadState === 'FAILURE') { | ||
const message = (result.itemError || []).map(error => error.error_detail).join('\n'); | ||
throw new PluginError(PLUGIN_NAME, message); | ||
} | ||
this.push(vinyl); | ||
return null; | ||
}).then(callback).catch(error => callback(new PluginError(PLUGIN_NAME, error))); | ||
return new class ChromeWebStore { | ||
public item(id: string) { | ||
return { | ||
upload(uploadType: UploadType = '') { | ||
return new stream.Transform({ | ||
objectMode: true, | ||
transform(vinyl, encoding, callback) { | ||
api.Item.fetch(id).then(async item => { | ||
const result = await item.upload(vinyl.contents, uploadType); | ||
if (result.uploadState === 'FAILURE') { | ||
const message = (result.itemError || []).map(error => error.error_detail).join('\n'); | ||
throw new PluginError(PLUGIN_NAME, message); | ||
} | ||
this.push(vinyl); | ||
return null; | ||
}).then(callback).catch(error => callback(new PluginError(PLUGIN_NAME, error))); | ||
}, | ||
}); | ||
}, | ||
}); | ||
}, | ||
async publish(publishTarget: PublishTarget = 'default') { | ||
try { | ||
const item = new api.Item(id); | ||
const result = await item.publish(publishTarget); | ||
(result.statusDetail || []).forEach(detail => console.log(detail)); | ||
} catch (error) { | ||
throw new PluginError(PLUGIN_NAME, error); | ||
} | ||
}, | ||
}; | ||
async publish(publishTarget: PublishTarget = 'default') { | ||
try { | ||
const item = new api.Item(id); | ||
const result = await item.publish(publishTarget); | ||
(result.statusDetail || []).forEach(detail => console.log(detail)); | ||
} catch (error) { | ||
throw new PluginError(PLUGIN_NAME, error); | ||
} | ||
}, | ||
}; | ||
} | ||
}(); | ||
}; |
@@ -9,6 +9,7 @@ import { expect } from 'chai'; | ||
const accessTokenResponse = {}; | ||
const chromeWebStore = plugin(itemId, JSON.stringify(credential), JSON.stringify(accessTokenResponse)); | ||
expect(chromeWebStore).to.have.property('upload'); | ||
expect(chromeWebStore).to.have.property('publish'); | ||
const chromeWebStore = plugin(JSON.stringify(credential), JSON.stringify(accessTokenResponse)); | ||
const item = chromeWebStore.item(itemId); | ||
expect(item).to.have.property('upload'); | ||
expect(item).to.have.property('publish'); | ||
}); | ||
}); |
56579
716
74