UNPKG

projen

Version:

CDK for software projects

52 lines 6.94 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.JsonFile = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const object_file_1 = require("./object-file"); /** * Represents a JSON file. */ class JsonFile extends object_file_1.ObjectFile { constructor(scope, filePath, options) { super(scope, filePath, options); this.newline = options.newline ?? true; this.supportsComments = options.allowComments ?? (filePath.toLowerCase().endsWith("json5") || filePath.toLowerCase().endsWith("jsonc")); // Add linguist-language=JSON-with-Comments attribute for files that support comments // This helps GitHub render them correctly with syntax highlighting if (this.supportsComments) { const committed = options.committed ?? this.project.commitGenerated ?? true; if (committed) { this.project.gitattributes.addAttributes(`/${this.path}`, "linguist-language=JSON-with-Comments"); } } if (!options.obj) { throw new Error('"obj" cannot be undefined'); } } synthesizeContent(resolver) { const json = super.synthesizeContent(resolver); if (!json) { return undefined; } const sanitized = JSON.parse(json); if (this.marker && !this.supportsComments) { sanitized["//"] = this.marker; } let content = JSON.stringify(sanitized, undefined, 2); if (this.marker && this.supportsComments) { content = `// ${this.marker}\n${content}`; } if (this.newline) { content += "\n"; } return content; } } exports.JsonFile = JsonFile; _a = JSII_RTTI_SYMBOL_1; JsonFile[_a] = { fqn: "projen.JsonFile", version: "0.99.51" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsK0NBQTJDO0FBbUIzQzs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLHdCQUFVO0lBSXRDLFlBQVksS0FBaUIsRUFBRSxRQUFnQixFQUFFLE9BQXdCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQjtZQUNuQixPQUFPLENBQUMsYUFBYTtnQkFDckIsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztvQkFDdkMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTlDLHFGQUFxRjtRQUNyRixtRUFBbUU7UUFDbkUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixNQUFNLFNBQVMsR0FDYixPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQztZQUM1RCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDdEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQ2Ysc0NBQXNDLENBQ3ZDLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRVMsaUJBQWlCLENBQUMsUUFBbUI7UUFDN0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDNUMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDbEIsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O0FBckRILDRCQXNEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgdHlwZSB7IElSZXNvbHZlciB9IGZyb20gXCIuL2ZpbGVcIjtcbmltcG9ydCB0eXBlIHsgT2JqZWN0RmlsZU9wdGlvbnMgfSBmcm9tIFwiLi9vYmplY3QtZmlsZVwiO1xuaW1wb3J0IHsgT2JqZWN0RmlsZSB9IGZyb20gXCIuL29iamVjdC1maWxlXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEpzb25GaWxlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc29uRmlsZU9wdGlvbnMgZXh0ZW5kcyBPYmplY3RGaWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBuZXdsaW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3cgdGhlIHVzZSBvZiBjb21tZW50cyBpbiB0aGlzIGZpbGUuXG4gICAqIEBkZWZhdWx0IC0gZmFsc2UgZm9yIC5qc29uIGZpbGVzLCB0cnVlIGZvciAuanNvbjUgYW5kIC5qc29uYyBmaWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dDb21tZW50cz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIEpTT04gZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25GaWxlIGV4dGVuZHMgT2JqZWN0RmlsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmV3bGluZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc3VwcG9ydHNDb21tZW50czogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogSUNvbnN0cnVjdCwgZmlsZVBhdGg6IHN0cmluZywgb3B0aW9uczogSnNvbkZpbGVPcHRpb25zKSB7XG4gICAgc3VwZXIoc2NvcGUsIGZpbGVQYXRoLCBvcHRpb25zKTtcblxuICAgIHRoaXMubmV3bGluZSA9IG9wdGlvbnMubmV3bGluZSA/PyB0cnVlO1xuICAgIHRoaXMuc3VwcG9ydHNDb21tZW50cyA9XG4gICAgICBvcHRpb25zLmFsbG93Q29tbWVudHMgPz9cbiAgICAgIChmaWxlUGF0aC50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKFwianNvbjVcIikgfHxcbiAgICAgICAgZmlsZVBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChcImpzb25jXCIpKTtcblxuICAgIC8vIEFkZCBsaW5ndWlzdC1sYW5ndWFnZT1KU09OLXdpdGgtQ29tbWVudHMgYXR0cmlidXRlIGZvciBmaWxlcyB0aGF0IHN1cHBvcnQgY29tbWVudHNcbiAgICAvLyBUaGlzIGhlbHBzIEdpdEh1YiByZW5kZXIgdGhlbSBjb3JyZWN0bHkgd2l0aCBzeW50YXggaGlnaGxpZ2h0aW5nXG4gICAgaWYgKHRoaXMuc3VwcG9ydHNDb21tZW50cykge1xuICAgICAgY29uc3QgY29tbWl0dGVkID1cbiAgICAgICAgb3B0aW9ucy5jb21taXR0ZWQgPz8gdGhpcy5wcm9qZWN0LmNvbW1pdEdlbmVyYXRlZCA/PyB0cnVlO1xuICAgICAgaWYgKGNvbW1pdHRlZCkge1xuICAgICAgICB0aGlzLnByb2plY3QuZ2l0YXR0cmlidXRlcy5hZGRBdHRyaWJ1dGVzKFxuICAgICAgICAgIGAvJHt0aGlzLnBhdGh9YCxcbiAgICAgICAgICBcImxpbmd1aXN0LWxhbmd1YWdlPUpTT04td2l0aC1Db21tZW50c1wiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5vYmopIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCJvYmpcIiBjYW5ub3QgYmUgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVDb250ZW50KHJlc29sdmVyOiBJUmVzb2x2ZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlci5zeW50aGVzaXplQ29udGVudChyZXNvbHZlcik7XG4gICAgaWYgKCFqc29uKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHNhbml0aXplZCA9IEpTT04ucGFyc2UoanNvbik7XG5cbiAgICBpZiAodGhpcy5tYXJrZXIgJiYgIXRoaXMuc3VwcG9ydHNDb21tZW50cykge1xuICAgICAgc2FuaXRpemVkW1wiLy9cIl0gPSB0aGlzLm1hcmtlcjtcbiAgICB9XG5cbiAgICBsZXQgY29udGVudCA9IEpTT04uc3RyaW5naWZ5KHNhbml0aXplZCwgdW5kZWZpbmVkLCAyKTtcbiAgICBpZiAodGhpcy5tYXJrZXIgJiYgdGhpcy5zdXBwb3J0c0NvbW1lbnRzKSB7XG4gICAgICBjb250ZW50ID0gYC8vICR7dGhpcy5tYXJrZXJ9XFxuJHtjb250ZW50fWA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmV3bGluZSkge1xuICAgICAgY29udGVudCArPSBcIlxcblwiO1xuICAgIH1cblxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG59XG4iXX0=