From 1d42039bfbdaeabad6e7a14e1eb75ef7f66592a3 Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Thu, 13 Jun 2024 16:49:23 +0300 Subject: [PATCH 1/4] add: volo pacakges proxy import map and resolve volo packages --- .../schematics/src/commands/api/index.ts | 3 ++ .../packages/schematics/src/constants/volo.ts | 26 ++++++++++ .../packages/schematics/src/utils/model.ts | 48 ++++++++++++++++++- 3 files changed, 75 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/index.ts b/npm/ng-packs/packages/schematics/src/commands/api/index.ts index c04ca1d4330..da36a058323 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/api/index.ts @@ -29,6 +29,7 @@ import { sanitizeTypeNames, sanitizeControllerTypeNames, serializeParameters, + resolveAbpPackages, } from '../../utils'; import * as cases from '../../utils/text'; @@ -157,6 +158,8 @@ function createModelGenerator(params: ModelGeneratorParams) { ), ); + resolveAbpPackages(models); + return chain( models.map(model => applyWithOverwrite(url('./files-model'), [ diff --git a/npm/ng-packs/packages/schematics/src/constants/volo.ts b/npm/ng-packs/packages/schematics/src/constants/volo.ts index f42f4ed1966..b5a6ae7d20f 100644 --- a/npm/ng-packs/packages/schematics/src/constants/volo.ts +++ b/npm/ng-packs/packages/schematics/src/constants/volo.ts @@ -3,3 +3,29 @@ export const VOLO_REMOTE_STREAM_CONTENT = [ 'Volo.Abp.Content.IRemoteStreamContent', 'Volo.Abp.Content.RemoteStreamContent', ]; + +export const VOLO_PACKAGE_PROXY_IMPORTS = new Map([ + ['Volo.Abp.Identity.IdentityUserDto', '@volo/abp.ng.identity/proxy'], + ['Volo.Abp.Identity.IdentityRoleDto', '@volo/abp.ng.identity/proxy'], + ['Volo.Abp.FileManagement.FileDescriptorDto', '@volo/abp.ng.file-management/proxy'], + ['Volo.Abp.FileManagement.DirectoryContentDto', '@volo/abp.ng.file-management/proxy'], + ['Volo.Abp.AuditLogging.AuditLogDto', '@volo/abp.ng.audit-logging/proxy'], + ['Volo.Abp.AuditLogging.AuditLogActionDto', '@volo/abp.ng.audit-logging/proxy'], + ['Volo.Abp.AuditLogging.EntityChangeDto', '@volo/abp.ng.audit-logging/proxy'], + ['Volo.Abp.AuditLogging.EntityPropertyChangeDto', '@volo/abp.ng.audit-logging/proxy'], + ['Volo.Chat.Messages', '@volo/abp.ng.chat/proxy'], + ['Volo.Chat.ChatMessageDto', '@volo/abp.ng.chat/proxy'], + ['Volo.Chat.ChatConversationDto', '@volo/abp.ng.chat/proxy'], + ['Volo.Abp.Gdpr.GdprRequestDto', '@volo/abp.ng.gdpr/proxy'], + ['Volo.Saas.Tenants.TenantDto', '@volo/abp.ng.saas/proxy'], + ['Volo.Saas.TenantConnectionStringsDto', '@volo/abp.ng.saas/proxy'], + ['Volo.Saas.EditionDto', '@volo/abp.ng.saas/proxy'], + [ + 'Volo.Abp.TextTemplateManagement.TextTemplates.TextTemplateContentDto', + '@volo/abp.ng.saas/proxy', + ], + [ + 'Volo.Abp.TextTemplateManagement.TextTemplates.TemplateDefinitionDto', + '@volo/abp.ng.saas/proxy', + ], +]); diff --git a/npm/ng-packs/packages/schematics/src/utils/model.ts b/npm/ng-packs/packages/schematics/src/utils/model.ts index 52b9b36be08..7d0182dcf56 100644 --- a/npm/ng-packs/packages/schematics/src/utils/model.ts +++ b/npm/ng-packs/packages/schematics/src/utils/model.ts @@ -1,5 +1,4 @@ -import { VOLO_REGEX } from '../constants'; -import { Interface, Model, Property, PropertyDef, Type, TypeWithEnum } from '../models'; +import { Import, Interface, Model, Property, PropertyDef, Type, TypeWithEnum } from '../models'; import { extractGenerics, generateRefWithPlaceholders, @@ -17,6 +16,8 @@ import { extendsSelf, removeTypeModifiers, } from './type'; +import { VOLO_PACKAGE_PROXY_IMPORTS, VOLO_REGEX } from '../constants'; + // eslint-disable-next-line @typescript-eslint/no-var-requires const shouldQuote = require('should-quote'); @@ -201,3 +202,46 @@ export function parseBaseTypeWithGenericTypes(type: string): string[] { return nodeToText(parsedTypeNode); } + +const tenantKey = 'tenant'; +const saasNamespace = 'Volo.Saas'; + +export function resolveAbpPackages(models: Model[]) { + for (const model of models) { + renamePropForTenant(model.interfaces); + + model.imports.forEach((imp, i) => { + fixImportName(imp); + + for (const ref of imp.refs) { + const path = VOLO_PACKAGE_PROXY_IMPORTS.get(ref); + if (path) { + model.imports[i] = new Import({ ...imp, path }); + } + } + }); + } +} + +function renamePropForTenant(interfaces: Interface[]) { + for (const inters of interfaces) { + for (const prop of inters.properties) { + const isTenant = prop.name.toLocaleLowerCase().includes(tenantKey); + const isSaasDto = prop.refs.filter(f => f.startsWith(saasNamespace)).length > 0; + + if (isTenant && isSaasDto) { + prop.type = 'Saas' + prop.type; + } + } + } +} + +function fixImportName(imp: Import) { + imp.specifiers.forEach((spe, index) => { + const isTenant = spe.toLocaleLowerCase().includes(tenantKey); + + if (isTenant) { + imp.specifiers[index] = 'Saas' + spe; + } + }); +} From 60d0ba2cecd4784724b4c818f70e392416ac9394 Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Fri, 14 Jun 2024 15:50:46 +0300 Subject: [PATCH 2/4] update model.ts --- .../packages/schematics/src/constants/volo.ts | 7 +++++-- .../packages/schematics/src/utils/model.ts | 17 +++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/constants/volo.ts b/npm/ng-packs/packages/schematics/src/constants/volo.ts index b5a6ae7d20f..976f553f446 100644 --- a/npm/ng-packs/packages/schematics/src/constants/volo.ts +++ b/npm/ng-packs/packages/schematics/src/constants/volo.ts @@ -4,6 +4,9 @@ export const VOLO_REMOTE_STREAM_CONTENT = [ 'Volo.Abp.Content.RemoteStreamContent', ]; +export const SAAS_NAMESPACE = 'Volo.Saas'; +export const TENANT_KEY = 'tenant'; + export const VOLO_PACKAGE_PROXY_IMPORTS = new Map([ ['Volo.Abp.Identity.IdentityUserDto', '@volo/abp.ng.identity/proxy'], ['Volo.Abp.Identity.IdentityRoleDto', '@volo/abp.ng.identity/proxy'], @@ -18,8 +21,8 @@ export const VOLO_PACKAGE_PROXY_IMPORTS = new Map([ ['Volo.Chat.ChatConversationDto', '@volo/abp.ng.chat/proxy'], ['Volo.Abp.Gdpr.GdprRequestDto', '@volo/abp.ng.gdpr/proxy'], ['Volo.Saas.Tenants.TenantDto', '@volo/abp.ng.saas/proxy'], - ['Volo.Saas.TenantConnectionStringsDto', '@volo/abp.ng.saas/proxy'], - ['Volo.Saas.EditionDto', '@volo/abp.ng.saas/proxy'], + ['Volo.Saas.Tenants.TenantConnectionStringDto', '@volo/abp.ng.saas/proxy'], + ['Volo.Saas.Tenants.EditionDto', '@volo/abp.ng.saas/proxy'], [ 'Volo.Abp.TextTemplateManagement.TextTemplates.TextTemplateContentDto', '@volo/abp.ng.saas/proxy', diff --git a/npm/ng-packs/packages/schematics/src/utils/model.ts b/npm/ng-packs/packages/schematics/src/utils/model.ts index 7d0182dcf56..d7c118969d7 100644 --- a/npm/ng-packs/packages/schematics/src/utils/model.ts +++ b/npm/ng-packs/packages/schematics/src/utils/model.ts @@ -16,7 +16,7 @@ import { extendsSelf, removeTypeModifiers, } from './type'; -import { VOLO_PACKAGE_PROXY_IMPORTS, VOLO_REGEX } from '../constants'; +import { SAAS_NAMESPACE, TENANT_KEY, VOLO_PACKAGE_PROXY_IMPORTS, VOLO_REGEX } from '../constants'; // eslint-disable-next-line @typescript-eslint/no-var-requires const shouldQuote = require('should-quote'); @@ -41,7 +41,7 @@ export function createImportRefsToModelReducer(params: ModelGeneratorParams) { sortInterfaces(interfaces); interfaces.forEach(_interface => { - if (VOLO_REGEX.test(_interface.ref)) return; + if (VOLO_REGEX.test(_interface.ref) || VOLO_PACKAGE_PROXY_IMPORTS.has(_interface.ref)) return; if (types[_interface.ref]!.isEnum) { if (!enums.includes(_interface.ref)) enums.push(_interface.ref); @@ -203,15 +203,12 @@ export function parseBaseTypeWithGenericTypes(type: string): string[] { return nodeToText(parsedTypeNode); } -const tenantKey = 'tenant'; -const saasNamespace = 'Volo.Saas'; - export function resolveAbpPackages(models: Model[]) { for (const model of models) { renamePropForTenant(model.interfaces); model.imports.forEach((imp, i) => { - fixImportName(imp); + fixImportNameForTenant(imp); for (const ref of imp.refs) { const path = VOLO_PACKAGE_PROXY_IMPORTS.get(ref); @@ -226,8 +223,8 @@ export function resolveAbpPackages(models: Model[]) { function renamePropForTenant(interfaces: Interface[]) { for (const inters of interfaces) { for (const prop of inters.properties) { - const isTenant = prop.name.toLocaleLowerCase().includes(tenantKey); - const isSaasDto = prop.refs.filter(f => f.startsWith(saasNamespace)).length > 0; + const isTenant = prop.name.toLocaleLowerCase().includes(TENANT_KEY); + const isSaasDto = prop.refs.filter(f => f.startsWith(SAAS_NAMESPACE)).length > 0; if (isTenant && isSaasDto) { prop.type = 'Saas' + prop.type; @@ -236,9 +233,9 @@ function renamePropForTenant(interfaces: Interface[]) { } } -function fixImportName(imp: Import) { +function fixImportNameForTenant(imp: Import) { imp.specifiers.forEach((spe, index) => { - const isTenant = spe.toLocaleLowerCase().includes(tenantKey); + const isTenant = spe.toLocaleLowerCase().includes(TENANT_KEY); if (isTenant) { imp.specifiers[index] = 'Saas' + spe; From 90f0a2dbd568f8c9db6796b1283c3bdf56e52a0e Mon Sep 17 00:00:00 2001 From: Masum ULU <49063256+masumulu28@users.noreply.github.com> Date: Fri, 14 Jun 2024 16:29:27 +0300 Subject: [PATCH 3/4] Update volo.ts --- npm/ng-packs/packages/schematics/src/constants/volo.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/npm/ng-packs/packages/schematics/src/constants/volo.ts b/npm/ng-packs/packages/schematics/src/constants/volo.ts index 976f553f446..9fff8644375 100644 --- a/npm/ng-packs/packages/schematics/src/constants/volo.ts +++ b/npm/ng-packs/packages/schematics/src/constants/volo.ts @@ -21,6 +21,7 @@ export const VOLO_PACKAGE_PROXY_IMPORTS = new Map([ ['Volo.Chat.ChatConversationDto', '@volo/abp.ng.chat/proxy'], ['Volo.Abp.Gdpr.GdprRequestDto', '@volo/abp.ng.gdpr/proxy'], ['Volo.Saas.Tenants.TenantDto', '@volo/abp.ng.saas/proxy'], + //TenantConnectionStringDto it must end with Strings. ['Volo.Saas.Tenants.TenantConnectionStringDto', '@volo/abp.ng.saas/proxy'], ['Volo.Saas.Tenants.EditionDto', '@volo/abp.ng.saas/proxy'], [ From a56a12224db3b826f273455406c4408b6d1e179b Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Thu, 20 Jun 2024 09:30:13 +0300 Subject: [PATCH 4/4] fix: namespace for saas edition --- npm/ng-packs/packages/schematics/src/constants/volo.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/schematics/src/constants/volo.ts b/npm/ng-packs/packages/schematics/src/constants/volo.ts index 9fff8644375..7a65902732c 100644 --- a/npm/ng-packs/packages/schematics/src/constants/volo.ts +++ b/npm/ng-packs/packages/schematics/src/constants/volo.ts @@ -23,7 +23,7 @@ export const VOLO_PACKAGE_PROXY_IMPORTS = new Map([ ['Volo.Saas.Tenants.TenantDto', '@volo/abp.ng.saas/proxy'], //TenantConnectionStringDto it must end with Strings. ['Volo.Saas.Tenants.TenantConnectionStringDto', '@volo/abp.ng.saas/proxy'], - ['Volo.Saas.Tenants.EditionDto', '@volo/abp.ng.saas/proxy'], + ['Volo.Saas.Editions.EditionDto', '@volo/abp.ng.saas/proxy'], [ 'Volo.Abp.TextTemplateManagement.TextTemplates.TextTemplateContentDto', '@volo/abp.ng.saas/proxy',