From e64706a33e5035aff8da05c3dd6020f493aca5ee Mon Sep 17 00:00:00 2001 From: Alex Rock Date: Tue, 22 Oct 2024 01:20:21 -0600 Subject: [PATCH 1/5] feat: fix date Readme --- validate/date/README.md | 17 ++++++++++++----- validate/date/src/validate.date.plugin.spec.ts | 4 ++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/validate/date/README.md b/validate/date/README.md index 6e707ea94..2c0795606 100644 --- a/validate/date/README.md +++ b/validate/date/README.md @@ -3,7 +3,7 @@ The `@flatfile/plugin-validate-date` plugin provides date format normalization functionality for Flatfile. It detects various date formats and converts them to a specified output format, supporting multiple fields and locales. **Event Type:** -`listener.on('commit:created')` +`recordHook` @@ -21,6 +21,9 @@ The `outputFormat` parameter specifies the desired output format for the normali #### `config.includeTime` - `boolean` The `includeTime` parameter determines whether to include time in the normalized output. +#### `config.locale` - `string` - (optional) +The `locale` parameter specifies the locale to use for date parsing. Currently, only 'en-US' is supported. + ## Usage ```bash install @@ -45,12 +48,16 @@ export default function (listener: FlatfileListener) { listener.use( validateDate({ sheetSlug: 'contacts', - dateFields: ['birthdate', 'registration_date'], - outputFormat: 'MM/DD/YYYY', + dateFields: ['birth_date', 'registration_date'], + outputFormat: 'MM/dd/yyyy', includeTime: false }) ) - - // ... rest of your Flatfile listener configuration } ``` + +## Notes + +- The plugin uses the `chrono-node` library for parsing dates, which supports a wide range of date formats. +- If a date cannot be parsed, the plugin will add an error message to the record for that field. +- The `locale` parameter is included in the configuration interface but is not currently used in the implementation. The plugin defaults to using the 'en-US' locale. diff --git a/validate/date/src/validate.date.plugin.spec.ts b/validate/date/src/validate.date.plugin.spec.ts index 7d9b383c9..ada736df5 100644 --- a/validate/date/src/validate.date.plugin.spec.ts +++ b/validate/date/src/validate.date.plugin.spec.ts @@ -81,8 +81,8 @@ describe('NormalizeDate e2e', () => { const records = await getRecords(sheetId) - expect(records[0].values['date'].messages.length).toBeGreaterThan(0) - expect(records[0].values['date'].messages[0].message).toContain( + expect(records[0].values['date'].messages?.length).toBeGreaterThan(0) + expect(records[0].values['date'].messages?.[0].message).toContain( 'Unable to parse date string' ) }) From 51a44171839c246fde417e524a37b28405c9fa16 Mon Sep 17 00:00:00 2001 From: Alex Rock Date: Tue, 22 Oct 2024 01:21:41 -0600 Subject: [PATCH 2/5] feat: fix number readme --- validate/number/README.MD | 5 ++++- validate/number/src/validate.number.plugin.ts | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/validate/number/README.MD b/validate/number/README.MD index 4cdb11c7a..989b58fab 100644 --- a/validate/number/README.MD +++ b/validate/number/README.MD @@ -49,7 +49,8 @@ listener.use( thousandsSeparator: ',', decimalPoint: '.', specialTypes: ['even'], - round: true + round: true, + fields: ['numberField'] }) ); ``` @@ -71,6 +72,8 @@ The `validateNumber` accepts a configuration object with the following options: - `specialTypes`: Array of special number types to validate ('prime', 'even', 'odd') - `round`: Round the number to the nearest integer - `truncate`: Truncate the decimal part of the number +- `fields`: Array of field names to apply the validation to +- `sheetSlug`: The slug of the sheet to apply the validation to ## Behavior diff --git a/validate/number/src/validate.number.plugin.ts b/validate/number/src/validate.number.plugin.ts index 2ee8bf7ad..8e9805b3f 100644 --- a/validate/number/src/validate.number.plugin.ts +++ b/validate/number/src/validate.number.plugin.ts @@ -15,6 +15,8 @@ export interface NumberValidationConfig { specialTypes?: string[] round?: boolean truncate?: boolean + fields: string[] + sheetSlug?: string } export interface NumberValidationResult { @@ -120,9 +122,7 @@ export function validateNumberField( return result } -export function validateNumber( - config: NumberValidationConfig & { fields: string[]; sheetSlug?: string } -) { +export function validateNumber(config: NumberValidationConfig) { return (listener: FlatfileListener) => { listener.use( recordHook(config.sheetSlug || '**', async (record: FlatfileRecord) => { From 27607190eea434edf5ab35180a5ef395dbfd7cb8 Mon Sep 17 00:00:00 2001 From: Alex Rock Date: Tue, 22 Oct 2024 08:51:48 -0600 Subject: [PATCH 3/5] feat: fix test --- validate/number/src/validate.number.plugin.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/validate/number/src/validate.number.plugin.ts b/validate/number/src/validate.number.plugin.ts index 8e9805b3f..2ee8bf7ad 100644 --- a/validate/number/src/validate.number.plugin.ts +++ b/validate/number/src/validate.number.plugin.ts @@ -15,8 +15,6 @@ export interface NumberValidationConfig { specialTypes?: string[] round?: boolean truncate?: boolean - fields: string[] - sheetSlug?: string } export interface NumberValidationResult { @@ -122,7 +120,9 @@ export function validateNumberField( return result } -export function validateNumber(config: NumberValidationConfig) { +export function validateNumber( + config: NumberValidationConfig & { fields: string[]; sheetSlug?: string } +) { return (listener: FlatfileListener) => { listener.use( recordHook(config.sheetSlug || '**', async (record: FlatfileRecord) => { From 399f757c65ed1d51880c93d1f2e463b075d27632 Mon Sep 17 00:00:00 2001 From: Alex Rock Date: Tue, 22 Oct 2024 09:43:40 -0600 Subject: [PATCH 4/5] Update validate/date/README.md --- validate/date/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validate/date/README.md b/validate/date/README.md index 2c0795606..33c353dbb 100644 --- a/validate/date/README.md +++ b/validate/date/README.md @@ -3,7 +3,7 @@ The `@flatfile/plugin-validate-date` plugin provides date format normalization functionality for Flatfile. It detects various date formats and converts them to a specified output format, supporting multiple fields and locales. **Event Type:** -`recordHook` +`listener.on('commit:created')` From 2dada96b3e8280099e64c3969bb0571b16ee8b91 Mon Sep 17 00:00:00 2001 From: Carl Brugger Date: Tue, 22 Oct 2024 11:52:05 -0500 Subject: [PATCH 5/5] chore: update READMEs --- .changeset/four-peas-change.md | 6 ++++++ package-lock.json | 11 +++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 .changeset/four-peas-change.md diff --git a/.changeset/four-peas-change.md b/.changeset/four-peas-change.md new file mode 100644 index 000000000..41d1da522 --- /dev/null +++ b/.changeset/four-peas-change.md @@ -0,0 +1,6 @@ +--- +'@flatfile/plugin-validate-number': patch +'@flatfile/plugin-validate-date': patch +--- + +Update READMEs diff --git a/package-lock.json b/package-lock.json index 2a62a53e9..1545e0f65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -89,7 +89,7 @@ }, "convert/translate": { "name": "@flatfile/plugin-convert-translate", - "version": "0.0.0", + "version": "0.1.0", "license": "ISC", "dependencies": { "@flatfile/plugin-record-hook": "^1.7.1", @@ -264,7 +264,6 @@ }, "flatfilers/playground": { "version": "0.0.0", - "extraneous": true, "license": "ISC", "dependencies": { "@flatfile/api": "^1.9.19", @@ -322,7 +321,7 @@ }, "import/llm-records": { "name": "@flatfile/plugin-import-llm-records", - "version": "0.0.0", + "version": "0.1.0", "license": "ISC", "dependencies": { "@flatfile/plugin-job-handler": "^0.6.1", @@ -6728,6 +6727,10 @@ "node": ">=14" } }, + "node_modules/@private/playground": { + "resolved": "flatfilers/playground", + "link": true + }, "node_modules/@private/sandbox": { "resolved": "flatfilers/sandbox", "link": true @@ -21450,7 +21453,7 @@ }, "plugins/automap": { "name": "@flatfile/plugin-automap", - "version": "0.5.2", + "version": "0.6.0", "license": "ISC", "dependencies": { "@flatfile/util-common": "^1.4.1",