From 0c9542301e07ccc6c62d0546d2fc5d882f3c9a29 Mon Sep 17 00:00:00 2001 From: Eduardo Rodrigues Date: Wed, 1 Jul 2020 22:53:30 +0200 Subject: [PATCH 1/7] add pr template --- .github/PULL_REQUEST_TEMPLATE.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..e5d049b --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,4 @@ +*Issue #, if available:* + +*Description of changes:* + From f52427bf23d5bbb6ad28c426faabe723754d0d9a Mon Sep 17 00:00:00 2001 From: Eduardo Rodrigues Date: Wed, 1 Jul 2020 22:59:25 +0200 Subject: [PATCH 2/7] prepare for nested object --- .pylintrc | 2 +- python/rpdk/typescript/codegen.py | 3 ++- python/rpdk/typescript/resolver.py | 6 ++++++ tests/plugin/resolver_test.py | 15 ++++++++++++++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/.pylintrc b/.pylintrc index acaad2d..fdfba49 100644 --- a/.pylintrc +++ b/.pylintrc @@ -16,7 +16,7 @@ disable= [BASIC] -good-names=e,ex,f,fp,i,j,k,n,_ +good-names=e,ex,f,fp,i,j,k,v,n,_ [FORMAT] diff --git a/python/rpdk/typescript/codegen.py b/python/rpdk/typescript/codegen.py index fdad82e..557e2e0 100644 --- a/python/rpdk/typescript/codegen.py +++ b/python/rpdk/typescript/codegen.py @@ -10,7 +10,7 @@ from rpdk.core.jsonutils.resolver import ContainerType, resolve_models from rpdk.core.plugin_base import LanguagePlugin -from .resolver import translate_type +from .resolver import contains_model, translate_type from .utils import safe_reserved LOG = logging.getLogger(__name__) @@ -41,6 +41,7 @@ def __init__(self): trim_blocks=True, lstrip_blocks=True, keep_trailing_newline=True ) self.env.filters["translate_type"] = translate_type + self.env.filters["contains_model"] = contains_model self.env.filters["safe_reserved"] = safe_reserved self.env.globals["ContainerType"] = ContainerType self.namespace = None diff --git a/python/rpdk/typescript/resolver.py b/python/rpdk/typescript/resolver.py index 83434fe..58f6c98 100644 --- a/python/rpdk/typescript/resolver.py +++ b/python/rpdk/typescript/resolver.py @@ -26,3 +26,9 @@ def translate_type(resolved_type): return f"Set<{item_type}>" raise ValueError(f"Unknown container type {resolved_type.container}") + + +def contains_model(resolved_type): + if resolved_type.container == ContainerType.LIST: + return contains_model(resolved_type.type) + return resolved_type.container == ContainerType.MODEL diff --git a/tests/plugin/resolver_test.py b/tests/plugin/resolver_test.py index 843d11e..7b6fe44 100644 --- a/tests/plugin/resolver_test.py +++ b/tests/plugin/resolver_test.py @@ -1,6 +1,6 @@ import pytest from rpdk.core.jsonutils.resolver import ContainerType, ResolvedType -from rpdk.typescript.resolver import PRIMITIVE_TYPES, translate_type +from rpdk.typescript.resolver import PRIMITIVE_TYPES, contains_model, translate_type RESOLVED_TYPES = [ (ResolvedType(ContainerType.PRIMITIVE, item_type), native_type) @@ -41,3 +41,16 @@ def test_translate_type_set(resolved_type, native_type): def test_translate_type_unknown(resolved_type, _typescript_type): with pytest.raises(ValueError): translate_type(ResolvedType("foo", resolved_type)) + + +@pytest.mark.parametrize("resolved_type,_native_type", RESOLVED_TYPES) +def test_contains_model_list_containing_primitive(resolved_type, _native_type): + assert contains_model(ResolvedType(ContainerType.LIST, resolved_type)) is False + + +def test_contains_model_list_containing_model(): + resolved_type = ResolvedType( + ContainerType.LIST, + ResolvedType(ContainerType.LIST, ResolvedType(ContainerType.MODEL, "Foo")), + ) + assert contains_model(resolved_type) is True From 4316b27bfbde07ccd789210d70e3548518f4e8b5 Mon Sep 17 00:00:00 2001 From: Eduardo Rodrigues Date: Wed, 1 Jul 2020 22:59:58 +0200 Subject: [PATCH 3/7] rename BaseResourceModel to BaseModel --- python/rpdk/typescript/templates/models.ts | 4 ++-- src/callback.ts | 4 ++-- src/interface.ts | 8 ++++---- src/proxy.ts | 6 +++--- src/resource.ts | 4 ++-- src/utils.ts | 6 +++--- tests/lib/callback.test.ts | 4 ++-- tests/lib/interface.test.ts | 4 ++-- tests/lib/proxy.test.ts | 4 ++-- tests/lib/resource.test.ts | 12 ++++++------ 10 files changed, 28 insertions(+), 28 deletions(-) diff --git a/python/rpdk/typescript/templates/models.ts b/python/rpdk/typescript/templates/models.ts index 6814a8e..e45b7fe 100644 --- a/python/rpdk/typescript/templates/models.ts +++ b/python/rpdk/typescript/templates/models.ts @@ -1,8 +1,8 @@ // This is a generated file. Modifications will be overwritten. -import { BaseResourceModel, Optional } from '{{lib_name}}'; +import { BaseModel, Optional } from '{{lib_name}}'; {% for model, properties in models.items() %} -export class {{ model|uppercase_first_letter }}{% if model == "ResourceModel" %} extends BaseResourceModel{% endif %} { +export class {{ model|uppercase_first_letter }}{% if model == "ResourceModel" %} extends BaseModel{% endif %} { ['constructor']: typeof {{ model|uppercase_first_letter }}; public static readonly TYPE_NAME: string = '{{ type_name }}'; diff --git a/src/callback.ts b/src/callback.ts index 785e210..b6b6ced 100644 --- a/src/callback.ts +++ b/src/callback.ts @@ -2,11 +2,11 @@ import { v4 as uuidv4 } from 'uuid'; import CloudFormation from 'aws-sdk/clients/cloudformation'; import { SessionProxy } from './proxy'; -import { BaseResourceModel, CfnResponse, OperationStatus } from './interface'; +import { BaseModel, CfnResponse, OperationStatus } from './interface'; const LOGGER = console; -interface ProgressOptions extends CfnResponse { +interface ProgressOptions extends CfnResponse { session: SessionProxy; currentOperationStatus?: OperationStatus; } diff --git a/src/interface.ts b/src/interface.ts index 7eb795a..3927b59 100644 --- a/src/interface.ts +++ b/src/interface.ts @@ -69,8 +69,8 @@ export interface RequestContext { @builder @allArgsConstructor -export class BaseResourceModel { - ['constructor']: typeof BaseResourceModel; +export class BaseModel { + ['constructor']: typeof BaseModel; protected static readonly TYPE_NAME?: string; constructor(...args: any[]) {} @@ -92,7 +92,7 @@ export class BaseResourceModel { return data; } - public static deserialize(jsonData: any): ThisType { + public static deserialize(jsonData: any): ThisType { return new this(new Map(Object.entries(jsonData))); } @@ -104,7 +104,7 @@ export class BaseResourceModel { } @allArgsConstructor -export class BaseResourceHandlerRequest { +export class BaseResourceHandlerRequest { public clientRequestToken: ClientRequestToken; public desiredResourceState?: T; public previousResourceState?: T; diff --git a/src/proxy.ts b/src/proxy.ts index efc9b38..8ec749e 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -6,7 +6,7 @@ import { allArgsConstructor, builder, IBuilder } from 'tombok'; import { BaseResourceHandlerRequest, - BaseResourceModel, + BaseModel, HandlerErrorCode, OperationStatus, } from './interface'; @@ -43,7 +43,7 @@ export class SessionProxy { @allArgsConstructor @builder export class ProgressEvent< - R extends BaseResourceModel = BaseResourceModel, + R extends BaseModel = BaseModel, T = Map > { /** @@ -187,7 +187,7 @@ export class ProgressEvent< @allArgsConstructor @builder export class ResourceHandlerRequest< - T extends BaseResourceModel + T extends BaseModel > extends BaseResourceHandlerRequest { public clientRequestToken: string; public desiredResourceState: T; diff --git a/src/resource.ts b/src/resource.ts index e72a3a5..491e0fc 100644 --- a/src/resource.ts +++ b/src/resource.ts @@ -6,7 +6,7 @@ import { reportProgress } from './callback'; import { BaseHandlerException, InternalFailure, InvalidRequest } from './exceptions'; import { Action, - BaseResourceModel, + BaseModel, BaseResourceHandlerRequest, Callable, CfnResponse, @@ -91,7 +91,7 @@ function ensureSerialize(toResponse = false): MethodDecorator { }; } -export abstract class BaseResource { +export abstract class BaseResource { constructor( public typeName: string, private modelCls: Constructor, diff --git a/src/utils.ts b/src/utils.ts index 5956711..2db3e8d 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -7,7 +7,7 @@ import { allArgsConstructor } from 'tombok'; import { Action, BaseResourceHandlerRequest, - BaseResourceModel, + BaseModel, Credentials, RequestContext, } from './interface'; @@ -128,7 +128,7 @@ export class HandlerRequest< } @allArgsConstructor -export class UnmodeledRequest extends BaseResourceHandlerRequest { +export class UnmodeledRequest extends BaseResourceHandlerRequest { constructor(...args: any[]) { super(); } @@ -139,7 +139,7 @@ export class UnmodeledRequest extends BaseResourceHandlerRequest( + public toModeled( modelCls: Constructor & { deserialize?: Function } ): BaseResourceHandlerRequest { return new BaseResourceHandlerRequest( diff --git a/tests/lib/callback.test.ts b/tests/lib/callback.test.ts index 620bbfa..982db69 100644 --- a/tests/lib/callback.test.ts +++ b/tests/lib/callback.test.ts @@ -2,7 +2,7 @@ import CloudFormation from 'aws-sdk/clients/cloudformation'; import { reportProgress } from '../../src/callback'; import { SessionProxy } from '../../src/proxy'; import { - BaseResourceModel, + BaseModel, HandlerErrorCode, OperationStatus, } from '../../src/interface'; @@ -78,7 +78,7 @@ describe('when getting callback', () => { errorCode: HandlerErrorCode.InternalFailure, operationStatus: OperationStatus.Failed, currentOperationStatus: OperationStatus.InProgress, - resourceModel: {} as BaseResourceModel, + resourceModel: {} as BaseModel, message: 'test message', }); expect(recordHandlerProgress).toHaveBeenCalledTimes(1); diff --git a/tests/lib/interface.test.ts b/tests/lib/interface.test.ts index 45ea146..96796ac 100644 --- a/tests/lib/interface.test.ts +++ b/tests/lib/interface.test.ts @@ -1,7 +1,7 @@ -import { BaseResourceModel, Optional } from '../../src/interface'; +import { BaseModel, Optional } from '../../src/interface'; describe('when getting interface', () => { - class ResourceModel extends BaseResourceModel { + class ResourceModel extends BaseModel { ['constructor']: typeof ResourceModel; public static readonly TYPE_NAME: string = 'Test::Resource::Model'; diff --git a/tests/lib/proxy.test.ts b/tests/lib/proxy.test.ts index 9f09e6c..da520ac 100644 --- a/tests/lib/proxy.test.ts +++ b/tests/lib/proxy.test.ts @@ -1,6 +1,6 @@ import { ProgressEvent, SessionProxy } from '../../src/proxy'; import { - BaseResourceModel, + BaseModel, Credentials, HandlerErrorCode, OperationStatus, @@ -10,7 +10,7 @@ import { describe('when getting session proxy', () => { const BEARER_TOKEN = 'f3390613-b2b5-4c31-a4c6-66813dff96a6'; - class ResourceModel extends BaseResourceModel { + class ResourceModel extends BaseModel { public static readonly TYPE_NAME: string = 'Test::Resource::Model'; public somekey: Optional; diff --git a/tests/lib/resource.test.ts b/tests/lib/resource.test.ts index 1707570..a5906d9 100644 --- a/tests/lib/resource.test.ts +++ b/tests/lib/resource.test.ts @@ -7,7 +7,7 @@ import { reportProgress } from '../../src/callback'; import { Action, BaseResourceHandlerRequest, - BaseResourceModel, + BaseModel, CfnResponse, HandlerErrorCode, OperationStatus, @@ -38,7 +38,7 @@ describe('when getting resource', () => { let mockSession: jest.SpyInstance; const TYPE_NAME = 'Test::Foo::Bar'; class Resource extends BaseResource {} - class MockModel extends BaseResourceModel { + class MockModel extends BaseModel { ['constructor']: typeof MockModel; public static readonly TYPE_NAME: string = TYPE_NAME; public static deserialize(jsonData: any): MockModel { @@ -170,7 +170,7 @@ describe('when getting resource', () => { }); test('entrypoint handler raises', async () => { - class Model extends BaseResourceModel { + class Model extends BaseModel { ['constructor']: typeof Model; aString: string; public static deserialize(jsonData: any): Model { @@ -312,7 +312,7 @@ describe('when getting resource', () => { return { state: 'state2' }; }); - class Model extends BaseResourceModel { + class Model extends BaseModel { ['constructor']: typeof Model; public static deserialize = mockDeserialize; } @@ -490,7 +490,7 @@ describe('when getting resource', () => { return { state: 'state2' }; }); - class Model extends BaseResourceModel { + class Model extends BaseModel { ['constructor']: typeof Model; public static deserialize = mockDeserialize; } @@ -538,7 +538,7 @@ describe('when getting resource', () => { }); test('test entrypoint success', async () => { - class Model extends BaseResourceModel { + class Model extends BaseModel { ['constructor']: typeof Model; } const spyDeserialize: jest.SpyInstance = jest.spyOn(Model, 'deserialize'); From fa44435ed8e4d3a3b9ecb269ebf2f7d81e37083a Mon Sep 17 00:00:00 2001 From: Eduardo Rodrigues Date: Wed, 1 Jul 2020 23:08:09 +0200 Subject: [PATCH 4/7] systemtags are sometimes ommitted in the request --- src/proxy.ts | 5 +---- src/utils.ts | 2 +- tests/lib/callback.test.ts | 6 +----- tests/lib/resource.test.ts | 1 - 4 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/proxy.ts b/src/proxy.ts index 8ec749e..d3ea63f 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -42,10 +42,7 @@ export class SessionProxy { @allArgsConstructor @builder -export class ProgressEvent< - R extends BaseModel = BaseModel, - T = Map -> { +export class ProgressEvent> { /** * The status indicates whether the handler has reached a terminal state or is * still computing and requires more time to complete diff --git a/src/utils.ts b/src/utils.ts index 2db3e8d..f23ef35 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -55,7 +55,7 @@ export class RequestData> { logicalResourceId: LogicalResourceId; resourceProperties: T; previousResourceProperties?: T; - systemTags: { [index: string]: string }; + systemTags?: { [index: string]: string }; stackTags?: { [index: string]: string }; previousStackTags?: { [index: string]: string }; diff --git a/tests/lib/callback.test.ts b/tests/lib/callback.test.ts index 982db69..4e1770e 100644 --- a/tests/lib/callback.test.ts +++ b/tests/lib/callback.test.ts @@ -1,11 +1,7 @@ import CloudFormation from 'aws-sdk/clients/cloudformation'; import { reportProgress } from '../../src/callback'; import { SessionProxy } from '../../src/proxy'; -import { - BaseModel, - HandlerErrorCode, - OperationStatus, -} from '../../src/interface'; +import { BaseModel, HandlerErrorCode, OperationStatus } from '../../src/interface'; const mockResult = (output: any): jest.Mock => { return jest.fn().mockReturnValue({ diff --git a/tests/lib/resource.test.ts b/tests/lib/resource.test.ts index a5906d9..ecf864b 100644 --- a/tests/lib/resource.test.ts +++ b/tests/lib/resource.test.ts @@ -106,7 +106,6 @@ describe('when getting resource', () => { logicalResourceId: 'myBucket', resourceProperties: 'state1', previousResourceProperties: 'state2', - systemTags: { 'aws:cloudformation:stack-id': 'SampleStack' }, stackTags: { tag1: 'abc' }, previousStackTags: { tag1: 'def' }, }, From df95fda4b72567b708d26d6217ddf04ae3c1c05f Mon Sep 17 00:00:00 2001 From: Eduardo Rodrigues Date: Wed, 1 Jul 2020 23:11:56 +0200 Subject: [PATCH 5/7] add sam-tests to default gitignore --- python/rpdk/typescript/data/typescript.gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/python/rpdk/typescript/data/typescript.gitignore b/python/rpdk/typescript/data/typescript.gitignore index 171d74d..b6fd3f1 100644 --- a/python/rpdk/typescript/data/typescript.gitignore +++ b/python/rpdk/typescript/data/typescript.gitignore @@ -13,3 +13,6 @@ rpdk.log # Node.js node_modules/ coverage/ + +# contains credentials +sam-tests/ From a780582f35d7b12ad0400452df078285d3e99fdc Mon Sep 17 00:00:00 2001 From: Eduardo Rodrigues Date: Wed, 1 Jul 2020 23:14:14 +0200 Subject: [PATCH 6/7] update the description content type to markdown --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index cbc3f46..09825fc 100644 --- a/setup.py +++ b/setup.py @@ -27,6 +27,7 @@ def find_version(*file_paths): version=find_version("python", "rpdk", "typescript", "__init__.py"), description=__doc__, long_description=read("README.md"), + long_description_content_type="text/markdown", author="eduardomourar", author_email="eduardomourar@users.noreply.github.com", url="https://github.com/eduardomourar/cloudformation-cli-typescript-plugin", From d59f2d094553103dcb73d7fcd030fadd89809216 Mon Sep 17 00:00:00 2001 From: Eduardo Rodrigues Date: Thu, 2 Jul 2020 00:00:03 +0200 Subject: [PATCH 7/7] update cloudformation cli dependencies --- .github/PULL_REQUEST_TEMPLATE.md | 1 - .github/workflows/ci.yml | 6 +- Pipfile.lock | 166 ++++++++++++++++-------------- python/rpdk/typescript/codegen.py | 2 +- 4 files changed, 91 insertions(+), 84 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index e5d049b..1bac2b9 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,3 @@ *Issue #, if available:* *Description of changes:* - diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 382ebc2..e302ecb 100755 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: - name: Install Dependencies Node.js id: install_nodejs run: | - npm ci --optional --timing && npm run build + npm ci --optional && npm run build - name: Run Unit Tests id: unit_testing run: | @@ -68,9 +68,9 @@ jobs: ls -la mkdir ./dist cp "$RPDK_PATH" ./dist - npm install --timing "./dist/$RPDK_PACKAGE" + npm install "./dist/$RPDK_PACKAGE" cfn generate -vv && cfn validate -vv - npm install --optional --timing + npm install --optional sam build --debug --build-dir ./build TypeFunction sam build --debug --build-dir ./build TestEntrypoint sam local invoke -t build/template.yaml --debug --event sam-tests/create.json --log-file sam.log TestEntrypoint diff --git a/Pipfile.lock b/Pipfile.lock index 10d980d..df89657 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -33,23 +33,24 @@ }, "boto3": { "hashes": [ - "sha256:4f7f11e7489c267f9ea0c6193bfbe20ef1a8dd639d780aea0ac61a769de722e1" + "sha256:3c654c1b8f9708e0b457ea1d312ee53451368d09b571ce737dc1f46484112bc1", + "sha256:974a4a495fa876f4e8180e2690c840152f06cc3badbe865f05ed731efadcbf44" ], - "version": "==1.12.46" + "version": "==1.14.15" }, "botocore": { "hashes": [ - "sha256:ae39899dc450570968e3e128d2c8a011e5f8d4f6fd07a7d1f01df10a11ef332d", - "sha256:b609e2373dccb728b34555af28fd8bd87cc57295cafa32f8a5b8044bb58b9ea8" + "sha256:34ebc56471a75ea28bfd39f1665d58ee13229c75e8cd6c62b2e2abf1f3e75f0f", + "sha256:bb3d3e6aa1fb0caac5909421404218fa7fdcdfc5a1b597ec93cb3affb8326d26" ], - "version": "==1.15.46" + "version": "==1.17.15" }, "certifi": { "hashes": [ - "sha256:1d987a998c75633c40847cc966fcf5904906c920a7f17ef374f5aa4282abd304", - "sha256:51fcb31174be6e6664c5f69e3e1691a2d72a1a12e90f872cbdb1567eb47b6519" + "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3", + "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41" ], - "version": "==2020.4.5.1" + "version": "==2020.6.20" }, "chardet": { "hashes": [ @@ -60,10 +61,10 @@ }, "cloudformation-cli": { "hashes": [ - "sha256:bba6d3e23e19d079549ffd877d5b61ca52f0654118445ba62c70760934257c55", - "sha256:e0144ddf3cc6e5a84c453254b72de5ee73cd5f63eb2454051f07c910a78e3f30" + "sha256:78057c90b4a1e97fd7f9857932d6443e8f5250db2a76419255aafab2711b8d50", + "sha256:daa3093a1705c0db2953029f9908605501583f595d335c56b7e446789ddcbd38" ], - "version": "==0.1.3" + "version": "==0.1.4" }, "cloudformation-cli-typescript-plugin": { "editable": true, @@ -86,25 +87,25 @@ }, "hypothesis": { "hashes": [ - "sha256:07498961389e108f7e595dedb6a47297a4d64a91c9a5f53b6c05fdc46d95ece2", - "sha256:080837935f774765c792b44c9c37d6299776029d05642b5fa29d983c307d861f" + "sha256:ba7c92006716aaee4684f7876c116adedcfb88b19fcb55d21c47b28f03f933bf", + "sha256:dd21b1be951fefc9022047824c262f4e88d95dd24141b837b92e235c63baabb7" ], - "version": "==5.10.4" + "version": "==5.19.0" }, "idna": { "hashes": [ - "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", - "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" + "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", + "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" ], - "version": "==2.9" + "version": "==2.10" }, "importlib-metadata": { "hashes": [ - "sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f", - "sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e" + "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83", + "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070" ], "markers": "python_version < '3.8'", - "version": "==1.6.0" + "version": "==1.7.0" }, "jinja2": { "hashes": [ @@ -115,10 +116,10 @@ }, "jmespath": { "hashes": [ - "sha256:695cb76fa78a10663425d5b73ddc5714eb711157e52704d69be03b1a02ba4fec", - "sha256:cca55c8d153173e21baa59983015ad0daf603f9cb799904ff057bfb8ff8dc2d9" + "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", + "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" ], - "version": "==0.9.5" + "version": "==0.10.0" }, "jsonschema": { "hashes": [ @@ -167,17 +168,17 @@ }, "more-itertools": { "hashes": [ - "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c", - "sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507" + "sha256:68c70cc7167bdf5c7c9d8f6954a7837089c6a36bf565383919bb595efb8a17e5", + "sha256:b78134b2063dd214000685165d81c154522c3ee0a1c0d4d113c80361c234c5a2" ], - "version": "==8.2.0" + "version": "==8.4.0" }, "packaging": { "hashes": [ - "sha256:3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3", - "sha256:82f77b9bee21c1bafbf35a84905d604d5d1223801d639cf3ed140bd651c08752" + "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8", + "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181" ], - "version": "==20.3" + "version": "==20.4" }, "pluggy": { "hashes": [ @@ -188,10 +189,10 @@ }, "py": { "hashes": [ - "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa", - "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0" + "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2", + "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342" ], - "version": "==1.8.1" + "version": "==1.9.0" }, "pyparsing": { "hashes": [ @@ -208,10 +209,10 @@ }, "pytest": { "hashes": [ - "sha256:0e5b30f5cb04e887b91b1ee519fa3d89049595f428c1db76e73bd7f17b09b172", - "sha256:84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970" + "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1", + "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8" ], - "version": "==5.4.1" + "version": "==5.4.3" }, "python-dateutil": { "hashes": [ @@ -238,10 +239,10 @@ }, "requests": { "hashes": [ - "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", - "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" + "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b", + "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898" ], - "version": "==2.23.0" + "version": "==2.24.0" }, "s3transfer": { "hashes": [ @@ -252,17 +253,17 @@ }, "six": { "hashes": [ - "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", - "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" ], - "version": "==1.14.0" + "version": "==1.15.0" }, "sortedcontainers": { "hashes": [ - "sha256:974e9a32f56b17c1bac2aebd9dcf197f3eb9cd30553c5852a3187ad162e1a03a", - "sha256:d9e96492dd51fae31e60837736b38fe42a187b5404c16606ff7ee7cd582d4c60" + "sha256:4e73a757831fc3ca4de2859c422564239a31d8213d09a2a666e375807034d2ba", + "sha256:c633ebde8580f241f274c1f8994a665c0e54a17724fecd0cae2f079e09c36d3f" ], - "version": "==2.1.0" + "version": "==2.2.2" }, "urllib3": { "hashes": [ @@ -274,10 +275,10 @@ }, "wcwidth": { "hashes": [ - "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1", - "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1" + "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", + "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" ], - "version": "==0.1.9" + "version": "==0.2.5" }, "werkzeug": { "hashes": [ @@ -304,10 +305,10 @@ "develop": { "astroid": { "hashes": [ - "sha256:71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a", - "sha256:840947ebfa8b58f318d42301cf8c0a20fd794a33b61cc4638e28e9e61ba32f42" + "sha256:2f4078c2a41bf377eea06d71c9d2ba4eb8f6b1af2135bec27bbbb7d8f12bb703", + "sha256:bc58d83eb610252fd8de6363e39d4f1d0619c894b0ed24603b881c02e64c7386" ], - "version": "==2.3.3" + "version": "==2.4.2" }, "attrs": { "hashes": [ @@ -354,11 +355,11 @@ }, "importlib-metadata": { "hashes": [ - "sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f", - "sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e" + "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83", + "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070" ], "markers": "python_version < '3.8'", - "version": "==1.6.0" + "version": "==1.7.0" }, "isort": { "hashes": [ @@ -402,17 +403,17 @@ }, "more-itertools": { "hashes": [ - "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c", - "sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507" + "sha256:68c70cc7167bdf5c7c9d8f6954a7837089c6a36bf565383919bb595efb8a17e5", + "sha256:b78134b2063dd214000685165d81c154522c3ee0a1c0d4d113c80361c234c5a2" ], - "version": "==8.2.0" + "version": "==8.4.0" }, "packaging": { "hashes": [ - "sha256:3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3", - "sha256:82f77b9bee21c1bafbf35a84905d604d5d1223801d639cf3ed140bd651c08752" + "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8", + "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181" ], - "version": "==20.3" + "version": "==20.4" }, "pluggy": { "hashes": [ @@ -423,18 +424,18 @@ }, "py": { "hashes": [ - "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa", - "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0" + "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2", + "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342" ], - "version": "==1.8.1" + "version": "==1.9.0" }, "pylint": { "hashes": [ - "sha256:3db5468ad013380e987410a8d6956226963aed94ecb5f9d3a28acca6d9ac36cd", - "sha256:886e6afc935ea2590b462664b161ca9a5e40168ea99e5300935f6591ad467df4" + "sha256:7dd78437f2d8d019717dbf287772d0b2dbdfd13fc016aa7faa08d67bccc46adc", + "sha256:d0ece7d223fe422088b0e8f13fa0a1e8eb745ebffcb8ed53d3e95394b6101a1c" ], "index": "pypi", - "version": "==2.4.4" + "version": "==2.5.3" }, "pyparsing": { "hashes": [ @@ -445,25 +446,32 @@ }, "pytest": { "hashes": [ - "sha256:0e5b30f5cb04e887b91b1ee519fa3d89049595f428c1db76e73bd7f17b09b172", - "sha256:84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970" + "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1", + "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8" ], - "version": "==5.4.1" + "version": "==5.4.3" }, "pytest-cov": { "hashes": [ - "sha256:cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b", - "sha256:cdbdef4f870408ebdbfeb44e63e07eb18bb4619fae852f6e760645fa36172626" + "sha256:1a629dc9f48e53512fcbfda6b07de490c374b0c83c55ff7a1720b3fccff0ac87", + "sha256:6e6d18092dce6fad667cd7020deed816f858ad3b49d5b5e2b1cc1c97a4dba65c" ], "index": "pypi", - "version": "==2.8.1" + "version": "==2.10.0" }, "six": { "hashes": [ - "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", - "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], + "version": "==1.15.0" + }, + "toml": { + "hashes": [ + "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f", + "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88" ], - "version": "==1.14.0" + "version": "==0.10.1" }, "typed-ast": { "hashes": [ @@ -494,16 +502,16 @@ }, "wcwidth": { "hashes": [ - "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1", - "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1" + "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", + "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" ], - "version": "==0.1.9" + "version": "==0.2.5" }, "wrapt": { "hashes": [ - "sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1" + "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7" ], - "version": "==1.11.2" + "version": "==1.12.1" }, "zipp": { "hashes": [ diff --git a/python/rpdk/typescript/codegen.py b/python/rpdk/typescript/codegen.py index 557e2e0..c2e8e94 100644 --- a/python/rpdk/typescript/codegen.py +++ b/python/rpdk/typescript/codegen.py @@ -205,7 +205,7 @@ def _remove_build_artifacts(deps_path): @staticmethod def _make_build_command(base_path, build_command=None): command = ( - "npm install --optional --timing " + "npm install --optional " + f"&& sam build --debug --build-dir {base_path}/build" ) if build_command is not None: