From 9587cc44bca4ed2cef9d3c2183b7a3ca1d8441fd Mon Sep 17 00:00:00 2001 From: leilzh Date: Wed, 1 Jul 2020 17:55:15 +0800 Subject: [PATCH 1/3] fix: Dialog validate throw error when delete an action --- .../validations/expressionValidation.test.ts | 3 +++ .../validations/expressionValidation/index.ts | 21 ++++++++++--------- .../packages/lib/shared/src/types/indexers.ts | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/Composer/packages/lib/indexers/__tests__/validations/expressionValidation.test.ts b/Composer/packages/lib/indexers/__tests__/validations/expressionValidation.test.ts index b064d76fc4..2caef95c2f 100644 --- a/Composer/packages/lib/indexers/__tests__/validations/expressionValidation.test.ts +++ b/Composer/packages/lib/indexers/__tests__/validations/expressionValidation.test.ts @@ -13,6 +13,9 @@ describe('search lg custom function', () => { expect(result.length).toEqual(2); expect(result[0]).toEqual('foo.bar'); expect(result[1]).toEqual('foo.cool'); + const lgFilesWithoutOptions = [{ id: 'test.en-us' }]; + const result1 = searchLgCustomFunction(lgFilesWithoutOptions as LgFile[]); + expect(result1.length).toEqual(0); }); it('should return custom functions with namespace', () => { diff --git a/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts b/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts index 3ba6eeabda..165bbae741 100644 --- a/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts +++ b/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts @@ -15,16 +15,17 @@ const ExportsKey = '@exports'; export const searchLgCustomFunction = (lgFiles: LgFile[]): string[] => { const customFunctions = lgFiles.reduce((result: string[], lgFile) => { const { options } = lgFile; - const exports = extractOptionByKey(ExportsKey, options); - let namespace = extractOptionByKey(NamespaceKey, options); - if (!namespace) namespace = lgFile.id; //if namespace doesn't exist, use file name - const funcList = exports.split(','); - funcList.forEach((func) => { - if (func) { - result.push(`${namespace}.${func.trim()}`); - } - }); - + if (options && options.length) { + const exports = extractOptionByKey(ExportsKey, options); + let namespace = extractOptionByKey(NamespaceKey, options); + if (!namespace) namespace = lgFile.id; //if namespace doesn't exist, use file name + const funcList = exports.split(','); + funcList.forEach((func) => { + if (func) { + result.push(`${namespace}.${func.trim()}`); + } + }); + } return result; }, []); return customFunctions; diff --git a/Composer/packages/lib/shared/src/types/indexers.ts b/Composer/packages/lib/shared/src/types/indexers.ts index be850e6843..2232466237 100644 --- a/Composer/packages/lib/shared/src/types/indexers.ts +++ b/Composer/packages/lib/shared/src/types/indexers.ts @@ -107,7 +107,7 @@ export interface LgFile { content: string; diagnostics: Diagnostic[]; templates: LgTemplate[]; - options: string[]; + options?: string[]; } export interface Skill { From 2b8c0ac18cf96691622323b7713bb70f18bcbd68 Mon Sep 17 00:00:00 2001 From: Andy Brown Date: Wed, 1 Jul 2020 13:03:12 -0700 Subject: [PATCH 2/3] use optional chaining and more explicit length check --- .../lib/indexers/src/validations/expressionValidation/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts b/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts index 165bbae741..7d98fdc807 100644 --- a/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts +++ b/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts @@ -15,7 +15,7 @@ const ExportsKey = '@exports'; export const searchLgCustomFunction = (lgFiles: LgFile[]): string[] => { const customFunctions = lgFiles.reduce((result: string[], lgFile) => { const { options } = lgFile; - if (options && options.length) { + if (options?.length > 0) { const exports = extractOptionByKey(ExportsKey, options); let namespace = extractOptionByKey(NamespaceKey, options); if (!namespace) namespace = lgFile.id; //if namespace doesn't exist, use file name From 294dc877be623532b145084129cecb35947d9747 Mon Sep 17 00:00:00 2001 From: leilzh Date: Thu, 2 Jul 2020 08:21:13 +0800 Subject: [PATCH 3/3] fix lint --- .../lib/indexers/src/validations/expressionValidation/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts b/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts index 7d98fdc807..aee180ce76 100644 --- a/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts +++ b/Composer/packages/lib/indexers/src/validations/expressionValidation/index.ts @@ -15,7 +15,7 @@ const ExportsKey = '@exports'; export const searchLgCustomFunction = (lgFiles: LgFile[]): string[] => { const customFunctions = lgFiles.reduce((result: string[], lgFile) => { const { options } = lgFile; - if (options?.length > 0) { + if (options?.length) { const exports = extractOptionByKey(ExportsKey, options); let namespace = extractOptionByKey(NamespaceKey, options); if (!namespace) namespace = lgFile.id; //if namespace doesn't exist, use file name