cdk-serverless 2.10.1 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/constructs/assets/main.js +3 -4
- package/docs/constructs/assets/search.js +1 -1
- package/docs/constructs/assets/style.css +18 -53
- package/docs/constructs/classes/AssetCdn.html +174 -13
- package/docs/constructs/classes/BaseApi.html +181 -13
- package/docs/constructs/classes/CognitoAuthentication.html +190 -14
- package/docs/constructs/classes/GraphQlApi.html +473 -14
- package/docs/constructs/classes/LambdaFunction.html +1036 -81
- package/docs/constructs/classes/RestApi.html +358 -20
- package/docs/constructs/classes/SingleTableDatastore.html +166 -13
- package/docs/constructs/classes/Workflow.html +179 -13
- package/docs/constructs/index.html +83 -2
- package/docs/constructs/interfaces/AssetCdnProps.html +94 -4
- package/docs/constructs/interfaces/BaseApiProps.html +184 -20
- package/docs/constructs/interfaces/CognitoAuthenticationProps.html +177 -18
- package/docs/constructs/interfaces/GraphQlApiProps.html +199 -20
- package/docs/constructs/interfaces/ICognitoAuthentication.html +91 -3
- package/docs/constructs/interfaces/IJwtAuthentication.html +101 -5
- package/docs/constructs/interfaces/JsResolverOptions.html +103 -6
- package/docs/constructs/interfaces/LambdaFunctionProps.html +187 -18
- package/docs/constructs/interfaces/LambdaTracingOptions.html +89 -4
- package/docs/constructs/interfaces/RestApiProps.html +235 -26
- package/docs/constructs/interfaces/SingleTableDatastoreProps.html +107 -7
- package/docs/constructs/interfaces/SingleTableDesign.html +117 -7
- package/docs/constructs/interfaces/VtlResolverOptions.html +101 -5
- package/docs/constructs/interfaces/WorkflowProps.html +105 -2
- package/docs/constructs/modules.html +73 -4
- package/docs/constructs/types/LambdaOptions.html +62 -1
- package/docs/lambda/assets/main.js +3 -4
- package/docs/lambda/assets/search.js +1 -1
- package/docs/lambda/assets/style.css +18 -53
- package/docs/lambda/classes/auth.ApiGatewayv1CognitoAuthorizer.html +292 -21
- package/docs/lambda/classes/auth.ApiGatewayv1JwtAuthorizer.html +291 -20
- package/docs/lambda/classes/auth.ApiGatewayv2CognitoAuthorizer.html +292 -21
- package/docs/lambda/classes/auth.ApiGatewayv2JwtAuthorizer.html +289 -20
- package/docs/lambda/classes/auth.AppSyncCognitoAuthorizer.html +284 -21
- package/docs/lambda/classes/auth.CognitoAuthorizer.html +274 -20
- package/docs/lambda/classes/auth.JwtAuthorizer.html +268 -20
- package/docs/lambda/classes/errors.BadRequestError.html +164 -9
- package/docs/lambda/classes/errors.ForbiddenError.html +164 -9
- package/docs/lambda/classes/errors.HttpError.html +170 -9
- package/docs/lambda/classes/errors.NotFoundError.html +164 -9
- package/docs/lambda/classes/errors.UnauthenticatedError.html +164 -9
- package/docs/lambda/functions/api.createAppSyncHandler.html +80 -3
- package/docs/lambda/functions/api.createHttpHandler.html +78 -2
- package/docs/lambda/functions/api.createOpenApiHandler.html +78 -2
- package/docs/lambda/functions/api.createOpenApiHandlerWithRequestBody.html +78 -2
- package/docs/lambda/functions/api.createOpenApiHandlerWithRequestBodyNoResponse.html +76 -2
- package/docs/lambda/index.html +63 -2
- package/docs/lambda/interfaces/api.AppSyncHandlerContext.html +102 -3
- package/docs/lambda/interfaces/api.HttpHandlerContext.html +101 -3
- package/docs/lambda/interfaces/api.HttpResponseContext.html +98 -3
- package/docs/lambda/interfaces/api.Operation.html +92 -3
- package/docs/lambda/interfaces/api.OperationWithRequestBody.html +105 -3
- package/docs/lambda/modules/api.html +72 -4
- package/docs/lambda/modules/auth.html +58 -2
- package/docs/lambda/modules/errors.html +56 -2
- package/docs/lambda/modules.html +45 -2
- package/docs/lambda/types/api.APIGatewayv1Handler.html +62 -2
- package/docs/lambda/types/api.AppSyncHandler.html +82 -2
- package/docs/lambda/types/api.HttpHandler.html +84 -2
- package/docs/projen/assets/main.js +3 -4
- package/docs/projen/assets/search.js +1 -1
- package/docs/projen/assets/style.css +18 -53
- package/docs/projen/classes/Datastore.html +230 -13
- package/docs/projen/classes/GraphQlApi.html +198 -14
- package/docs/projen/classes/RestApi.html +280 -13
- package/docs/projen/classes/ServerlessProject.html +1295 -138
- package/docs/projen/classes/Workflow.html +230 -13
- package/docs/projen/index.html +71 -2
- package/docs/projen/interfaces/DatastoreOptions.html +76 -2
- package/docs/projen/interfaces/GraphQlApiOptions.html +76 -2
- package/docs/projen/interfaces/RestApiOptions.html +76 -2
- package/docs/projen/interfaces/ServerlessProjectOptions.html +1826 -426
- package/docs/projen/interfaces/WorkflowOptions.html +76 -2
- package/docs/projen/modules.html +61 -4
- package/docs/projen/variables/PACKAGE_NAME.html +50 -1
- package/lib/projen/datastore.d.ts +2 -4
- package/lib/projen/datastore.js +45 -50
- package/lib/projen/graphql.d.ts +0 -2
- package/lib/projen/graphql.js +9 -19
- package/lib/projen/lazy-sampledir.d.ts +27 -0
- package/lib/projen/lazy-sampledir.js +43 -0
- package/lib/projen/lazy-textfile.d.ts +20 -0
- package/lib/projen/lazy-textfile.js +23 -0
- package/lib/projen/rest-api.d.ts +6 -4
- package/lib/projen/rest-api.js +52 -54
- package/lib/projen/workflow.d.ts +1 -2
- package/lib/projen/workflow.js +32 -37
- package/package.json +6 -6
- package/docs/constructs/assets/navigation.js +0 -1
- package/docs/constructs/hierarchy.html +0 -1
- package/docs/lambda/assets/navigation.js +0 -1
- package/docs/lambda/hierarchy.html +0 -1
- package/docs/projen/assets/navigation.js +0 -1
package/lib/projen/datastore.js
CHANGED
|
@@ -25,17 +25,53 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.Datastore = void 0;
|
|
27
27
|
const fs = __importStar(require("fs"));
|
|
28
|
+
const path_1 = require("path");
|
|
28
29
|
const pj = __importStar(require("projen"));
|
|
29
30
|
const core_1 = require("./core");
|
|
31
|
+
const lazy_textfile_1 = require("./lazy-textfile");
|
|
30
32
|
class Datastore extends pj.Component {
|
|
31
33
|
constructor(app, options) {
|
|
32
34
|
super(app);
|
|
33
35
|
this.options = options;
|
|
34
36
|
app.addDeps('dynamodb-onetable', '@aws-sdk/client-dynamodb', '@aws-sdk/lib-dynamodb', 'uuid');
|
|
35
37
|
app.addDevDeps('@types/uuid');
|
|
38
|
+
new pj.SampleFile(this.project, this.options.definitionFile, {
|
|
39
|
+
contents: JSON.stringify({
|
|
40
|
+
format: 'onetable:1.0.0',
|
|
41
|
+
version: '0.1.0',
|
|
42
|
+
indexes: {
|
|
43
|
+
primary: {
|
|
44
|
+
hash: 'PK',
|
|
45
|
+
sort: 'SK',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
models: {
|
|
49
|
+
User: {
|
|
50
|
+
PK: {
|
|
51
|
+
type: 'string',
|
|
52
|
+
required: true,
|
|
53
|
+
value: 'User#${name}',
|
|
54
|
+
},
|
|
55
|
+
SK: {
|
|
56
|
+
type: 'string',
|
|
57
|
+
required: true,
|
|
58
|
+
value: 'User#${name}',
|
|
59
|
+
},
|
|
60
|
+
name: {
|
|
61
|
+
type: 'string',
|
|
62
|
+
required: true,
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
}),
|
|
67
|
+
});
|
|
68
|
+
new lazy_textfile_1.LazyTextFile(this.project, `src/generated/datastore.${this.options.modelName.toLowerCase()}-model.generated.ts`, { content: this.createModelFile.bind(this) });
|
|
69
|
+
new lazy_textfile_1.LazyTextFile(this.project, `src/generated/datastore.${this.options.modelName.toLowerCase()}-construct.generated.ts`, { content: this.createConstructFile.bind(this) });
|
|
36
70
|
}
|
|
37
|
-
createModelFile(
|
|
38
|
-
fs.
|
|
71
|
+
createModelFile(file) {
|
|
72
|
+
const model = JSON.parse(fs.readFileSync((0, path_1.join)(this.project.outdir, this.options.definitionFile)).toString());
|
|
73
|
+
return `// ${file.marker}
|
|
74
|
+
/* eslint-disable */
|
|
39
75
|
import { Model, Table, Entity } from 'dynamodb-onetable';
|
|
40
76
|
import { env } from 'process';
|
|
41
77
|
import { Dynamo } from 'dynamodb-onetable/Dynamo';
|
|
@@ -64,9 +100,7 @@ ${Object.entries(model.models).map(([typeName, _]) => `export type ${typeName}Ty
|
|
|
64
100
|
export const ${typeName}: Model<${typeName}Type> = table.getModel<${typeName}Type>('${typeName}');
|
|
65
101
|
`).join('\n')}
|
|
66
102
|
|
|
67
|
-
|
|
68
|
-
encoding: 'utf-8',
|
|
69
|
-
});
|
|
103
|
+
`;
|
|
70
104
|
}
|
|
71
105
|
stringifyModel(model) {
|
|
72
106
|
// array, binary, boolean, date, number, object, set, string
|
|
@@ -81,8 +115,10 @@ export const ${typeName}: Model<${typeName}Type> = table.getModel<${typeName}Typ
|
|
|
81
115
|
.replace(/"type": "set"/g, '"type": Set')
|
|
82
116
|
.replace(/"type": "string"/g, '"type": String');
|
|
83
117
|
}
|
|
84
|
-
createConstructFile(
|
|
85
|
-
fs.
|
|
118
|
+
createConstructFile(file) {
|
|
119
|
+
const model = JSON.parse(fs.readFileSync((0, path_1.join)(this.project.outdir, this.options.definitionFile)).toString());
|
|
120
|
+
return `// ${file.marker}
|
|
121
|
+
/* eslint-disable */
|
|
86
122
|
import { AttributeType, ProjectionType } from 'aws-cdk-lib/aws-dynamodb';
|
|
87
123
|
import { Construct } from 'constructs';
|
|
88
124
|
import { SingleTableDatastore, SingleTableDatastoreProps } from '${core_1.PACKAGE_NAME}/lib/constructs';
|
|
@@ -132,49 +168,8 @@ export class ${this.options.modelName}Datastore extends SingleTableDatastore {
|
|
|
132
168
|
});
|
|
133
169
|
}
|
|
134
170
|
|
|
135
|
-
}
|
|
136
|
-
encoding: 'utf-8',
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
synthesize() {
|
|
140
|
-
super.synthesize();
|
|
141
|
-
if (!fs.existsSync(this.options.definitionFile)) {
|
|
142
|
-
fs.writeFileSync(this.options.definitionFile, JSON.stringify({
|
|
143
|
-
format: 'onetable:1.0.0',
|
|
144
|
-
version: '0.1.0',
|
|
145
|
-
indexes: {
|
|
146
|
-
primary: {
|
|
147
|
-
hash: 'PK',
|
|
148
|
-
sort: 'SK',
|
|
149
|
-
},
|
|
150
|
-
},
|
|
151
|
-
models: {
|
|
152
|
-
User: {
|
|
153
|
-
PK: {
|
|
154
|
-
type: 'string',
|
|
155
|
-
required: true,
|
|
156
|
-
value: 'User#${name}',
|
|
157
|
-
},
|
|
158
|
-
SK: {
|
|
159
|
-
type: 'string',
|
|
160
|
-
required: true,
|
|
161
|
-
value: 'User#${name}',
|
|
162
|
-
},
|
|
163
|
-
name: {
|
|
164
|
-
type: 'string',
|
|
165
|
-
required: true,
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
},
|
|
169
|
-
}));
|
|
170
|
-
}
|
|
171
|
-
const model = JSON.parse(fs.readFileSync(this.options.definitionFile).toString());
|
|
172
|
-
if (!fs.existsSync(`${this.project.outdir}/src/generated`)) {
|
|
173
|
-
fs.mkdirSync(`${this.project.outdir}/src/generated`);
|
|
174
|
-
}
|
|
175
|
-
this.createModelFile(`${this.project.outdir}/src/generated/datastore.${this.options.modelName.toLowerCase()}-model.generated.ts`, model);
|
|
176
|
-
this.createConstructFile(`${this.project.outdir}/src/generated/datastore.${this.options.modelName.toLowerCase()}-construct.generated.ts`, model);
|
|
171
|
+
}`;
|
|
177
172
|
}
|
|
178
173
|
}
|
|
179
174
|
exports.Datastore = Datastore;
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plbi9kYXRhc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFFekIsMkNBQTZCO0FBQzdCLGlDQUFzQztBQU90QyxNQUFhLFNBQVUsU0FBUSxFQUFFLENBQUMsU0FBUztJQUV6QyxZQUFZLEdBQWtDLEVBQVksT0FBeUI7UUFDakYsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRDZDLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBR2pGLEdBQUcsQ0FBQyxPQUFPLENBQ1QsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQix1QkFBdUIsRUFDdkIsTUFBTSxDQUNQLENBQUM7UUFDRixHQUFHLENBQUMsVUFBVSxDQUNaLGFBQWEsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVTLGVBQWUsQ0FBQyxRQUFnQixFQUFFLEtBQWdCO1FBRTFELEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFOzs7Ozs7Ozs7RUFTN0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixHQUFHLFlBQVksR0FBRztxQkFDeEUsR0FBRyxlQUFlLElBQUksQ0FBQyxJQUFJO3FCQUMzQixHQUFHLGVBQWUsSUFBSSxDQUFDLElBQUk7Q0FDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7O3dCQUVXLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7OztFQVdoRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxRQUFR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SUFBSTs0QkFDZCxLQUFLLEVBQUUsY0FBYzt5QkFDdEI7d0JBQ0QsSUFBSSxFQUFFOzRCQUNKLElBQUksRUFBRSxRQUFROzRCQUNkLFFBQVEsRUFBRSxJQUFJO3lCQUNmO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDLENBQUM7U0FDTDtRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFjLENBQUM7UUFFL0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sZ0JBQWdCLENBQUMsRUFBRTtZQUMxRCxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLGdCQUFnQixDQUFDLENBQUM7U0FDdEQ7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLDRCQUE0QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekksSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLDRCQUE0QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkosQ0FBQztDQUVGO0FBcktELDhCQXFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IE9uZVNjaGVtYSB9IGZyb20gJ2R5bmFtb2RiLW9uZXRhYmxlJztcbmltcG9ydCAqIGFzIHBqIGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBQQUNLQUdFX05BTUUgfSBmcm9tICcuL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzdG9yZU9wdGlvbnMge1xuICByZWFkb25seSBtb2RlbE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVmaW5pdGlvbkZpbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIERhdGFzdG9yZSBleHRlbmRzIHBqLkNvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IoYXBwOiBwai5hd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCwgcHJvdGVjdGVkIG9wdGlvbnM6IERhdGFzdG9yZU9wdGlvbnMpIHtcbiAgICBzdXBlcihhcHApO1xuXG4gICAgYXBwLmFkZERlcHMoXG4gICAgICAnZHluYW1vZGItb25ldGFibGUnLFxuICAgICAgJ0Bhd3Mtc2RrL2NsaWVudC1keW5hbW9kYicsXG4gICAgICAnQGF3cy1zZGsvbGliLWR5bmFtb2RiJyxcbiAgICAgICd1dWlkJyxcbiAgICApO1xuICAgIGFwcC5hZGREZXZEZXBzKFxuICAgICAgJ0B0eXBlcy91dWlkJyxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZU1vZGVsRmlsZShmaWxlTmFtZTogc3RyaW5nLCBtb2RlbDogT25lU2NoZW1hKSB7XG5cbiAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVOYW1lLCBgLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IE1vZGVsLCBUYWJsZSwgRW50aXR5IH0gZnJvbSAnZHluYW1vZGItb25ldGFibGUnO1xuaW1wb3J0IHsgZW52IH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBEeW5hbW8gfSBmcm9tICdkeW5hbW9kYi1vbmV0YWJsZS9EeW5hbW8nO1xuaW1wb3J0IHsgRHluYW1vREJDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtZHluYW1vZGInO1xuXG5leHBvcnQgY29uc3QgZHluYW1vQ2xpZW50ID0gbmV3IER5bmFtbyh7IGNsaWVudDogbmV3IER5bmFtb0RCQ2xpZW50KHt9KSB9KVxuZXhwb3J0IGNvbnN0IFRBQkxFX05BTUU6IHN0cmluZyA9IGVudi5UQUJMRSE7XG5cbiR7T2JqZWN0LmVudHJpZXMobW9kZWwuaW5kZXhlcykubWFwKChbaWR4LCBkYXRhXSkgPT4gYGV4cG9ydCBjb25zdCBJbmRleF8ke2lkeH1fTmFtZSA9ICcke2lkeH0nO1xuZXhwb3J0IGNvbnN0IEluZGV4XyR7aWR4fV9IYXNoS2V5ID0gJyR7ZGF0YS5oYXNofSc7XG5leHBvcnQgY29uc3QgSW5kZXhfJHtpZHh9X1NvcnRLZXkgPSAnJHtkYXRhLnNvcnR9JztcbmApLmpvaW4oJ1xcbicpfVxuXG5leHBvcnQgY29uc3QgU2NoZW1hID0gJHt0aGlzLnN0cmluZ2lmeU1vZGVsKG1vZGVsKX07XG5cbmV4cG9ydCBjb25zdCB0YWJsZSA9IG5ldyBUYWJsZSh7XG4gIGNsaWVudDogZHluYW1vQ2xpZW50LFxuICBuYW1lOiBUQUJMRV9OQU1FLFxuICBzY2hlbWE6IFNjaGVtYSxcbiAgaXNvRGF0ZXM6IHRydWUsXG4gIC8vIGxvZ2dlcjogdHJ1ZSxcbiAgaGlkZGVuOiBmYWxzZSxcbn0pO1xuXG4ke09iamVjdC5lbnRyaWVzKG1vZGVsLm1vZGVscykubWFwKChbdHlwZU5hbWUsIF9dKSA9PiBgZXhwb3J0IHR5cGUgJHt0eXBlTmFtZX1UeXBlID0gRW50aXR5PHR5cGVvZiBTY2hlbWEubW9kZWxzLiR7dHlwZU5hbWV9PjtcbmV4cG9ydCBjb25zdCAke3R5cGVOYW1lfTogTW9kZWw8JHt0eXBlTmFtZX1UeXBlPiA9IHRhYmxlLmdldE1vZGVsPCR7dHlwZU5hbWV9VHlwZT4oJyR7dHlwZU5hbWV9Jyk7XG5gKS5qb2luKCdcXG4nKX1cblxuYCwge1xuICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeU1vZGVsKG1vZGVsOiBPbmVTY2hlbWEpIHtcbiAgICAvLyBhcnJheSwgYmluYXJ5LCBib29sZWFuLCAgICAgICAgIGRhdGUsIG51bWJlciwgb2JqZWN0LCBzZXQsIHN0cmluZ1xuICAgIC8vIEFycmF5LCBCaW5hcnksIEJvb2xlYW4sIEJ1ZmZlciwgRGF0ZSwgTnVtYmVyLCBPYmplY3QsIFNldCwgU3RyaW5nXG5cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobW9kZWwsIG51bGwsIDIpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwiYXJyYXlcIi9nLCAnXCJ0eXBlXCI6IEFycmF5JylcbiAgICAgIC5yZXBsYWNlKC9cInR5cGVcIjogXCJiaW5hcnlcIi9nLCAnXCJ0eXBlXCI6IEJpbmFyeScpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwiYm9vbGVhblwiL2csICdcInR5cGVcIjogQm9vbGVhbicpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwiZGF0ZVwiL2csICdcInR5cGVcIjogRGF0ZScpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwibnVtYmVyXCIvZywgJ1widHlwZVwiOiBOdW1iZXInKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcIm9iamVjdFwiL2csICdcInR5cGVcIjogT2JqZWN0JylcbiAgICAgIC5yZXBsYWNlKC9cInR5cGVcIjogXCJzZXRcIi9nLCAnXCJ0eXBlXCI6IFNldCcpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwic3RyaW5nXCIvZywgJ1widHlwZVwiOiBTdHJpbmcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVDb25zdHJ1Y3RGaWxlKGZpbGVOYW1lOiBzdHJpbmcsIG1vZGVsOiBPbmVTY2hlbWEpIHtcblxuICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZU5hbWUsIGAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgQXR0cmlidXRlVHlwZSwgUHJvamVjdGlvblR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBTaW5nbGVUYWJsZURhdGFzdG9yZSwgU2luZ2xlVGFibGVEYXRhc3RvcmVQcm9wcyB9IGZyb20gJyR7UEFDS0FHRV9OQU1FfS9saWIvY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgJHt0aGlzLm9wdGlvbnMubW9kZWxOYW1lfURhdGFzdG9yZVByb3BzIGV4dGVuZHMgT21pdDxTaW5nbGVUYWJsZURhdGFzdG9yZVByb3BzLCAnZGVzaWduJz4ge1xuICAvL1xufVxuXG5leHBvcnQgY2xhc3MgJHt0aGlzLm9wdGlvbnMubW9kZWxOYW1lfURhdGFzdG9yZSBleHRlbmRzIFNpbmdsZVRhYmxlRGF0YXN0b3JlIHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogJHt0aGlzLm9wdGlvbnMubW9kZWxOYW1lfURhdGFzdG9yZVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZGVzaWduOiB7XG4gICAgICAgIHByaW1hcnlLZXk6IHtcbiAgICAgICAgICBwYXJ0aXRpb25LZXk6ICcke21vZGVsLmluZGV4ZXMucHJpbWFyeS5oYXNofScsXG4gICAgICAgICAgJHttb2RlbC5pbmRleGVzLnByaW1hcnkuc29ydCA/IGBzb3J0S2V5OiAnJHttb2RlbC5pbmRleGVzLnByaW1hcnkuc29ydH0nLGAgOiAnJ31cbiAgICAgICAgfSxcbiAgICAgICAgLy8gdGltZVRvTGl2ZUF0dHJpYnV0ZTogJ1RPRE8nLFxuICAgICAgICBnbG9iYWxJbmRleGVzOiBbXG4gICAgICAgICAgJHtPYmplY3QuZW50cmllcyhtb2RlbC5pbmRleGVzKS5maWx0ZXIoKFtpZHgsIGRhdGFdKSA9PiBpZHggIT09ICdwcmltYXJ5JyAmJiBkYXRhLnR5cGUgIT09ICdsb2NhbCcpLm1hcCgoW2lkeCwgZGF0YV0pID0+IGB7XG4gICAgICAgICAgICBpbmRleE5hbWU6ICcke2lkeH0nLFxuICAgICAgICAgICAgcGFydGl0aW9uS2V5OiB7XG4gICAgICAgICAgICAgIG5hbWU6ICcke2RhdGEuaGFzaH0nLFxuICAgICAgICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAke2RhdGEuc29ydCA/IGBzb3J0S2V5OiB7XG4gICAgICAgICAgICAgIG5hbWU6ICcke2RhdGEuc29ydH0nLFxuICAgICAgICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgICAgICAgIH0sYCA6ICcnfVxuICAgICAgICAgICAgcHJvamVjdGlvblR5cGU6IFByb2plY3Rpb25UeXBlLiR7dHlwZW9mIGRhdGEucHJvamVjdCA9PT0gJ3N0cmluZycgPyBkYXRhLnByb2plY3QudG9VcHBlckNhc2UoKSA6ICdJTkNMVURFJ30sXG4gICAgICAgICAgICAke0FycmF5LmlzQXJyYXkoZGF0YS5wcm9qZWN0KSA/IGBub25LZXlBdHRyaWJ1dGVzOiBbJHtkYXRhLnByb2plY3QubWFwKGUgPT4gYCcke2V9J2ApLmpvaW4oJywnKX1dLGAgOiAnJ31cbiAgICAgICAgICB9YCkuam9pbignLFxcbicpfVxuICAgICAgICBdLFxuICAgICAgICBsb2NhbEluZGV4ZXM6IFtcbiAgICAgICAgICAke09iamVjdC5lbnRyaWVzKG1vZGVsLmluZGV4ZXMpLmZpbHRlcigoW18sIGRhdGFdKSA9PiBkYXRhLnR5cGUgPT09ICdsb2NhbCcpLm1hcCgoW2lkeCwgZGF0YV0pID0+IGB7XG4gICAgICAgICAgICBpbmRleE5hbWU6ICcke2lkeH0nLFxuICAgICAgICAgICAgc29ydEtleToge1xuICAgICAgICAgICAgICBuYW1lOiAnJHtkYXRhLnNvcnR9JyxcbiAgICAgICAgICAgICAgdHlwZTogQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvamVjdGlvblR5cGU6IFByb2plY3Rpb25UeXBlLiR7dHlwZW9mIGRhdGEucHJvamVjdCA9PT0gJ3N0cmluZycgPyBkYXRhLnByb2plY3QgOiAnSU5DTFVERSd9LFxuICAgICAgICAgICAgJHtBcnJheS5pc0FycmF5KGRhdGEucHJvamVjdCkgPyBgbm9uS2V5QXR0cmlidXRlczogWyR7ZGF0YS5wcm9qZWN0Lm1hcChlID0+IGAnJHtlfSdgKS5qb2luKCcsJyl9XSxgIDogJyd9XG4gICAgICAgICAgfWApLmpvaW4oJyxcXG4nKX1cbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG59YCwge1xuICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3ludGhlc2l6ZSgpIHtcbiAgICBzdXBlci5zeW50aGVzaXplKCk7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMub3B0aW9ucy5kZWZpbml0aW9uRmlsZSkpIHtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5vcHRpb25zLmRlZmluaXRpb25GaWxlLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGZvcm1hdDogJ29uZXRhYmxlOjEuMC4wJyxcbiAgICAgICAgdmVyc2lvbjogJzAuMS4wJyxcbiAgICAgICAgaW5kZXhlczoge1xuICAgICAgICAgIHByaW1hcnk6IHtcbiAgICAgICAgICAgIGhhc2g6ICdQSycsXG4gICAgICAgICAgICBzb3J0OiAnU0snLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1vZGVsczoge1xuICAgICAgICAgIFVzZXI6IHtcbiAgICAgICAgICAgIFBLOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgdmFsdWU6ICdVc2VyIyR7bmFtZX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFNLOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgdmFsdWU6ICdVc2VyIyR7bmFtZX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSkpO1xuICAgIH1cbiAgICBjb25zdCBtb2RlbCA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHRoaXMub3B0aW9ucy5kZWZpbml0aW9uRmlsZSkudG9TdHJpbmcoKSkgYXMgT25lU2NoZW1hO1xuXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGAke3RoaXMucHJvamVjdC5vdXRkaXJ9L3NyYy9nZW5lcmF0ZWRgKSkge1xuICAgICAgZnMubWtkaXJTeW5jKGAke3RoaXMucHJvamVjdC5vdXRkaXJ9L3NyYy9nZW5lcmF0ZWRgKTtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVNb2RlbEZpbGUoYCR7dGhpcy5wcm9qZWN0Lm91dGRpcn0vc3JjL2dlbmVyYXRlZC9kYXRhc3RvcmUuJHt0aGlzLm9wdGlvbnMubW9kZWxOYW1lLnRvTG93ZXJDYXNlKCl9LW1vZGVsLmdlbmVyYXRlZC50c2AsIG1vZGVsKTtcbiAgICB0aGlzLmNyZWF0ZUNvbnN0cnVjdEZpbGUoYCR7dGhpcy5wcm9qZWN0Lm91dGRpcn0vc3JjL2dlbmVyYXRlZC9kYXRhc3RvcmUuJHt0aGlzLm9wdGlvbnMubW9kZWxOYW1lLnRvTG93ZXJDYXNlKCl9LWNvbnN0cnVjdC5nZW5lcmF0ZWQudHNgLCBtb2RlbCk7XG4gIH1cblxufSJdfQ==
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plbi9kYXRhc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsK0JBQTRCO0FBRTVCLDJDQUE2QjtBQUM3QixpQ0FBc0M7QUFDdEMsbURBQStDO0FBTy9DLE1BQWEsU0FBVSxTQUFRLEVBQUUsQ0FBQyxTQUFTO0lBRXpDLFlBQVksR0FBa0MsRUFBWSxPQUF5QjtRQUNqRixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFENkMsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFHakYsR0FBRyxDQUFDLE9BQU8sQ0FDVCxtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLHVCQUF1QixFQUN2QixNQUFNLENBQ1AsQ0FBQztRQUNGLEdBQUcsQ0FBQyxVQUFVLENBQ1osYUFBYSxDQUNkLENBQUM7UUFFRixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUMzRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDdkIsTUFBTSxFQUFFLGdCQUFnQjtnQkFDeEIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUU7d0JBQ1AsSUFBSSxFQUFFLElBQUk7d0JBQ1YsSUFBSSxFQUFFLElBQUk7cUJBQ1g7aUJBQ0Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLElBQUksRUFBRTt3QkFDSixFQUFFLEVBQUU7NEJBQ0YsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsUUFBUSxFQUFFLElBQUk7NEJBQ2QsS0FBSyxFQUFFLGNBQWM7eUJBQ3RCO3dCQUNELEVBQUUsRUFBRTs0QkFDRixJQUFJLEVBQUUsUUFBUTs0QkFDZCxRQUFRLEVBQUUsSUFBSTs0QkFDZCxLQUFLLEVBQUUsY0FBYzt5QkFDdEI7d0JBQ0QsSUFBSSxFQUFFOzRCQUNKLElBQUksRUFBRSxRQUFROzRCQUNkLFFBQVEsRUFBRSxJQUFJO3lCQUNmO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVILElBQUksNEJBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLDJCQUEyQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25LLElBQUksNEJBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLDJCQUEyQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUseUJBQXlCLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0ssQ0FBQztJQUVTLGVBQWUsQ0FBQyxJQUFpQjtRQUN6QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBQSxXQUFJLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFjLENBQUM7UUFFMUgsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNOzs7Ozs7Ozs7O0VBVTFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsR0FBRyxZQUFZLEdBQUc7cUJBQ3hFLEdBQUcsZUFBZSxJQUFJLENBQUMsSUFBSTtxQkFDM0IsR0FBRyxlQUFlLElBQUksQ0FBQyxJQUFJO0NBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzt3QkFFVyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7RUFXaEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsUUFBUSxzQ0FBc0MsUUFBUTtlQUM1RyxRQUFRLFdBQVcsUUFBUSwwQkFBMEIsUUFBUSxVQUFVLFFBQVE7Q0FDN0YsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7O0NBRVosQ0FBQztJQUNBLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBZ0I7UUFDckMsb0VBQW9FO1FBQ3BFLG9FQUFvRTtRQUVwRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDbEMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLGVBQWUsQ0FBQzthQUM1QyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUM7YUFDOUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDO2FBQ2hELE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxjQUFjLENBQUM7YUFDMUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLGdCQUFnQixDQUFDO2FBQzlDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQzthQUM5QyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDO2FBQ3hDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxJQUFpQjtRQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBQSxXQUFJLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFjLENBQUM7UUFFMUgsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNOzs7O21FQUl1QyxtQkFBWTs7bUJBRTVELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUzs7OztlQUkxQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7O3FEQUVnQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7Ozs7OzJCQUtoRCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3pDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTs7OztZQUk3RSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQzswQkFDekcsR0FBRzs7dUJBRU4sSUFBSSxDQUFDLElBQUk7OztjQUdsQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt1QkFDSCxJQUFJLENBQUMsSUFBSTs7ZUFFakIsQ0FBQyxDQUFDLENBQUMsRUFBRTs2Q0FDeUIsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztjQUN4RyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzs7WUFHYixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7MEJBQ2xGLEdBQUc7O3VCQUVOLElBQUksQ0FBQyxJQUFJOzs7NkNBR2EsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUztjQUMxRixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzs7Ozs7RUFNdkIsQ0FBQztJQUNELENBQUM7Q0FFRjtBQTlKRCw4QkE4SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBPbmVTY2hlbWEgfSBmcm9tICdkeW5hbW9kYi1vbmV0YWJsZSc7XG5pbXBvcnQgKiBhcyBwaiBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgUEFDS0FHRV9OQU1FIH0gZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IExhenlUZXh0RmlsZSB9IGZyb20gJy4vbGF6eS10ZXh0ZmlsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXN0b3JlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG1vZGVsTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZWZpbml0aW9uRmlsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YXN0b3JlIGV4dGVuZHMgcGouQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcihhcHA6IHBqLmF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwLCBwcm90ZWN0ZWQgb3B0aW9uczogRGF0YXN0b3JlT3B0aW9ucykge1xuICAgIHN1cGVyKGFwcCk7XG5cbiAgICBhcHAuYWRkRGVwcyhcbiAgICAgICdkeW5hbW9kYi1vbmV0YWJsZScsXG4gICAgICAnQGF3cy1zZGsvY2xpZW50LWR5bmFtb2RiJyxcbiAgICAgICdAYXdzLXNkay9saWItZHluYW1vZGInLFxuICAgICAgJ3V1aWQnLFxuICAgICk7XG4gICAgYXBwLmFkZERldkRlcHMoXG4gICAgICAnQHR5cGVzL3V1aWQnLFxuICAgICk7XG5cbiAgICBuZXcgcGouU2FtcGxlRmlsZSh0aGlzLnByb2plY3QsIHRoaXMub3B0aW9ucy5kZWZpbml0aW9uRmlsZSwge1xuICAgICAgY29udGVudHM6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgZm9ybWF0OiAnb25ldGFibGU6MS4wLjAnLFxuICAgICAgICB2ZXJzaW9uOiAnMC4xLjAnLFxuICAgICAgICBpbmRleGVzOiB7XG4gICAgICAgICAgcHJpbWFyeToge1xuICAgICAgICAgICAgaGFzaDogJ1BLJyxcbiAgICAgICAgICAgIHNvcnQ6ICdTSycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9kZWxzOiB7XG4gICAgICAgICAgVXNlcjoge1xuICAgICAgICAgICAgUEs6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICB2YWx1ZTogJ1VzZXIjJHtuYW1lfScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgU0s6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICB2YWx1ZTogJ1VzZXIjJHtuYW1lfScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZToge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIG5ldyBMYXp5VGV4dEZpbGUodGhpcy5wcm9qZWN0LCBgc3JjL2dlbmVyYXRlZC9kYXRhc3RvcmUuJHt0aGlzLm9wdGlvbnMubW9kZWxOYW1lLnRvTG93ZXJDYXNlKCl9LW1vZGVsLmdlbmVyYXRlZC50c2AsIHsgY29udGVudDogdGhpcy5jcmVhdGVNb2RlbEZpbGUuYmluZCh0aGlzKSB9KTtcbiAgICBuZXcgTGF6eVRleHRGaWxlKHRoaXMucHJvamVjdCwgYHNyYy9nZW5lcmF0ZWQvZGF0YXN0b3JlLiR7dGhpcy5vcHRpb25zLm1vZGVsTmFtZS50b0xvd2VyQ2FzZSgpfS1jb25zdHJ1Y3QuZ2VuZXJhdGVkLnRzYCwgeyBjb250ZW50OiB0aGlzLmNyZWF0ZUNvbnN0cnVjdEZpbGUuYmluZCh0aGlzKSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVNb2RlbEZpbGUoZmlsZTogcGouRmlsZUJhc2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vZGVsID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoam9pbih0aGlzLnByb2plY3Qub3V0ZGlyLCB0aGlzLm9wdGlvbnMuZGVmaW5pdGlvbkZpbGUpKS50b1N0cmluZygpKSBhcyBPbmVTY2hlbWE7XG5cbiAgICByZXR1cm4gYC8vICR7ZmlsZS5tYXJrZXJ9XG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgTW9kZWwsIFRhYmxlLCBFbnRpdHkgfSBmcm9tICdkeW5hbW9kYi1vbmV0YWJsZSc7XG5pbXBvcnQgeyBlbnYgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IER5bmFtbyB9IGZyb20gJ2R5bmFtb2RiLW9uZXRhYmxlL0R5bmFtbyc7XG5pbXBvcnQgeyBEeW5hbW9EQkNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1keW5hbW9kYic7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9DbGllbnQgPSBuZXcgRHluYW1vKHsgY2xpZW50OiBuZXcgRHluYW1vREJDbGllbnQoe30pIH0pXG5leHBvcnQgY29uc3QgVEFCTEVfTkFNRTogc3RyaW5nID0gZW52LlRBQkxFITtcblxuJHtPYmplY3QuZW50cmllcyhtb2RlbC5pbmRleGVzKS5tYXAoKFtpZHgsIGRhdGFdKSA9PiBgZXhwb3J0IGNvbnN0IEluZGV4XyR7aWR4fV9OYW1lID0gJyR7aWR4fSc7XG5leHBvcnQgY29uc3QgSW5kZXhfJHtpZHh9X0hhc2hLZXkgPSAnJHtkYXRhLmhhc2h9JztcbmV4cG9ydCBjb25zdCBJbmRleF8ke2lkeH1fU29ydEtleSA9ICcke2RhdGEuc29ydH0nO1xuYCkuam9pbignXFxuJyl9XG5cbmV4cG9ydCBjb25zdCBTY2hlbWEgPSAke3RoaXMuc3RyaW5naWZ5TW9kZWwobW9kZWwpfTtcblxuZXhwb3J0IGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlKHtcbiAgY2xpZW50OiBkeW5hbW9DbGllbnQsXG4gIG5hbWU6IFRBQkxFX05BTUUsXG4gIHNjaGVtYTogU2NoZW1hLFxuICBpc29EYXRlczogdHJ1ZSxcbiAgLy8gbG9nZ2VyOiB0cnVlLFxuICBoaWRkZW46IGZhbHNlLFxufSk7XG5cbiR7T2JqZWN0LmVudHJpZXMobW9kZWwubW9kZWxzKS5tYXAoKFt0eXBlTmFtZSwgX10pID0+IGBleHBvcnQgdHlwZSAke3R5cGVOYW1lfVR5cGUgPSBFbnRpdHk8dHlwZW9mIFNjaGVtYS5tb2RlbHMuJHt0eXBlTmFtZX0+O1xuZXhwb3J0IGNvbnN0ICR7dHlwZU5hbWV9OiBNb2RlbDwke3R5cGVOYW1lfVR5cGU+ID0gdGFibGUuZ2V0TW9kZWw8JHt0eXBlTmFtZX1UeXBlPignJHt0eXBlTmFtZX0nKTtcbmApLmpvaW4oJ1xcbicpfVxuXG5gO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnlNb2RlbChtb2RlbDogT25lU2NoZW1hKSB7XG4gICAgLy8gYXJyYXksIGJpbmFyeSwgYm9vbGVhbiwgICAgICAgICBkYXRlLCBudW1iZXIsIG9iamVjdCwgc2V0LCBzdHJpbmdcbiAgICAvLyBBcnJheSwgQmluYXJ5LCBCb29sZWFuLCBCdWZmZXIsIERhdGUsIE51bWJlciwgT2JqZWN0LCBTZXQsIFN0cmluZ1xuXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG1vZGVsLCBudWxsLCAyKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcImFycmF5XCIvZywgJ1widHlwZVwiOiBBcnJheScpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwiYmluYXJ5XCIvZywgJ1widHlwZVwiOiBCaW5hcnknKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcImJvb2xlYW5cIi9nLCAnXCJ0eXBlXCI6IEJvb2xlYW4nKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcImRhdGVcIi9nLCAnXCJ0eXBlXCI6IERhdGUnKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcIm51bWJlclwiL2csICdcInR5cGVcIjogTnVtYmVyJylcbiAgICAgIC5yZXBsYWNlKC9cInR5cGVcIjogXCJvYmplY3RcIi9nLCAnXCJ0eXBlXCI6IE9iamVjdCcpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwic2V0XCIvZywgJ1widHlwZVwiOiBTZXQnKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcInN0cmluZ1wiL2csICdcInR5cGVcIjogU3RyaW5nJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlQ29uc3RydWN0RmlsZShmaWxlOiBwai5GaWxlQmFzZSk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9kZWwgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhqb2luKHRoaXMucHJvamVjdC5vdXRkaXIsIHRoaXMub3B0aW9ucy5kZWZpbml0aW9uRmlsZSkpLnRvU3RyaW5nKCkpIGFzIE9uZVNjaGVtYTtcblxuICAgIHJldHVybiBgLy8gJHtmaWxlLm1hcmtlcn1cbi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBBdHRyaWJ1dGVUeXBlLCBQcm9qZWN0aW9uVHlwZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFNpbmdsZVRhYmxlRGF0YXN0b3JlLCBTaW5nbGVUYWJsZURhdGFzdG9yZVByb3BzIH0gZnJvbSAnJHtQQUNLQUdFX05BTUV9L2xpYi9jb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSAke3RoaXMub3B0aW9ucy5tb2RlbE5hbWV9RGF0YXN0b3JlUHJvcHMgZXh0ZW5kcyBPbWl0PFNpbmdsZVRhYmxlRGF0YXN0b3JlUHJvcHMsICdkZXNpZ24nPiB7XG4gIC8vXG59XG5cbmV4cG9ydCBjbGFzcyAke3RoaXMub3B0aW9ucy5tb2RlbE5hbWV9RGF0YXN0b3JlIGV4dGVuZHMgU2luZ2xlVGFibGVEYXRhc3RvcmUge1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiAke3RoaXMub3B0aW9ucy5tb2RlbE5hbWV9RGF0YXN0b3JlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBkZXNpZ246IHtcbiAgICAgICAgcHJpbWFyeUtleToge1xuICAgICAgICAgIHBhcnRpdGlvbktleTogJyR7bW9kZWwuaW5kZXhlcy5wcmltYXJ5Lmhhc2h9JyxcbiAgICAgICAgICAke21vZGVsLmluZGV4ZXMucHJpbWFyeS5zb3J0ID8gYHNvcnRLZXk6ICcke21vZGVsLmluZGV4ZXMucHJpbWFyeS5zb3J0fScsYCA6ICcnfVxuICAgICAgICB9LFxuICAgICAgICAvLyB0aW1lVG9MaXZlQXR0cmlidXRlOiAnVE9ETycsXG4gICAgICAgIGdsb2JhbEluZGV4ZXM6IFtcbiAgICAgICAgICAke09iamVjdC5lbnRyaWVzKG1vZGVsLmluZGV4ZXMpLmZpbHRlcigoW2lkeCwgZGF0YV0pID0+IGlkeCAhPT0gJ3ByaW1hcnknICYmIGRhdGEudHlwZSAhPT0gJ2xvY2FsJykubWFwKChbaWR4LCBkYXRhXSkgPT4gYHtcbiAgICAgICAgICAgIGluZGV4TmFtZTogJyR7aWR4fScsXG4gICAgICAgICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgICAgICAgbmFtZTogJyR7ZGF0YS5oYXNofScsXG4gICAgICAgICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICR7ZGF0YS5zb3J0ID8gYHNvcnRLZXk6IHtcbiAgICAgICAgICAgICAgbmFtZTogJyR7ZGF0YS5zb3J0fScsXG4gICAgICAgICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgICAgICAgfSxgIDogJyd9XG4gICAgICAgICAgICBwcm9qZWN0aW9uVHlwZTogUHJvamVjdGlvblR5cGUuJHt0eXBlb2YgZGF0YS5wcm9qZWN0ID09PSAnc3RyaW5nJyA/IGRhdGEucHJvamVjdC50b1VwcGVyQ2FzZSgpIDogJ0lOQ0xVREUnfSxcbiAgICAgICAgICAgICR7QXJyYXkuaXNBcnJheShkYXRhLnByb2plY3QpID8gYG5vbktleUF0dHJpYnV0ZXM6IFske2RhdGEucHJvamVjdC5tYXAoZSA9PiBgJyR7ZX0nYCkuam9pbignLCcpfV0sYCA6ICcnfVxuICAgICAgICAgIH1gKS5qb2luKCcsXFxuJyl9XG4gICAgICAgIF0sXG4gICAgICAgIGxvY2FsSW5kZXhlczogW1xuICAgICAgICAgICR7T2JqZWN0LmVudHJpZXMobW9kZWwuaW5kZXhlcykuZmlsdGVyKChbXywgZGF0YV0pID0+IGRhdGEudHlwZSA9PT0gJ2xvY2FsJykubWFwKChbaWR4LCBkYXRhXSkgPT4gYHtcbiAgICAgICAgICAgIGluZGV4TmFtZTogJyR7aWR4fScsXG4gICAgICAgICAgICBzb3J0S2V5OiB7XG4gICAgICAgICAgICAgIG5hbWU6ICcke2RhdGEuc29ydH0nLFxuICAgICAgICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9qZWN0aW9uVHlwZTogUHJvamVjdGlvblR5cGUuJHt0eXBlb2YgZGF0YS5wcm9qZWN0ID09PSAnc3RyaW5nJyA/IGRhdGEucHJvamVjdCA6ICdJTkNMVURFJ30sXG4gICAgICAgICAgICAke0FycmF5LmlzQXJyYXkoZGF0YS5wcm9qZWN0KSA/IGBub25LZXlBdHRyaWJ1dGVzOiBbJHtkYXRhLnByb2plY3QubWFwKGUgPT4gYCcke2V9J2ApLmpvaW4oJywnKX1dLGAgOiAnJ31cbiAgICAgICAgICB9YCkuam9pbignLFxcbicpfVxuICAgICAgICBdLFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1gO1xuICB9XG5cbn0iXX0=
|
package/lib/projen/graphql.d.ts
CHANGED
|
@@ -7,6 +7,4 @@ export declare class GraphQlApi extends pj.Component {
|
|
|
7
7
|
protected options: GraphQlApiOptions;
|
|
8
8
|
protected readonly codegenConfigFileName: string;
|
|
9
9
|
constructor(app: pj.awscdk.AwsCdkTypeScriptApp, options: GraphQlApiOptions);
|
|
10
|
-
protected createConstructFile(fileName: string): void;
|
|
11
|
-
synthesize(): void;
|
|
12
10
|
}
|
package/lib/projen/graphql.js
CHANGED
|
@@ -24,7 +24,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.GraphQlApi = void 0;
|
|
27
|
-
const fs = __importStar(require("fs"));
|
|
28
27
|
const pj = __importStar(require("projen"));
|
|
29
28
|
const core_1 = require("./core");
|
|
30
29
|
class GraphQlApi extends pj.Component {
|
|
@@ -56,9 +55,9 @@ class GraphQlApi extends pj.Component {
|
|
|
56
55
|
new pj.YamlFile(this.project, this.codegenConfigFileName, {
|
|
57
56
|
obj: codegenConfig,
|
|
58
57
|
});
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
const constructFile = new pj.TextFile(this.project, `src/generated/graphql.${this.options.apiName.toLowerCase()}-api.generated.ts`);
|
|
59
|
+
constructFile.addLine(`// ${constructFile.marker}
|
|
60
|
+
/* eslint-disable */
|
|
62
61
|
import { Construct } from 'constructs';
|
|
63
62
|
import { GraphQlApi, GraphQlApiProps } from '${core_1.PACKAGE_NAME}/lib/constructs';
|
|
64
63
|
import { Resolvers } from './graphql.${this.options.apiName.toLowerCase()}-model.generated';
|
|
@@ -77,27 +76,18 @@ export class ${this.options.apiName}GraphQlApi extends GraphQlApi<Resolvers> {
|
|
|
77
76
|
});
|
|
78
77
|
}
|
|
79
78
|
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
synthesize() {
|
|
85
|
-
super.synthesize();
|
|
86
|
-
if (!fs.existsSync(this.options.definitionFile)) {
|
|
87
|
-
fs.writeFileSync(this.options.definitionFile, `type Query {
|
|
79
|
+
}`);
|
|
80
|
+
new pj.SampleFile(this.project, this.options.definitionFile, {
|
|
81
|
+
contents: `type Query {
|
|
88
82
|
users: [User]
|
|
89
83
|
}
|
|
90
84
|
|
|
91
85
|
type User {
|
|
92
86
|
id: ID!
|
|
93
87
|
name: String
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (!fs.existsSync(`${this.project.outdir}/src/generated`)) {
|
|
97
|
-
fs.mkdirSync(`${this.project.outdir}/src/generated`);
|
|
98
|
-
}
|
|
99
|
-
this.createConstructFile(`${this.project.outdir}/src/generated/graphql.${this.options.apiName.toLowerCase()}-api.generated.ts`);
|
|
88
|
+
}`,
|
|
89
|
+
});
|
|
100
90
|
}
|
|
101
91
|
}
|
|
102
92
|
exports.GraphQlApi = GraphQlApi;
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZW4vZ3JhcGhxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QixpQ0FBc0M7QUFPdEMsTUFBYSxVQUFXLFNBQVEsRUFBRSxDQUFDLFNBQVM7SUFJMUMsWUFBWSxHQUFrQyxFQUFZLE9BQTBCO1FBQ2xGLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUQ2QyxZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUdsRixHQUFHLENBQUMsVUFBVSxDQUNaLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IsdUNBQXVDLEVBQ3ZDLG1CQUFtQixFQUNuQixtQkFBbUIsQ0FDcEIsQ0FBQztRQUNGLEdBQUcsQ0FBQyxPQUFPLENBQ1QsU0FBUyxFQUNULG9CQUFvQixFQUNwQixTQUFTLEVBQ1QseUNBQXlDLENBQzFDLENBQUM7UUFFRixJQUFJLENBQUMscUJBQXFCLEdBQUcsbUJBQW1CLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQztRQUNwRixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUU7WUFDaEYsSUFBSSxFQUFFLHNCQUFzQixJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDeEQsV0FBVyxFQUFFLCtDQUErQztTQUM3RCxDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU5QyxNQUFNLGFBQWEsR0FBRztZQUNwQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjO1lBQ25DLE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLFFBQVE7b0JBQ2pCLE1BQU0sRUFBRSxRQUFRO2lCQUNqQjthQUNGO1lBQ0QsU0FBUyxFQUFFO2dCQUNULENBQUMsMkJBQTJCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFO29CQUNwRixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLENBQUM7aUJBQ2hEO2FBQ0Y7U0FDRixDQUFDO1FBRUYsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3hELEdBQUcsRUFBRSxhQUFhO1NBQ25CLENBQUMsQ0FBQztRQUVILE1BQU0sYUFBYSxHQUFHLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHlCQUF5QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUNwSSxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sYUFBYSxDQUFDLE1BQU07OzsrQ0FHTCxtQkFBWTt1Q0FDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFOzttQkFFdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O2VBSXhCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTzs7cURBRWtCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTzs7O2tCQUd2RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87NkJBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjOzs7O0VBSXRELENBQUMsQ0FBQztRQUVBLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFO1lBQzNELFFBQVEsRUFBRTs7Ozs7OztFQU9kO1NBQ0csQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUVGO0FBbEZELGdDQWtGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBqIGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBQQUNLQUdFX05BTUUgfSBmcm9tICcuL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoUWxBcGlPcHRpb25zIHtcbiAgcmVhZG9ubHkgYXBpTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZWZpbml0aW9uRmlsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgR3JhcGhRbEFwaSBleHRlbmRzIHBqLkNvbXBvbmVudCB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvZGVnZW5Db25maWdGaWxlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogcGouYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHAsIHByb3RlY3RlZCBvcHRpb25zOiBHcmFwaFFsQXBpT3B0aW9ucykge1xuICAgIHN1cGVyKGFwcCk7XG5cbiAgICBhcHAuYWRkRGV2RGVwcyhcbiAgICAgICdAZ3JhcGhxbC1jb2RlZ2VuL2NsaScsXG4gICAgICAnQGdyYXBocWwtY29kZWdlbi90eXBlc2NyaXB0JyxcbiAgICAgICdAZ3JhcGhxbC1jb2RlZ2VuL3R5cGVzY3JpcHQtcmVzb2x2ZXJzJyxcbiAgICAgICdAdHlwZXMvYXdzLWxhbWJkYScsXG4gICAgICAnQHR5cGVzL2xhbWJkYS1sb2cnLFxuICAgICk7XG4gICAgYXBwLmFkZERlcHMoXG4gICAgICAnZ3JhcGhxbCcsXG4gICAgICAnQGF3cy1hcHBzeW5jL3V0aWxzJyxcbiAgICAgICdlc2J1aWxkJyxcbiAgICAgICdAYXdzLWNkay9hd3MtY29nbml0by1pZGVudGl0eXBvb2wtYWxwaGEnLFxuICAgICk7XG5cbiAgICB0aGlzLmNvZGVnZW5Db25maWdGaWxlTmFtZSA9IGBncmFwaHFsLWNvZGVnZW4uJHtvcHRpb25zLmFwaU5hbWUudG9Mb3dlckNhc2UoKX0ueW1sYDtcbiAgICBjb25zdCBnZW5lcmF0ZVRhc2sgPSBhcHAuYWRkVGFzayhgZ2VuZXJhdGU6YXBpOiR7b3B0aW9ucy5hcGlOYW1lLnRvTG93ZXJDYXNlKCl9YCwge1xuICAgICAgZXhlYzogYGdyYXBocWwtY29kZWdlbiAtYyAke3RoaXMuY29kZWdlbkNvbmZpZ0ZpbGVOYW1lfWAsXG4gICAgICBkZXNjcmlwdGlvbjogJ0dlbmVyYXRlIFR5cGVzIGZyb20gdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbicsXG4gICAgfSk7XG4gICAgYXBwLnByZUNvbXBpbGVUYXNrLnByZXBlbmRTcGF3bihnZW5lcmF0ZVRhc2spO1xuXG4gICAgY29uc3QgY29kZWdlbkNvbmZpZyA9IHtcbiAgICAgIHNjaGVtYTogdGhpcy5vcHRpb25zLmRlZmluaXRpb25GaWxlLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgICBBV1NEYXRlOiAnc3RyaW5nJyxcbiAgICAgICAgICBBV1NVUkw6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGdlbmVyYXRlczoge1xuICAgICAgICBbYC4vc3JjL2dlbmVyYXRlZC9ncmFwaHFsLiR7dGhpcy5vcHRpb25zLmFwaU5hbWUudG9Mb3dlckNhc2UoKX0tbW9kZWwuZ2VuZXJhdGVkLnRzYF06IHtcbiAgICAgICAgICBwbHVnaW5zOiBbJ3R5cGVzY3JpcHQnLCAndHlwZXNjcmlwdC1yZXNvbHZlcnMnXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIG5ldyBwai5ZYW1sRmlsZSh0aGlzLnByb2plY3QsIHRoaXMuY29kZWdlbkNvbmZpZ0ZpbGVOYW1lLCB7XG4gICAgICBvYmo6IGNvZGVnZW5Db25maWcsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb25zdHJ1Y3RGaWxlID0gbmV3IHBqLlRleHRGaWxlKHRoaXMucHJvamVjdCwgYHNyYy9nZW5lcmF0ZWQvZ3JhcGhxbC4ke3RoaXMub3B0aW9ucy5hcGlOYW1lLnRvTG93ZXJDYXNlKCl9LWFwaS5nZW5lcmF0ZWQudHNgKTtcbiAgICBjb25zdHJ1Y3RGaWxlLmFkZExpbmUoYC8vICR7Y29uc3RydWN0RmlsZS5tYXJrZXJ9XG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBHcmFwaFFsQXBpLCBHcmFwaFFsQXBpUHJvcHMgfSBmcm9tICcke1BBQ0tBR0VfTkFNRX0vbGliL2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUmVzb2x2ZXJzIH0gZnJvbSAnLi9ncmFwaHFsLiR7dGhpcy5vcHRpb25zLmFwaU5hbWUudG9Mb3dlckNhc2UoKX0tbW9kZWwuZ2VuZXJhdGVkJztcblxuZXhwb3J0IGludGVyZmFjZSAke3RoaXMub3B0aW9ucy5hcGlOYW1lfUdyYXBoUWxBcGlQcm9wcyBleHRlbmRzIE9taXQ8R3JhcGhRbEFwaVByb3BzLCAnZGVmaW5pdGlvbkZpbGVOYW1lJyB8ICdhcGlOYW1lJz4ge1xuICAvL1xufVxuXG5leHBvcnQgY2xhc3MgJHt0aGlzLm9wdGlvbnMuYXBpTmFtZX1HcmFwaFFsQXBpIGV4dGVuZHMgR3JhcGhRbEFwaTxSZXNvbHZlcnM+IHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogJHt0aGlzLm9wdGlvbnMuYXBpTmFtZX1HcmFwaFFsQXBpUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgYXBpTmFtZTogJyR7dGhpcy5vcHRpb25zLmFwaU5hbWV9JyxcbiAgICAgIGRlZmluaXRpb25GaWxlTmFtZTogJyR7dGhpcy5vcHRpb25zLmRlZmluaXRpb25GaWxlfScsXG4gICAgfSk7XG4gIH1cblxufWApO1xuXG4gICAgbmV3IHBqLlNhbXBsZUZpbGUodGhpcy5wcm9qZWN0LCB0aGlzLm9wdGlvbnMuZGVmaW5pdGlvbkZpbGUsIHtcbiAgICAgIGNvbnRlbnRzOiBgdHlwZSBRdWVyeSB7XG4gICB1c2VyczogW1VzZXJdXG59XG5cbnR5cGUgVXNlciB7XG4gICBpZDogSUQhXG4gICBuYW1lOiBTdHJpbmdcbn1gLFxuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Component, Project } from 'projen';
|
|
2
|
+
/**
|
|
3
|
+
* SampleDir options
|
|
4
|
+
*/
|
|
5
|
+
export interface LazySampleDirOptions {
|
|
6
|
+
/**
|
|
7
|
+
* The files to render into the directory.
|
|
8
|
+
*/
|
|
9
|
+
readonly fileGenerator: () => {
|
|
10
|
+
[fileName: string]: () => string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Renders the given files into the directory if the files do not exist. Use this to create sample code files
|
|
15
|
+
*/
|
|
16
|
+
export declare class LazySampleDir extends Component {
|
|
17
|
+
private readonly dir;
|
|
18
|
+
private readonly options;
|
|
19
|
+
/**
|
|
20
|
+
* Create sample files in the given directory
|
|
21
|
+
* @param project Parent project to add files to.
|
|
22
|
+
* @param dir directory to add files to.
|
|
23
|
+
* @param options options for which files to create.
|
|
24
|
+
*/
|
|
25
|
+
constructor(project: Project, dir: string, options: LazySampleDirOptions);
|
|
26
|
+
synthesize(): void;
|
|
27
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LazySampleDir = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const projen_1 = require("projen");
|
|
10
|
+
/**
|
|
11
|
+
* Renders the given files into the directory if the files do not exist. Use this to create sample code files
|
|
12
|
+
*/
|
|
13
|
+
class LazySampleDir extends projen_1.Component {
|
|
14
|
+
/**
|
|
15
|
+
* Create sample files in the given directory
|
|
16
|
+
* @param project Parent project to add files to.
|
|
17
|
+
* @param dir directory to add files to.
|
|
18
|
+
* @param options options for which files to create.
|
|
19
|
+
*/
|
|
20
|
+
constructor(project, dir, options) {
|
|
21
|
+
super(project);
|
|
22
|
+
this.dir = dir;
|
|
23
|
+
this.options = options;
|
|
24
|
+
}
|
|
25
|
+
synthesize() {
|
|
26
|
+
const fullOutdir = path_1.default.join(this.project.outdir, this.dir);
|
|
27
|
+
// previously creating the directory to allow empty dirs to be created
|
|
28
|
+
fs_1.default.mkdirSync(fullOutdir, { recursive: true });
|
|
29
|
+
const files = this.options.fileGenerator();
|
|
30
|
+
for (const filename in files) {
|
|
31
|
+
writeFile(path_1.default.join(fullOutdir, filename), files[filename]);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.LazySampleDir = LazySampleDir;
|
|
36
|
+
function writeFile(filePath, contentGenerator) {
|
|
37
|
+
if (fs_1.default.existsSync(filePath)) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
fs_1.default.mkdirSync(path_1.default.dirname(filePath), { recursive: true });
|
|
41
|
+
fs_1.default.writeFileSync(filePath, contentGenerator());
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1zYW1wbGVkaXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVuL2xhenktc2FtcGxlZGlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDRDQUFvQjtBQUNwQixnREFBd0I7QUFDeEIsbUNBQTRDO0FBYzVDOztHQUVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsa0JBQVM7SUFJMUM7Ozs7O09BS0c7SUFDSCxZQUFZLE9BQWdCLEVBQUUsR0FBVyxFQUFFLE9BQTZCO1FBQ3RFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVU7UUFDZixNQUFNLFVBQVUsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1RCxzRUFBc0U7UUFDdEUsWUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU5QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLEtBQUssTUFBTSxRQUFRLElBQUksS0FBSyxFQUFFO1lBQzVCLFNBQVMsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7Q0FDRjtBQTNCRCxzQ0EyQkM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxRQUFnQixFQUFFLGdCQUFnQztJQUNuRSxJQUFJLFlBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDM0IsT0FBTztLQUNSO0lBRUQsWUFBRSxDQUFDLFNBQVMsQ0FBQyxjQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUQsWUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuXG4vKipcbiAqIFNhbXBsZURpciBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF6eVNhbXBsZURpck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZpbGVzIHRvIHJlbmRlciBpbnRvIHRoZSBkaXJlY3RvcnkuXG4gICAqL1xuICByZWFkb25seSBmaWxlR2VuZXJhdG9yOiAoKSA9PiB7XG4gICAgW2ZpbGVOYW1lOiBzdHJpbmddOiAoKSA9PiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKlxuICogUmVuZGVycyB0aGUgZ2l2ZW4gZmlsZXMgaW50byB0aGUgZGlyZWN0b3J5IGlmIHRoZSBmaWxlcyBkbyBub3QgZXhpc3QuIFVzZSB0aGlzIHRvIGNyZWF0ZSBzYW1wbGUgY29kZSBmaWxlc1xuICovXG5leHBvcnQgY2xhc3MgTGF6eVNhbXBsZURpciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogTGF6eVNhbXBsZURpck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBzYW1wbGUgZmlsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeVxuICAgKiBAcGFyYW0gcHJvamVjdCBQYXJlbnQgcHJvamVjdCB0byBhZGQgZmlsZXMgdG8uXG4gICAqIEBwYXJhbSBkaXIgZGlyZWN0b3J5IHRvIGFkZCBmaWxlcyB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBmb3Igd2hpY2ggZmlsZXMgdG8gY3JlYXRlLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgZGlyOiBzdHJpbmcsIG9wdGlvbnM6IExhenlTYW1wbGVEaXJPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgdGhpcy5kaXIgPSBkaXI7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBzeW50aGVzaXplKCkge1xuICAgIGNvbnN0IGZ1bGxPdXRkaXIgPSBwYXRoLmpvaW4odGhpcy5wcm9qZWN0Lm91dGRpciwgdGhpcy5kaXIpO1xuXG4gICAgLy8gcHJldmlvdXNseSBjcmVhdGluZyB0aGUgZGlyZWN0b3J5IHRvIGFsbG93IGVtcHR5IGRpcnMgdG8gYmUgY3JlYXRlZFxuICAgIGZzLm1rZGlyU3luYyhmdWxsT3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5vcHRpb25zLmZpbGVHZW5lcmF0b3IoKTtcbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIGluIGZpbGVzKSB7XG4gICAgICB3cml0ZUZpbGUocGF0aC5qb2luKGZ1bGxPdXRkaXIsIGZpbGVuYW1lKSwgZmlsZXNbZmlsZW5hbWVdKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gd3JpdGVGaWxlKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRHZW5lcmF0b3I6ICgoKSA9PiBzdHJpbmcpKSB7XG4gIGlmIChmcy5leGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZzLm1rZGlyU3luYyhwYXRoLmRpcm5hbWUoZmlsZVBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgY29udGVudEdlbmVyYXRvcigpKTtcbn0iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IConstruct } from 'constructs';
|
|
2
|
+
import { FileBase, FileBaseOptions, IResolver, TextFile } from 'projen';
|
|
3
|
+
export interface LazyTextFileOptions extends FileBaseOptions {
|
|
4
|
+
/**
|
|
5
|
+
* The content provider for the file.
|
|
6
|
+
*/
|
|
7
|
+
readonly content: (file: FileBase) => string;
|
|
8
|
+
}
|
|
9
|
+
export declare class LazyTextFile extends TextFile {
|
|
10
|
+
private readonly content;
|
|
11
|
+
/**
|
|
12
|
+
* Defines a text file.
|
|
13
|
+
*
|
|
14
|
+
* @param project The project
|
|
15
|
+
* @param filePath File path
|
|
16
|
+
* @param options Options
|
|
17
|
+
*/
|
|
18
|
+
constructor(scope: IConstruct, filePath: string, options?: LazyTextFileOptions);
|
|
19
|
+
protected synthesizeContent(_: IResolver): string | undefined;
|
|
20
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LazyTextFile = void 0;
|
|
4
|
+
const projen_1 = require("projen");
|
|
5
|
+
class LazyTextFile extends projen_1.TextFile {
|
|
6
|
+
/**
|
|
7
|
+
* Defines a text file.
|
|
8
|
+
*
|
|
9
|
+
* @param project The project
|
|
10
|
+
* @param filePath File path
|
|
11
|
+
* @param options Options
|
|
12
|
+
*/
|
|
13
|
+
constructor(scope, filePath, options) {
|
|
14
|
+
var _a;
|
|
15
|
+
super(scope, filePath, options);
|
|
16
|
+
this.content = (_a = options === null || options === void 0 ? void 0 : options.content) !== null && _a !== void 0 ? _a : (() => '');
|
|
17
|
+
}
|
|
18
|
+
synthesizeContent(_) {
|
|
19
|
+
return this.content(this);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.LazyTextFile = LazyTextFile;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS10ZXh0ZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZW4vbGF6eS10ZXh0ZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtQ0FBd0U7QUFTeEUsTUFBYSxZQUFhLFNBQVEsaUJBQVE7SUFJeEM7Ozs7OztPQU1HO0lBQ0gsWUFBWSxLQUFpQixFQUFFLFFBQWdCLEVBQUUsT0FBNkI7O1FBQzVFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTyxtQ0FBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxDQUFZO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFuQkQsb0NBbUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRmlsZUJhc2UsIEZpbGVCYXNlT3B0aW9ucywgSVJlc29sdmVyLCBUZXh0RmlsZSB9IGZyb20gJ3Byb2plbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF6eVRleHRGaWxlT3B0aW9ucyBleHRlbmRzIEZpbGVCYXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBwcm92aWRlciBmb3IgdGhlIGZpbGUuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiAoZmlsZTogRmlsZUJhc2UpID0+IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIExhenlUZXh0RmlsZSBleHRlbmRzIFRleHRGaWxlIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRlbnQ6IChmaWxlOiBGaWxlQmFzZSkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgdGV4dCBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdFxuICAgKiBAcGFyYW0gZmlsZVBhdGggRmlsZSBwYXRoXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBJQ29uc3RydWN0LCBmaWxlUGF0aDogc3RyaW5nLCBvcHRpb25zPzogTGF6eVRleHRGaWxlT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBmaWxlUGF0aCwgb3B0aW9ucyk7XG4gICAgdGhpcy5jb250ZW50ID0gb3B0aW9ucz8uY29udGVudCA/PyAoKCkgPT4gJycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVDb250ZW50KF86IElSZXNvbHZlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudCh0aGlzKTtcbiAgfVxufSJdfQ==
|
package/lib/projen/rest-api.d.ts
CHANGED
|
@@ -7,9 +7,11 @@ export interface RestApiOptions {
|
|
|
7
7
|
export declare class RestApi extends pj.Component {
|
|
8
8
|
protected options: RestApiOptions;
|
|
9
9
|
constructor(app: pj.awscdk.AwsCdkTypeScriptApp, options: RestApiOptions);
|
|
10
|
-
protected createConstructFile(
|
|
10
|
+
protected createConstructFile(file: pj.FileBase): string;
|
|
11
11
|
protected validatePathRef(apiSpec: OpenAPI3, path: string, visited?: string[]): boolean;
|
|
12
|
-
protected
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
protected addRestResourceHandlerSample(files: {
|
|
13
|
+
[fileName: string]: () => string;
|
|
14
|
+
}, apiSpec: OpenAPI3, path: string, method: string): void;
|
|
15
|
+
protected createEntryFile(method: string, operationId: string): string;
|
|
16
|
+
private generateSampleHandlerFiles;
|
|
15
17
|
}
|