1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.DropEmptyObjectAtTheEndOfAnArray = void 0;
|
4 | const cdk = require("@aws-cdk/core");
|
5 | const object_1 = require("./object");
|
6 | /**
|
7 | * A Token object that will drop the last element of an array if it is an empty object
|
8 | *
|
9 | * Necessary to prevent options objects that only contain "region" and "account" keys
|
10 | * that evaluate to "undefined" from showing up in the rendered JSON.
|
11 | */
|
12 | class DropEmptyObjectAtTheEndOfAnArray {
|
13 | constructor(value) {
|
14 | this.value = value;
|
15 | this.creationStack = cdk.captureStackTrace();
|
16 | }
|
17 | resolve(context) {
|
18 | context.registerPostProcessor(this);
|
19 | return context.resolve(this.value);
|
20 | }
|
21 | postProcess(o, _context) {
|
22 | if (!Array.isArray(o)) {
|
23 | return o;
|
24 | }
|
25 | const lastEl = o[o.length - 1];
|
26 | if (typeof lastEl === 'object' && lastEl !== null && Object.keys(object_1.dropUndefined(lastEl)).length === 0) {
|
27 | return o.slice(0, o.length - 1);
|
28 | }
|
29 | return o;
|
30 | }
|
31 | }
|
32 | exports.DropEmptyObjectAtTheEndOfAnArray = DropEmptyObjectAtTheEndOfAnArray;
|
33 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1lbXB0eS1vYmplY3QtYXQtdGhlLWVuZC1vZi1hbi1hcnJheS10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRyb3AtZW1wdHktb2JqZWN0LWF0LXRoZS1lbmQtb2YtYW4tYXJyYXktdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXFDO0FBQ3JDLHFDQUF5QztBQUV6Qzs7Ozs7R0FLRztBQUNILE1BQWEsZ0NBQWdDO0lBRzNDLFlBQTZCLEtBQVU7UUFBVixVQUFLLEdBQUwsS0FBSyxDQUFLO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7S0FDOUM7SUFFTSxPQUFPLENBQUMsT0FBNEI7UUFDekMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDcEM7SUFFTSxXQUFXLENBQUMsQ0FBTSxFQUFFLFFBQTZCO1FBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQUUsT0FBTyxDQUFDLENBQUM7U0FBRTtRQUVwQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUvQixJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDcEcsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsT0FBTyxDQUFDLENBQUM7S0FDVjtDQUNGO0FBdkJELDRFQXVCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdAYXdzLWNkay9jb3JlJztcbmltcG9ydCB7IGRyb3BVbmRlZmluZWQgfSBmcm9tICcuL29iamVjdCc7XG5cbi8qKlxuICogQSBUb2tlbiBvYmplY3QgdGhhdCB3aWxsIGRyb3AgdGhlIGxhc3QgZWxlbWVudCBvZiBhbiBhcnJheSBpZiBpdCBpcyBhbiBlbXB0eSBvYmplY3RcbiAqXG4gKiBOZWNlc3NhcnkgdG8gcHJldmVudCBvcHRpb25zIG9iamVjdHMgdGhhdCBvbmx5IGNvbnRhaW4gXCJyZWdpb25cIiBhbmQgXCJhY2NvdW50XCIga2V5c1xuICogdGhhdCBldmFsdWF0ZSB0byBcInVuZGVmaW5lZFwiIGZyb20gc2hvd2luZyB1cCBpbiB0aGUgcmVuZGVyZWQgSlNPTi5cbiAqL1xuZXhwb3J0IGNsYXNzIERyb3BFbXB0eU9iamVjdEF0VGhlRW5kT2ZBbkFycmF5IGltcGxlbWVudHMgY2RrLklSZXNvbHZhYmxlLCBjZGsuSVBvc3RQcm9jZXNzb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRpb25TdGFjazogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5jcmVhdGlvblN0YWNrID0gY2RrLmNhcHR1cmVTdGFja1RyYWNlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBjZGsuSVJlc29sdmVDb250ZXh0KSB7XG4gICAgY29udGV4dC5yZWdpc3RlclBvc3RQcm9jZXNzb3IodGhpcyk7XG4gICAgcmV0dXJuIGNvbnRleHQucmVzb2x2ZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0UHJvY2VzcyhvOiBhbnksIF9jb250ZXh0OiBjZGsuSVJlc29sdmVDb250ZXh0KTogYW55IHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobykpIHsgcmV0dXJuIG87IH1cblxuICAgIGNvbnN0IGxhc3RFbCA9IG9bby5sZW5ndGggLSAxXTtcblxuICAgIGlmICh0eXBlb2YgbGFzdEVsID09PSAnb2JqZWN0JyAmJiBsYXN0RWwgIT09IG51bGwgJiYgT2JqZWN0LmtleXMoZHJvcFVuZGVmaW5lZChsYXN0RWwpKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBvLnNsaWNlKDAsIG8ubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG87XG4gIH1cbn1cbiJdfQ== |
\ | No newline at end of file |