From 64d575710fd61d82574c1972841f7e2519692903 Mon Sep 17 00:00:00 2001 From: PMExtra Date: Mon, 4 Jan 2021 19:20:51 +0800 Subject: [PATCH 1/3] Fix enum file template with string enum. --- .../proxy/__namespace@dir__/__name@kebab__.enum.ts.template | 2 +- npm/ng-packs/packages/schematics/src/utils/text.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/__namespace@dir__/__name@kebab__.enum.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/__namespace@dir__/__name@kebab__.enum.ts.template index 795ec2bbf6..8b4254090d 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/__namespace@dir__/__name@kebab__.enum.ts.template +++ b/npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/__namespace@dir__/__name@kebab__.enum.ts.template @@ -2,7 +2,7 @@ import { mapEnumToOptions } from '@abp/ng.core'; export enum <%= name %> {<% for (let member of members) { %> - <%= member.key %> = <%= member.value %>,<% } %> + <%= member.key %> = <%= quote(member.value) %>,<% } %> } export const <%= camel(name) %>Options = mapEnumToOptions(<%= name %>); diff --git a/npm/ng-packs/packages/schematics/src/utils/text.ts b/npm/ng-packs/packages/schematics/src/utils/text.ts index 379ea78601..e2ceeb1215 100644 --- a/npm/ng-packs/packages/schematics/src/utils/text.ts +++ b/npm/ng-packs/packages/schematics/src/utils/text.ts @@ -10,6 +10,9 @@ export const macro = (text: string) => upper(snake(text)); export const dir = (text: string) => strings.dasherize(text.replace(/\./g, '/').replace(/\/\//g, '/')); +// TODO: Is there a standard function to do this? There is a leak if the value contains single quote. +export const quote = (value: number | string) => typeof value === 'string' ? `'${value}'` : value; + function _(text: string): string { return text.replace(/\./g, '_'); } From 46370ade6f8c775d73be7c851b6eb8d56c19c4eb Mon Sep 17 00:00:00 2001 From: PM Extra Date: Tue, 5 Jan 2021 17:55:05 +0800 Subject: [PATCH 2/3] Update npm/ng-packs/packages/schematics/src/utils/text.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit escape single quote Co-authored-by: Levent Arman Özak --- npm/ng-packs/packages/schematics/src/utils/text.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/text.ts b/npm/ng-packs/packages/schematics/src/utils/text.ts index e2ceeb1215..9949b490bf 100644 --- a/npm/ng-packs/packages/schematics/src/utils/text.ts +++ b/npm/ng-packs/packages/schematics/src/utils/text.ts @@ -10,8 +10,8 @@ export const macro = (text: string) => upper(snake(text)); export const dir = (text: string) => strings.dasherize(text.replace(/\./g, '/').replace(/\/\//g, '/')); -// TODO: Is there a standard function to do this? There is a leak if the value contains single quote. -export const quote = (value: number | string) => typeof value === 'string' ? `'${value}'` : value; +export const quote = (value: number | string) => + typeof value === 'string' ? `'${value.replace(/'/g, `\\'`)}'` : value; function _(text: string): string { return text.replace(/\./g, '_'); From 4a253fc1b9be836d718a4369a9aee0d7f08e4677 Mon Sep 17 00:00:00 2001 From: PM Extra Date: Tue, 5 Jan 2021 18:01:19 +0800 Subject: [PATCH 3/3] Fix for lint. --- npm/ng-packs/packages/schematics/src/utils/text.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/text.ts b/npm/ng-packs/packages/schematics/src/utils/text.ts index 9949b490bf..e24129beff 100644 --- a/npm/ng-packs/packages/schematics/src/utils/text.ts +++ b/npm/ng-packs/packages/schematics/src/utils/text.ts @@ -11,7 +11,7 @@ export const dir = (text: string) => strings.dasherize(text.replace(/\./g, '/').replace(/\/\//g, '/')); export const quote = (value: number | string) => - typeof value === 'string' ? `'${value.replace(/'/g, `\\'`)}'` : value; + typeof value === 'string' ? `'${value.replace(/'/g, '\\\'')}'` : value; function _(text: string): string { return text.replace(/\./g, '_');