{ "kind": "SourceFile", "statements": [{ "kind": "ImportDeclaration", "importClause": { "kind": "ImportClause", "isTypeOnly": false, "namedBindings": { "kind": "NamedImports", "elements": [{ "kind": "ImportSpecifier", "isTypeOnly": false, "propertyName": { "kind": "Identifier", "escapedText": "Blueprint", "id": 6 }, "name": { "kind": "Identifier", "escapedText": "ParentBlueprint", "id": 7 }, "id": 5 }, { "kind": "ImportSpecifier", "isTypeOnly": false, "propertyName": { "kind": "Identifier", "escapedText": "Options", "id": 9 }, "name": { "kind": "Identifier", "escapedText": "ParentOptions", "id": 10 }, "id": 8 }], "id": 4 }, "id": 3 }, "moduleSpecifier": { "kind": "StringLiteral", "text": "@amazon-codecatalyst/blueprints.blueprint", "hasExtendedUnicodeEscape": false, "id": 11 }, "id": 2 }, { "kind": "TypeAliasDeclaration", "name": { "kind": "Identifier", "escapedText": "SupportedTupleType", "id": 13 }, "type": { "kind": "UnionType", "types": [{ "kind": "StringKeyword", "id": 15 }, { "kind": "NumberKeyword", "id": 16 }], "id": 14 }, "jsDoc": [{ "kind": "JSDocComment", "comment": "We expose the touple type because typescript will treat defaulted touples as string[];" }], "id": 12 }, { "kind": "TypeAliasDeclaration", "name": { "kind": "Identifier", "escapedText": "Tuple", "id": 19 }, "modifiers": [{ "kind": "ExportKeyword", "id": 18 }], "typeParameters": [{ "kind": "TypeParameter", "name": { "kind": "Identifier", "escapedText": "T", "id": 21 }, "constraint": { "kind": "TupleType", "elements": [{ "kind": "TypeReference", "typeName": { "kind": "Identifier", "escapedText": "SupportedTupleType", "id": 24 }, "id": 23 }, { "kind": "TypeReference", "typeName": { "kind": "Identifier", "escapedText": "SupportedTupleType", "id": 26 }, "id": 25 }], "id": 22 }, "id": 20 }], "type": { "kind": "UnionType", "types": [{ "kind": "TypeReference", "typeName": { "kind": "Identifier", "escapedText": "T", "id": 29 }, "id": 28 }, { "kind": "ArrayType", "elementType": { "kind": "TypeReference", "typeName": { "kind": "Identifier", "escapedText": "SupportedTupleType", "id": 32 }, "id": 31 }, "id": 30 }], "id": 27 }, "jsDoc": [{ "kind": "JSDocComment", "comment": "This returns a string[] of length 2" }], "id": 17 }, { "kind": "InterfaceDeclaration", "name": { "kind": "Identifier", "escapedText": "Options", "id": 35 }, "modifiers": [{ "kind": "ExportKeyword", "id": 34 }], "heritageClauses": [{ "kind": "HeritageClause", "token": 94, "types": [{ "kind": "ExpressionWithTypeArguments", "expression": { "kind": "Identifier", "escapedText": "ParentOptions", "id": 38 }, "id": 37 }], "id": 36 }], "members": [{ "kind": "PropertySignature", "name": { "kind": "Identifier", "escapedText": "toupleValues", "id": 40 }, "type": { "kind": "TypeLiteral", "members": [{ "kind": "PropertySignature", "name": { "kind": "Identifier", "escapedText": "singles", "id": 44 }, "type": { "kind": "TypeLiteral", "members": [{ "kind": "PropertySignature", "name": { "kind": "Identifier", "escapedText": "emptyTouple", "id": 47 }, "type": { "kind": "TypeReference", "typeName": { "kind": "Identifier", "escapedText": "Tuple", "id": 50 }, "typeArguments": [{ "kind": "TupleType", "elements": [{ "kind": "StringKeyword", "id": 52 }, { "kind": "NumberKeyword", "id": 53 }], "id": 51 }], "id": 49 }, "questionToken": { "kind": "QuestionToken", "id": 48 }, "jsDoc": [{ "kind": "JSDocComment", "comment": "empty tuple map. This should default to string:string", "tags": [{ "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "validationRegex" }, "comment": "/^[a-zA-Z0-9]{1,50}$/" }] }], "id": 46 }, { "kind": "PropertySignature", "name": { "kind": "Identifier", "escapedText": "doubleTouple", "id": 55 }, "type": { "kind": "TypeReference", "typeName": { "kind": "Identifier", "escapedText": "Tuple", "id": 57 }, "typeArguments": [{ "kind": "TupleType", "elements": [{ "kind": "StringKeyword", "id": 59 }, { "kind": "StringKeyword", "id": 60 }], "id": 58 }], "id": 56 }, "jsDoc": [{ "kind": "JSDocComment", "comment": "Traditional string to string mapping explictly", "tags": [{ "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "description" }, "comment": "overall description" }, { "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "validationRegex" }, "comment": "/^[a-zA-Z0-9]{1,50}$/" }] }], "id": 54 }, { "kind": "PropertySignature", "name": { "kind": "Identifier", "escapedText": "doubleToupleNum", "id": 62 }, "type": { "kind": "TypeReference", "typeName": { "kind": "Identifier", "escapedText": "Tuple", "id": 64 }, "typeArguments": [{ "kind": "TupleType", "elements": [{ "kind": "StringKeyword", "id": 66 }, { "kind": "NumberKeyword", "id": 67 }], "id": 65 }], "id": 63 }, "jsDoc": [{ "kind": "JSDocComment", "tags": [{ "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "validationRegex" }, "comment": "/^[a-zA-Z0-9]{1,50}$/" }] }], "id": 61 }], "id": 45 }, "jsDoc": [{ "kind": "JSDocComment", "comment": "Only Touples of length 2 are supported" }], "id": 43 }, { "kind": "PropertySignature", "name": { "kind": "Identifier", "escapedText": "lists", "id": 69 }, "type": { "kind": "TypeLiteral", "members": [{ "kind": "PropertySignature", "name": { "kind": "Identifier", "escapedText": "doubleTouple", "id": 72 }, "type": { "kind": "ArrayType", "elementType": { "kind": "TypeReference", "typeName": { "kind": "Identifier", "escapedText": "Tuple", "id": 75 }, "typeArguments": [{ "kind": "TupleType", "elements": [{ "kind": "StringKeyword", "id": 77 }, { "kind": "StringKeyword", "id": 78 }], "id": 76 }], "id": 74 }, "id": 73 }, "jsDoc": [{ "kind": "JSDocComment", "comment": "Traditional string to string mapping explictly", "tags": [{ "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "description" }, "comment": "overall description" }, { "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "validationRegex" }, "comment": "/^[a-zA-Z0-9]{1,50}$/" }] }], "id": 71 }, { "kind": "PropertySignature", "name": { "kind": "Identifier", "escapedText": "doubleToupleNum", "id": 80 }, "type": { "kind": "ArrayType", "elementType": { "kind": "TypeReference", "typeName": { "kind": "Identifier", "escapedText": "Tuple", "id": 83 }, "typeArguments": [{ "kind": "TupleType", "elements": [{ "kind": "StringKeyword", "id": 85 }, { "kind": "NumberKeyword", "id": 86 }], "id": 84 }], "id": 82 }, "id": 81 }, "jsDoc": [{ "kind": "JSDocComment", "tags": [{ "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "validationRegex" }, "comment": "/^[a-zA-Z0-9]{1,50}$/" }] }], "id": 79 }], "id": 70 }, "id": 68 }], "id": 42 }, "questionToken": { "kind": "QuestionToken", "id": 41 }, "jsDoc": [{ "kind": "JSDocComment", "comment": "These are touple parings.", "tags": [{ "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "collapsed" } }] }], "id": 39 }], "jsDoc": [{ "kind": "JSDocComment", "comment": "This is the 'Options' interface. The 'Options' interface is interpreted by the wizard to dynamically generate a selection UI.\n1. It MUST be called 'Options' in order to be interpreted by the wizard\n2. This is how you control the fields that show up on a wizard selection panel. Keeping this small leads to a better user experience.\n3. You can use JSDOCs and annotations such as: '?', @advanced, @hidden, @display - textarea, etc. to control how the wizard displays certain fields.\n4. All required members of 'Options' must be defined in 'defaults.json' to synth your blueprint locally\n5. The 'Options' member values defined in 'defaults.json' will be used to populate the wizard selection panel with default values", "tags": [{ "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "requires" } }, { "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "amazon-codecatalyst" }, "comment": "/blueprints.blueprint-builder" }, { "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "requires" } }, { "kind": "FirstJSDocTagNode", "tagName": { "kind": "Identifier", "escapedText": "amazon-codecatalyst" }, "comment": "/blueprints.sam-serverless-application" }] }], "id": 33 }, { "kind": "ClassDeclaration", "name": { "kind": "Identifier", "escapedText": "Blueprint", "id": 90 }, "modifiers": [{ "kind": "ExportKeyword", "id": 88 }, { "kind": "DeclareKeyword", "id": 89 }], "heritageClauses": [{ "kind": "HeritageClause", "token": 94, "types": [{ "kind": "ExpressionWithTypeArguments", "expression": { "kind": "Identifier", "escapedText": "ParentBlueprint", "id": 93 }, "id": 92 }], "id": 91 }], "members": [{ "kind": "Constructor", "parameters": [{ "kind": "Parameter", "name": { "kind": "Identifier", "escapedText": "options_", "id": 96 }, "type": { "kind": "TypeReference", "typeName": { "kind": "Identifier", "escapedText": "Options", "id": 98 }, "id": 97 }, "id": 95 }], "id": 94 }, { "kind": "MethodDeclaration", "name": { "kind": "Identifier", "escapedText": "synth", "id": 100 }, "parameters": [], "type": { "kind": "TypeReference", "typeName": { "kind": "Identifier", "escapedText": "Promise", "id": 102 }, "typeArguments": [{ "kind": "VoidKeyword", "id": 103 }], "id": 101 }, "id": 99 }], "jsDoc": [{ "kind": "JSDocComment", "comment": "This is the actual blueprint class.\n1. This MUST be the only 'class' exported, as 'Blueprint'\n2. This Blueprint should extend another ParentBlueprint" }], "id": 87 }, { "kind": "ExportDeclaration", "isTypeOnly": false, "exportClause": { "kind": "NamedExports", "elements": [], "id": 105 }, "id": 104 }], "endOfFileToken": { "kind": "EndOfFileToken", "id": 106 }, "fileName": "temp-ast.d.ts", "languageVersion": 99, "languageVariant": 0, "scriptKind": 3, "isDeclarationFile": true, "hasNoDefaultLib": false, "bindDiagnostics": [], "pragmas": {}, "referencedFiles": [], "typeReferenceDirectives": [], "libReferenceDirectives": [], "amdDependencies": [], "nodeCount": 142, "identifierCount": 45, "identifiers": {}, "parseDiagnostics": [], "id": 1 }
