UNPKG

@neo-one/server-plugin-project

Version:

NEO•ONE server plugin for project functionality.

80 lines (78 loc) 11.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const fs = tslib_1.__importStar(require("fs-extra")); const path = tslib_1.__importStar(require("path")); const rxjs_1 = require("rxjs"); const PROJECT_PATH = 'project.json'; class ProjectResource { static async createNew({ resourceType, name, rootDir, sourceMaps, dataPath, }) { const projectPath = this.getProjectPath(dataPath); return new ProjectResource({ resourceType, name, rootDir, sourceMaps, dataPath, projectPath, }); } static async createExisting({ resourceType, name, dataPath, }) { const projectPath = this.getProjectPath(dataPath); const { rootDir, sourceMaps } = await fs.readJSON(projectPath); return new ProjectResource({ resourceType, name, rootDir, sourceMaps, dataPath, projectPath, }); } static getProjectPath(dataPath) { return path.resolve(dataPath, PROJECT_PATH); } constructor({ resourceType, name, rootDir, sourceMaps, dataPath, projectPath }) { this.resourceType = resourceType; this.name = name; this.rootDir = rootDir; this.dataPath = dataPath; this.sourceMaps = sourceMaps; this.projectPath = projectPath; this.resource$ = new rxjs_1.BehaviorSubject(this.toResource()); } async create() { await fs.ensureDir(path.dirname(this.projectPath)); await fs.writeJSON(this.projectPath, { rootDir: this.rootDir, sourceMaps: this.sourceMaps }); } async delete() { await fs.remove(this.dataPath); } getDebug() { const table = [ ['Data Path', this.dataPath], ['Project Path', this.projectPath], ]; return table.concat(Object.entries(this.toResource()) .filter(([key]) => key !== 'sourceMaps') .map(([key, val]) => { if (val === undefined) { return [key, 'null']; } return [key, typeof val === 'string' ? val : JSON.stringify(val, undefined, 2)]; })); } toResource() { return { plugin: this.resourceType.plugin.name, resourceType: this.resourceType.name, name: this.name, baseName: this.name, state: 'started', rootDir: this.rootDir, sourceMaps: this.sourceMaps, }; } } exports.ProjectResource = ProjectResource; //# sourceMappingURL=data:application/json;charset=utf8;base64,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WUFBWSxDQUFDO2FBQ3ZDLEdBQUcsQ0FBNEIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQzdDLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtnQkFDckIsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQVUsQ0FBQzthQUMvQjtZQUVELE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBVSxDQUFDO1FBQzNGLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVTtRQUNoQixPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUk7WUFDckMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSTtZQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDbkIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM1QixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBcEdELDBDQW9HQyIsImZpbGUiOiJuZW8tb25lLXNlcnZlci1wbHVnaW4tcHJvamVjdC9zcmMvUHJvamVjdFJlc291cmNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlTWFwcyB9IGZyb20gJ0BuZW8tb25lL2NsaWVudC1jb21tb24nO1xuaW1wb3J0IHsgRGVzY3JpYmVUYWJsZSB9IGZyb20gJ0BuZW8tb25lL3NlcnZlci1wbHVnaW4nO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvamVjdCwgUHJvamVjdFJlc291cmNlVHlwZSB9IGZyb20gJy4vUHJvamVjdFJlc291cmNlVHlwZSc7XG5cbmludGVyZmFjZSBQcm9qZWN0UmVzb3VyY2VPcHRpb25zIHtcbiAgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBQcm9qZWN0UmVzb3VyY2VUeXBlO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJvb3REaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgc291cmNlTWFwczogU291cmNlTWFwcztcbiAgcmVhZG9ubHkgZGF0YVBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvamVjdFBhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE5ld1Byb2plY3RSZXNvdXJjZU9wdGlvbnMge1xuICByZWFkb25seSByZXNvdXJjZVR5cGU6IFByb2plY3RSZXNvdXJjZVR5cGU7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcm9vdERpcjogc3RyaW5nO1xuICByZWFkb25seSBzb3VyY2VNYXBzOiBTb3VyY2VNYXBzO1xuICByZWFkb25seSBkYXRhUGF0aDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXhpc3RpbmdQcm9qZWN0UmVzb3VyY2VPcHRpb25zIHtcbiAgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBQcm9qZWN0UmVzb3VyY2VUeXBlO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRhdGFQYXRoOiBzdHJpbmc7XG59XG5cbmNvbnN0IFBST0pFQ1RfUEFUSCA9ICdwcm9qZWN0Lmpzb24nO1xuXG5leHBvcnQgY2xhc3MgUHJvamVjdFJlc291cmNlIHtcbiAgcHVibGljIHN0YXRpYyBhc3luYyBjcmVhdGVOZXcoe1xuICAgIHJlc291cmNlVHlwZSxcbiAgICBuYW1lLFxuICAgIHJvb3REaXIsXG4gICAgc291cmNlTWFwcyxcbiAgICBkYXRhUGF0aCxcbiAgfTogTmV3UHJvamVjdFJlc291cmNlT3B0aW9ucyk6IFByb21pc2U8UHJvamVjdFJlc291cmNlPiB7XG4gICAgY29uc3QgcHJvamVjdFBhdGggPSB0aGlzLmdldFByb2plY3RQYXRoKGRhdGFQYXRoKTtcblxuICAgIHJldHVybiBuZXcgUHJvamVjdFJlc291cmNlKHtcbiAgICAgIHJlc291cmNlVHlwZSxcbiAgICAgIG5hbWUsXG4gICAgICByb290RGlyLFxuICAgICAgc291cmNlTWFwcyxcbiAgICAgIGRhdGFQYXRoLFxuICAgICAgcHJvamVjdFBhdGgsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFzeW5jIGNyZWF0ZUV4aXN0aW5nKHtcbiAgICByZXNvdXJjZVR5cGUsXG4gICAgbmFtZSxcbiAgICBkYXRhUGF0aCxcbiAgfTogRXhpc3RpbmdQcm9qZWN0UmVzb3VyY2VPcHRpb25zKTogUHJvbWlzZTxQcm9qZWN0UmVzb3VyY2U+IHtcbiAgICBjb25zdCBwcm9qZWN0UGF0aCA9IHRoaXMuZ2V0UHJvamVjdFBhdGgoZGF0YVBhdGgpO1xuICAgIGNvbnN0IHsgcm9vdERpciwgc291cmNlTWFwcyB9ID0gYXdhaXQgZnMucmVhZEpTT04ocHJvamVjdFBhdGgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9qZWN0UmVzb3VyY2Uoe1xuICAgICAgcmVzb3VyY2VUeXBlLFxuICAgICAgbmFtZSxcbiAgICAgIHJvb3REaXIsXG4gICAgICBzb3VyY2VNYXBzLFxuICAgICAgZGF0YVBhdGgsXG4gICAgICBwcm9qZWN0UGF0aCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldFByb2plY3RQYXRoKGRhdGFQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLnJlc29sdmUoZGF0YVBhdGgsIFBST0pFQ1RfUEFUSCk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2UkOiBPYnNlcnZhYmxlPFByb2plY3Q+O1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlVHlwZTogUHJvamVjdFJlc291cmNlVHlwZTtcbiAgcHJpdmF0ZSByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm9vdERpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNvdXJjZU1hcHM6IFNvdXJjZU1hcHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YVBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBwcm9qZWN0UGF0aDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih7IHJlc291cmNlVHlwZSwgbmFtZSwgcm9vdERpciwgc291cmNlTWFwcywgZGF0YVBhdGgsIHByb2plY3RQYXRoIH06IFByb2plY3RSZXNvdXJjZU9wdGlvbnMpIHtcbiAgICB0aGlzLnJlc291cmNlVHlwZSA9IHJlc291cmNlVHlwZTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucm9vdERpciA9IHJvb3REaXI7XG4gICAgdGhpcy5kYXRhUGF0aCA9IGRhdGFQYXRoO1xuICAgIHRoaXMuc291cmNlTWFwcyA9IHNvdXJjZU1hcHM7XG4gICAgdGhpcy5wcm9qZWN0UGF0aCA9IHByb2plY3RQYXRoO1xuXG4gICAgdGhpcy5yZXNvdXJjZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMudG9SZXNvdXJjZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgZnMuZW5zdXJlRGlyKHBhdGguZGlybmFtZSh0aGlzLnByb2plY3RQYXRoKSk7XG4gICAgYXdhaXQgZnMud3JpdGVKU09OKHRoaXMucHJvamVjdFBhdGgsIHsgcm9vdERpcjogdGhpcy5yb290RGlyLCBzb3VyY2VNYXBzOiB0aGlzLnNvdXJjZU1hcHMgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGZzLnJlbW92ZSh0aGlzLmRhdGFQYXRoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZWJ1ZygpOiBEZXNjcmliZVRhYmxlIHtcbiAgICBjb25zdCB0YWJsZTogUmVhZG9ubHlBcnJheTxyZWFkb25seSBbc3RyaW5nLCBzdHJpbmddPiA9IFtcbiAgICAgIFsnRGF0YSBQYXRoJywgdGhpcy5kYXRhUGF0aF0gYXMgY29uc3QsXG4gICAgICBbJ1Byb2plY3QgUGF0aCcsIHRoaXMucHJvamVjdFBhdGhdIGFzIGNvbnN0LFxuICAgIF07XG5cbiAgICByZXR1cm4gdGFibGUuY29uY2F0KFxuICAgICAgT2JqZWN0LmVudHJpZXModGhpcy50b1Jlc291cmNlKCkpXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiBrZXkgIT09ICdzb3VyY2VNYXBzJylcbiAgICAgICAgLm1hcDxyZWFkb25seSBbc3RyaW5nLCBzdHJpbmddPigoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgIGlmICh2YWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFtrZXksICdudWxsJ10gYXMgY29uc3Q7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIFtrZXksIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gdmFsIDogSlNPTi5zdHJpbmdpZnkodmFsLCB1bmRlZmluZWQsIDIpXSBhcyBjb25zdDtcbiAgICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9SZXNvdXJjZSgpOiBQcm9qZWN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgcGx1Z2luOiB0aGlzLnJlc291cmNlVHlwZS5wbHVnaW4ubmFtZSxcbiAgICAgIHJlc291cmNlVHlwZTogdGhpcy5yZXNvdXJjZVR5cGUubmFtZSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGJhc2VOYW1lOiB0aGlzLm5hbWUsXG4gICAgICBzdGF0ZTogJ3N0YXJ0ZWQnLFxuICAgICAgcm9vdERpcjogdGhpcy5yb290RGlyLFxuICAgICAgc291cmNlTWFwczogdGhpcy5zb3VyY2VNYXBzLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==