From 61ad5bee59d60dc1bd0954078fc6d37efea90da4 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 19:51:58 +0300 Subject: [PATCH 01/13] refactor: replace chainAndMerge with mergeAndAllowDelete --- .../schematics/src/commands/proxy-add/index.ts | 9 +++++++-- .../schematics/src/commands/proxy-refresh/index.ts | 6 +++--- .../schematics/src/commands/proxy-remove/index.ts | 6 +++--- npm/ng-packs/packages/schematics/src/utils/rule.ts | 13 ++++++------- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts index 1400cfca1c..a0ddba2276 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts @@ -3,13 +3,13 @@ import { chain, SchematicContext, Tree } from '@angular-devkit/schematics'; import { GenerateProxySchema } from '../../models'; import { buildDefaultPath, - chainAndMerge, createApiDefinitionGetter, createApisGenerator, createProxyClearer, createProxyConfigReader, createProxyConfigSaver, createProxyWarningSaver, + mergeAndAllowDelete, removeDefaultPlaceholders, resolveProject, } from '../../utils'; @@ -45,7 +45,12 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); - return chainAndMerge([clearProxy, saveProxyConfig, saveProxyWarning, generateApis])(host); + return chain([ + mergeAndAllowDelete(host, clearProxy), + saveProxyConfig, + saveProxyWarning, + generateApis, + ]); }, ]); } diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts index 2c4e20d7d2..4d3093edbb 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts @@ -1,13 +1,13 @@ -import { SchematicContext, Tree } from '@angular-devkit/schematics'; +import { chain, SchematicContext, Tree } from '@angular-devkit/schematics'; import { GenerateProxySchema } from '../../models'; import { buildDefaultPath, - chainAndMerge, createApiDefinitionGetter, createApisGenerator, createProxyClearer, createProxyConfigReader, createProxyConfigSaver, + mergeAndAllowDelete, removeDefaultPlaceholders, resolveProject, } from '../../utils'; @@ -32,6 +32,6 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); - return chainAndMerge([clearProxy, saveProxyConfig, generateApis])(host); + return chain([mergeAndAllowDelete(host, clearProxy), saveProxyConfig, generateApis]); }; } diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts index 83cc43c0b8..6b6852a383 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts @@ -1,14 +1,14 @@ import { strings } from '@angular-devkit/core'; -import { SchematicContext, Tree } from '@angular-devkit/schematics'; +import { chain, SchematicContext, Tree } from '@angular-devkit/schematics'; import { GenerateProxySchema } from '../../models'; import { buildDefaultPath, - chainAndMerge, createApiDefinitionGetter, createApisGenerator, createProxyClearer, createProxyConfigReader, createProxyConfigSaver, + mergeAndAllowDelete, removeDefaultPlaceholders, resolveProject, } from '../../utils'; @@ -38,6 +38,6 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); - return chainAndMerge([clearProxy, saveProxyConfig, generateApis])(host); + return chain([mergeAndAllowDelete(host, clearProxy), saveProxyConfig, generateApis]); }; } diff --git a/npm/ng-packs/packages/schematics/src/utils/rule.ts b/npm/ng-packs/packages/schematics/src/utils/rule.ts index 39b14cec78..bd6acdd646 100644 --- a/npm/ng-packs/packages/schematics/src/utils/rule.ts +++ b/npm/ng-packs/packages/schematics/src/utils/rule.ts @@ -1,6 +1,6 @@ import { apply, - chain, + callRule, forEach, MergeStrategy, mergeWith, @@ -18,12 +18,11 @@ export function applyWithOverwrite(source: Source, rules: Rule[]): Rule { }; } -export function chainAndMerge(rules: Rule[]) { - return (host: Tree) => async (tree: Tree, context: SchematicContext) => - host.merge( - (await (chain(rules)(tree, context) as any).toPromise()) as Tree, - MergeStrategy.AllowDeleteConflict, - ); +export function mergeAndAllowDelete(host: Tree, rule: Rule) { + return async (tree: Tree, context: SchematicContext) => { + const nextTree = await callRule(rule, tree, context).toPromise(); + host.merge(nextTree, MergeStrategy.AllowDeleteConflict); + }; } export function overwriteFileIfExists(tree: Tree): Rule { From 841d66ba6b336691c04c993aa4c37255a4a2dac3 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 19:57:26 +0300 Subject: [PATCH 02/13] feat: add a common file saver utility fn --- npm/ng-packs/packages/schematics/src/utils/file.ts | 8 ++++++++ npm/ng-packs/packages/schematics/src/utils/index.ts | 1 + 2 files changed, 9 insertions(+) create mode 100644 npm/ng-packs/packages/schematics/src/utils/file.ts diff --git a/npm/ng-packs/packages/schematics/src/utils/file.ts b/npm/ng-packs/packages/schematics/src/utils/file.ts new file mode 100644 index 0000000000..cbfa9afcd2 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/utils/file.ts @@ -0,0 +1,8 @@ +import { Tree } from '@angular-devkit/schematics'; + +export function createFileSaver(tree: Tree) { + return (filePath: string, fileContent: string) => + tree.exists(filePath) + ? tree.overwrite(filePath, fileContent) + : tree.create(filePath, fileContent); +} diff --git a/npm/ng-packs/packages/schematics/src/utils/index.ts b/npm/ng-packs/packages/schematics/src/utils/index.ts index 304c2294b0..ea6bbad964 100644 --- a/npm/ng-packs/packages/schematics/src/utils/index.ts +++ b/npm/ng-packs/packages/schematics/src/utils/index.ts @@ -3,6 +3,7 @@ export * from './api'; export * from './ast'; export * from './common'; export * from './enum'; +export * from './file'; export * from './import'; export * from './model'; export * from './namespace'; From 07cc4477b5b468f458c861e1f32d93be9c01c0fa Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 19:57:49 +0300 Subject: [PATCH 03/13] feat: add barrel export generator utility fn --- .../packages/schematics/src/utils/barrel.ts | 43 +++++++++++++++++++ .../packages/schematics/src/utils/index.ts | 1 + 2 files changed, 44 insertions(+) create mode 100644 npm/ng-packs/packages/schematics/src/utils/barrel.ts diff --git a/npm/ng-packs/packages/schematics/src/utils/barrel.ts b/npm/ng-packs/packages/schematics/src/utils/barrel.ts new file mode 100644 index 0000000000..299876f875 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/utils/barrel.ts @@ -0,0 +1,43 @@ +import { strings } from '@angular-devkit/core'; +import { Tree } from '@angular-devkit/schematics'; +import { PROXY_PATH } from '../constants'; +import { createFileSaver } from './file'; + +export function createProxyIndexGenerator(targetPath: string) { + return createBarrelsGenerator(targetPath + PROXY_PATH); +} + +export function createBarrelsGenerator(rootPath: string) { + return (tree: Tree) => { + generateBarrelFromPath(tree, rootPath); + return tree; + }; +} + +export function generateBarrelFromPath(tree: Tree, indexPath: string) { + const saveFile = createFileSaver(tree); + const dir = tree.getDir(indexPath); + + let _exports = ''; + + dir.subfiles.forEach(fragment => { + if (!fragment.endsWith('.ts')) return; + + _exports += `export * from './${fragment.replace(/\.ts$/, '')}'; +`; + }); + + dir.subdirs.forEach(fragment => { + const subDirPath = indexPath + '/' + fragment; + const subDir = tree.getDir(subDirPath); + let hasFiles = false; + subDir.visit(() => (hasFiles = true)); + if (!hasFiles) return; + + _exports += `export * as ${strings.classify(fragment)} from './${fragment}'; +`; + generateBarrelFromPath(tree, subDirPath); + }); + + if (_exports) saveFile(indexPath + '/index.ts', _exports); +} diff --git a/npm/ng-packs/packages/schematics/src/utils/index.ts b/npm/ng-packs/packages/schematics/src/utils/index.ts index ea6bbad964..178920dccc 100644 --- a/npm/ng-packs/packages/schematics/src/utils/index.ts +++ b/npm/ng-packs/packages/schematics/src/utils/index.ts @@ -1,6 +1,7 @@ export * from './angular'; export * from './api'; export * from './ast'; +export * from './barrel'; export * from './common'; export * from './enum'; export * from './file'; From 155da7fdb0b10b5beb328389c64395baed41635a Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 19:58:35 +0300 Subject: [PATCH 04/13] fix: clear files as well as folders in proxy --- npm/ng-packs/packages/schematics/src/utils/source.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/source.ts b/npm/ng-packs/packages/schematics/src/utils/source.ts index b495e75c20..d555e2ec1f 100644 --- a/npm/ng-packs/packages/schematics/src/utils/source.ts +++ b/npm/ng-packs/packages/schematics/src/utils/source.ts @@ -106,15 +106,18 @@ export function createProxyConfigReader(targetPath: string) { export function createProxyClearer(targetPath: string) { targetPath += PROXY_PATH; + const proxyIndexPath = `${targetPath}/index.ts`; return (tree: Tree) => { try { tree.getDir(targetPath).subdirs.forEach(dirName => { - if (!['enums', 'models', 'services'].includes(dirName)) return; - - tree.delete(`${targetPath}/${dirName}`); + const dirPath = `${targetPath}/${dirName}`; + tree.getDir(dirPath).visit(filePath => tree.delete(filePath)); + tree.delete(dirPath); }); + if (tree.exists(proxyIndexPath)) tree.delete(proxyIndexPath); + return tree; } catch (_) { throw new SchematicsException(interpolate(Exception.DirRemoveFailed, targetPath)); From 880bcc73922ec82217417930f203c0c15028ae3b Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 19:59:48 +0300 Subject: [PATCH 05/13] fix: name model files as model.ts instead of index.ts --- .../__namespace@dir__/{index.ts.template => model.ts.template} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/{index.ts.template => model.ts.template} (100%) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/index.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/model.ts.template similarity index 100% rename from npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/index.ts.template rename to npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/model.ts.template From 19a676a56938b4a357d396664a80164c52308f17 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 20:00:15 +0300 Subject: [PATCH 06/13] feat: generate indexes for generated proxies --- .../schematics/src/commands/proxy-add/index.ts | 4 ++++ .../schematics/src/commands/proxy-refresh/index.ts | 10 +++++++++- .../schematics/src/commands/proxy-remove/index.ts | 10 +++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts index a0ddba2276..3177bedeaa 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts @@ -8,6 +8,7 @@ import { createProxyClearer, createProxyConfigReader, createProxyConfigSaver, + createProxyIndexGenerator, createProxyWarningSaver, mergeAndAllowDelete, removeDefaultPlaceholders, @@ -45,11 +46,14 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); + const generateIndex = createProxyIndexGenerator(targetPath); + return chain([ mergeAndAllowDelete(host, clearProxy), saveProxyConfig, saveProxyWarning, generateApis, + generateIndex, ]); }, ]); diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts index 4d3093edbb..1a0a5ea3be 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts @@ -7,6 +7,7 @@ import { createProxyClearer, createProxyConfigReader, createProxyConfigSaver, + createProxyIndexGenerator, mergeAndAllowDelete, removeDefaultPlaceholders, resolveProject, @@ -32,6 +33,13 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); - return chain([mergeAndAllowDelete(host, clearProxy), saveProxyConfig, generateApis]); + const generateIndex = createProxyIndexGenerator(targetPath); + + return chain([ + mergeAndAllowDelete(host, clearProxy), + saveProxyConfig, + generateApis, + generateIndex, + ]); }; } diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts index 6b6852a383..59004bff11 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts @@ -8,6 +8,7 @@ import { createProxyClearer, createProxyConfigReader, createProxyConfigSaver, + createProxyIndexGenerator, mergeAndAllowDelete, removeDefaultPlaceholders, resolveProject, @@ -38,6 +39,13 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); - return chain([mergeAndAllowDelete(host, clearProxy), saveProxyConfig, generateApis]); + const generateIndex = createProxyIndexGenerator(targetPath); + + return chain([ + mergeAndAllowDelete(host, clearProxy), + saveProxyConfig, + generateApis, + generateIndex, + ]); }; } From ebaba63a88937702084090e713330b170087c17b Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 21:56:11 +0300 Subject: [PATCH 07/13] refactor: use namespace as blueprint for folder structure --- .../__name@kebab__.enum.ts.template} | 0 .../models.ts.template} | 0 .../__name@kebab__.service.ts.template | 0 .../packages/schematics/src/utils/barrel.ts | 17 ++++++---- .../packages/schematics/src/utils/enum.ts | 2 +- .../packages/schematics/src/utils/path.ts | 32 +++++++++++++++---- 6 files changed, 37 insertions(+), 14 deletions(-) rename npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/{enums/__namespace@dir__/__name@kebab__.ts.template => __namespace@dir__/__name@kebab__.enum.ts.template} (100%) rename npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/{models/__namespace@dir__/model.ts.template => __namespace@dir__/models.ts.template} (100%) rename npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/{services => }/__namespace@dir__/__name@kebab__.service.ts.template (100%) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/enums/__namespace@dir__/__name@kebab__.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/__namespace@dir__/__name@kebab__.enum.ts.template similarity index 100% rename from npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/enums/__namespace@dir__/__name@kebab__.ts.template rename to npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/__namespace@dir__/__name@kebab__.enum.ts.template diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/model.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/__namespace@dir__/models.ts.template similarity index 100% rename from npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/model.ts.template rename to npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/__namespace@dir__/models.ts.template diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/services/__namespace@dir__/__name@kebab__.service.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/__namespace@dir__/__name@kebab__.service.ts.template similarity index 100% rename from npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/services/__namespace@dir__/__name@kebab__.service.ts.template rename to npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/__namespace@dir__/__name@kebab__.service.ts.template diff --git a/npm/ng-packs/packages/schematics/src/utils/barrel.ts b/npm/ng-packs/packages/schematics/src/utils/barrel.ts index 299876f875..b21acc77fa 100644 --- a/npm/ng-packs/packages/schematics/src/utils/barrel.ts +++ b/npm/ng-packs/packages/schematics/src/utils/barrel.ts @@ -18,13 +18,12 @@ export function generateBarrelFromPath(tree: Tree, indexPath: string) { const saveFile = createFileSaver(tree); const dir = tree.getDir(indexPath); - let _exports = ''; + const _exports: string[] = []; dir.subfiles.forEach(fragment => { if (!fragment.endsWith('.ts')) return; - _exports += `export * from './${fragment.replace(/\.ts$/, '')}'; -`; + _exports.push(`export * from './${fragment.replace(/\.ts$/, '')}';`); }); dir.subdirs.forEach(fragment => { @@ -34,10 +33,16 @@ export function generateBarrelFromPath(tree: Tree, indexPath: string) { subDir.visit(() => (hasFiles = true)); if (!hasFiles) return; - _exports += `export * as ${strings.classify(fragment)} from './${fragment}'; -`; + _exports.push(`export * as ${strings.classify(fragment)} from './${fragment}';`); generateBarrelFromPath(tree, subDirPath); }); - if (_exports) saveFile(indexPath + '/index.ts', _exports); + _exports.sort(); + + if (_exports.length) + saveFile( + indexPath + '/index.ts', + _exports.join(` +`), + ); } diff --git a/npm/ng-packs/packages/schematics/src/utils/enum.ts b/npm/ng-packs/packages/schematics/src/utils/enum.ts index 818a1a089b..c01b086ec5 100644 --- a/npm/ng-packs/packages/schematics/src/utils/enum.ts +++ b/npm/ng-packs/packages/schematics/src/utils/enum.ts @@ -13,7 +13,7 @@ export interface EnumGeneratorParams { } export function isEnumImport(path: string) { - return path.includes('/enums/'); + return path.endsWith('.enum'); } export function getEnumNamesFromImports(serviceImports: Record) { diff --git a/npm/ng-packs/packages/schematics/src/utils/path.ts b/npm/ng-packs/packages/schematics/src/utils/path.ts index cb1d499755..7ae89d19bc 100644 --- a/npm/ng-packs/packages/schematics/src/utils/path.ts +++ b/npm/ng-packs/packages/schematics/src/utils/path.ts @@ -1,15 +1,33 @@ -import { dir, kebab } from './text'; +import { strings } from '@angular-devkit/core'; +import { kebab } from './text'; export function relativePathToEnum(namespace: string, enumNamespace: string, enumName: string) { - const repeats = namespace ? namespace.split('.').length : 0; - const path = '..' + '/..'.repeat(repeats) + '/enums/' + dir(enumNamespace); - return removeDoubleSlash(path + '/' + kebab(enumName)); + const path = calculateRelativePath(namespace, enumNamespace); + return removeDoubleSlash(path + `/${kebab(enumName)}.enum`); } export function relativePathToModel(namespace: string, modelNamespace: string) { - const repeats = namespace ? namespace.split('.').length : 0; - const path = '..' + '/..'.repeat(repeats) + '/models/' + dir(modelNamespace); - return removeTrailingSlash(path); + const path = calculateRelativePath(namespace, modelNamespace); + return removeTrailingSlash(path + '/models'); +} + +function calculateRelativePath(ns1: string, ns2: string) { + if (ns1 === ns2) return '.'; + + const parts1 = ns1 ? ns1.split('.') : []; + const parts2 = ns2 ? ns2.split('.') : []; + + while (parts1.length && parts2.length) { + if (parts1[0] !== parts2[0]) break; + + parts1.shift(); + parts2.shift(); + } + + const up = '../'.repeat(parts1.length) || '.'; + const down = parts2.reduce((acc, p) => acc + '/' + strings.dasherize(p), ''); + + return removeTrailingSlash(removeDoubleSlash(up + down)); } function removeDoubleSlash(path: string) { From 49ccc4dbde3c47c22a66df749f14ab02aeaf5f95 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 21:56:44 +0300 Subject: [PATCH 08/13] docs: update proxy folder warning --- .../packages/schematics/src/constants/proxy.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/constants/proxy.ts b/npm/ng-packs/packages/schematics/src/constants/proxy.ts index fbf7f127bd..847b373f75 100644 --- a/npm/ng-packs/packages/schematics/src/constants/proxy.ts +++ b/npm/ng-packs/packages/schematics/src/constants/proxy.ts @@ -5,14 +5,14 @@ export const PROXY_WARNING_PATH = `${PROXY_PATH}/README.md`; export const PROXY_WARNING = `# Proxy Generation Output This directory includes the output of the latest proxy generation. -The \`services\`, \`models\`, and \`enums\` folders will be overwritten when proxy generation is run again. -Therefore, please do not place your own content in those folders. +The files and folders in it will be overwritten when proxy generation is run again. +Therefore, please do not place your own content in this folder. In addition, \`generate-proxy.json\` works like a lock file. It includes information used by the proxy generator, so please do not delete or modify it. -Finally, the name of this folder should not be changed for two reasons: -- Proxy generator will keep creating this folder and you will have multiple copies of the same content. -- ABP Suite generates imports from this folder and uses the path \`/proxy\` when doing so. +Finally, the name of the files and folders should not be changed for two reasons: +- Proxy generator will keep creating them at those paths and you will have multiple copies of the same content. +- ABP Suite generates files which include imports from this folder. `; From fc2f1ecfc6edcc2b8b8837d4f9e5ad8b435253f9 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Tue, 1 Sep 2020 09:31:03 +0300 Subject: [PATCH 09/13] refactor: remove unnecessary fn calls in path utils --- npm/ng-packs/packages/schematics/src/utils/path.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/path.ts b/npm/ng-packs/packages/schematics/src/utils/path.ts index 7ae89d19bc..c28951c8db 100644 --- a/npm/ng-packs/packages/schematics/src/utils/path.ts +++ b/npm/ng-packs/packages/schematics/src/utils/path.ts @@ -3,12 +3,12 @@ import { kebab } from './text'; export function relativePathToEnum(namespace: string, enumNamespace: string, enumName: string) { const path = calculateRelativePath(namespace, enumNamespace); - return removeDoubleSlash(path + `/${kebab(enumName)}.enum`); + return path + `/${kebab(enumName)}.enum`; } export function relativePathToModel(namespace: string, modelNamespace: string) { const path = calculateRelativePath(namespace, modelNamespace); - return removeTrailingSlash(path + '/models'); + return path + '/models'; } function calculateRelativePath(ns1: string, ns2: string) { From 4d0936edcf1c753dd57305c4ea7995d934f8d9d9 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 1 Sep 2020 09:34:58 +0300 Subject: [PATCH 10/13] chore: add proxy folder to tsconfig paths --- npm/ng-packs/tsconfig.base.json | 6 +++++- templates/app/angular/tsconfig.base.json | 8 +++++++- templates/module/angular/tsconfig.base.json | 8 ++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/tsconfig.base.json b/npm/ng-packs/tsconfig.base.json index d73d137f99..f76d32a75e 100644 --- a/npm/ng-packs/tsconfig.base.json +++ b/npm/ng-packs/tsconfig.base.json @@ -29,7 +29,11 @@ "@abp/ng.setting-management": ["packages/setting-management/src/public-api.ts"], "@abp/ng.setting-management/config": ["packages/setting-management/config/src/public-api.ts"], "@abp/ng.permission-management": ["packages/permission-management/src/public-api.ts"], - "@abp/ng.feature-management": ["packages/feature-management/src/public-api.ts"] + "@abp/ng.feature-management": ["packages/feature-management/src/public-api.ts"], + "@proxy": ["apps/dev-app/src/app/proxy/index.ts"], + "@proxy/enums": ["apps/dev-app/src/app/proxy/enums/index.ts"], + "@proxy/models": ["apps/dev-app/src/app/proxy/models/index.ts"], + "@proxy/services": ["apps/dev-app/src/app/proxy/services/index.ts"] } }, "angularCompilerOptions": { diff --git a/templates/app/angular/tsconfig.base.json b/templates/app/angular/tsconfig.base.json index 2f67131c75..0df99de0dd 100644 --- a/templates/app/angular/tsconfig.base.json +++ b/templates/app/angular/tsconfig.base.json @@ -12,7 +12,13 @@ "importHelpers": true, "target": "es2015", "typeRoots": ["node_modules/@types"], - "lib": ["es2018", "dom"] + "lib": ["es2018", "dom"], + "paths": { + "@proxy": ["src/app/proxy/index.ts"], + "@proxy/enums": ["src/app/proxy/enums/index.ts"], + "@proxy/models": ["src/app/proxy/models/index.ts"], + "@proxy/services": ["src/app/proxy/services/index.ts"] + } }, "angularCompilerOptions": { "fullTemplateTypeCheck": true, diff --git a/templates/module/angular/tsconfig.base.json b/templates/module/angular/tsconfig.base.json index e8a830851f..9ea1a5cf44 100644 --- a/templates/module/angular/tsconfig.base.json +++ b/templates/module/angular/tsconfig.base.json @@ -7,6 +7,14 @@ ], "@my-company-name/my-project-name/config": [ "projects/my-project-name/config/src/public-api.ts" + ], + "@proxy": ["projects/my-project-name/src/lib/proxy/index.ts"], + "@proxy/enums": ["projects/my-project-name/src/lib/proxy/enums/index.ts"], + "@proxy/models": [ + "projects/my-project-name/src/lib/proxy/models/index.ts" + ], + "@proxy/services": [ + "projects/my-project-name/src/lib/proxy/services/index.ts" ] } } From 63a0851cf0246ee302e20c0f8e649c304dccfc9b Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 1 Sep 2020 10:26:16 +0300 Subject: [PATCH 11/13] fix: change @proxy paths --- npm/ng-packs/tsconfig.base.json | 4 +--- templates/app/angular/tsconfig.base.json | 4 +--- templates/module/angular/tsconfig.base.json | 8 +------- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/npm/ng-packs/tsconfig.base.json b/npm/ng-packs/tsconfig.base.json index f76d32a75e..87b45cb3a9 100644 --- a/npm/ng-packs/tsconfig.base.json +++ b/npm/ng-packs/tsconfig.base.json @@ -31,9 +31,7 @@ "@abp/ng.permission-management": ["packages/permission-management/src/public-api.ts"], "@abp/ng.feature-management": ["packages/feature-management/src/public-api.ts"], "@proxy": ["apps/dev-app/src/app/proxy/index.ts"], - "@proxy/enums": ["apps/dev-app/src/app/proxy/enums/index.ts"], - "@proxy/models": ["apps/dev-app/src/app/proxy/models/index.ts"], - "@proxy/services": ["apps/dev-app/src/app/proxy/services/index.ts"] + "@proxy/*": ["apps/dev-app/src/app/proxy/*"] } }, "angularCompilerOptions": { diff --git a/templates/app/angular/tsconfig.base.json b/templates/app/angular/tsconfig.base.json index 0df99de0dd..7a5bf82308 100644 --- a/templates/app/angular/tsconfig.base.json +++ b/templates/app/angular/tsconfig.base.json @@ -15,9 +15,7 @@ "lib": ["es2018", "dom"], "paths": { "@proxy": ["src/app/proxy/index.ts"], - "@proxy/enums": ["src/app/proxy/enums/index.ts"], - "@proxy/models": ["src/app/proxy/models/index.ts"], - "@proxy/services": ["src/app/proxy/services/index.ts"] + "@proxy/*": ["src/app/proxy/*"] } }, "angularCompilerOptions": { diff --git a/templates/module/angular/tsconfig.base.json b/templates/module/angular/tsconfig.base.json index 9ea1a5cf44..5879bfbc59 100644 --- a/templates/module/angular/tsconfig.base.json +++ b/templates/module/angular/tsconfig.base.json @@ -9,13 +9,7 @@ "projects/my-project-name/config/src/public-api.ts" ], "@proxy": ["projects/my-project-name/src/lib/proxy/index.ts"], - "@proxy/enums": ["projects/my-project-name/src/lib/proxy/enums/index.ts"], - "@proxy/models": [ - "projects/my-project-name/src/lib/proxy/models/index.ts" - ], - "@proxy/services": [ - "projects/my-project-name/src/lib/proxy/services/index.ts" - ] + "@proxy/*": ["projects/my-project-name/src/lib/proxy/*"] } } } From c8f52d42958bf3e9c67beef383d8c24b325b5724 Mon Sep 17 00:00:00 2001 From: Erol Arkat Date: Tue, 1 Sep 2020 10:38:49 +0300 Subject: [PATCH 12/13] version update --- common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.props b/common.props index f1a0cf5890..3e4d964cb7 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 3.1.0-rc.3 + 3.1.0-rc.4 $(NoWarn);CS1591 https://abp.io/assets/abp_nupkg.png https://abp.io/ From 625cd089a1ffc9471584af068080ef2cea53f0f8 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 1 Sep 2020 12:25:50 +0300 Subject: [PATCH 13/13] fix: change configuration of setupAutomaticSilentRefresh method --- .../core/src/lib/strategies/auth-flow.strategy.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts b/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts index 19fa4f509c..eb8dd5b3a2 100644 --- a/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts +++ b/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts @@ -25,7 +25,7 @@ export abstract class AuthFlowStrategy { constructor(protected injector: Injector) { this.store = injector.get(Store); this.oAuthService = injector.get(OAuthService); - this.oAuthConfig = injector.get(Store).selectSnapshot(ConfigState.getDeep('environment.oAuthConfig')); + this.oAuthConfig = this.store.selectSnapshot(ConfigState.getDeep('environment.oAuthConfig')); } async init(): Promise { @@ -41,7 +41,14 @@ export class AuthCodeFlowStrategy extends AuthFlowStrategy { return super .init() .then(() => this.oAuthService.tryLogin()) - .then(() => this.oAuthService.setupAutomaticSilentRefresh()); + .then(() => { + if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) { + return Promise.resolve(); + } + + return this.oAuthService.refreshToken() as Promise; + }) + .then(() => this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token')); } login() { @@ -88,7 +95,7 @@ export class AuthPasswordFlowStrategy extends AuthFlowStrategy { ) .pipe( tap(() => this.oAuthService.logOut()), - switchMap(() => this.store.dispatch(new GetAppConfiguration())), + switchMap(() => this.store.dispatch(new GetAppConfiguration())), ); }