awslabs / dynamodb-data-mapper-js

A schema-based data mapper for Amazon DynamoDB.
https://awslabs.github.io/dynamodb-data-mapper-js/
Apache License 2.0
817 stars 106 forks source link

CreateTableOptions not properly typed #198

Open tsheaff opened 3 years ago

tsheaff commented 3 years ago

I see that this PR: https://github.com/awslabs/dynamodb-data-mapper-js/pull/147/files added support for SSE.

However, there seems do be some odd typing going on. When I read the source, I see that the type for options passed into createTable is CreateTableOptions, which extends BaseCreateTableOptions and includes:

export interface SseSpecification {
    sseType: SseType;
    kmsMasterKeyId?: string;
}

However, when I call createTable this in my code and click through to the type, I'm seeing a different CreateTableOptions type, which only extends ProvisionedThroughput and doesn't include sse options.

The same is true for billingMode.

Here are the types by comparison:

export type CreateTableOptions = ProvisionedCreateTableOptions | OnDemandCreateTableOptions;
export interface CreateTableOptions extends ProvisionedThroughput {
    streamViewType?: StreamViewType;
    indexOptions?: PerIndexOptions;
}

Why is there this odd discrepancy? It leads to a compiler error when calling createTable() with sseSpecification param. cc @jeskew