{"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/index.js":{"path":"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/index.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":294}},"2":{"start":{"line":4,"column":15},"end":{"line":4,"column":32}},"3":{"start":{"line":5,"column":15},"end":{"line":5,"column":34}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"5":{"start":{"line":12,"column":4},"end":{"line":12,"column":49}},"6":{"start":{"line":14,"column":0},"end":{"line":14,"column":38}},"7":{"start":{"line":22,"column":16},"end":{"line":22,"column":55}},"8":{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},"9":{"start":{"line":24,"column":8},"end":{"line":24,"column":62}},"10":{"start":{"line":26,"column":4},"end":{"line":26,"column":15}},"11":{"start":{"line":28,"column":0},"end":{"line":28,"column":54}},"12":{"start":{"line":33,"column":21},"end":{"line":33,"column":49}},"13":{"start":{"line":34,"column":4},"end":{"line":40,"column":5}},"14":{"start":{"line":36,"column":8},"end":{"line":36,"column":59}},"15":{"start":{"line":39,"column":8},"end":{"line":39,"column":18}},"16":{"start":{"line":42,"column":0},"end":{"line":42,"column":52}},"17":{"start":{"line":47,"column":16},"end":{"line":47,"column":72}},"18":{"start":{"line":48,"column":4},"end":{"line":50,"column":5}},"19":{"start":{"line":49,"column":8},"end":{"line":49,"column":81}},"20":{"start":{"line":51,"column":4},"end":{"line":51,"column":15}},"21":{"start":{"line":53,"column":0},"end":{"line":53,"column":54}},"22":{"start":{"line":58,"column":4},"end":{"line":58,"column":54}},"23":{"start":{"line":60,"column":0},"end":{"line":60,"column":38}},"24":{"start":{"line":65,"column":4},"end":{"line":65,"column":86}},"25":{"start":{"line":65,"column":55},"end":{"line":65,"column":82}},"26":{"start":{"line":67,"column":0},"end":{"line":67,"column":32}},"27":{"start":{"line":80,"column":17},"end":{"line":80,"column":32}},"28":{"start":{"line":81,"column":19},"end":{"line":81,"column":90}},"29":{"start":{"line":82,"column":22},"end":{"line":82,"column":43}},"30":{"start":{"line":83,"column":4},"end":{"line":92,"column":5}},"31":{"start":{"line":84,"column":8},"end":{"line":86,"column":9}},"32":{"start":{"line":85,"column":12},"end":{"line":85,"column":21}},"33":{"start":{"line":87,"column":8},"end":{"line":87,"column":62}},"34":{"start":{"line":88,"column":23},"end":{"line":88,"column":33}},"35":{"start":{"line":89,"column":8},"end":{"line":91,"column":9}},"36":{"start":{"line":89,"column":75},"end":{"line":89,"column":95}},"37":{"start":{"line":90,"column":12},"end":{"line":90,"column":74}},"38":{"start":{"line":93,"column":4},"end":{"line":93,"column":101}},"39":{"start":{"line":94,"column":4},"end":{"line":94,"column":18}},"40":{"start":{"line":96,"column":0},"end":{"line":96,"column":54}},"41":{"start":{"line":107,"column":4},"end":{"line":115,"column":5}},"42":{"start":{"line":108,"column":8},"end":{"line":108,"column":33}},"43":{"start":{"line":108,"column":20},"end":{"line":108,"column":32}},"44":{"start":{"line":110,"column":9},"end":{"line":115,"column":5}},"45":{"start":{"line":111,"column":8},"end":{"line":111,"column":22}},"46":{"start":{"line":114,"column":8},"end":{"line":114,"column":44}},"47":{"start":{"line":114,"column":20},"end":{"line":114,"column":43}},"48":{"start":{"line":121,"column":17},"end":{"line":121,"column":60}},"49":{"start":{"line":122,"column":4},"end":{"line":124,"column":5}},"50":{"start":{"line":123,"column":8},"end":{"line":123,"column":18}},"51":{"start":{"line":125,"column":16},"end":{"line":125,"column":27}},"52":{"start":{"line":126,"column":4},"end":{"line":130,"column":5}},"53":{"start":{"line":127,"column":8},"end":{"line":129,"column":9}},"54":{"start":{"line":128,"column":12},"end":{"line":128,"column":35}},"55":{"start":{"line":131,"column":4},"end":{"line":131,"column":15}},"56":{"start":{"line":133,"column":0},"end":{"line":133,"column":64}},"57":{"start":{"line":138,"column":16},"end":{"line":138,"column":27}},"58":{"start":{"line":139,"column":4},"end":{"line":143,"column":5}},"59":{"start":{"line":140,"column":8},"end":{"line":142,"column":9}},"60":{"start":{"line":141,"column":12},"end":{"line":141,"column":35}},"61":{"start":{"line":144,"column":4},"end":{"line":144,"column":15}},"62":{"start":{"line":146,"column":0},"end":{"line":146,"column":64}}},"fnMap":{"0":{"name":"specification","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":22}},"loc":{"start":{"line":10,"column":25},"end":{"line":13,"column":1}},"line":10},"1":{"name":"resourceSpecification","decl":{"start":{"line":21,"column":9},"end":{"line":21,"column":30}},"loc":{"start":{"line":21,"column":41},"end":{"line":27,"column":1}},"line":21},"2":{"name":"resourceAugmentation","decl":{"start":{"line":32,"column":9},"end":{"line":32,"column":29}},"loc":{"start":{"line":32,"column":40},"end":{"line":41,"column":1}},"line":32},"3":{"name":"propertySpecification","decl":{"start":{"line":46,"column":9},"end":{"line":46,"column":30}},"loc":{"start":{"line":46,"column":55},"end":{"line":52,"column":1}},"line":46},"4":{"name":"resourceTypes","decl":{"start":{"line":57,"column":9},"end":{"line":57,"column":22}},"loc":{"start":{"line":57,"column":25},"end":{"line":59,"column":1}},"line":57},"5":{"name":"namespaces","decl":{"start":{"line":64,"column":9},"end":{"line":64,"column":19}},"loc":{"start":{"line":64,"column":22},"end":{"line":66,"column":1}},"line":64},"6":{"name":"(anonymous_6)","decl":{"start":{"line":65,"column":50},"end":{"line":65,"column":51}},"loc":{"start":{"line":65,"column":55},"end":{"line":65,"column":82}},"line":65},"7":{"name":"filteredSpecification","decl":{"start":{"line":79,"column":9},"end":{"line":79,"column":30}},"loc":{"start":{"line":79,"column":39},"end":{"line":95,"column":1}},"line":79},"8":{"name":"(anonymous_8)","decl":{"start":{"line":89,"column":70},"end":{"line":89,"column":71}},"loc":{"start":{"line":89,"column":75},"end":{"line":89,"column":95}},"line":89},"9":{"name":"makePredicate","decl":{"start":{"line":106,"column":9},"end":{"line":106,"column":22}},"loc":{"start":{"line":106,"column":31},"end":{"line":116,"column":1}},"line":106},"10":{"name":"(anonymous_10)","decl":{"start":{"line":108,"column":15},"end":{"line":108,"column":16}},"loc":{"start":{"line":108,"column":20},"end":{"line":108,"column":32}},"line":108},"11":{"name":"(anonymous_11)","decl":{"start":{"line":114,"column":15},"end":{"line":114,"column":16}},"loc":{"start":{"line":114,"column":20},"end":{"line":114,"column":43}},"line":114},"12":{"name":"scrutinizablePropertyNames","decl":{"start":{"line":120,"column":9},"end":{"line":120,"column":35}},"loc":{"start":{"line":120,"column":65},"end":{"line":132,"column":1}},"line":120},"13":{"name":"scrutinizableResourceTypes","decl":{"start":{"line":137,"column":9},"end":{"line":137,"column":35}},"loc":{"start":{"line":137,"column":51},"end":{"line":145,"column":1}},"line":137}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},{"start":{"line":23,"column":4},"end":{"line":25,"column":5}}],"line":23},"1":{"loc":{"start":{"line":48,"column":4},"end":{"line":50,"column":5}},"type":"if","locations":[{"start":{"line":48,"column":4},"end":{"line":50,"column":5}},{"start":{"line":48,"column":4},"end":{"line":50,"column":5}}],"line":48},"2":{"loc":{"start":{"line":84,"column":8},"end":{"line":86,"column":9}},"type":"if","locations":[{"start":{"line":84,"column":8},"end":{"line":86,"column":9}},{"start":{"line":84,"column":8},"end":{"line":86,"column":9}}],"line":84},"3":{"loc":{"start":{"line":107,"column":4},"end":{"line":115,"column":5}},"type":"if","locations":[{"start":{"line":107,"column":4},"end":{"line":115,"column":5}},{"start":{"line":107,"column":4},"end":{"line":115,"column":5}}],"line":107},"4":{"loc":{"start":{"line":110,"column":9},"end":{"line":115,"column":5}},"type":"if","locations":[{"start":{"line":110,"column":9},"end":{"line":115,"column":5}},{"start":{"line":110,"column":9},"end":{"line":115,"column":5}}],"line":110},"5":{"loc":{"start":{"line":122,"column":4},"end":{"line":124,"column":5}},"type":"if","locations":[{"start":{"line":122,"column":4},"end":{"line":124,"column":5}},{"start":{"line":122,"column":4},"end":{"line":124,"column":5}}],"line":122},"6":{"loc":{"start":{"line":126,"column":62},"end":{"line":126,"column":83}},"type":"binary-expr","locations":[{"start":{"line":126,"column":62},"end":{"line":126,"column":77}},{"start":{"line":126,"column":81},"end":{"line":126,"column":83}}],"line":126},"7":{"loc":{"start":{"line":127,"column":8},"end":{"line":129,"column":9}},"type":"if","locations":[{"start":{"line":127,"column":8},"end":{"line":129,"column":9}},{"start":{"line":127,"column":8},"end":{"line":129,"column":9}}],"line":127},"8":{"loc":{"start":{"line":127,"column":35},"end":{"line":127,"column":96}},"type":"binary-expr","locations":[{"start":{"line":127,"column":35},"end":{"line":127,"column":60}},{"start":{"line":127,"column":64},"end":{"line":127,"column":96}}],"line":127},"9":{"loc":{"start":{"line":140,"column":8},"end":{"line":142,"column":9}},"type":"if","locations":[{"start":{"line":140,"column":8},"end":{"line":142,"column":9}},{"start":{"line":140,"column":8},"end":{"line":142,"column":9}}],"line":140},"10":{"loc":{"start":{"line":140,"column":35},"end":{"line":140,"column":96}},"type":"binary-expr","locations":[{"start":{"line":140,"column":35},"end":{"line":140,"column":60}},{"start":{"line":140,"column":64},"end":{"line":140,"column":96}}],"line":140}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1159,"6":1,"7":11,"8":11,"9":0,"10":11,"11":1,"12":6,"13":6,"14":6,"15":0,"16":1,"17":7,"18":7,"19":0,"20":7,"21":1,"22":575,"23":1,"24":1,"25":571,"26":1,"27":573,"28":573,"29":573,"30":573,"31":327183,"32":326606,"33":577,"34":577,"35":577,"36":928970,"37":1711,"38":573,"39":573,"40":1,"41":573,"42":571,"43":326041,"44":2,"45":1,"46":1,"47":571,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":1,"57":0,"58":0,"59":0,"60":0,"61":0,"62":1},"f":{"0":1159,"1":11,"2":6,"3":7,"4":575,"5":1,"6":571,"7":573,"8":928970,"9":573,"10":326041,"11":571,"12":0,"13":0},"b":{"0":[0,11],"1":[0,7],"2":[326606,577],"3":[571,2],"4":[1,1],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0]},"inputSourceMap":{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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","sourcesContent":["import * as crypto from 'crypto';\nimport * as schema from './schema';\nexport { schema };\n\n/**\n * The complete AWS CloudFormation Resource specification, having any CDK patches and enhancements included in it.\n */\nexport function specification(): schema.Specification {\n  // eslint-disable-next-line @typescript-eslint/no-require-imports\n  return require('../spec/specification.json');\n}\n\n/**\n * Return the resource specification for the given typename\n *\n * Validates that the resource exists. If you don't want this validating behavior, read from\n * specification() directly.\n */\nexport function resourceSpecification(typeName: string): schema.ResourceType {\n  const ret = specification().ResourceTypes[typeName];\n  if (!ret) {\n    throw new Error(`No such resource type: ${typeName}`);\n  }\n  return ret;\n}\n\n/**\n * Get the resource augmentations for a given type\n */\nexport function resourceAugmentation(typeName: string): schema.ResourceAugmentation {\n  const fileName = typeName.replace(/::/g, '_');\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-require-imports\n    return require(`./augmentations/${fileName}.json`);\n  } catch (e) {\n    return {};\n  }\n}\n\n/**\n * Return the property specification for the given resource's property\n */\nexport function propertySpecification(typeName: string, propertyName: string): schema.Property {\n  const ret = resourceSpecification(typeName).Properties![propertyName];\n  if (!ret) {\n    throw new Error(`Resource ${typeName} has no property: ${propertyName}`);\n  }\n  return ret;\n}\n\n/**\n * The list of resource type names defined in the ``specification``.\n */\nexport function resourceTypes() {\n  return Object.keys(specification().ResourceTypes);\n}\n\n/**\n * The list of namespaces defined in the ``specification``, that is resource name prefixes down to the second ``::``.\n */\nexport function namespaces() {\n  return Array.from(new Set(resourceTypes().map(n => n.split('::', 2).join('::'))));\n}\n\n/**\n * Obtain a filtered version of the AWS CloudFormation specification.\n *\n * @param filter the predicate to be used in order to filter which resource types from the ``Specification`` to extract.\n *         When passed as a ``string``, only the specified resource type will be extracted. When passed as a\n *         ``RegExp``, all matching resource types will be extracted. When passed as a ``function``, all resource\n *         types for which the function returned ``true`` will be extracted.\n *\n * @return a coherent sub-set of the AWS CloudFormation Resource specification, including all property types related\n *     to the selected resource types.\n */\nexport function filteredSpecification(filter: string | RegExp | Filter): schema.Specification {\n  const spec = specification();\n\n  const result: schema.Specification = { ResourceTypes: {}, PropertyTypes: {}, Fingerprint: spec.Fingerprint };\n  const predicate: Filter = makePredicate(filter);\n  for (const type of resourceTypes()) {\n    if (!predicate(type)) { continue; }\n    result.ResourceTypes[type] = spec.ResourceTypes[type];\n    const prefix = `${type}.`;\n    for (const propType of Object.keys(spec.PropertyTypes!).filter(n => n.startsWith(prefix))) {\n      result.PropertyTypes[propType] = spec.PropertyTypes![propType];\n    }\n  }\n  result.Fingerprint = crypto.createHash('sha256').update(JSON.stringify(result)).digest('base64');\n  return result;\n}\n\nexport type Filter = (name: string) => boolean;\n\n/**\n * Creates a predicate function from a given filter.\n *\n * @param filter when provided as a ``string``, performs an exact match comparison.\n *         when provided as a ``RegExp``, performs uses ``str.match(RegExp)``.\n *         when provided as a ``function``, use the function as-is.\n *\n * @returns a predicate function.\n */\nfunction makePredicate(filter: string | RegExp | Filter): Filter {\n  if (typeof filter === 'string') {\n    return s => s === filter;\n  } else if (typeof filter === 'function') {\n    return filter as Filter;\n  } else {\n    return s => s.match(filter) != null;\n  }\n}\n\n/**\n * Return the properties of the given type that require the given scrutiny type\n */\nexport function scrutinizablePropertyNames(resourceType: string, scrutinyTypes: schema.PropertyScrutinyType[]): string[] {\n  const impl = specification().ResourceTypes[resourceType];\n  if (!impl) { return []; }\n\n  const ret = new Array<string>();\n\n  for (const [propertyName, propertySpec] of Object.entries(impl.Properties || {})) {\n    if (scrutinyTypes.includes(propertySpec.ScrutinyType || schema.PropertyScrutinyType.None)) {\n      ret.push(propertyName);\n    }\n  }\n\n  return ret;\n}\n\n/**\n * Return the names of the resource types that need to be subjected to additional scrutiny\n */\nexport function scrutinizableResourceTypes(scrutinyTypes: schema.ResourceScrutinyType[]): string[] {\n  const ret = new Array<string>();\n  for (const [resourceType, resourceSpec] of Object.entries(specification().ResourceTypes)) {\n    if (scrutinyTypes.includes(resourceSpec.ScrutinyType || schema.ResourceScrutinyType.None)) {\n      ret.push(resourceType);\n    }\n  }\n\n  return ret;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8307aa7ab9177c82c32ac0c26656709bd3031998","contentHash":"800180978c4be61ede798362d0ec13a9737c2d6ff90d13465d0bff1530b3bf9f"},"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/index.js":{"path":"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/index.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":8,"column":3}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"2":{"start":{"line":3,"column":26},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":4},"end":{"line":4,"column":89}},"4":{"start":{"line":4,"column":71},"end":{"line":4,"column":83}},"5":{"start":{"line":6,"column":4},"end":{"line":6,"column":33}},"6":{"start":{"line":6,"column":26},"end":{"line":6,"column":33}},"7":{"start":{"line":7,"column":4},"end":{"line":7,"column":17}},"8":{"start":{"line":9,"column":19},"end":{"line":11,"column":1}},"9":{"start":{"line":10,"column":4},"end":{"line":10,"column":103}},"10":{"start":{"line":10,"column":21},"end":{"line":10,"column":103}},"11":{"start":{"line":10,"column":72},"end":{"line":10,"column":103}},"12":{"start":{"line":12,"column":0},"end":{"line":12,"column":62}},"13":{"start":{"line":13,"column":0},"end":{"line":13,"column":47}},"14":{"start":{"line":14,"column":0},"end":{"line":14,"column":45}},"15":{"start":{"line":15,"column":0},"end":{"line":15,"column":50}},"16":{"start":{"line":16,"column":0},"end":{"line":16,"column":50}},"17":{"start":{"line":17,"column":0},"end":{"line":17,"column":49}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":74},"end":{"line":2,"column":75}},"loc":{"start":{"line":2,"column":96},"end":{"line":5,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":58},"end":{"line":4,"column":59}},"loc":{"start":{"line":4,"column":69},"end":{"line":4,"column":85}},"line":4},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":6},"end":{"line":5,"column":7}},"loc":{"start":{"line":5,"column":28},"end":{"line":8,"column":1}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":9,"column":50},"end":{"line":9,"column":51}},"loc":{"start":{"line":9,"column":71},"end":{"line":11,"column":1}},"line":9}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":8,"column":3}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":57},"end":{"line":8,"column":2}}],"line":2},"1":{"loc":{"start":{"line":2,"column":57},"end":{"line":8,"column":2}},"type":"cond-expr","locations":[{"start":{"line":2,"column":74},"end":{"line":5,"column":1}},{"start":{"line":5,"column":6},"end":{"line":8,"column":1}}],"line":2},"2":{"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"type":"if","locations":[{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},{"start":{"line":3,"column":4},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":33}},"type":"if","locations":[{"start":{"line":6,"column":4},"end":{"line":6,"column":33}},{"start":{"line":6,"column":4},"end":{"line":6,"column":33}}],"line":6},"4":{"loc":{"start":{"line":9,"column":19},"end":{"line":11,"column":1}},"type":"binary-expr","locations":[{"start":{"line":9,"column":20},"end":{"line":9,"column":24}},{"start":{"line":9,"column":28},"end":{"line":9,"column":45}},{"start":{"line":9,"column":50},"end":{"line":11,"column":1}}],"line":9},"5":{"loc":{"start":{"line":10,"column":21},"end":{"line":10,"column":103}},"type":"if","locations":[{"start":{"line":10,"column":21},"end":{"line":10,"column":103}},{"start":{"line":10,"column":21},"end":{"line":10,"column":103}}],"line":10},"6":{"loc":{"start":{"line":10,"column":25},"end":{"line":10,"column":70}},"type":"binary-expr","locations":[{"start":{"line":10,"column":25},"end":{"line":10,"column":40}},{"start":{"line":10,"column":44},"end":{"line":10,"column":70}}],"line":10}},"s":{"0":1,"1":36,"2":36,"3":36,"4":42101,"5":0,"6":0,"7":0,"8":1,"9":5,"10":36,"11":36,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1},"f":{"0":36,"1":42101,"2":0,"3":5},"b":{"0":[1,1,1],"1":[1,0],"2":[36,0],"3":[0,0],"4":[1,1,1],"5":[36,0],"6":[36,36]},"inputSourceMap":{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA6B;AAC7B,6CAA2B;AAC3B,kDAAgC;AAChC,kDAAgC;AAChC,iDAA+B","sourcesContent":["export * from './base-types';\nexport * from './property';\nexport * from './resource-type';\nexport * from './specification';\nexport * from './augmentation';\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ad1eb01d5648413ba489b417c5184f97dea2ac98","contentHash":"99e4ed46913b03c0455b7b9d40b420ce774d6407f69dcb0ae9f806037c980233"},"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/base-types.js":{"path":"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/base-types.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"2":{"start":{"line":5,"column":0},"end":{"line":13,"column":74}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":39}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":35}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":41}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":39}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":41}},"8":{"start":{"line":11,"column":4},"end":{"line":11,"column":45}},"9":{"start":{"line":12,"column":4},"end":{"line":12,"column":35}},"10":{"start":{"line":15,"column":4},"end":{"line":26,"column":5}},"11":{"start":{"line":23,"column":12},"end":{"line":23,"column":24}},"12":{"start":{"line":25,"column":12},"end":{"line":25,"column":25}},"13":{"start":{"line":28,"column":0},"end":{"line":28,"column":42}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":26},"end":{"line":13,"column":1}},"line":5},"1":{"name":"isPrimitiveType","decl":{"start":{"line":14,"column":9},"end":{"line":14,"column":24}},"loc":{"start":{"line":14,"column":30},"end":{"line":27,"column":1}},"line":14}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":19},"end":{"line":13,"column":72}},"type":"binary-expr","locations":[{"start":{"line":13,"column":19},"end":{"line":13,"column":40}},{"start":{"line":13,"column":45},"end":{"line":13,"column":71}}],"line":13},"1":{"loc":{"start":{"line":15,"column":4},"end":{"line":26,"column":5}},"type":"switch","locations":[{"start":{"line":16,"column":8},"end":{"line":16,"column":34}},{"start":{"line":17,"column":8},"end":{"line":17,"column":32}},{"start":{"line":18,"column":8},"end":{"line":18,"column":35}},{"start":{"line":19,"column":8},"end":{"line":19,"column":34}},{"start":{"line":20,"column":8},"end":{"line":20,"column":35}},{"start":{"line":21,"column":8},"end":{"line":21,"column":37}},{"start":{"line":22,"column":8},"end":{"line":23,"column":24}},{"start":{"line":24,"column":8},"end":{"line":25,"column":25}}],"line":15}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":6886,"11":6886,"12":0,"13":1},"f":{"0":1,"1":6886},"b":{"0":[1,1],"1":[5465,5473,6068,6157,6687,6691,6886,0]},"inputSourceMap":{"version":3,"file":"base-types.js","sourceRoot":"","sources":["base-types.ts"],"names":[],"mappings":";;;AAKA,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,8BAAa,CAAA;IACb,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;IACnB,wCAAuB,CAAA;IACvB,8BAAa,CAAA;AACf,CAAC,EARW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAQxB;AAED,SAAgB,eAAe,CAAC,GAAW;IACzC,QAAQ,GAAG,EAAE;QACX,KAAK,aAAa,CAAC,MAAM,CAAC;QAC1B,KAAK,aAAa,CAAC,IAAI,CAAC;QACxB,KAAK,aAAa,CAAC,OAAO,CAAC;QAC3B,KAAK,aAAa,CAAC,MAAM,CAAC;QAC1B,KAAK,aAAa,CAAC,OAAO,CAAC;QAC3B,KAAK,aAAa,CAAC,SAAS,CAAC;QAC7B,KAAK,aAAa,CAAC,IAAI;YACrB,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;KAChB;AACH,CAAC;AAbD,0CAaC","sourcesContent":["export interface Documented {\n  /** A link to the AWS CloudFormation User Guide that provides informations about the entity. */\n  Documentation?: string;\n}\n\nexport enum PrimitiveType {\n  String = 'String',\n  Long = 'Long',\n  Integer = 'Integer',\n  Double = 'Double',\n  Boolean = 'Boolean',\n  Timestamp = 'Timestamp',\n  Json = 'Json'\n}\n\nexport function isPrimitiveType(str: string): str is PrimitiveType {\n  switch (str) {\n    case PrimitiveType.String:\n    case PrimitiveType.Long:\n    case PrimitiveType.Integer:\n    case PrimitiveType.Double:\n    case PrimitiveType.Boolean:\n    case PrimitiveType.Timestamp:\n    case PrimitiveType.Json:\n      return true;\n    default:\n      return false;\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5e58314ed834980b680fb564bc62a1929ec073b7","contentHash":"bc80ada50ca0b40e70cc7e06cebb107b9c419124b1264f6e64eeebda1c586466"},"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/property.js":{"path":"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/property.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":666}},"2":{"start":{"line":4,"column":21},"end":{"line":4,"column":44}},"3":{"start":{"line":6,"column":0},"end":{"line":10,"column":65}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":46}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":42}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":38}},"7":{"start":{"line":12,"column":4},"end":{"line":19,"column":5}},"8":{"start":{"line":16,"column":12},"end":{"line":16,"column":24}},"9":{"start":{"line":18,"column":12},"end":{"line":18,"column":25}},"10":{"start":{"line":21,"column":0},"end":{"line":21,"column":36}},"11":{"start":{"line":23,"column":4},"end":{"line":26,"column":76}},"12":{"start":{"line":28,"column":0},"end":{"line":28,"column":44}},"13":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"14":{"start":{"line":32,"column":0},"end":{"line":32,"column":50}},"15":{"start":{"line":34,"column":21},"end":{"line":34,"column":30}},"16":{"start":{"line":35,"column":4},"end":{"line":35,"column":73}},"17":{"start":{"line":37,"column":0},"end":{"line":37,"column":46}},"18":{"start":{"line":39,"column":4},"end":{"line":42,"column":84}},"19":{"start":{"line":44,"column":0},"end":{"line":44,"column":52}},"20":{"start":{"line":46,"column":4},"end":{"line":46,"column":32}},"21":{"start":{"line":48,"column":0},"end":{"line":48,"column":40}},"22":{"start":{"line":50,"column":4},"end":{"line":50,"column":60}},"23":{"start":{"line":52,"column":0},"end":{"line":52,"column":58}},"24":{"start":{"line":54,"column":4},"end":{"line":54,"column":51}},"25":{"start":{"line":56,"column":0},"end":{"line":56,"column":54}},"26":{"start":{"line":58,"column":4},"end":{"line":58,"column":31}},"27":{"start":{"line":60,"column":0},"end":{"line":60,"column":38}},"28":{"start":{"line":62,"column":4},"end":{"line":62,"column":59}},"29":{"start":{"line":64,"column":0},"end":{"line":64,"column":56}},"30":{"start":{"line":66,"column":4},"end":{"line":68,"column":48}},"31":{"start":{"line":70,"column":0},"end":{"line":70,"column":56}},"32":{"start":{"line":75,"column":4},"end":{"line":75,"column":59}},"33":{"start":{"line":77,"column":0},"end":{"line":77,"column":76}},"34":{"start":{"line":79,"column":21},"end":{"line":79,"column":25}},"35":{"start":{"line":80,"column":4},"end":{"line":80,"column":79}},"36":{"start":{"line":82,"column":0},"end":{"line":82,"column":42}},"37":{"start":{"line":84,"column":0},"end":{"line":109,"column":95}},"38":{"start":{"line":88,"column":4},"end":{"line":88,"column":42}},"39":{"start":{"line":92,"column":4},"end":{"line":92,"column":74}},"40":{"start":{"line":96,"column":4},"end":{"line":96,"column":78}},"41":{"start":{"line":100,"column":4},"end":{"line":100,"column":64}},"42":{"start":{"line":104,"column":4},"end":{"line":104,"column":58}},"43":{"start":{"line":108,"column":4},"end":{"line":108,"column":56}},"44":{"start":{"line":111,"column":4},"end":{"line":111,"column":51}},"45":{"start":{"line":113,"column":0},"end":{"line":113,"column":56}},"46":{"start":{"line":114,"column":25},"end":{"line":119,"column":1}},"47":{"start":{"line":121,"column":4},"end":{"line":123,"column":5}},"48":{"start":{"line":122,"column":8},"end":{"line":122,"column":21}},"49":{"start":{"line":124,"column":4},"end":{"line":124,"column":49}},"50":{"start":{"line":126,"column":0},"end":{"line":126,"column":46}},"51":{"start":{"line":134,"column":4},"end":{"line":137,"column":38}},"52":{"start":{"line":139,"column":0},"end":{"line":139,"column":38}},"53":{"start":{"line":141,"column":4},"end":{"line":146,"column":43}},"54":{"start":{"line":148,"column":0},"end":{"line":148,"column":54}},"55":{"start":{"line":150,"column":4},"end":{"line":150,"column":43}},"56":{"start":{"line":152,"column":0},"end":{"line":152,"column":70}},"57":{"start":{"line":154,"column":4},"end":{"line":154,"column":66}},"58":{"start":{"line":156,"column":0},"end":{"line":156,"column":46}},"59":{"start":{"line":158,"column":4},"end":{"line":158,"column":47}},"60":{"start":{"line":160,"column":0},"end":{"line":160,"column":56}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":1},"end":{"line":6,"column":2}},"loc":{"start":{"line":6,"column":23},"end":{"line":10,"column":1}},"line":6},"1":{"name":"isUpdateType","decl":{"start":{"line":11,"column":9},"end":{"line":11,"column":21}},"loc":{"start":{"line":11,"column":27},"end":{"line":20,"column":1}},"line":11},"2":{"name":"isScalarProperty","decl":{"start":{"line":22,"column":9},"end":{"line":22,"column":25}},"loc":{"start":{"line":22,"column":32},"end":{"line":27,"column":1}},"line":22},"3":{"name":"isPrimitiveProperty","decl":{"start":{"line":29,"column":9},"end":{"line":29,"column":28}},"loc":{"start":{"line":29,"column":35},"end":{"line":31,"column":1}},"line":29},"4":{"name":"isComplexProperty","decl":{"start":{"line":33,"column":9},"end":{"line":33,"column":26}},"loc":{"start":{"line":33,"column":33},"end":{"line":36,"column":1}},"line":33},"5":{"name":"isCollectionProperty","decl":{"start":{"line":38,"column":9},"end":{"line":38,"column":29}},"loc":{"start":{"line":38,"column":36},"end":{"line":43,"column":1}},"line":38},"6":{"name":"isListProperty","decl":{"start":{"line":45,"column":9},"end":{"line":45,"column":23}},"loc":{"start":{"line":45,"column":30},"end":{"line":47,"column":1}},"line":45},"7":{"name":"isPrimitiveListProperty","decl":{"start":{"line":49,"column":9},"end":{"line":49,"column":32}},"loc":{"start":{"line":49,"column":39},"end":{"line":51,"column":1}},"line":49},"8":{"name":"isComplexListProperty","decl":{"start":{"line":53,"column":9},"end":{"line":53,"column":30}},"loc":{"start":{"line":53,"column":37},"end":{"line":55,"column":1}},"line":53},"9":{"name":"isMapProperty","decl":{"start":{"line":57,"column":9},"end":{"line":57,"column":22}},"loc":{"start":{"line":57,"column":29},"end":{"line":59,"column":1}},"line":57},"10":{"name":"isPrimitiveMapProperty","decl":{"start":{"line":61,"column":9},"end":{"line":61,"column":31}},"loc":{"start":{"line":61,"column":38},"end":{"line":63,"column":1}},"line":61},"11":{"name":"isMapOfStructsProperty","decl":{"start":{"line":65,"column":9},"end":{"line":65,"column":31}},"loc":{"start":{"line":65,"column":38},"end":{"line":69,"column":1}},"line":65},"12":{"name":"isMapOfListsOfPrimitivesProperty","decl":{"start":{"line":74,"column":9},"end":{"line":74,"column":41}},"loc":{"start":{"line":74,"column":48},"end":{"line":76,"column":1}},"line":74},"13":{"name":"isUnionProperty","decl":{"start":{"line":78,"column":9},"end":{"line":78,"column":24}},"loc":{"start":{"line":78,"column":31},"end":{"line":81,"column":1}},"line":78},"14":{"name":"(anonymous_14)","decl":{"start":{"line":84,"column":1},"end":{"line":84,"column":2}},"loc":{"start":{"line":84,"column":33},"end":{"line":109,"column":1}},"line":84},"15":{"name":"isPropertyScrutinyType","decl":{"start":{"line":110,"column":9},"end":{"line":110,"column":31}},"loc":{"start":{"line":110,"column":37},"end":{"line":112,"column":1}},"line":110},"16":{"name":"isTagPropertyName","decl":{"start":{"line":120,"column":9},"end":{"line":120,"column":26}},"loc":{"start":{"line":120,"column":33},"end":{"line":125,"column":1}},"line":120},"17":{"name":"isTagProperty","decl":{"start":{"line":133,"column":9},"end":{"line":133,"column":22}},"loc":{"start":{"line":133,"column":29},"end":{"line":138,"column":1}},"line":133},"18":{"name":"isTagPropertyStandard","decl":{"start":{"line":140,"column":9},"end":{"line":140,"column":30}},"loc":{"start":{"line":140,"column":37},"end":{"line":147,"column":1}},"line":140},"19":{"name":"isTagPropertyAutoScalingGroup","decl":{"start":{"line":149,"column":9},"end":{"line":149,"column":38}},"loc":{"start":{"line":149,"column":45},"end":{"line":151,"column":1}},"line":149},"20":{"name":"isTagPropertyJson","decl":{"start":{"line":153,"column":9},"end":{"line":153,"column":26}},"loc":{"start":{"line":153,"column":33},"end":{"line":155,"column":1}},"line":153},"21":{"name":"isTagPropertyStringMap","decl":{"start":{"line":157,"column":9},"end":{"line":157,"column":31}},"loc":{"start":{"line":157,"column":38},"end":{"line":159,"column":1}},"line":157}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":16},"end":{"line":10,"column":63}},"type":"binary-expr","locations":[{"start":{"line":10,"column":16},"end":{"line":10,"column":34}},{"start":{"line":10,"column":39},"end":{"line":10,"column":62}}],"line":10},"1":{"loc":{"start":{"line":12,"column":4},"end":{"line":19,"column":5}},"type":"switch","locations":[{"start":{"line":13,"column":8},"end":{"line":13,"column":36}},{"start":{"line":14,"column":8},"end":{"line":14,"column":34}},{"start":{"line":15,"column":8},"end":{"line":16,"column":24}},{"start":{"line":17,"column":8},"end":{"line":18,"column":25}}],"line":12},"2":{"loc":{"start":{"line":23,"column":11},"end":{"line":26,"column":75}},"type":"binary-expr","locations":[{"start":{"line":23,"column":11},"end":{"line":23,"column":36}},{"start":{"line":24,"column":11},"end":{"line":24,"column":34}},{"start":{"line":26,"column":12},"end":{"line":26,"column":33}},{"start":{"line":26,"column":37},"end":{"line":26,"column":74}}],"line":23},"3":{"loc":{"start":{"line":26,"column":40},"end":{"line":26,"column":73}},"type":"binary-expr","locations":[{"start":{"line":26,"column":40},"end":{"line":26,"column":50}},{"start":{"line":26,"column":54},"end":{"line":26,"column":73}}],"line":26},"4":{"loc":{"start":{"line":35,"column":11},"end":{"line":35,"column":72}},"type":"binary-expr","locations":[{"start":{"line":35,"column":11},"end":{"line":35,"column":27}},{"start":{"line":35,"column":31},"end":{"line":35,"column":49}},{"start":{"line":35,"column":53},"end":{"line":35,"column":72}}],"line":35},"5":{"loc":{"start":{"line":39,"column":11},"end":{"line":42,"column":83}},"type":"binary-expr","locations":[{"start":{"line":39,"column":11},"end":{"line":39,"column":31}},{"start":{"line":40,"column":11},"end":{"line":40,"column":30}},{"start":{"line":42,"column":12},"end":{"line":42,"column":33}},{"start":{"line":42,"column":37},"end":{"line":42,"column":82}}],"line":39},"6":{"loc":{"start":{"line":42,"column":40},"end":{"line":42,"column":81}},"type":"binary-expr","locations":[{"start":{"line":42,"column":40},"end":{"line":42,"column":54}},{"start":{"line":42,"column":58},"end":{"line":42,"column":81}}],"line":42},"7":{"loc":{"start":{"line":50,"column":11},"end":{"line":50,"column":59}},"type":"binary-expr","locations":[{"start":{"line":50,"column":11},"end":{"line":50,"column":31}},{"start":{"line":50,"column":35},"end":{"line":50,"column":59}}],"line":50},"8":{"loc":{"start":{"line":54,"column":11},"end":{"line":54,"column":50}},"type":"binary-expr","locations":[{"start":{"line":54,"column":11},"end":{"line":54,"column":31}},{"start":{"line":54,"column":35},"end":{"line":54,"column":50}}],"line":54},"9":{"loc":{"start":{"line":62,"column":11},"end":{"line":62,"column":58}},"type":"binary-expr","locations":[{"start":{"line":62,"column":11},"end":{"line":62,"column":30}},{"start":{"line":62,"column":34},"end":{"line":62,"column":58}}],"line":62},"10":{"loc":{"start":{"line":66,"column":11},"end":{"line":68,"column":47}},"type":"binary-expr","locations":[{"start":{"line":66,"column":11},"end":{"line":66,"column":30}},{"start":{"line":67,"column":8},"end":{"line":67,"column":37}},{"start":{"line":68,"column":8},"end":{"line":68,"column":47}}],"line":66},"11":{"loc":{"start":{"line":75,"column":11},"end":{"line":75,"column":58}},"type":"binary-expr","locations":[{"start":{"line":75,"column":11},"end":{"line":75,"column":30}},{"start":{"line":75,"column":34},"end":{"line":75,"column":58}}],"line":75},"12":{"loc":{"start":{"line":80,"column":14},"end":{"line":80,"column":77}},"type":"binary-expr","locations":[{"start":{"line":80,"column":14},"end":{"line":80,"column":32}},{"start":{"line":80,"column":36},"end":{"line":80,"column":59}},{"start":{"line":80,"column":63},"end":{"line":80,"column":77}}],"line":80},"13":{"loc":{"start":{"line":109,"column":26},"end":{"line":109,"column":93}},"type":"binary-expr","locations":[{"start":{"line":109,"column":26},"end":{"line":109,"column":54}},{"start":{"line":109,"column":59},"end":{"line":109,"column":92}}],"line":109},"14":{"loc":{"start":{"line":121,"column":4},"end":{"line":123,"column":5}},"type":"if","locations":[{"start":{"line":121,"column":4},"end":{"line":123,"column":5}},{"start":{"line":121,"column":4},"end":{"line":123,"column":5}}],"line":121},"15":{"loc":{"start":{"line":134,"column":12},"end":{"line":137,"column":36}},"type":"binary-expr","locations":[{"start":{"line":134,"column":12},"end":{"line":134,"column":39}},{"start":{"line":135,"column":8},"end":{"line":135,"column":43}},{"start":{"line":136,"column":8},"end":{"line":136,"column":31}},{"start":{"line":137,"column":8},"end":{"line":137,"column":36}}],"line":134},"16":{"loc":{"start":{"line":141,"column":12},"end":{"line":146,"column":41}},"type":"binary-expr","locations":[{"start":{"line":141,"column":12},"end":{"line":141,"column":35}},{"start":{"line":142,"column":8},"end":{"line":142,"column":37}},{"start":{"line":143,"column":8},"end":{"line":143,"column":28}},{"start":{"line":144,"column":8},"end":{"line":144,"column":34}},{"start":{"line":145,"column":8},"end":{"line":145,"column":48}},{"start":{"line":146,"column":8},"end":{"line":146,"column":41}}],"line":141}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":8324,"8":8324,"9":0,"10":1,"11":7,"12":1,"13":11841,"14":1,"15":1326,"16":1326,"17":1,"18":14,"19":1,"20":4523,"21":1,"22":2502,"23":1,"24":2007,"25":1,"26":4738,"27":1,"28":2072,"29":1,"30":1329,"31":1,"32":1330,"33":1,"34":21,"35":21,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":21,"45":1,"46":1,"47":0,"48":0,"49":0,"50":1,"51":0,"52":1,"53":0,"54":1,"55":0,"56":1,"57":0,"58":1,"59":0,"60":1},"f":{"0":1,"1":8324,"2":7,"3":11841,"4":1326,"5":14,"6":4523,"7":2502,"8":2007,"9":4738,"10":2072,"11":1329,"12":1330,"13":21,"14":1,"15":21,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0},"b":{"0":[1,1],"1":[52,2118,8324,0],"2":[7,4,4,0],"3":[0,0],"4":[1326,1312,1312],"5":[14,7,7,0],"6":[0,0],"7":[2502,1107],"8":[2007,674],"9":[2072,80],"10":[1329,7,7],"11":[1330,8],"12":[21,19,13],"13":[1,1],"14":[0,0],"15":[0,0,0,0],"16":[0,0,0,0,0,0]},"inputSourceMap":{"version":3,"file":"property.js","sourceRoot":"","sources":["property.ts"],"names":[],"mappings":"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","sourcesContent":["import { Documented, PrimitiveType } from './base-types';\n\nexport type Property = ScalarProperty | CollectionProperty;\nexport type ScalarProperty = PrimitiveProperty | ComplexProperty | UnionProperty;\nexport type CollectionProperty = ListProperty | MapProperty | UnionProperty;\nexport type ListProperty = PrimitiveListProperty | ComplexListProperty;\nexport type MapProperty = PrimitiveMapProperty | ComplexMapProperty;\nexport type ComplexMapProperty = MapOfStructs | MapOfListsOfPrimitives;\nexport type TagProperty = TagPropertyStandard | TagPropertyAutoScalingGroup | TagPropertyJson | TagPropertyStringMap;\n\nexport interface PropertyBase extends Documented {\n  /**\n   * Indicates whether the property is required.\n   *\n   * @default false\n   */\n  Required?: boolean;\n  /**\n   * During a stack update, the update behavior when you add, remove, or modify the property. AWS CloudFormation\n   * replaces the resource when you change `Ìmmutable``properties. AWS CloudFormation doesn't replace the resource\n   * when you change ``Mutable`` properties. ``Conditional`` updates can be mutable or immutable, depending on, for\n   * example, which other properties you updated.\n   *\n   * @default UpdateType.Mutable\n   */\n  UpdateType?: UpdateType;\n\n  /**\n   * During a stack update, what kind of additional scrutiny changes to this property should be subjected to\n   *\n   * @default None\n   */\n  ScrutinyType?: PropertyScrutinyType;\n}\n\nexport interface PrimitiveProperty extends PropertyBase {\n  /** The valid primitive type for the property. */\n  PrimitiveType: PrimitiveType;\n}\n\nexport interface ComplexProperty extends PropertyBase {\n  /** The type of valid values for this property */\n  Type: string;\n}\n\nexport interface ListPropertyBase extends PropertyBase {\n  /**\n   * A list is a comma-separated list of values.\n   */\n  Type: 'List';\n  /**\n   * Indicates whether AWS CloudFormation allows duplicate values. If the value is ``true``, AWS CloudFormation\n   * ignores duplicate values. if the value is  ``false``, AWS CloudFormation returns an arror if you submit duplicate\n   * values.\n   */\n  DuplicatesAllowed?: boolean;\n}\n\nexport interface PrimitiveListProperty extends ListPropertyBase {\n  /** The valid primitive type for the property. */\n  PrimitiveItemType: PrimitiveType;\n}\n\nexport interface ComplexListProperty extends ListPropertyBase {\n  /** Valid values for the property */\n  ItemType: string;\n}\n\nexport interface MapPropertyBase extends PropertyBase {\n  /** A map is a set of key-value pairs, where the keys are always strings. */\n  Type: 'Map';\n  /**\n   * Indicates whether AWS CloudFormation allows duplicate values. If the value is ``true``, AWS CloudFormation\n   * ignores duplicate values. if the value is  ``false``, AWS CloudFormation returns an arror if you submit duplicate\n   * values.\n   */\n  DuplicatesAllowed?: false;\n}\n\nexport interface PrimitiveMapProperty extends MapPropertyBase {\n  /** The valid primitive type for the property. */\n  PrimitiveItemType: PrimitiveType;\n}\n\nexport interface MapOfStructs extends MapPropertyBase {\n  /** Valid values for the property */\n  ItemType: string;\n}\n\nexport interface MapOfListsOfPrimitives extends MapPropertyBase {\n  /** The type of the map values, which in this case is always 'List'. */\n  ItemType: string;\n\n  /** The valid primitive type for the lists that are the values of this map. */\n  PrimitiveItemItemType: PrimitiveType;\n}\n\nexport interface TagPropertyStandard extends PropertyBase {\n  ItemType: 'Tag' | 'TagsEntry' | 'TagRef' | 'ElasticFileSystemTag' | 'HostedZoneTag';\n  Type: 'Tags';\n}\n\nexport interface TagPropertyAutoScalingGroup extends PropertyBase {\n  ItemType: 'TagProperty';\n}\n\nexport interface TagPropertyJson extends PropertyBase {\n  PrimitiveType: PrimitiveType.Json;\n}\n\nexport interface TagPropertyStringMap extends PropertyBase {\n  PrimitiveItemType: 'String';\n}\n\n/**\n * A property type that can be one of several types. Currently used only in SAM.\n */\nexport interface UnionProperty extends PropertyBase {\n  /** Valid primitive types for the property */\n  PrimitiveTypes?: PrimitiveType[];\n  /** Valid complex types for the property */\n  Types?: string[]\n  /** Valid primitive item types for this property */\n  PrimitiveItemTypes?: PrimitiveType[];\n  /** Valid list item types for the property */\n  ItemTypes?: string[];\n}\n\nexport enum UpdateType {\n  Conditional = 'Conditional',\n  Immutable = 'Immutable',\n  Mutable = 'Mutable'\n}\n\nexport function isUpdateType(str: string): str is UpdateType {\n  switch (str) {\n    case UpdateType.Conditional:\n    case UpdateType.Immutable:\n    case UpdateType.Mutable:\n      return true;\n    default:\n      return false;\n  }\n}\n\nexport function isScalarProperty(prop: Property): prop is ScalarProperty {\n  return isPrimitiveProperty(prop)\n    || isComplexProperty(prop)\n    // A UnionProperty is only Scalar if it defines Types or PrimitiveTypes\n    || (isUnionProperty(prop) && !!(prop.Types || prop.PrimitiveTypes));\n}\n\nexport function isPrimitiveProperty(prop: Property): prop is PrimitiveProperty {\n  return !!(prop as PrimitiveProperty).PrimitiveType;\n}\n\nexport function isComplexProperty(prop: Property): prop is ComplexProperty {\n  const propType = (prop as ComplexProperty).Type;\n  return propType != null && propType !== 'Map' && propType !== 'List';\n}\n\nexport function isCollectionProperty(prop: Property): prop is CollectionProperty {\n  return isListProperty(prop)\n    || isMapProperty(prop)\n    // A UnionProperty is only Collection if it defines ItemTypes or PrimitiveItemTypes\n    || (isUnionProperty(prop) && !!(prop.ItemTypes || prop.PrimitiveItemTypes));\n}\n\nexport function isListProperty(prop: Property): prop is ListProperty {\n  return (prop as ListProperty).Type === 'List';\n}\n\nexport function isPrimitiveListProperty(prop: Property): prop is PrimitiveListProperty {\n  return isListProperty(prop) && !!(prop as PrimitiveListProperty).PrimitiveItemType;\n}\n\nexport function isComplexListProperty(prop: Property): prop is ComplexListProperty {\n  return isListProperty(prop) && !!(prop as ComplexListProperty).ItemType;\n}\n\nexport function isMapProperty(prop: Property): prop is MapProperty {\n  return (prop as MapProperty).Type === 'Map';\n}\n\nexport function isPrimitiveMapProperty(prop: Property): prop is PrimitiveMapProperty {\n  return isMapProperty(prop) && !!(prop as PrimitiveMapProperty).PrimitiveItemType;\n}\n\nexport function isMapOfStructsProperty(prop: Property): prop is MapOfStructs {\n  return isMapProperty(prop) &&\n    !isPrimitiveMapProperty(prop) &&\n    !isMapOfListsOfPrimitivesProperty(prop);\n}\n\n// note: this (and the MapOfListsOfPrimitives type) are not actually valid in the CFN spec!\n// they are only here to support our patch of the CFN spec\n// to alleviate https://github.com/aws/aws-cdk/issues/3092\nexport function isMapOfListsOfPrimitivesProperty(prop: Property): prop is MapOfListsOfPrimitives {\n  return isMapProperty(prop) && (prop as ComplexMapProperty).ItemType === 'List';\n}\n\nexport function isUnionProperty(prop: Property): prop is UnionProperty {\n  const castProp = prop as UnionProperty;\n  return !!(castProp.ItemTypes || castProp.PrimitiveTypes || castProp.Types);\n}\n\nexport enum PropertyScrutinyType {\n  /**\n   * No additional scrutiny\n   */\n  None = 'None',\n\n  /**\n   * This is an IAM policy directly on a resource\n   */\n  InlineResourcePolicy = 'InlineResourcePolicy',\n\n  /**\n   * Either an AssumeRolePolicyDocument or a dictionary of policy documents\n   */\n  InlineIdentityPolicies = 'InlineIdentityPolicies',\n\n  /**\n   * A list of managed policies (on an identity resource)\n   */\n  ManagedPolicies = 'ManagedPolicies',\n\n  /**\n   * A set of ingress rules (on a security group)\n   */\n  IngressRules = 'IngressRules',\n\n  /**\n   * A set of egress rules (on a security group)\n   */\n  EgressRules = 'EgressRules',\n}\n\nexport function isPropertyScrutinyType(str: string): str is PropertyScrutinyType {\n  return (PropertyScrutinyType as any)[str] !== undefined;\n}\n\nconst tagPropertyNames = {\n  FileSystemTags: '',\n  HostedZoneTags: '',\n  Tags: '',\n  UserPoolTags: '',\n};\n\nexport type TagPropertyName = keyof typeof tagPropertyNames;\n\nexport function isTagPropertyName(name?: string): name is TagPropertyName {\n  if (undefined === name) {\n    return false;\n  }\n  return tagPropertyNames.hasOwnProperty(name);\n}\n/**\n * This function validates that the property **can** be a Tag Property\n *\n * The property is only a Tag if the name of this property is Tags, which is\n * validated using `ResourceType.isTaggable(resource)`.\n */\nexport function isTagProperty(prop: Property): prop is TagProperty {\n  return (\n    isTagPropertyStandard(prop) ||\n    isTagPropertyAutoScalingGroup(prop) ||\n    isTagPropertyJson(prop) ||\n    isTagPropertyStringMap(prop)\n  );\n}\n\nexport function isTagPropertyStandard(prop: Property): prop is TagPropertyStandard {\n  return (\n    (prop as TagPropertyStandard).ItemType === 'Tag' ||\n    (prop as TagPropertyStandard).ItemType === 'TagsEntry' ||\n    (prop as TagPropertyStandard).Type === 'Tags' ||\n    (prop as TagPropertyStandard).ItemType === 'TagRef' ||\n    (prop as TagPropertyStandard).ItemType === 'ElasticFileSystemTag' ||\n    (prop as TagPropertyStandard).ItemType === 'HostedZoneTag'\n  );\n\n}\n\nexport function isTagPropertyAutoScalingGroup(prop: Property): prop is TagPropertyAutoScalingGroup {\n  return (prop as TagPropertyAutoScalingGroup).ItemType === 'TagProperty';\n}\n\nexport function isTagPropertyJson(prop: Property): prop is TagPropertyJson {\n  return (prop as TagPropertyJson).PrimitiveType === PrimitiveType.Json;\n}\n\nexport function isTagPropertyStringMap(prop: Property): prop is TagPropertyStringMap {\n  return (prop as TagPropertyStringMap).PrimitiveItemType === 'String';\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"86290c1977099560cd40401429162e43052c94b7","contentHash":"e181ae4932dce5dca4fc790c1a4a6934d8d3c00fc01bc1bfe59bd5c2ebc0c451"},"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/resource-type.js":{"path":"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/resource-type.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":309}},"2":{"start":{"line":4,"column":19},"end":{"line":4,"column":40}},"3":{"start":{"line":13,"column":4},"end":{"line":15,"column":5}},"4":{"start":{"line":14,"column":8},"end":{"line":14,"column":21}},"5":{"start":{"line":16,"column":4},"end":{"line":20,"column":5}},"6":{"start":{"line":17,"column":8},"end":{"line":19,"column":9}},"7":{"start":{"line":18,"column":12},"end":{"line":18,"column":24}},"8":{"start":{"line":21,"column":4},"end":{"line":21,"column":17}},"9":{"start":{"line":23,"column":0},"end":{"line":23,"column":48}},"10":{"start":{"line":25,"column":4},"end":{"line":25,"column":32}},"11":{"start":{"line":27,"column":0},"end":{"line":27,"column":52}},"12":{"start":{"line":29,"column":4},"end":{"line":29,"column":32}},"13":{"start":{"line":31,"column":0},"end":{"line":31,"column":42}},"14":{"start":{"line":33,"column":4},"end":{"line":33,"column":31}},"15":{"start":{"line":35,"column":0},"end":{"line":35,"column":40}},"16":{"start":{"line":37,"column":4},"end":{"line":37,"column":61}},"17":{"start":{"line":39,"column":0},"end":{"line":39,"column":60}},"18":{"start":{"line":41,"column":4},"end":{"line":41,"column":52}},"19":{"start":{"line":43,"column":0},"end":{"line":43,"column":56}},"20":{"start":{"line":45,"column":4},"end":{"line":45,"column":60}},"21":{"start":{"line":47,"column":0},"end":{"line":47,"column":58}},"22":{"start":{"line":54,"column":0},"end":{"line":63,"column":77}},"23":{"start":{"line":58,"column":4},"end":{"line":58,"column":36}},"24":{"start":{"line":62,"column":4},"end":{"line":62,"column":34}},"25":{"start":{"line":65,"column":0},"end":{"line":94,"column":95}},"26":{"start":{"line":69,"column":4},"end":{"line":69,"column":42}},"27":{"start":{"line":75,"column":4},"end":{"line":75,"column":78}},"28":{"start":{"line":81,"column":4},"end":{"line":81,"column":78}},"29":{"start":{"line":85,"column":4},"end":{"line":85,"column":66}},"30":{"start":{"line":89,"column":4},"end":{"line":89,"column":72}},"31":{"start":{"line":93,"column":4},"end":{"line":93,"column":70}},"32":{"start":{"line":96,"column":4},"end":{"line":96,"column":51}},"33":{"start":{"line":98,"column":0},"end":{"line":98,"column":56}}},"fnMap":{"0":{"name":"isTaggableResource","decl":{"start":{"line":12,"column":9},"end":{"line":12,"column":27}},"loc":{"start":{"line":12,"column":34},"end":{"line":22,"column":1}},"line":12},"1":{"name":"isPrimitiveAttribute","decl":{"start":{"line":24,"column":9},"end":{"line":24,"column":29}},"loc":{"start":{"line":24,"column":36},"end":{"line":26,"column":1}},"line":24},"2":{"name":"isListAttribute","decl":{"start":{"line":28,"column":9},"end":{"line":28,"column":24}},"loc":{"start":{"line":28,"column":31},"end":{"line":30,"column":1}},"line":28},"3":{"name":"isMapAttribute","decl":{"start":{"line":32,"column":9},"end":{"line":32,"column":23}},"loc":{"start":{"line":32,"column":30},"end":{"line":34,"column":1}},"line":32},"4":{"name":"isPrimitiveListAttribute","decl":{"start":{"line":36,"column":9},"end":{"line":36,"column":33}},"loc":{"start":{"line":36,"column":40},"end":{"line":38,"column":1}},"line":36},"5":{"name":"isComplexListAttribute","decl":{"start":{"line":40,"column":9},"end":{"line":40,"column":31}},"loc":{"start":{"line":40,"column":38},"end":{"line":42,"column":1}},"line":40},"6":{"name":"isPrimitiveMapAttribute","decl":{"start":{"line":44,"column":9},"end":{"line":44,"column":32}},"loc":{"start":{"line":44,"column":39},"end":{"line":46,"column":1}},"line":44},"7":{"name":"(anonymous_7)","decl":{"start":{"line":54,"column":1},"end":{"line":54,"column":2}},"loc":{"start":{"line":54,"column":27},"end":{"line":63,"column":1}},"line":54},"8":{"name":"(anonymous_8)","decl":{"start":{"line":65,"column":1},"end":{"line":65,"column":2}},"loc":{"start":{"line":65,"column":33},"end":{"line":94,"column":1}},"line":65},"9":{"name":"isResourceScrutinyType","decl":{"start":{"line":95,"column":9},"end":{"line":95,"column":31}},"loc":{"start":{"line":95,"column":37},"end":{"line":97,"column":1}},"line":95}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":4},"end":{"line":15,"column":5}},"type":"if","locations":[{"start":{"line":13,"column":4},"end":{"line":15,"column":5}},{"start":{"line":13,"column":4},"end":{"line":15,"column":5}}],"line":13},"1":{"loc":{"start":{"line":17,"column":8},"end":{"line":19,"column":9}},"type":"if","locations":[{"start":{"line":17,"column":8},"end":{"line":19,"column":9}},{"start":{"line":17,"column":8},"end":{"line":19,"column":9}}],"line":17},"2":{"loc":{"start":{"line":17,"column":12},"end":{"line":17,"column":95}},"type":"binary-expr","locations":[{"start":{"line":17,"column":12},"end":{"line":17,"column":45}},{"start":{"line":17,"column":49},"end":{"line":17,"column":95}}],"line":17},"3":{"loc":{"start":{"line":37,"column":11},"end":{"line":37,"column":60}},"type":"binary-expr","locations":[{"start":{"line":37,"column":11},"end":{"line":37,"column":32}},{"start":{"line":37,"column":36},"end":{"line":37,"column":60}}],"line":37},"4":{"loc":{"start":{"line":41,"column":11},"end":{"line":41,"column":51}},"type":"binary-expr","locations":[{"start":{"line":41,"column":11},"end":{"line":41,"column":32}},{"start":{"line":41,"column":36},"end":{"line":41,"column":51}}],"line":41},"5":{"loc":{"start":{"line":45,"column":11},"end":{"line":45,"column":59}},"type":"binary-expr","locations":[{"start":{"line":45,"column":11},"end":{"line":45,"column":31}},{"start":{"line":45,"column":35},"end":{"line":45,"column":59}}],"line":45},"6":{"loc":{"start":{"line":63,"column":20},"end":{"line":63,"column":75}},"type":"binary-expr","locations":[{"start":{"line":63,"column":20},"end":{"line":63,"column":42}},{"start":{"line":63,"column":47},"end":{"line":63,"column":74}}],"line":63},"7":{"loc":{"start":{"line":94,"column":26},"end":{"line":94,"column":93}},"type":"binary-expr","locations":[{"start":{"line":94,"column":26},"end":{"line":94,"column":54}},{"start":{"line":94,"column":59},"end":{"line":94,"column":92}}],"line":94}},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":1,"10":549,"11":1,"12":576,"13":1,"14":1,"15":1,"16":27,"17":1,"18":27,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":12,"33":1},"f":{"0":0,"1":549,"2":576,"3":1,"4":27,"5":27,"6":1,"7":1,"8":1,"9":12},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[27,26],"4":[27,26],"5":[1,1],"6":[1,1],"7":[1,1]},"inputSourceMap":{"version":3,"file":"resource-type.js","sourceRoot":"","sources":["resource-type.ts"],"names":[],"mappings":";;;AACA,yCAAqF;AAgErF;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,IAAkB;IACnD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;QACjC,OAAO,KAAK,CAAC;KACd;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;QAC9C,IAAI,4BAAiB,CAAC,GAAG,CAAC,IAAI,wBAAa,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;YACjE,OAAO,IAAI,CAAC;SACb;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,gDAUC;AAED,SAAgB,oBAAoB,CAAC,IAAe;IAClD,OAAO,CAAC,CAAE,IAA2B,CAAC,aAAa,CAAC;AACtD,CAAC;AAFD,oDAEC;AAED,SAAgB,eAAe,CAAC,IAAe;IAC7C,OAAQ,IAAsB,CAAC,IAAI,KAAK,MAAM,CAAC;AACjD,CAAC;AAFD,0CAEC;AAED,SAAgB,cAAc,CAAC,IAAe;IAC5C,OAAQ,IAAqB,CAAC,IAAI,KAAK,KAAK,CAAC;AAC/C,CAAC;AAFD,wCAEC;AAED,SAAgB,wBAAwB,CAAC,IAAe;IACtD,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,IAA+B,CAAC,iBAAiB,CAAC;AACvF,CAAC;AAFD,4DAEC;AAED,SAAgB,sBAAsB,CAAC,IAAe;IACpD,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,IAA6B,CAAC,QAAQ,CAAC;AAC5E,CAAC;AAFD,wDAEC;AAED,SAAgB,uBAAuB,CAAC,IAAe;IACrD,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,IAA8B,CAAC,iBAAiB,CAAC;AACrF,CAAC;AAFD,0DAEC;AAED;;;;GAIG;AACH,IAAY,cAUX;AAVD,WAAY,cAAc;IACxB;;OAEG;IACH,+BAAa,CAAA;IAEb;;OAEG;IACH,6BAAW,CAAA;AACb,CAAC,EAVW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAUzB;AAED,IAAY,oBAkCX;AAlCD,WAAY,oBAAoB;IAC9B;;OAEG;IACH,qCAAa,CAAA;IAEb;;;;OAIG;IACH,yEAAiD,CAAA;IAEjD;;;;OAIG;IACH,yEAAiD,CAAA;IAEjD;;OAEG;IACH,6DAAqC,CAAA;IAErC;;OAEG;IACH,mEAA2C,CAAA;IAE3C;;OAEG;IACH,iEAAyC,CAAA;AAC3C,CAAC,EAlCW,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAkC/B;AAED,SAAgB,sBAAsB,CAAC,GAAW;IAChD,OAAQ,oBAA4B,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;AAC1D,CAAC;AAFD,wDAEC","sourcesContent":["import { Documented, PrimitiveType } from './base-types';\nimport { isTagProperty, isTagPropertyName, Property, TagProperty } from './property';\n\nexport interface ResourceType extends Documented {\n  /**\n   * The attributes exposed by the resource type, if any.\n   */\n  Attributes?: { [name: string]: Attribute };\n  /**\n   * The properties accepted by the resource type, if any.\n   */\n  Properties?: { [name: string]: Property };\n  /**\n   * The ``Transform`` required by the resource type, if any.\n   */\n  RequiredTransform?: string;\n\n  /**\n   * What kind of value the 'Ref' operator refers to, if any.\n   */\n  RefKind?: string;\n\n  /**\n   * During a stack update, what kind of additional scrutiny changes to this resource should be subjected to\n   *\n   * @default None\n   */\n  ScrutinyType?: ResourceScrutinyType;\n}\n\nexport interface TaggableResource extends ResourceType {\n  Properties: {\n    FileSystemTags: TagProperty;\n    HostedZoneTags: TagProperty;\n    Tags: TagProperty;\n    UserPoolTags: TagProperty;\n    [name: string]: Property;\n  }\n}\n\nexport type Attribute = PrimitiveAttribute | ListAttribute | MapAttribute;\n\nexport interface PrimitiveAttribute {\n  PrimitiveType: PrimitiveType;\n}\n\nexport type ListAttribute = PrimitiveListAttribute | ComplexListAttribute;\n\nexport interface PrimitiveListAttribute {\n  Type: 'List';\n  PrimitiveItemType: PrimitiveType;\n}\n\nexport interface ComplexListAttribute {\n  Type: 'List';\n  ItemType: string;\n}\n\nexport type MapAttribute = PrimitiveMapAttribute;\n\nexport interface PrimitiveMapAttribute {\n  Type: 'Map';\n  PrimitiveItemType: PrimitiveType;\n}\n\n/**\n * Determine if the resource supports tags\n *\n * This function combined with isTagProperty determines if the `cdk.TagManager`\n * and `cdk.TaggableResource` can process these tags. If not, standard code\n * generation of properties will be used.\n */\nexport function isTaggableResource(spec: ResourceType): spec is TaggableResource {\n  if (spec.Properties === undefined) {\n    return false;\n  }\n  for (const key of Object.keys(spec.Properties)) {\n    if (isTagPropertyName(key) && isTagProperty(spec.Properties[key])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function isPrimitiveAttribute(spec: Attribute): spec is PrimitiveAttribute {\n  return !!(spec as PrimitiveAttribute).PrimitiveType;\n}\n\nexport function isListAttribute(spec: Attribute): spec is ListAttribute {\n  return (spec as ListAttribute).Type === 'List';\n}\n\nexport function isMapAttribute(spec: Attribute): spec is MapAttribute {\n  return (spec as MapAttribute).Type === 'Map';\n}\n\nexport function isPrimitiveListAttribute(spec: Attribute): spec is PrimitiveListAttribute {\n  return isListAttribute(spec) && !!(spec as PrimitiveListAttribute).PrimitiveItemType;\n}\n\nexport function isComplexListAttribute(spec: Attribute): spec is ComplexListAttribute {\n  return isListAttribute(spec) && !!(spec as ComplexListAttribute).ItemType;\n}\n\nexport function isPrimitiveMapAttribute(spec: Attribute): spec is PrimitiveMapAttribute {\n  return isMapAttribute(spec) && !!(spec as PrimitiveMapAttribute).PrimitiveItemType;\n}\n\n/**\n * Type declaration for special values of the \"Ref\" attribute represents.\n *\n * The attribute can take on more values than these, but these are treated specially.\n */\nexport enum SpecialRefKind {\n  /**\n   * No '.ref' member is generated for this type, because it doesn't have a meaningful value.\n   */\n  None = 'None',\n\n  /**\n   * The generated class will inherit from the built-in 'Arn' type.\n   */\n  Arn = 'Arn'\n}\n\nexport enum ResourceScrutinyType {\n  /**\n   * No additional scrutiny\n   */\n  None = 'None',\n\n  /**\n   * An externally attached policy document to a resource\n   *\n   * (Common for SQS, SNS, S3, ...)\n   */\n  ResourcePolicyResource = 'ResourcePolicyResource',\n\n  /**\n   * This is an IAM policy on an identity resource\n   *\n   * (Basically saying: this is AWS::IAM::Policy)\n   */\n  IdentityPolicyResource = 'IdentityPolicyResource',\n\n  /**\n   * This is a Lambda Permission policy\n   */\n  LambdaPermission = 'LambdaPermission',\n\n  /**\n   * An ingress rule object\n   */\n  IngressRuleResource = 'IngressRuleResource',\n\n  /**\n   * A set of egress rules\n   */\n  EgressRuleResource = 'EgressRuleResource',\n}\n\nexport function isResourceScrutinyType(str: string): str is ResourceScrutinyType {\n  return (ResourceScrutinyType as any)[str] !== undefined;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"88c541f0ca804c8b8af041c517e0ade2cc4ae866","contentHash":"47bf11ed368286dffbf21be728711061f9ffa412b6cc6d61bf4c5fb9db8edd1e"},"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/specification.js":{"path":"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/specification.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":30}},"2":{"start":{"line":8,"column":4},"end":{"line":8,"column":40}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}}},"fnMap":{"0":{"name":"isRecordType","decl":{"start":{"line":7,"column":9},"end":{"line":7,"column":21}},"loc":{"start":{"line":7,"column":36},"end":{"line":9,"column":1}},"line":7}},"branchMap":{},"s":{"0":1,"1":1,"2":3220,"3":1},"f":{"0":3220},"b":{},"inputSourceMap":{"version":3,"file":"specification.js","sourceRoot":"","sources":["specification.ts"],"names":[],"mappings":";;;AAkDA;;GAEG;AACH,SAAgB,YAAY,CAAC,YAA0B;IACrD,OAAO,YAAY,IAAI,YAAY,CAAC;AACtC,CAAC;AAFD,oCAEC","sourcesContent":["import { Documented } from './base-types';\nimport { Property } from './property';\nimport { ResourceType } from './resource-type';\n\n/**\n * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification-format.html\n */\nexport interface Specification {\n  /**\n   * A fingerprint of the template, that can be used to determine whether the template has changed.\n   */\n  Fingerprint: string;\n  /**\n   * For resources that have properties within a property (also known as subproperties), a list of subproperty\n   * specifications, such as which properties are required, the type of allowed value for each property, and their\n   * update behavior.\n   */\n  PropertyTypes: { [name: string]: PropertyType };\n  /**\n   * The list of resources and information about each resource's properties, such as it's property names, which\n   * properties are required, and their update behavior.\n   */\n  ResourceTypes: { [name: string]: ResourceType };\n}\n\n/**\n * Describing a user-defined property type\n *\n * Even though looks weird, the CloudFormation spec does not make a distinction between properties and\n * property TYPES: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification-format.html\n *\n * That means that a \"type\" comes with fields such as \"Required\", \"UpdateType Mutable\", etc\n * (even though those only make sense for a particular PROPERTY of that type). They only seem to occur\n * on non-Record properties though.\n *\n * In practice, even though aliases for Primitive properties are allowed, only RecordProperties\n * and CollectionProperties seem to actually occur in the spec in the \"types\" section.\n */\nexport type PropertyType = RecordProperty | Property;\n\n/**\n * The specifications of a property object type.\n */\nexport interface RecordProperty extends Documented {\n  /**\n   * The properties of the Property type.\n   */\n  Properties: { [name: string]: Property };\n}\n\n/**\n * Whether the given type definition is a Record property\n */\nexport function isRecordType(propertyType: PropertyType): propertyType is RecordProperty {\n  return 'Properties' in propertyType;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8979b1ba0bebe2d3592f4f429523ea26235abc5f","contentHash":"ec864154ec362f2be2f518bb6c8be51b569caf26d1f8cbe73300746132932cc2"},"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/augmentation.js":{"path":"/codebuild/output/src139190018/src/packages/@aws-cdk/cfnspec/lib/schema/augmentation.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":28}},"2":{"start":{"line":5,"column":0},"end":{"line":27,"column":65}},"3":{"start":{"line":12,"column":4},"end":{"line":12,"column":36}},"4":{"start":{"line":19,"column":4},"end":{"line":19,"column":34}},"5":{"start":{"line":26,"column":4},"end":{"line":26,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":23},"end":{"line":27,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":27,"column":16},"end":{"line":27,"column":63}},"type":"binary-expr","locations":[{"start":{"line":27,"column":16},"end":{"line":27,"column":34}},{"start":{"line":27,"column":39},"end":{"line":27,"column":62}}],"line":27}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"augmentation.js","sourceRoot":"","sources":["augmentation.ts"],"names":[],"mappings":";;;AAwEA,IAAY,UAwBX;AAxBD,WAAY,UAAU;IACpB;;;;;OAKG;IACH,+BAAiB,CAAA;IAEjB;;;;;OAKG;IACH,6BAAe,CAAA;IAEf;;;;;OAKG;IACH,6BAAe,CAAA;AACjB,CAAC,EAxBW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAwBrB","sourcesContent":["/**\n * Augmentations for a CloudFormation resource type\n */\nexport interface ResourceAugmentation {\n  /**\n   * Metric augmentations for this resource type\n   */\n  metrics?: ResourceMetricAugmentations;\n\n  /**\n   * Options for this resource augmentation\n   *\n   * @default no options\n   */\n  options?: AugmentationOptions;\n}\n\nexport interface AugmentationOptions {\n  /**\n   * The name of the file containing the class to be \"augmented\".\n   *\n   * @default kebab cased CloudFormation resource name + '-base'\n   */\n  classFile?: string;\n\n  /**\n   * The name of the class to be \"augmented\".\n   *\n   * @default CloudFormation resource name + 'Base'\n   */\n  class?: string;\n\n  /**\n   * The name of the file containing the interface to be \"augmented\".\n   *\n   * @default - same as ``classFile``.\n   */\n  interfaceFile?: string;\n\n  /**\n   * The name of the interface to be \"augmented\".\n   *\n   * @default 'I' + CloudFormation resource name\n   */\n  interface?: string;\n}\n\nexport interface ResourceMetricAugmentations {\n  namespace: string;\n  dimensions: {[key: string]: string};\n  metrics: ResourceMetric[];\n}\n\nexport interface ResourceMetric {\n  /**\n   * Uppercase-first metric name\n   */\n  name: string;\n\n  /**\n   * Documentation line\n   */\n  documentation: string;\n\n  /**\n   * Whether this is an even count (1 gets emitted every time something occurs)\n   *\n   * @default MetricType.Attrib\n   */\n  type?: MetricType;\n}\n\nexport enum MetricType {\n  /**\n   * This metric measures an attribute of events\n   *\n   * It could be time, or request size, or similar. The default\n   * aggregate for this type of event is \"Avg\".\n   */\n  Attrib = 'attrib',\n\n  /**\n   * This metric is counting events.\n   *\n   * This means the metric \"1\" is emitted every time an event occurs.\n   * Only \"Sum\" is a meaningful aggregate of this type of metric.\n   */\n  Count = 'count',\n\n  /**\n   * This metric is emitting a size.\n   *\n   * The metric is not event-based, but measures some global ever-changing\n   * property. The most useful aggregate of this type of metric is \"Max\".\n   */\n  Gauge = 'gauge'\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"551b90bf4ef9d0c3d35a447cb77b0159ee7539a6","contentHash":"6f50cf20fe112b95ab68a754132784d127e7a10613c0b11c47158798f0e9f56a"}}