Skip to content

Commit

Permalink
fix: type guard
Browse files Browse the repository at this point in the history
  • Loading branch information
cy-takeuchi committed Mar 22, 2024
1 parent 3e0581c commit 6e7d415
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 52 deletions.
11 changes: 2 additions & 9 deletions src/functions/formField.ts
Original file line number Diff line number Diff line change
Expand Up @@ -142,17 +142,10 @@ export const isLookupCopy = (
};
export const isInGroup = <T extends kintonePrettyType.OneOf>(
field: T,
): field is T & { group: string } => "group" in field;
): field is Extract<T, kintonePrettyType.InGroup> => "group" in field;
export const isInSubtable = <T extends kintonePrettyType.OneOf>(
field: T,
): field is Exclude<
T,
| kintonePrettyType.RecordNumber
| kintonePrettyType.Creator
| kintonePrettyType.CreatedTime
> => {
return "table" in field;
};
): field is Extract<T, kintonePrettyType.InSubtable> => "table" in field;
export const isNotInSubtable = <T extends kintonePrettyType.OneOf>(
field: T,
): field is T => !("table" in field);
21 changes: 14 additions & 7 deletions src/functions/utility.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import type { KintoneRestAPIClient } from "@kintone/rest-api-client";
import type {
AppID,
Lang,
Layout,
Properties,
} from "@kintone/rest-api-client/lib/src/client/types";
KintoneFormFieldProperty,
KintoneFormLayout,
KintoneRestAPIClient,
} from "@kintone/rest-api-client";
import { guardFormField, guardFormLayout } from "kintone-typeguard";
import type * as kintonePrettyType from "../exportTypes/formField";
import * as kintonePrettyTypeGuard from "../functions/formField";

// https://github.com/kintone/js-sdk/blob/master/packages/rest-api-client/src/client/types/app/index.ts
type Lang = "ja" | "en" | "zh" | "user" | "default";
type AppID = string | number;

