UNPKG

kintone-effect-schema

Version:

Type-safe kintone field schema definitions with Effect-TS. Normalize empty values, validate writes, and ensure runtime type safety for kintone API responses.

1,495 lines (1,490 loc) 49.8 kB
import { Schema } from 'effect'; export { Schema } from 'effect'; // src/schemas/common.ts var KintoneUserSchema = Schema.Struct({ code: Schema.String, name: Schema.String }); var KintoneOrganizationSchema = Schema.Struct({ code: Schema.String, name: Schema.String }); var KintoneGroupSchema = Schema.Struct({ code: Schema.String, name: Schema.String }); var KintoneFileSchema = Schema.Struct({ contentType: Schema.String, fileKey: Schema.String, name: Schema.String, size: Schema.String }); var SingleLineTextFieldSchema = Schema.Struct({ type: Schema.Literal("SINGLE_LINE_TEXT"), value: Schema.String }); var MultiLineTextFieldSchema = Schema.Struct({ type: Schema.Literal("MULTI_LINE_TEXT"), value: Schema.String }); var RichTextFieldSchema = Schema.Struct({ type: Schema.Literal("RICH_TEXT"), value: Schema.String }); var NumberFieldSchema = Schema.Struct({ type: Schema.Literal("NUMBER"), value: Schema.Union(Schema.String, Schema.Null) }); var CalcFieldSchema = Schema.Struct({ type: Schema.Literal("CALC"), value: Schema.String }); var RadioButtonFieldSchema = Schema.Struct({ type: Schema.Literal("RADIO_BUTTON"), value: Schema.Union(Schema.String, Schema.Null) }); var CheckBoxFieldSchema = Schema.Struct({ type: Schema.Literal("CHECK_BOX"), value: Schema.Array(Schema.String) }); var MultiSelectFieldSchema = Schema.Struct({ type: Schema.Literal("MULTI_SELECT"), value: Schema.Array(Schema.String) }); var DropDownFieldSchema = Schema.Struct({ type: Schema.Literal("DROP_DOWN"), value: Schema.Union(Schema.String, Schema.Null) }); var DateFieldSchema = Schema.Struct({ type: Schema.Literal("DATE"), value: Schema.Union(Schema.String, Schema.Null) }); var TimeFieldSchema = Schema.Struct({ type: Schema.Literal("TIME"), value: Schema.Union(Schema.String, Schema.Null) }); var DateTimeFieldSchema = Schema.Struct({ type: Schema.Literal("DATETIME"), value: Schema.Union(Schema.String, Schema.Null) }); var LinkFieldSchema = Schema.Struct({ type: Schema.Literal("LINK"), value: Schema.String }); var UserSelectFieldSchema = Schema.Struct({ type: Schema.Literal("USER_SELECT"), value: Schema.Array(KintoneUserSchema) }); var OrganizationSelectFieldSchema = Schema.Struct({ type: Schema.Literal("ORGANIZATION_SELECT"), value: Schema.Array(KintoneOrganizationSchema) }); var GroupSelectFieldSchema = Schema.Struct({ type: Schema.Literal("GROUP_SELECT"), value: Schema.Array(KintoneGroupSchema) }); var FileFieldSchema = Schema.Struct({ type: Schema.Literal("FILE"), value: Schema.Array(KintoneFileSchema) }); var RecordNumberFieldSchema = Schema.Struct({ type: Schema.Literal("RECORD_NUMBER"), value: Schema.String }); var CreatorFieldSchema = Schema.Struct({ type: Schema.Literal("CREATOR"), value: KintoneUserSchema }); var CreatedTimeFieldSchema = Schema.Struct({ type: Schema.Literal("CREATED_TIME"), value: Schema.String }); var ModifierFieldSchema = Schema.Struct({ type: Schema.Literal("MODIFIER"), value: KintoneUserSchema }); var UpdatedTimeFieldSchema = Schema.Struct({ type: Schema.Literal("UPDATED_TIME"), value: Schema.String }); var StatusFieldSchema = Schema.Struct({ type: Schema.Literal("STATUS"), value: Schema.String }); var StatusAssigneeFieldSchema = Schema.Struct({ type: Schema.Literal("STATUS_ASSIGNEE"), value: Schema.Array(KintoneUserSchema) }); var CategoryFieldSchema = Schema.Struct({ type: Schema.Literal("CATEGORY"), value: Schema.Array(Schema.String) }); var LookupFieldSchema = Schema.Struct({ type: Schema.Literal("LOOKUP"), value: Schema.String }); var RecordIdFieldSchema = Schema.Struct({ type: Schema.Literal("RECORD_ID"), value: Schema.String }); var RevisionFieldSchema = Schema.Struct({ type: Schema.Literal("REVISION"), value: Schema.String }); var KintoneFieldSchema = Schema.Union( SingleLineTextFieldSchema, MultiLineTextFieldSchema, RichTextFieldSchema, NumberFieldSchema, CalcFieldSchema, RadioButtonFieldSchema, CheckBoxFieldSchema, MultiSelectFieldSchema, DropDownFieldSchema, DateFieldSchema, TimeFieldSchema, DateTimeFieldSchema, LinkFieldSchema, UserSelectFieldSchema, OrganizationSelectFieldSchema, GroupSelectFieldSchema, FileFieldSchema, RecordNumberFieldSchema, CreatorFieldSchema, CreatedTimeFieldSchema, ModifierFieldSchema, UpdatedTimeFieldSchema, StatusFieldSchema, StatusAssigneeFieldSchema, CategoryFieldSchema, LookupFieldSchema, RecordIdFieldSchema, RevisionFieldSchema ); var SubtableFieldSchema = Schema.Struct({ type: Schema.Literal("SUBTABLE"), value: Schema.Array( Schema.Struct({ id: Schema.String, value: Schema.Record({ key: Schema.String, value: KintoneFieldSchema }) }) ) }); var KintoneRecordSchema = Schema.Record({ key: Schema.String, value: Schema.Union(KintoneFieldSchema, SubtableFieldSchema) }); var GetRecordResponseSchema = Schema.Struct({ record: KintoneRecordSchema }); var GetRecordsResponseSchema = Schema.Struct({ records: Schema.Array(KintoneRecordSchema), totalCount: Schema.Union(Schema.String, Schema.Null) }); var KintoneRecordForWriteSchema = Schema.Record({ key: Schema.String, value: Schema.Struct({ value: Schema.Unknown }) }); var normalizeFieldValue = (field) => { if (!field || typeof field !== "object") { return field; } const fieldObj = field; const type = fieldObj["type"]; const value = fieldObj["value"]; switch (type) { // 文字列系: undefined → "" case "SINGLE_LINE_TEXT": case "MULTI_LINE_TEXT": case "LINK": case "LOOKUP": return { ...fieldObj, value: value === void 0 ? "" : value }; // リッチテキスト: 変換不要 case "RICH_TEXT": return fieldObj; // 数値・日時系: undefined/"" → null case "NUMBER": case "DATETIME": return { ...fieldObj, value: value === void 0 || value === "" ? null : value }; // 日付・時刻: undefined → null case "DATE": case "TIME": return { ...fieldObj, value: value === void 0 ? null : value }; // ドロップダウン: undefined/"" → null case "DROP_DOWN": return { ...fieldObj, value: value === void 0 || value === "" ? null : value }; // ラジオボタン: undefined/"" → null case "RADIO_BUTTON": return { ...fieldObj, value: value === void 0 || value === "" ? null : value }; // 配列系: undefined/null → [] case "CHECK_BOX": case "MULTI_SELECT": case "USER_SELECT": case "ORGANIZATION_SELECT": case "GROUP_SELECT": case "FILE": case "CATEGORY": case "STATUS_ASSIGNEE": return { ...fieldObj, value: value === void 0 || value === null ? [] : value }; // その他のフィールド(CALC, STATUS, CREATOR等): 変換不要 default: return fieldObj; } }; var decodeKintoneField = (data) => { const normalized = normalizeFieldValue(data); return Schema.decodeUnknownSync(KintoneFieldSchema)(normalized); }; var decodeKintoneRecord = (record) => { const normalizedRecord = {}; for (const [fieldCode, field] of Object.entries(record)) { normalizedRecord[fieldCode] = normalizeFieldValue(field); } return normalizedRecord; }; // src/validators.ts var KintoneValidationError = class extends Error { constructor(fieldType, message) { super(message); this.fieldType = fieldType; this.name = "KintoneValidationError"; } }; var validateFieldForWrite = (field) => { const { type, value } = field; const nonEmptyFields = ["RADIO_BUTTON", "CATEGORY", "STATUS_ASSIGNEE"]; if (nonEmptyFields.includes(type)) { let isEmpty = false; switch (type) { case "RADIO_BUTTON": isEmpty = value === null || value === ""; break; case "CATEGORY": case "STATUS_ASSIGNEE": isEmpty = Array.isArray(value) && value.length === 0; break; } if (isEmpty) { throw new KintoneValidationError( type, `${type}\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u306F\u7A7A\u306E\u5024\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093` ); } } }; var validateRecordForWrite = (record) => { for (const [fieldCode, field] of Object.entries(record)) { try { validateFieldForWrite(field); } catch (error) { if (error instanceof KintoneValidationError) { throw new KintoneValidationError( error.fieldType, `\u30D5\u30A3\u30FC\u30EB\u30C9 "${fieldCode}": ${error.message}` ); } throw error; } } }; var isNonEmptyField = (type) => { return ["RADIO_BUTTON", "CATEGORY", "STATUS_ASSIGNEE"].includes(type); }; var getEmptyValueForWrite = (type) => { switch (type) { // 文字列系 case "SINGLE_LINE_TEXT": case "MULTI_LINE_TEXT": case "RICH_TEXT": case "LINK": case "LOOKUP": return ""; // null を使用する系 case "NUMBER": case "DATE": case "TIME": case "DATETIME": case "DROP_DOWN": return null; // 配列系 case "CHECK_BOX": case "MULTI_SELECT": case "USER_SELECT": case "ORGANIZATION_SELECT": case "GROUP_SELECT": case "FILE": return []; // 空値を設定できない case "RADIO_BUTTON": case "CATEGORY": case "STATUS_ASSIGNEE": throw new KintoneValidationError( type, `${type}\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u306F\u7A7A\u306E\u5024\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093` ); // その他(通常は読み取り専用) default: return ""; } }; var NumericStringSchema = Schema.String; var RESERVED_FIELD_CODES = /* @__PURE__ */ new Set([ "\u30B9\u30C6\u30FC\u30BF\u30B9", "\u4F5C\u696D\u8005", "\u30AB\u30C6\u30B4\u30EA\u30FC", "__ROOT__", "not", "\u30EC\u30B3\u30FC\u30C9\u756A\u53F7", "\u4F5C\u6210\u8005", "\u4F5C\u6210\u65E5\u6642", "\u66F4\u65B0\u8005", "\u66F4\u65B0\u65E5\u6642" ]); var SystemFieldCodeSchema = Schema.String.pipe( Schema.pattern( /^[$ぁ-ん\u30A0-\u30FF\u3040-\u309F\u4E00-\u9FAF\uFF66-\uFF9FA-Za-z0-9A-Za-z0-9__・・$¥€£₩¥]+$/ ), Schema.minLength(1), Schema.filter((value) => !/^[0-9]/.test(value)) ); var UserFieldCodeSchema = SystemFieldCodeSchema.pipe( Schema.filter((value) => !RESERVED_FIELD_CODES.has(value)) ); var BaseFieldPropertiesSchema = Schema.Struct({ type: Schema.String, code: UserFieldCodeSchema, label: Schema.String, noLabel: Schema.optional(Schema.Boolean), required: Schema.optional(Schema.Boolean) }); var OptionSchema = Schema.Struct({ label: Schema.String, index: NumericStringSchema }); var EntitySchema = Schema.Struct({ type: Schema.Literal("USER", "ORGANIZATION", "GROUP"), code: UserFieldCodeSchema }); var LookupSettingSchema = Schema.Struct({ relatedApp: Schema.Struct({ app: Schema.String, code: Schema.optional(Schema.String) }), relatedKeyField: Schema.String, fieldMappings: Schema.optional( Schema.Union( Schema.Array( Schema.Struct({ field: Schema.String, relatedField: Schema.String }) ), Schema.Literal("") ) ), lookupPickerFields: Schema.optional( Schema.Union(Schema.Array(Schema.String), Schema.Literal("")) ), filterCond: Schema.optional(Schema.String), sort: Schema.optional(Schema.String) }); var ReferenceTableSettingSchema = Schema.Struct({ relatedApp: Schema.Struct({ app: Schema.String, code: Schema.optional(Schema.String) }), condition: Schema.Struct({ field: Schema.String, relatedField: Schema.String }), filterCond: Schema.optional(Schema.String), displayFields: Schema.Array(Schema.String), sort: Schema.optional(Schema.String), size: NumericStringSchema // kintone APIで空文字列として返される(必須) }); var SingleLineTextFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("SINGLE_LINE_TEXT"), defaultValue: Schema.String, // kintone APIで空文字列として返される(必須) unique: Schema.optional(Schema.Boolean), minLength: NumericStringSchema, // kintone APIで空文字列として返される(必須) maxLength: NumericStringSchema, // kintone APIで空文字列として返される(必須) expression: Schema.optional(Schema.String), hideExpression: Schema.optional(Schema.Boolean), lookup: Schema.optional(LookupSettingSchema) }) ); var MultiLineTextFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("MULTI_LINE_TEXT"), defaultValue: Schema.String // kintone APIで空文字列として返される(必須) }) ); var RichTextFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("RICH_TEXT"), defaultValue: Schema.String // kintone APIで空文字列として返される(必須) }) ); var NumberFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("NUMBER"), defaultValue: Schema.String, // kintone APIで空文字列として返される(必須) unique: Schema.optional(Schema.Boolean), minValue: NumericStringSchema, // kintone APIで空文字列として返される(必須) maxValue: NumericStringSchema, // kintone APIで空文字列として返される(必須) digit: Schema.optional(Schema.Boolean), displayScale: NumericStringSchema, // kintone APIで空文字列として返される(必須) unit: Schema.String, // kintone APIで空文字列として返される(必須) unitPosition: Schema.optional(Schema.Union(Schema.Literal("BEFORE"), Schema.Literal("AFTER"))), lookup: Schema.optional(LookupSettingSchema) }) ); var CalcFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("CALC"), expression: Schema.optional(Schema.String), format: Schema.optional( Schema.Union( Schema.Literal("NUMBER"), Schema.Literal("NUMBER_DIGIT"), Schema.Literal("DATETIME"), Schema.Literal("DATE"), Schema.Literal("TIME"), Schema.Literal("HOUR_MINUTE"), Schema.Literal("DAY_HOUR_MINUTE") ) ), displayScale: NumericStringSchema, // kintone APIで空文字列として返される(必須) hideExpression: Schema.optional(Schema.Boolean), unit: Schema.String, // kintone APIで空文字列として返される(必須) unitPosition: Schema.optional(Schema.Union(Schema.Literal("BEFORE"), Schema.Literal("AFTER"))) }) ); var RadioButtonFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("RADIO_BUTTON"), options: Schema.Record({ key: Schema.String, value: OptionSchema }), defaultValue: Schema.String, // kintone APIで空文字列として返される(必須) align: Schema.optional(Schema.Union(Schema.Literal("HORIZONTAL"), Schema.Literal("VERTICAL"))) }) ); var CheckBoxFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("CHECK_BOX"), options: Schema.Record({ key: Schema.String, value: OptionSchema }), defaultValue: Schema.Array(Schema.String), // kintone APIで空配列として返される(必須) align: Schema.optional(Schema.Union(Schema.Literal("HORIZONTAL"), Schema.Literal("VERTICAL"))) }) ); var MultiSelectFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("MULTI_SELECT"), options: Schema.Record({ key: Schema.String, value: OptionSchema }), defaultValue: Schema.Array(Schema.String) // kintone APIで空配列として返される(必須) }) ); var DropDownFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("DROP_DOWN"), options: Schema.Record({ key: Schema.String, value: OptionSchema }), defaultValue: Schema.String // kintone APIで空文字列として返される(必須) }) ); var DateFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("DATE"), defaultValue: Schema.String, // kintone APIで空文字列として返される(必須) unique: Schema.optional(Schema.Boolean), defaultNowValue: Schema.optional(Schema.Boolean), lookup: Schema.optional(LookupSettingSchema) }) ); var TimeFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("TIME"), defaultValue: Schema.String, // kintone APIで空文字列として返される(必須) defaultNowValue: Schema.optional(Schema.Boolean) }) ); var DateTimeFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("DATETIME"), defaultValue: Schema.String, // kintone APIで空文字列として返される(必須) unique: Schema.optional(Schema.Boolean), defaultNowValue: Schema.optional(Schema.Boolean), lookup: Schema.optional(LookupSettingSchema) }) ); var LinkFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("LINK"), protocol: Schema.Union(Schema.Literal("WEB"), Schema.Literal("CALL"), Schema.Literal("MAIL")), defaultValue: Schema.String, // kintone APIで空文字列として返される(必須) unique: Schema.optional(Schema.Boolean), minLength: NumericStringSchema, // kintone APIで空文字列として返される(必須) maxLength: NumericStringSchema // kintone APIで空文字列として返される(必須) }) ); var UserSelectFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("USER_SELECT"), entities: Schema.optional(Schema.Array(EntitySchema)), defaultValue: Schema.optional( Schema.Array( Schema.Struct({ type: Schema.Union( Schema.Literal("USER"), Schema.Literal("ORGANIZATION"), Schema.Literal("GROUP") ), code: UserFieldCodeSchema }) ) ) }) ); var OrganizationSelectFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("ORGANIZATION_SELECT"), entities: Schema.optional(Schema.Array(EntitySchema)), defaultValue: Schema.optional( Schema.Array( Schema.Struct({ type: Schema.Literal("ORGANIZATION"), code: UserFieldCodeSchema }) ) ) }) ); var GroupSelectFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("GROUP_SELECT"), entities: Schema.optional(Schema.Array(EntitySchema)), defaultValue: Schema.optional( Schema.Array( Schema.Struct({ type: Schema.Literal("GROUP"), code: UserFieldCodeSchema }) ) ) }) ); var FileFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("FILE"), thumbnailSize: NumericStringSchema // kintone APIで空文字列として返される(必須) }) ); var ReferenceTableFieldPropertiesSchema = Schema.extend( BaseFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("REFERENCE_TABLE"), referenceTable: Schema.optional(ReferenceTableSettingSchema) }) ); var RecordNumberFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("RECORD_NUMBER"), code: SystemFieldCodeSchema, label: Schema.String, noLabel: Schema.optional(Schema.Boolean) }); var CreatorFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("CREATOR"), code: SystemFieldCodeSchema, label: Schema.String, noLabel: Schema.optional(Schema.Boolean) }); var CreatedTimeFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("CREATED_TIME"), code: SystemFieldCodeSchema, label: Schema.String, noLabel: Schema.optional(Schema.Boolean) }); var ModifierFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("MODIFIER"), code: SystemFieldCodeSchema, label: Schema.String, noLabel: Schema.optional(Schema.Boolean) }); var UpdatedTimeFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("UPDATED_TIME"), code: SystemFieldCodeSchema, label: Schema.String, noLabel: Schema.optional(Schema.Boolean) }); var StatusFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("STATUS"), code: SystemFieldCodeSchema, label: Schema.String, noLabel: Schema.optional(Schema.Boolean), enabled: Schema.optional(Schema.Boolean) }); var StatusAssigneeFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("STATUS_ASSIGNEE"), code: SystemFieldCodeSchema, label: Schema.String, noLabel: Schema.optional(Schema.Boolean), enabled: Schema.optional(Schema.Boolean) }); var CategoryFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("CATEGORY"), code: SystemFieldCodeSchema, label: Schema.String, noLabel: Schema.optional(Schema.Boolean), enabled: Schema.optional(Schema.Boolean) }); var BaseSubtableFieldPropertiesSchema = Schema.Struct({ type: Schema.String, code: UserFieldCodeSchema, label: Schema.String, noLabel: Schema.Boolean, // 必ず存在 required: Schema.Boolean // 必ず存在 }); var SubtableSingleLineTextFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("SINGLE_LINE_TEXT"), defaultValue: Schema.String, // 空文字列または値(必ず存在) unique: Schema.Boolean, // 必ず存在 minLength: NumericStringSchema, // 空文字列または数値文字列(必ず存在) maxLength: NumericStringSchema, // 空文字列または数値文字列(必ず存在) expression: Schema.String, // 空文字列または式(必ず存在) hideExpression: Schema.Boolean // 必ず存在 }) ); var SubtableMultiLineTextFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("MULTI_LINE_TEXT"), defaultValue: Schema.String // 空文字列または値(必ず存在) }) ); var SubtableRichTextFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("RICH_TEXT"), defaultValue: Schema.String // 空文字列または値(必ず存在) }) ); var SubtableNumberFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("NUMBER"), defaultValue: Schema.String, // 空文字列または値(必ず存在) unique: Schema.Boolean, // 必ず存在 minValue: NumericStringSchema, // 空文字列または数値文字列(必ず存在) maxValue: NumericStringSchema, // 空文字列または数値文字列(必ず存在) digit: Schema.Boolean, // 必ず存在 displayScale: NumericStringSchema, // 空文字列または数値文字列(必ず存在) unit: Schema.String, // 空文字列または値(必ず存在) unitPosition: Schema.Union( Schema.Literal("BEFORE"), Schema.Literal("AFTER"), Schema.Literal("") ) // 必ず存在 }) ); var SubtableCalcFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("CALC"), expression: Schema.String, // 空文字列または式(必ず存在) format: Schema.Union( Schema.Literal("NUMBER"), Schema.Literal("NUMBER_DIGIT"), Schema.Literal("DATETIME"), Schema.Literal("DATE"), Schema.Literal("TIME"), Schema.Literal("HOUR_MINUTE"), Schema.Literal("DAY_HOUR_MINUTE"), Schema.Literal("") ), // 必ず存在 displayScale: NumericStringSchema, // 空文字列または数値文字列(必ず存在) hideExpression: Schema.Boolean, // 必ず存在 unit: Schema.String, // 空文字列または値(必ず存在) unitPosition: Schema.Union( Schema.Literal("BEFORE"), Schema.Literal("AFTER"), Schema.Literal("") ) // 必ず存在 }) ); var SubtableRadioButtonFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("RADIO_BUTTON"), options: Schema.Record({ key: Schema.String, value: OptionSchema }), defaultValue: Schema.String, // 空文字列または値(必ず存在) align: Schema.Union( Schema.Literal("HORIZONTAL"), Schema.Literal("VERTICAL"), Schema.Literal("") ) // 必ず存在 }) ); var SubtableCheckBoxFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("CHECK_BOX"), options: Schema.Record({ key: Schema.String, value: OptionSchema }), defaultValue: Schema.Array(Schema.String), // 配列(必ず存在、空配列の場合もある) align: Schema.Union( Schema.Literal("HORIZONTAL"), Schema.Literal("VERTICAL"), Schema.Literal("") ) // 必ず存在 }) ); var SubtableMultiSelectFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("MULTI_SELECT"), options: Schema.Record({ key: Schema.String, value: OptionSchema }), defaultValue: Schema.Array(Schema.String) // 配列(必ず存在、空配列の場合もある) }) ); var SubtableDropDownFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("DROP_DOWN"), options: Schema.Record({ key: Schema.String, value: OptionSchema }), defaultValue: Schema.String // 空文字列または値(必ず存在) }) ); var SubtableDateFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("DATE"), defaultValue: Schema.String, // 空文字列または値(必ず存在) unique: Schema.Boolean, // 必ず存在 defaultNowValue: Schema.Boolean // 必ず存在 }) ); var SubtableTimeFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("TIME"), defaultValue: Schema.String, // 空文字列または値(必ず存在) defaultNowValue: Schema.Boolean // 必ず存在 }) ); var SubtableDateTimeFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("DATETIME"), defaultValue: Schema.String, // 空文字列または値(必ず存在) unique: Schema.Boolean, // 必ず存在 defaultNowValue: Schema.Boolean // 必ず存在 }) ); var SubtableLinkFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("LINK"), protocol: Schema.Union(Schema.Literal("WEB"), Schema.Literal("CALL"), Schema.Literal("MAIL")), defaultValue: Schema.String, // 空文字列または値 unique: Schema.Boolean, // 必ず存在 minLength: NumericStringSchema, // 空文字列または数値文字列(必ず存在) maxLength: NumericStringSchema // 空文字列または数値文字列(必ず存在) }) ); var SubtableUserSelectFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("USER_SELECT"), entities: Schema.Array(EntitySchema), // サブテーブルでは必ず存在(空配列の場合もある) defaultValue: Schema.Array( Schema.Struct({ type: Schema.Union( Schema.Literal("USER"), Schema.Literal("ORGANIZATION"), Schema.Literal("GROUP") ), code: UserFieldCodeSchema }) ) // サブテーブルでは必ず存在(空配列の場合もある) }) ); var SubtableOrganizationSelectFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("ORGANIZATION_SELECT"), entities: Schema.Array(EntitySchema), // サブテーブルでは必ず存在(空配列の場合もある) defaultValue: Schema.Array( Schema.Struct({ type: Schema.Literal("ORGANIZATION"), code: UserFieldCodeSchema }) ) // サブテーブルでは必ず存在(空配列の場合もある) }) ); var SubtableGroupSelectFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("GROUP_SELECT"), entities: Schema.Array(EntitySchema), // サブテーブルでは必ず存在(空配列の場合もある) defaultValue: Schema.Array( Schema.Struct({ type: Schema.Literal("GROUP"), code: UserFieldCodeSchema }) ) // サブテーブルでは必ず存在(空配列の場合もある) }) ); var SubtableFileFieldPropertiesSchema = Schema.extend( BaseSubtableFieldPropertiesSchema, Schema.Struct({ type: Schema.Literal("FILE"), thumbnailSize: NumericStringSchema // サブテーブルでは必ず存在(空文字列の場合もある) }) ); var SubtableFieldSchema2 = Schema.Union( SubtableSingleLineTextFieldPropertiesSchema, SubtableMultiLineTextFieldPropertiesSchema, SubtableRichTextFieldPropertiesSchema, SubtableNumberFieldPropertiesSchema, SubtableCalcFieldPropertiesSchema, SubtableRadioButtonFieldPropertiesSchema, SubtableCheckBoxFieldPropertiesSchema, SubtableMultiSelectFieldPropertiesSchema, SubtableDropDownFieldPropertiesSchema, SubtableDateFieldPropertiesSchema, SubtableTimeFieldPropertiesSchema, SubtableDateTimeFieldPropertiesSchema, SubtableLinkFieldPropertiesSchema, SubtableUserSelectFieldPropertiesSchema, SubtableOrganizationSelectFieldPropertiesSchema, SubtableGroupSelectFieldPropertiesSchema, SubtableFileFieldPropertiesSchema ); var SubtableFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("SUBTABLE"), code: UserFieldCodeSchema, label: Schema.String, noLabel: Schema.optional(Schema.Boolean), fields: Schema.Record({ key: Schema.String, value: SubtableFieldSchema2 }) }); var GroupFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("GROUP"), code: UserFieldCodeSchema, label: Schema.String, noLabel: Schema.optional(Schema.Boolean), openGroup: Schema.optional(Schema.Boolean) }); var RecordIdFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("RECORD_ID"), code: UserFieldCodeSchema, label: Schema.String }); var RevisionFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("REVISION"), code: UserFieldCodeSchema, label: Schema.String }); var SystemIdFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("__ID__"), code: Schema.Literal("$id"), label: Schema.String }); var SystemRevisionFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("__REVISION__"), code: Schema.Literal("$revision"), label: Schema.String }); var SpacerFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("SPACER"), elementId: Schema.String, size: Schema.Struct({ width: Schema.Union(Schema.Number, Schema.String), height: Schema.optional(Schema.Union(Schema.Number, Schema.String)) }) }); var LabelFieldPropertiesSchema = Schema.Struct({ type: Schema.Literal("LABEL"), label: Schema.String, size: Schema.Struct({ width: Schema.Union(Schema.Number, Schema.String) }) }); var KintoneFieldPropertiesSchema = Schema.Union( SingleLineTextFieldPropertiesSchema, MultiLineTextFieldPropertiesSchema, RichTextFieldPropertiesSchema, NumberFieldPropertiesSchema, CalcFieldPropertiesSchema, RadioButtonFieldPropertiesSchema, CheckBoxFieldPropertiesSchema, MultiSelectFieldPropertiesSchema, DropDownFieldPropertiesSchema, DateFieldPropertiesSchema, TimeFieldPropertiesSchema, DateTimeFieldPropertiesSchema, LinkFieldPropertiesSchema, UserSelectFieldPropertiesSchema, OrganizationSelectFieldPropertiesSchema, GroupSelectFieldPropertiesSchema, FileFieldPropertiesSchema, ReferenceTableFieldPropertiesSchema, RecordNumberFieldPropertiesSchema, CreatorFieldPropertiesSchema, CreatedTimeFieldPropertiesSchema, ModifierFieldPropertiesSchema, UpdatedTimeFieldPropertiesSchema, StatusFieldPropertiesSchema, StatusAssigneeFieldPropertiesSchema, CategoryFieldPropertiesSchema, SubtableFieldPropertiesSchema, GroupFieldPropertiesSchema, RecordIdFieldPropertiesSchema, RevisionFieldPropertiesSchema, SystemIdFieldPropertiesSchema, SystemRevisionFieldPropertiesSchema, SpacerFieldPropertiesSchema, LabelFieldPropertiesSchema ); var GetFormFieldsResponseSchema = Schema.Struct({ properties: Schema.Record({ key: Schema.String, value: KintoneFieldPropertiesSchema }), revision: Schema.optional(Schema.String) }); function convertFormFieldToRecordSchema(formField) { switch (formField.type) { // Text fields case "SINGLE_LINE_TEXT": return SingleLineTextFieldSchema; case "MULTI_LINE_TEXT": return MultiLineTextFieldSchema; case "RICH_TEXT": return RichTextFieldSchema; // Number and calculation fields case "NUMBER": return NumberFieldSchema; case "CALC": return CalcFieldSchema; // Selection fields case "RADIO_BUTTON": return RadioButtonFieldSchema; case "CHECK_BOX": return CheckBoxFieldSchema; case "MULTI_SELECT": return MultiSelectFieldSchema; case "DROP_DOWN": return DropDownFieldSchema; // Date and time fields case "DATE": return DateFieldSchema; case "TIME": return TimeFieldSchema; case "DATETIME": return DateTimeFieldSchema; // Link field case "LINK": return LinkFieldSchema; // User/Organization/Group selection fields case "USER_SELECT": return UserSelectFieldSchema; case "ORGANIZATION_SELECT": return OrganizationSelectFieldSchema; case "GROUP_SELECT": return GroupSelectFieldSchema; // File field case "FILE": return FileFieldSchema; // Reference table (not included in record data directly) case "REFERENCE_TABLE": return void 0; // System fields case "RECORD_NUMBER": return RecordNumberFieldSchema; case "CREATOR": return CreatorFieldSchema; case "CREATED_TIME": return CreatedTimeFieldSchema; case "MODIFIER": return ModifierFieldSchema; case "UPDATED_TIME": return UpdatedTimeFieldSchema; case "STATUS": return StatusFieldSchema; case "STATUS_ASSIGNEE": return StatusAssigneeFieldSchema; case "CATEGORY": return CategoryFieldSchema; // Special ID fields case "RECORD_ID": return RecordIdFieldSchema; case "REVISION": return RevisionFieldSchema; // Subtable (special handling) case "SUBTABLE": return convertSubtableFormToRecordSchema(formField); // Layout fields (not included in record data) case "GROUP": return void 0; default: return void 0; } } function convertSubtableFieldToRecordSchema(fieldProps) { const field = fieldProps; switch (field.type) { case "SINGLE_LINE_TEXT": return SingleLineTextFieldSchema; case "MULTI_LINE_TEXT": return MultiLineTextFieldSchema; case "RICH_TEXT": return RichTextFieldSchema; case "NUMBER": return NumberFieldSchema; case "CALC": return CalcFieldSchema; case "RADIO_BUTTON": return RadioButtonFieldSchema; case "CHECK_BOX": return CheckBoxFieldSchema; case "MULTI_SELECT": return MultiSelectFieldSchema; case "DROP_DOWN": return DropDownFieldSchema; case "DATE": return DateFieldSchema; case "TIME": return TimeFieldSchema; case "DATETIME": return DateTimeFieldSchema; case "LINK": return LinkFieldSchema; case "USER_SELECT": return UserSelectFieldSchema; case "ORGANIZATION_SELECT": return OrganizationSelectFieldSchema; case "GROUP_SELECT": return GroupSelectFieldSchema; case "FILE": return FileFieldSchema; default: return void 0; } } function convertSubtableFormToRecordSchema(subtableField) { if (subtableField.type !== "SUBTABLE") { return void 0; } const convertedFields = []; for (const [, fieldProps] of Object.entries(subtableField.fields)) { const recordSchema = convertSubtableFieldToRecordSchema(fieldProps); if (recordSchema) { convertedFields.push(recordSchema); } } return Schema.Struct({ type: Schema.Literal("SUBTABLE"), value: Schema.Array( Schema.Struct({ id: Schema.String, value: Schema.Record({ key: Schema.String, value: convertedFields.length > 0 ? Schema.Union(...convertedFields) : Schema.Unknown }) }) ) }); } function convertFormFieldsToRecordSchema(formFields) { const recordSchemas = {}; for (const [fieldCode, fieldProps] of Object.entries(formFields)) { const recordSchema = convertFormFieldToRecordSchema(fieldProps); if (recordSchema) { recordSchemas[fieldCode] = recordSchema; } } return recordSchemas; } function createRecordSchemaFromForm(formFields, customValidations) { const recordSchemas = convertFormFieldsToRecordSchema(formFields); if (customValidations) { for (const [fieldCode, validation] of Object.entries(customValidations)) { if (recordSchemas[fieldCode]) { recordSchemas[fieldCode] = validation(recordSchemas[fieldCode]); } } } return Schema.Record({ key: Schema.String, value: Object.values(recordSchemas).length > 0 ? Schema.Union(...Object.values(recordSchemas)) : Schema.Unknown }); } function getRecordFieldType(formFieldType) { switch (formFieldType) { // Most types are the same case "SINGLE_LINE_TEXT": case "MULTI_LINE_TEXT": case "RICH_TEXT": case "NUMBER": case "CALC": case "RADIO_BUTTON": case "CHECK_BOX": case "MULTI_SELECT": case "DROP_DOWN": case "DATE": case "TIME": case "DATETIME": case "LINK": case "USER_SELECT": case "ORGANIZATION_SELECT": case "GROUP_SELECT": case "FILE": case "RECORD_NUMBER": case "CREATOR": case "CREATED_TIME": case "MODIFIER": case "UPDATED_TIME": case "STATUS": case "STATUS_ASSIGNEE": case "CATEGORY": case "SUBTABLE": case "RECORD_ID": case "REVISION": return formFieldType; // Layout fields don't exist in records case "REFERENCE_TABLE": case "GROUP": return void 0; default: return void 0; } } var FIELD_TYPE_TO_PROPERTIES_SCHEMA = { SINGLE_LINE_TEXT: SingleLineTextFieldPropertiesSchema, MULTI_LINE_TEXT: MultiLineTextFieldPropertiesSchema, RICH_TEXT: RichTextFieldPropertiesSchema, NUMBER: NumberFieldPropertiesSchema, CALC: CalcFieldPropertiesSchema, RADIO_BUTTON: RadioButtonFieldPropertiesSchema, CHECK_BOX: CheckBoxFieldPropertiesSchema, MULTI_SELECT: MultiSelectFieldPropertiesSchema, DROP_DOWN: DropDownFieldPropertiesSchema, DATE: DateFieldPropertiesSchema, TIME: TimeFieldPropertiesSchema, DATETIME: DateTimeFieldPropertiesSchema, LINK: LinkFieldPropertiesSchema, USER_SELECT: UserSelectFieldPropertiesSchema, ORGANIZATION_SELECT: OrganizationSelectFieldPropertiesSchema, GROUP_SELECT: GroupSelectFieldPropertiesSchema, FILE: FileFieldPropertiesSchema, REFERENCE_TABLE: ReferenceTableFieldPropertiesSchema, RECORD_NUMBER: RecordNumberFieldPropertiesSchema, CREATOR: CreatorFieldPropertiesSchema, CREATED_TIME: CreatedTimeFieldPropertiesSchema, MODIFIER: ModifierFieldPropertiesSchema, UPDATED_TIME: UpdatedTimeFieldPropertiesSchema, STATUS: StatusFieldPropertiesSchema, STATUS_ASSIGNEE: StatusAssigneeFieldPropertiesSchema, CATEGORY: CategoryFieldPropertiesSchema, SUBTABLE: SubtableFieldPropertiesSchema, GROUP: GroupFieldPropertiesSchema, RECORD_ID: RecordIdFieldPropertiesSchema, REVISION: RevisionFieldPropertiesSchema, __ID__: SystemIdFieldPropertiesSchema, __REVISION__: SystemRevisionFieldPropertiesSchema, SPACER: SpacerFieldPropertiesSchema, LABEL: LabelFieldPropertiesSchema }; function toFormPropertiesSchema(field) { return FIELD_TYPE_TO_PROPERTIES_SCHEMA[field.type]; } function buildFormSchemaFromJson(properties) { const propsSchemas = {}; for (const [code, field] of Object.entries(properties)) { const schema = toFormPropertiesSchema(field); if (schema) { propsSchemas[code] = schema; } } return Schema.Struct({ properties: Schema.Struct(propsSchemas) }); } // src/utils/form-config-to-effect-module-code.ts var FIELD_TYPE_TO_FORM_SCHEMA = { SINGLE_LINE_TEXT: "SingleLineTextFieldPropertiesSchema", MULTI_LINE_TEXT: "MultiLineTextFieldPropertiesSchema", RICH_TEXT: "RichTextFieldPropertiesSchema", NUMBER: "NumberFieldPropertiesSchema", CALC: "CalcFieldPropertiesSchema", RADIO_BUTTON: "RadioButtonFieldPropertiesSchema", CHECK_BOX: "CheckBoxFieldPropertiesSchema", MULTI_SELECT: "MultiSelectFieldPropertiesSchema", DROP_DOWN: "DropDownFieldPropertiesSchema", DATE: "DateFieldPropertiesSchema", TIME: "TimeFieldPropertiesSchema", DATETIME: "DateTimeFieldPropertiesSchema", LINK: "LinkFieldPropertiesSchema", USER_SELECT: "UserSelectFieldPropertiesSchema", ORGANIZATION_SELECT: "OrganizationSelectFieldPropertiesSchema", GROUP_SELECT: "GroupSelectFieldPropertiesSchema", FILE: "FileFieldPropertiesSchema", REFERENCE_TABLE: "ReferenceTableFieldPropertiesSchema", RECORD_NUMBER: "RecordNumberFieldPropertiesSchema", CREATOR: "CreatorFieldPropertiesSchema", CREATED_TIME: "CreatedTimeFieldPropertiesSchema", MODIFIER: "ModifierFieldPropertiesSchema", UPDATED_TIME: "UpdatedTimeFieldPropertiesSchema", STATUS: "StatusFieldPropertiesSchema", STATUS_ASSIGNEE: "StatusAssigneeFieldPropertiesSchema", CATEGORY: "CategoryFieldPropertiesSchema", SUBTABLE: "SubtableFieldPropertiesSchema", GROUP: "GroupFieldPropertiesSchema", RECORD_ID: "RecordIdFieldPropertiesSchema", REVISION: "RevisionFieldPropertiesSchema", __ID__: "SystemIdFieldPropertiesSchema", __REVISION__: "SystemRevisionFieldPropertiesSchema", SPACER: "SpacerFieldPropertiesSchema", LABEL: "LabelFieldPropertiesSchema" }; function isReservedWord(word) { const reserved = /* @__PURE__ */ new Set([ "break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "export", "extends", "finally", "for", "function", "if", "import", "in", "instanceof", "new", "return", "super", "switch", "this", "throw", "try", "typeof", "var", "void", "while", "with", "yield", "enum", "implements", "interface", "let", "package", "private", "protected", "public", "static", "await", "abstract", "boolean", "byte", "char", "double", "final", "float", "goto", "int", "long", "native", "short", "synchronized", "throws", "transient", "volatile" ]); return reserved.has(word); } function valueToCode(value, indent = 0) { const spaces = " ".repeat(indent); if (value === null) return "null"; if (value === void 0) return "undefined"; if (typeof value === "string") return JSON.stringify(value); if (typeof value === "number" || typeof value === "boolean") return String(value); if (Array.isArray(value)) { if (value.length === 0) return "[]"; const items = value.map((v) => valueToCode(v, indent + 1)); if (items.every((i) => i.length < 40) && items.join(", ").length < 60) { return `[${items.join(", ")}]`; } return `[ ${spaces} ${items.join(`, ${spaces} `)} ${spaces}]`; } if (typeof value === "object") { const entries = Object.entries(value).filter(([, v]) => v !== void 0); if (entries.length === 0) return "{}"; const props = entries.map(([key, val]) => { const needsQuotes = !/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key) || isReservedWord(key); const keyStr = needsQuotes ? JSON.stringify(key) : key; const valStr = valueToCode(val, indent + 1); return `${spaces} ${keyStr}: ${valStr}`; }); return `{ ${props.join(",\n")} ${spaces}}`; } return JSON.stringify(value); } function formConfigToEffectModuleCode(properties, options) { const entries = Object.entries(properties); if (entries.length === 0) { return `import { Schema } from '${options?.importSource ?? "kintone-effect-schema"}'; export const ${options?.valueVarName ?? "appForm"} = { properties: {} as const }; export const ${options?.schemaVarName ?? "appFormFieldsSchema"} = Schema.Struct({ properties: Schema.Struct({}) });`; } const importSet = /* @__PURE__ */ new Set(["Schema"]); const fieldSchemasForStruct = []; const sortedCodes = entries.map(([code]) => code).sort(); for (const code of sortedCodes) { const field = properties[code]; const schemaConst = FIELD_TYPE_TO_FORM_SCHEMA[field.type]; if (schemaConst) importSet.add(schemaConst); const needsQuotes = code.startsWith("$") || !/^[a-zA-Z_][a-zA-Z0-9_$]*$/.test(code) || isReservedWord(code); const key = needsQuotes ? JSON.stringify(code) : code; fieldSchemasForStruct.push(` ${key}: ${schemaConst}`); } const importSource = options?.importSource ?? "kintone-effect-schema"; const imports = `import { ${Array.from(importSet).sort((a, b) => a === "Schema" ? -1 : b === "Schema" ? 1 : a.localeCompare(b)).join(",\n ")} } from '${importSource}';`; const valueVarName = options?.valueVarName ?? "appForm"; const schemaVarName = options?.schemaVarName ?? "appFormFieldsSchema"; const valueCode = `export const ${valueVarName} = ${valueToCode({ properties }, 0)} as const;`; const schemaCode = `export const ${schemaVarName} = Schema.Struct({ properties: Schema.Struct({ ${fieldSchemasForStruct.join(",\n")} }) });`; return [imports, "", valueCode, "", schemaCode].join("\n"); } export { CalcFieldPropertiesSchema, CalcFieldSchema, CategoryFieldPropertiesSchema, CategoryFieldSchema, CheckBoxFieldPropertiesSchema, CheckBoxFieldSchema, CreatedTimeFieldPropertiesSchema, CreatedTimeFieldSchema, CreatorFieldPropertiesSchema, CreatorFieldSchema, DateFieldPropertiesSchema, DateFieldSchema, DateTimeFieldPropertiesSchema, DateTimeFieldSchema, DropDownFieldPropertiesSchema, DropDownFieldSchema, FileFieldPropertiesSchema, FileFieldSchema, GetFormFieldsResponseSchema, GetRecordResponseSchema, GetRecordsResponseSchema, GroupFieldPropertiesSchema, GroupSelectFieldPropertiesSchema, GroupSelectFieldSchema, KintoneFieldPropertiesSchema, KintoneFieldSchema, KintoneFileSchema, KintoneGroupSchema, KintoneOrganizationSchema, KintoneRecordForWriteSchema, KintoneRecordSchema, KintoneUserSchema, KintoneValidationError, LabelFieldPropertiesSchema, LinkFieldPropertiesSchema, LinkFieldSchema, LookupFieldSchema, ModifierFieldPropertiesSchema, ModifierFieldSchema, MultiLineTextFieldPropertiesSchema, MultiLineTextFieldSchema, MultiSelectFieldPropertiesSchema, MultiSelectFieldSchema, NumberFieldPropertiesSchema, NumberFieldSchema, OrganizationSelectFieldPropertiesSchema, OrganizationSelectFieldSchema, RadioButtonFieldPropertiesSchema, RadioButtonFieldSchema, RecordIdFieldPropertiesSchema, RecordIdFieldSchema, RecordNumberFieldPropertiesSchema, RecordNumberFieldSchema, ReferenceTableFieldPropertiesSchema, RevisionFieldPropertiesSchema, RevisionFieldSchema, RichTextFieldPropertiesSchema, RichTextFieldSchema, SingleLineTextFieldPropertiesSchema, SingleLineTextFieldSchema, SpacerFieldPropertiesSchema, StatusAssigneeFieldPropertiesSchema, StatusAssigneeFieldSchema, StatusFieldPropertiesSchema, StatusFieldSchema, SubtableCalcFieldPropertiesSchema, SubtableCheckBoxFieldPropertiesSchema, SubtableDateFieldPropertiesSchema, SubtableDateTimeFieldPropertiesSchema, SubtableDropDownFieldPropertiesSchema, SubtableFieldPropertiesSchema, SubtableFieldSchema, SubtableFileFieldPropertiesSchema, SubtableGroupSelectFieldPropertiesSchema, SubtableLinkFieldPropertiesSchema, SubtableMultiLineTextFieldPropertiesSchema, SubtableMultiSelectFieldPropertiesSchema, SubtableNumberFieldPropertiesSchema, SubtableOrganizationSelectFieldPropertiesSchema, SubtableRadioButtonFieldPropertiesSchema, SubtableRichTextFieldPropertiesSchema, SubtableSingleLineTextFieldPropertiesSchema, SubtableTimeFieldPropertiesSchema, SubtableUserSelectFieldPropertiesSchema, SystemFieldCodeSchema, SystemIdFieldPropertiesSchema, SystemRevisionFieldPropertiesSchema, TimeFieldPropertiesSchema, TimeFieldSchema, UpdatedTimeFieldPropertiesSchema, UpdatedTimeFieldSchema, UserFieldCodeSchema, UserSelectFieldPropertiesSchema, UserSelectFieldSchema, buildFormSchemaFromJson, convertFormFieldToRecordSchema, convertFormFieldsToRecordSchema, createRecordSchemaFromForm, decodeKintoneField, decodeKintoneRecord, formConfigToEffectModuleCode, getEmptyValueForWrite, getRecordFieldType, isNonEmptyField, normalizeFieldValue, toFormPropertiesSchema, validateFieldForWrite, validateRecordForWrite }; //# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map