Skip to content

Commit 1672f7b

Browse files
committed
fix: Resolve multiple customer-blocking bugs (#126, #131, #132)
Fix class-transformer version mismatch (0.3.1 -> 0.5.1) causing silent deserialization failures in generated projects. Remove @ts-ignore from Integer interface so consumers with skipLibCheck:false can compile. Fix timezone-dependent test failure in log-delivery tests. Add PyPI CD workflow for automated plugin releases. Closes #126, #131, #132
1 parent c674181 commit 1672f7b

4 files changed

Lines changed: 37 additions & 16 deletions

File tree

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# This workflow will release project to PyPI
2+
name: CloudFormation CLI TypeScript Plugin Release
3+
on:
4+
release:
5+
types: [published]
6+
jobs:
7+
build:
8+
if: endsWith(github.ref, '-plugin')
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
- name: Set up Python 3.11
13+
uses: actions/setup-python@v5
14+
with:
15+
python-version: 3.11
16+
- name: Install dependencies
17+
run: |
18+
pip install --upgrade wheel twine
19+
- name: Package project
20+
run: |
21+
python setup.py sdist bdist_wheel
22+
- name: Publish distribution to PyPI
23+
uses: pypa/gh-action-pypi-publish@release/v1
24+
with:
25+
password: ${{ secrets.PYPI_API_KEY_CLOUDFORMATION_CLI_TYPESCRIPT_PLUGIN }}

python/rpdk/typescript/templates/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
},
1515
"dependencies": {
1616
"{{lib_name}}": "{{lib_path}}",
17-
"class-transformer": "0.3.1"
17+
"class-transformer": "0.5.1"
1818
},
1919
"devDependencies": {
2020
"@types/node": "^20.0.0",

src/interface.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,7 @@ export interface Callable<R extends Array<any>, T> {
6666
(...args: R): T;
6767
}
6868

69-
// @ts-ignore
70-
// eslint-disable-next-line
71-
interface Integer extends BigInt {
69+
interface Integer {
7270
/**
7371
* Defines the default JSON representation of
7472
* Integer (BigInt) to be a number.
@@ -78,11 +76,12 @@ interface Integer extends BigInt {
7876
/** Returns the primitive value of the specified object. */
7977
valueOf(): integer;
8078

79+
toString(radix?: number): string;
80+
8181
readonly [Symbol.toStringTag]: 'Integer';
8282
}
8383

84-
// @ts-ignore
85-
interface IntegerConstructor extends BigIntConstructor {
84+
interface IntegerConstructor {
8685
(value?: bigint | integer | boolean | number | string): bigint;
8786
readonly prototype: Integer;
8887
/**
@@ -96,13 +95,11 @@ interface IntegerConstructor extends BigIntConstructor {
9695
/**
9796
* Wrapper with additional JSON serialization for bigint type
9897
*/
99-
// @ts-ignore
100-
export const Integer: IntegerConstructor = new Proxy(BigInt, {
101-
// @ts-ignore
98+
export const Integer: IntegerConstructor = new Proxy(BigInt as unknown as IntegerConstructor, {
10299
apply(
103100
target: IntegerConstructor,
104101
_thisArg: unknown,
105-
argArray?: unknown[]
102+
argArray: unknown[]
106103
): integer {
107104
target.prototype.toJSON = function (): number {
108105
return Number(this.valueOf());
@@ -118,8 +115,7 @@ export const Integer: IntegerConstructor = new Proxy(BigInt, {
118115
return true;
119116
};
120117
target.isSafeInteger = isSafeInteger;
121-
// @ts-expect-error argArray is unknown
122-
const value = target(...argArray);
118+
const value = target(...(argArray as [bigint | integer | boolean | number | string]));
123119
if (value && !isSafeInteger(value)) {
124120
throw new RangeError(`Value is not a safe integer: ${value.toString()}`);
125121
}

tests/lib/log-delivery.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1271,11 +1271,11 @@ describe('when delivering logs', () => {
12711271
loggerProxy.addLogPublisher(s3Logger);
12721272

12731273
loggerProxy.log('count: [%d]', 5.12);
1274-
loggerProxy.log('timestamp: [%s]', new Date('2020-01-01'));
1274+
loggerProxy.log('timestamp: [%s]', new Date('2020-01-01').toISOString());
12751275

1276-
loggerProxy.log('timestamp: [%s]', new Date('2020-01-02'));
1277-
loggerProxy.log('timestamp: [%s]', new Date('2020-01-03'));
1278-
loggerProxy.log('timestamp: [%s]', new Date('2020-01-04'));
1276+
loggerProxy.log('timestamp: [%s]', new Date('2020-01-02').toISOString());
1277+
loggerProxy.log('timestamp: [%s]', new Date('2020-01-03').toISOString());
1278+
loggerProxy.log('timestamp: [%s]', new Date('2020-01-04').toISOString());
12791279
expect(inspect.defaultOptions.depth).toBe(8);
12801280
await loggerProxy.waitCompletion();
12811281

0 commit comments

Comments
 (0)