Skip to content

Commit aa3139a

Browse files
Remove unknown types from model generator (#834)
This PR removes the unknown model types generated from OpenAPI model generator. This ensures strict type safety and a better developer experience while using the generated clients. Closes : #831
1 parent 6b7e74f commit aa3139a

File tree

19 files changed

+32
-112
lines changed

19 files changed

+32
-112
lines changed

examples/echo-bot-ts-cjs/index.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,24 @@ const client = new messagingApi.MessagingApiClient(clientConfig);
2727
// Create a new Express application.
2828
const app: Application = express();
2929

30-
const isTextEvent = (event: any): event is webhook.MessageEvent & { message: webhook.TextMessageContent } => {
31-
return event.type === 'message' && event.message && event.message.type === 'text';
32-
};
33-
3430
// Function handler to receive the text.
3531
const textEventHandler = async (event: webhook.Event): Promise<MessageAPIResponseBase | undefined> => {
3632
// Process all variables here.
37-
if (!isTextEvent(event)) {
33+
34+
// Check if for a text message
35+
if (event.type !== 'message' || event.message.type !== 'text') {
3836
return;
3937
}
4038

4139
// Process all message related variables here.
40+
41+
// Check if message is repliable
42+
if (!event.replyToken) return;
43+
4244
// Create a new message.
4345
// Reply to the user.
4446
await client.replyMessage({
45-
replyToken: event.replyToken as string,
47+
replyToken:event.replyToken,
4648
messages: [{
4749
type: 'text',
4850
text: event.message.text,

examples/echo-bot-ts-esm/index.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,25 @@ const client = new messagingApi.MessagingApiClient(clientConfig);
2727
// Create a new Express application.
2828
const app: Application = express();
2929

30-
const isTextEvent = (event: any): event is webhook.MessageEvent & { message: webhook.TextMessageContent } => {
31-
return event.type === 'message' && event.message && event.message.type === 'text';
32-
};
3330

3431
// Function handler to receive the text.
3532
const textEventHandler = async (event: webhook.Event): Promise<MessageAPIResponseBase | undefined> => {
3633
// Process all variables here.
37-
if (!isTextEvent(event)) {
34+
35+
// Check if for a text message
36+
if (event.type !== 'message' || event.message.type !== 'text') {
3837
return;
3938
}
4039

4140
// Process all message related variables here.
41+
42+
// Check if message is repliable
43+
if (!event.replyToken) return;
44+
4245
// Create a new message.
4346
// Reply to the user.
4447
await client.replyMessage({
45-
replyToken: event.replyToken as string,
48+
replyToken:event.replyToken,
4649
messages: [{
4750
type: 'text',
4851
text: event.message.text,

generator/src/main/resources/line-bot-sdk-nodejs-generator/model.pebble

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,8 @@ export type {{classname}} =
1515
{%- for model in model.model.discriminator.mappedModels %}
1616
| {{model.modelName}} // {{model.mappingName}}
1717
{%- endfor %}
18-
| Unknown{{classname}}
1918
;
2019

21-
export type Unknown{{classname}} = {{classname}}Base & {
22-
[key: string]: unknown;
23-
};
2420
{% endif -%}
2521

2622
{% if model.model.description != null %}

lib/messaging-api/model/action.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,7 @@ export type Action =
2929
| MessageAction // message
3030
| PostbackAction // postback
3131
| RichMenuSwitchAction // richmenuswitch
32-
| URIAction // uri
33-
| UnknownAction;
34-
35-
export type UnknownAction = ActionBase & {
36-
[key: string]: unknown;
37-
};
32+
| URIAction; // uri
3833

3934
/**
4035
* Action

lib/messaging-api/model/demographicFilter.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,7 @@ export type DemographicFilter =
2323
| AreaDemographicFilter // area
2424
| GenderDemographicFilter // gender
2525
| OperatorDemographicFilter // operator
26-
| SubscriptionPeriodDemographicFilter // subscriptionPeriod
27-
| UnknownDemographicFilter;
28-
29-
export type UnknownDemographicFilter = DemographicFilterBase & {
30-
[key: string]: unknown;
31-
};
26+
| SubscriptionPeriodDemographicFilter; // subscriptionPeriod
3227

3328
/**
3429
* Demographic filter

lib/messaging-api/model/flexBoxBackground.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,7 @@
1212

1313
import { FlexBoxLinearGradient } from "./models.js";
1414

15-
export type FlexBoxBackground =
16-
| FlexBoxLinearGradient // linearGradient
17-
| UnknownFlexBoxBackground;
18-
19-
export type UnknownFlexBoxBackground = FlexBoxBackgroundBase & {
20-
[key: string]: unknown;
21-
};
15+
export type FlexBoxBackground = FlexBoxLinearGradient; // linearGradient
2216

2317
export type FlexBoxBackgroundBase = {
2418
/**

lib/messaging-api/model/flexComponent.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,7 @@ export type FlexComponent =
2929
| FlexSeparator // separator
3030
| FlexSpan // span
3131
| FlexText // text
32-
| FlexVideo // video
33-
| UnknownFlexComponent;
34-
35-
export type UnknownFlexComponent = FlexComponentBase & {
36-
[key: string]: unknown;
37-
};
32+
| FlexVideo; // video
3833

3934
export type FlexComponentBase = {
4035
/**

lib/messaging-api/model/flexContainer.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,7 @@ import { FlexCarousel } from "./models.js";
1515

1616
export type FlexContainer =
1717
| FlexBubble // bubble
18-
| FlexCarousel // carousel
19-
| UnknownFlexContainer;
20-
21-
export type UnknownFlexContainer = FlexContainerBase & {
22-
[key: string]: unknown;
23-
};
18+
| FlexCarousel; // carousel
2419

2520
export type FlexContainerBase = {
2621
/**

lib/messaging-api/model/imagemapAction.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,7 @@ import { URIImagemapAction } from "./models.js";
1919
export type ImagemapAction =
2020
| ClipboardImagemapAction // clipboard
2121
| MessageImagemapAction // message
22-
| URIImagemapAction // uri
23-
| UnknownImagemapAction;
24-
25-
export type UnknownImagemapAction = ImagemapActionBase & {
26-
[key: string]: unknown;
27-
};
22+
| URIImagemapAction; // uri
2823

2924
export type ImagemapActionBase = {
3025
/**

lib/messaging-api/model/message.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,7 @@ export type Message =
3232
| StickerMessage // sticker
3333
| TemplateMessage // template
3434
| TextMessage // text
35-
| VideoMessage // video
36-
| UnknownMessage;
37-
38-
export type UnknownMessage = MessageBase & {
39-
[key: string]: unknown;
40-
};
35+
| VideoMessage; // video
4136

4237
export type MessageBase = {
4338
/**

0 commit comments

Comments
 (0)