const sortOptions = (options: {
[optionName: string]: {
label: string;
Expand All @@ -19,7 +21,12 @@ const sortOptions = (options: {
.sort((a, b) => Number(a.index) - Number(b.index))
.map(({ label }) => label);

const generateFields = (formFields: Properties, formLayouts: Layout) => {
const generateFields = (
formFields: {
[fieldCode: string]: KintoneFormFieldProperty.OneOf;
},
formLayouts: KintoneFormLayout.OneOf[],
) => {
const fields: kintonePrettyType.OneOf[] = [];
const spacers: kintonePrettyType.Spacer[] = [];

Expand Down
74 changes: 38 additions & 36 deletions src/types/type.ts
Original file line number Diff line number Diff line change
@@ -1,136 +1,140 @@
import type * as layout from "@kintone/rest-api-client/lib/src/KintoneFields/exportTypes/layout";
import type * as property from "@kintone/rest-api-client/lib/src/KintoneFields/exportTypes/property";
import type {
KintoneFormFieldProperty,
KintoneFormLayout,
} from "@kintone/rest-api-client";

export interface RecordNumber extends property.RecordNumber {
export interface RecordNumber extends KintoneFormFieldProperty.RecordNumber {
// table?: string;
group?: string;
}

export interface Creator extends property.Creator {
export interface Creator extends KintoneFormFieldProperty.Creator {
// table?: string;
group?: string;
}

export interface CreatedTime extends property.CreatedTime {
export interface CreatedTime extends KintoneFormFieldProperty.CreatedTime {
// table?: string;
group?: string;
}

export interface Modifier extends property.Modifier {
export interface Modifier extends KintoneFormFieldProperty.Modifier {
// table?: string;
group?: string;
}

export interface UpdatedTime extends property.UpdatedTime {
export interface UpdatedTime extends KintoneFormFieldProperty.UpdatedTime {
// table?: string;
group?: string;
}

export interface SingleLineText extends property.SingleLineText {
export interface SingleLineText
extends KintoneFormFieldProperty.SingleLineText {
table?: string;
group?: string;
isLookupCopy?: true;
}

export interface MultiLineText extends property.MultiLineText {
export interface MultiLineText extends KintoneFormFieldProperty.MultiLineText {
table?: string;
group?: string;
isLookupCopy?: true;
}

export interface RichText extends property.RichText {
export interface RichText extends KintoneFormFieldProperty.RichText {
table?: string;
group?: string;
isLookupCopy?: true;
}

export interface Number extends property.Number {
export interface Number extends KintoneFormFieldProperty.Number {
table?: string;
group?: string;
isLookupCopy?: true;
}

export interface Calc extends property.Calc {
export interface Calc extends KintoneFormFieldProperty.Calc {
table?: string;
group?: string;
}

export interface CheckBox extends property.CheckBox {
export interface CheckBox extends KintoneFormFieldProperty.CheckBox {
table?: string;
group?: string;
sortedOptions: string[];
isLookupCopy?: true;
}

export interface RadioButton extends property.RadioButton {
export interface RadioButton extends KintoneFormFieldProperty.RadioButton {
table?: string;
group?: string;
sortedOptions: string[];
isLookupCopy?: true;
}

export interface MultiSelect extends property.MultiSelect {
export interface MultiSelect extends KintoneFormFieldProperty.MultiSelect {
table?: string;
group?: string;
sortedOptions: string[];
isLookupCopy?: true;
}

export interface Dropdown extends property.Dropdown {
export interface Dropdown extends KintoneFormFieldProperty.Dropdown {
table?: string;
group?: string;
sortedOptions: string[];
isLookupCopy?: true;
}

export interface UserSelect extends property.UserSelect {
export interface UserSelect extends KintoneFormFieldProperty.UserSelect {
table?: string;
group?: string;
isLookupCopy?: true;
}

export interface OrganizationSelect extends property.OrganizationSelect {
export interface OrganizationSelect
extends KintoneFormFieldProperty.OrganizationSelect {
table?: string;
group?: string;
isLookupCopy?: true;
}

export interface GroupSelect extends property.GroupSelect {
export interface GroupSelect extends KintoneFormFieldProperty.GroupSelect {
table?: string;
group?: string;
isLookupCopy?: true;
}

export interface Date extends property.Date {
export interface Date extends KintoneFormFieldProperty.Date {
table?: string;
group?: string;
isLookupCopy?: true;
}

export interface Time extends property.Time {
export interface Time extends KintoneFormFieldProperty.Time {
table?: string;
group?: string;
isLookupCopy?: true;
}

export interface DateTime extends property.DateTime {
export interface DateTime extends KintoneFormFieldProperty.DateTime {
table?: string;
group?: string;
isLookupCopy?: true;
}

export interface Link extends property.Link {
export interface Link extends KintoneFormFieldProperty.Link {
table?: string;
group?: string;
isLookupCopy?: true;
}

export interface File extends property.File {
export interface File extends KintoneFormFieldProperty.File {
table?: string;
group?: string;
}

export interface Lookup extends property.Lookup {
export interface Lookup extends KintoneFormFieldProperty.Lookup {
table?: string;
group?: string;
}
Expand Down Expand Up @@ -160,27 +164,29 @@ export type Group<
fields: T;
};

export interface ReferenceTable extends property.ReferenceTable {
export interface ReferenceTable
extends KintoneFormFieldProperty.ReferenceTable {
// table?: string;
group?: string;
}

export interface Category extends property.Category {
export interface Category extends KintoneFormFieldProperty.Category {
// table?: string;
// group?: string;
}

export interface Status extends property.Status {
export interface Status extends KintoneFormFieldProperty.Status {
// table?: string;
// group?: string;
}

export interface StatusAssignee extends property.StatusAssignee {
export interface StatusAssignee
extends KintoneFormFieldProperty.StatusAssignee {
// table?: string;
// group?: string;
}

export interface Spacer extends layout.Field.Spacer {}
export interface Spacer extends KintoneFormLayout.Field.Spacer {}

export type InSubtable =
| SingleLineText
Expand Down Expand Up @@ -255,10 +261,6 @@ export type OneOf =
| OrganizationSelect
| GroupSelect
| ReferenceTable
| Group<{
[fieldCode: string]: InGroup;
}>
| Group<{ [fieldCode: string]: InGroup }>
| Lookup
| Subtable<{
[fieldCode: string]: InSubtable;
}>;
| Subtable<{ [fieldCode: string]: InSubtable }>;

0 comments on commit 6e7d415

Please sign in to comment.