Browse Source

added docker support and SaasService

pull/1/head
Galip Tolga Erdem 5 years ago
parent
commit
516306b5a4
  1. 15
      common.props
  2. 1
      etc/dev-cert/create-certificate.ps1
  3. 23
      etc/dev-cert/localhost.conf
  4. 18
      etc/docker/docker-compose.infrastructure.override.yml
  5. 20
      etc/docker/docker-compose.infrastructure.yml
  6. 1
      etc/docker/down.ps1
  7. 1
      etc/docker/up.ps1
  8. 5
      services/saas/.prettierrc
  9. 91
      services/saas/EShopOnAbp.SaasService.sln
  10. 16
      services/saas/angular/.editorconfig
  11. 46
      services/saas/angular/.gitignore
  12. 5
      services/saas/angular/.prettierrc
  13. 15
      services/saas/angular/.vscode/extensions.json
  14. 27
      services/saas/angular/README.md
  15. 204
      services/saas/angular/angular.json
  16. 62
      services/saas/angular/package.json
  17. 12
      services/saas/angular/projects/dev-app/.browserslistrc
  18. 32
      services/saas/angular/projects/dev-app/e2e/protractor.conf.js
  19. 23
      services/saas/angular/projects/dev-app/e2e/src/app.e2e-spec.ts
  20. 11
      services/saas/angular/projects/dev-app/e2e/src/app.po.ts
  21. 13
      services/saas/angular/projects/dev-app/e2e/tsconfig.json
  22. BIN
      services/saas/angular/projects/dev-app/favicon.ico
  23. 32
      services/saas/angular/projects/dev-app/karma.conf.js
  24. 39
      services/saas/angular/projects/dev-app/src/app/app-routing.module.ts
  25. 10
      services/saas/angular/projects/dev-app/src/app/app.component.ts
  26. 43
      services/saas/angular/projects/dev-app/src/app/app.module.ts
  27. 16
      services/saas/angular/projects/dev-app/src/app/home/home-routing.module.ts
  28. 0
      services/saas/angular/projects/dev-app/src/app/home/home.component.html
  29. 7
      services/saas/angular/projects/dev-app/src/app/home/home.component.ts
  30. 10
      services/saas/angular/projects/dev-app/src/app/home/home.module.ts
  31. 25
      services/saas/angular/projects/dev-app/src/app/route.provider.ts
  32. 26
      services/saas/angular/projects/dev-app/src/app/shared/shared.module.ts
  33. 0
      services/saas/angular/projects/dev-app/src/assets/.gitkeep
  34. 29
      services/saas/angular/projects/dev-app/src/environments/environment.prod.ts
  35. 29
      services/saas/angular/projects/dev-app/src/environments/environment.ts
  36. 13
      services/saas/angular/projects/dev-app/src/index.html
  37. 12
      services/saas/angular/projects/dev-app/src/main.ts
  38. 66
      services/saas/angular/projects/dev-app/src/polyfills.ts
  39. 1
      services/saas/angular/projects/dev-app/src/styles.scss
  40. 25
      services/saas/angular/projects/dev-app/src/test.ts
  41. 14
      services/saas/angular/projects/dev-app/tsconfig.app.json
  42. 9
      services/saas/angular/projects/dev-app/tsconfig.prod.json
  43. 18
      services/saas/angular/projects/dev-app/tsconfig.spec.json
  44. 17
      services/saas/angular/projects/dev-app/tslint.json
  45. 24
      services/saas/angular/projects/saas-service/README.md
  46. 7
      services/saas/angular/projects/saas-service/config/ng-package.json
  47. 1
      services/saas/angular/projects/saas-service/config/src/enums/index.ts
  48. 3
      services/saas/angular/projects/saas-service/config/src/enums/route-names.ts
  49. 1
      services/saas/angular/projects/saas-service/config/src/providers/index.ts
  50. 26
      services/saas/angular/projects/saas-service/config/src/providers/route.provider.ts
  51. 3
      services/saas/angular/projects/saas-service/config/src/public-api.ts
  52. 12
      services/saas/angular/projects/saas-service/config/src/saas-service-config.module.ts
  53. 32
      services/saas/angular/projects/saas-service/karma.conf.js
  54. 7
      services/saas/angular/projects/saas-service/ng-package.json
  55. 7
      services/saas/angular/projects/saas-service/ngcc.config.js
  56. 13
      services/saas/angular/projects/saas-service/package.json
  57. 15
      services/saas/angular/projects/saas-service/src/lib/components/saas-service.component.ts
  58. 24
      services/saas/angular/projects/saas-service/src/lib/saas-service-routing.module.ts
  59. 25
      services/saas/angular/projects/saas-service/src/lib/saas-service.component.spec.ts
  60. 23
      services/saas/angular/projects/saas-service/src/lib/saas-service.module.ts
  61. 16
      services/saas/angular/projects/saas-service/src/lib/saas-service.service.spec.ts
  62. 18
      services/saas/angular/projects/saas-service/src/lib/services/saas-service.service.ts
  63. 7
      services/saas/angular/projects/saas-service/src/public-api.ts
  64. 26
      services/saas/angular/projects/saas-service/src/test.ts
  65. 18
      services/saas/angular/projects/saas-service/tsconfig.lib.json
  66. 9
      services/saas/angular/projects/saas-service/tsconfig.lib.prod.json
  67. 17
      services/saas/angular/projects/saas-service/tsconfig.spec.json
  68. 17
      services/saas/angular/projects/saas-service/tslint.json
  69. 15
      services/saas/angular/tsconfig.json
  70. 20
      services/saas/angular/tsconfig.prod.json
  71. 138
      services/saas/angular/tslint.json
  72. 16
      services/saas/common.props
  73. 20
      services/saas/database/Dockerfile
  74. 12
      services/saas/database/entrypoint.sh
  75. 13
      services/saas/docker-compose.migrations.yml
  76. 29
      services/saas/docker-compose.override.yml
  77. 25
      services/saas/docker-compose.yml
  78. 32
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/EShopOnAbp.SaasService.Blazor.Host.csproj
  79. 3
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/FodyWeavers.xml
  80. 30
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/FodyWeavers.xsd
  81. 60
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/Pages/Index.razor
  82. 24
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/Program.cs
  83. 29
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/Properties/launchSettings.json
  84. 12
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/SaasServiceBlazorHostAutoMapperProfile.cs
  85. 17
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/SaasServiceBlazorHostBundleContributor.cs
  86. 97
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/SaasServiceBlazorHostModule.cs
  87. 9
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/SaasServiceHostBrandingProvider.cs
  88. 31
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/SaasServiceHostMenuContributor.cs
  89. 11
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/_Imports.razor
  90. 3
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/appsettings.Development.json
  91. 12
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/appsettings.json
  92. BIN
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/favicon.ico
  93. 17
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/global.css
  94. 53
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/global.js
  95. 29
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/index.html
  96. 48
      services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/main.css
  97. 10
      services/saas/host/EShopOnAbp.SaasService.Host.Shared/EShopOnAbp.SaasService.Host.Shared.csproj
  98. 3
      services/saas/host/EShopOnAbp.SaasService.Host.Shared/FodyWeavers.xml
  99. 30
      services/saas/host/EShopOnAbp.SaasService.Host.Shared/FodyWeavers.xsd
  100. 10
      services/saas/host/EShopOnAbp.SaasService.Host.Shared/MultiTenancy/MultiTenancyConsts.cs

15
common.props

@ -0,0 +1,15 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>1.0.0</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<AbpProjectType>ms</AbpProjectType>
</PropertyGroup>
<Target Name="NoWarnOnRazorViewImportedTypeConflicts" BeforeTargets="RazorCoreCompile">
<PropertyGroup>
<NoWarn>$(NoWarn);0436</NoWarn>
</PropertyGroup>
</Target>
</Project>

1
etc/dev-cert/create-certificate.ps1

@ -0,0 +1 @@
dotnet dev-certs https -v -ep localhost.pfx -p e8202f07-66e5-4619-be07-72ba76fde97f

23
etc/dev-cert/localhost.conf

@ -0,0 +1,23 @@
[req]
default_bits = 2048
default_keyfile = localhost.key
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca
[req_distinguished_name]
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = localhost
commonName_max = 64
[req_ext]
subjectAltName = @alt_names
[v3_ca]
subjectAltName = @alt_names
basicConstraints = critical, CA:false
keyUsage = keyCertSign, cRLSign, digitalSignature,keyEncipherment
[alt_names]
DNS.1 = localhost
DNS.2 = 127.0.0.1

18
etc/docker/docker-compose.infrastructure.override.yml

@ -0,0 +1,18 @@
version: '3.7'
services:
rabbitmq:
ports:
- "15672:15672"
- "5672:5672"
redis:
ports:
- "6379:6379"
sql-server-db:
ports:
- "1434:1433"
environment:
SA_PASSWORD: "myPassw0rd"
ACCEPT_EULA: "Y"

20
etc/docker/docker-compose.infrastructure.yml

@ -0,0 +1,20 @@
version: '3.7'
services:
rabbitmq:
container_name: rabbitmq
image: rabbitmq:management-alpine
redis:
container_name: redis
image: redis:alpine
sql-server-db:
container_name: sql-server-db
image: mcr.microsoft.com/mssql/server
volumes:
- sqldata:/var/opt/mssql
volumes:
sqldata:

1
etc/docker/down.ps1

@ -0,0 +1 @@
docker-compose -f docker-compose.infrastructure.yml -f docker-compose.infrastructure.override.yml down

1
etc/docker/up.ps1

@ -0,0 +1 @@
docker-compose -f docker-compose.infrastructure.yml -f docker-compose.infrastructure.override.yml up -d

5
services/saas/.prettierrc

@ -1,5 +0,0 @@
{
"singleQuote": true,
"useTabs": false,
"tabWidth": 4
}

91
services/saas/EShopOnAbp.SaasService.sln

@ -15,12 +15,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{649A3FFA-182
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{E400416D-2895-4512-9D17-90681EEC7E0A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.EntityFrameworkCore", "src\EShopOnAbp.SaasService.EntityFrameworkCore\EShopOnAbp.SaasService.EntityFrameworkCore.csproj", "{0CE86223-D31D-4315-A1F5-87BA3EE1B844}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.MongoDB", "src\EShopOnAbp.SaasService.MongoDB\EShopOnAbp.SaasService.MongoDB.csproj", "{F1C58097-4C08-4D88-8976-6B3389391481}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.HttpApi", "src\EShopOnAbp.SaasService.HttpApi\EShopOnAbp.SaasService.HttpApi.csproj", "{077AA5F8-8B61-420C-A6B5-0150A66FDB34}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.HttpApi.Client", "src\EShopOnAbp.SaasService.HttpApi.Client\EShopOnAbp.SaasService.HttpApi.Client.csproj", "{36E2735F-CEAB-44C8-A6D1-2CDAFF399751}"
@ -29,33 +25,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.Test
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.EntityFrameworkCore.Tests", "test\EShopOnAbp.SaasService.EntityFrameworkCore.Tests\EShopOnAbp.SaasService.EntityFrameworkCore.Tests.csproj", "{527F645C-C1FC-406E-8479-81386C8ECF13}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.MongoDB.Tests", "test\EShopOnAbp.SaasService.MongoDB.Tests\EShopOnAbp.SaasService.MongoDB.Tests.csproj", "{D0AD9179-125C-40B2-A8EE-CD4C1EE24BB6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.Domain.Tests", "test\EShopOnAbp.SaasService.Domain.Tests\EShopOnAbp.SaasService.Domain.Tests.csproj", "{E60895E5-79C4-447D-88B7-85CB5BA336A4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.Application.Tests", "test\EShopOnAbp.SaasService.Application.Tests\EShopOnAbp.SaasService.Application.Tests.csproj", "{90CB5DC4-C040-45C7-8900-9688B26405BC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.HttpApi.Host", "host\EShopOnAbp.SaasService.HttpApi.Host\EShopOnAbp.SaasService.HttpApi.Host.csproj", "{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.Web", "src\EShopOnAbp.SaasService.Web\EShopOnAbp.SaasService.Web.csproj", "{3B7B6317-1B85-4164-8E11-75574F80AE17}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.HttpApi.Client.ConsoleTestApp", "test\EShopOnAbp.SaasService.HttpApi.Client.ConsoleTestApp\EShopOnAbp.SaasService.HttpApi.Client.ConsoleTestApp.csproj", "{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.Web.Host", "host\EShopOnAbp.SaasService.Web.Host\EShopOnAbp.SaasService.Web.Host.csproj", "{73513786-B6C6-4A21-89C5-0FBDD0A46107}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.IdentityServer", "host\EShopOnAbp.SaasService.IdentityServer\EShopOnAbp.SaasService.IdentityServer.csproj", "{690203F4-3CD5-4569-88D9-EE831EEA5F5F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.Host.Shared", "host\EShopOnAbp.SaasService.Host.Shared\EShopOnAbp.SaasService.Host.Shared.csproj", "{F6AC8D4A-EDD7-4514-8E8A-5BCB019864DB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EShopOnAbp.SaasService.Web.Unified", "host\EShopOnAbp.SaasService.Web.Unified\EShopOnAbp.SaasService.Web.Unified.csproj", "{3D872C41-E226-45C8-89C1-9D3DBD7C73F2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EShopOnAbp.SaasService.Blazor", "src\EShopOnAbp.SaasService.Blazor\EShopOnAbp.SaasService.Blazor.csproj", "{827FCC18-A22B-4175-82CD-1233F6DEE8FB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EShopOnAbp.SaasService.Blazor.Host", "host\EShopOnAbp.SaasService.Blazor.Host\EShopOnAbp.SaasService.Blazor.Host.csproj", "{D7E0F672-F5E2-4338-AFF4-4E5091C55A62}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EShopOnAbp.SaasService.Blazor.Server", "src\EShopOnAbp.SaasService.Blazor.Server\EShopOnAbp.SaasService.Blazor.Server.csproj", "{299BE52E-823F-408E-9C6D-7E2F81BA34FF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EShopOnAbp.SaasService.Blazor.WebAssembly", "src\EShopOnAbp.SaasService.Blazor.WebAssembly\EShopOnAbp.SaasService.Blazor.WebAssembly.csproj", "{F0EE5760-262D-456A-AA7C-E84F484A05F6}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EShopOnAbp.SaasService.HttpApi.Host", "src\EShopOnAbp.SaasService.HttpApi.Host\EShopOnAbp.SaasService.HttpApi.Host.csproj", "{D651FE09-CF19-472F-819C-47FECD4A697E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -83,10 +59,6 @@ Global
{0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.Build.0 = Release|Any CPU
{F1C58097-4C08-4D88-8976-6B3389391481}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F1C58097-4C08-4D88-8976-6B3389391481}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F1C58097-4C08-4D88-8976-6B3389391481}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F1C58097-4C08-4D88-8976-6B3389391481}.Release|Any CPU.Build.0 = Release|Any CPU
{077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.Build.0 = Debug|Any CPU
{077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -103,10 +75,6 @@ Global
{527F645C-C1FC-406E-8479-81386C8ECF13}.Debug|Any CPU.Build.0 = Debug|Any CPU
{527F645C-C1FC-406E-8479-81386C8ECF13}.Release|Any CPU.ActiveCfg = Release|Any CPU
{527F645C-C1FC-406E-8479-81386C8ECF13}.Release|Any CPU.Build.0 = Release|Any CPU
{D0AD9179-125C-40B2-A8EE-CD4C1EE24BB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D0AD9179-125C-40B2-A8EE-CD4C1EE24BB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D0AD9179-125C-40B2-A8EE-CD4C1EE24BB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D0AD9179-125C-40B2-A8EE-CD4C1EE24BB6}.Release|Any CPU.Build.0 = Release|Any CPU
{E60895E5-79C4-447D-88B7-85CB5BA336A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E60895E5-79C4-447D-88B7-85CB5BA336A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E60895E5-79C4-447D-88B7-85CB5BA336A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -115,50 +83,14 @@ Global
{90CB5DC4-C040-45C7-8900-9688B26405BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{90CB5DC4-C040-45C7-8900-9688B26405BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90CB5DC4-C040-45C7-8900-9688B26405BC}.Release|Any CPU.Build.0 = Release|Any CPU
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Release|Any CPU.Build.0 = Release|Any CPU
{3B7B6317-1B85-4164-8E11-75574F80AE17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B7B6317-1B85-4164-8E11-75574F80AE17}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B7B6317-1B85-4164-8E11-75574F80AE17}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B7B6317-1B85-4164-8E11-75574F80AE17}.Release|Any CPU.Build.0 = Release|Any CPU
{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Release|Any CPU.Build.0 = Release|Any CPU
{73513786-B6C6-4A21-89C5-0FBDD0A46107}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{73513786-B6C6-4A21-89C5-0FBDD0A46107}.Debug|Any CPU.Build.0 = Debug|Any CPU
{73513786-B6C6-4A21-89C5-0FBDD0A46107}.Release|Any CPU.ActiveCfg = Release|Any CPU
{73513786-B6C6-4A21-89C5-0FBDD0A46107}.Release|Any CPU.Build.0 = Release|Any CPU
{690203F4-3CD5-4569-88D9-EE831EEA5F5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{690203F4-3CD5-4569-88D9-EE831EEA5F5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{690203F4-3CD5-4569-88D9-EE831EEA5F5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{690203F4-3CD5-4569-88D9-EE831EEA5F5F}.Release|Any CPU.Build.0 = Release|Any CPU
{F6AC8D4A-EDD7-4514-8E8A-5BCB019864DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F6AC8D4A-EDD7-4514-8E8A-5BCB019864DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F6AC8D4A-EDD7-4514-8E8A-5BCB019864DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F6AC8D4A-EDD7-4514-8E8A-5BCB019864DB}.Release|Any CPU.Build.0 = Release|Any CPU
{3D872C41-E226-45C8-89C1-9D3DBD7C73F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3D872C41-E226-45C8-89C1-9D3DBD7C73F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3D872C41-E226-45C8-89C1-9D3DBD7C73F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3D872C41-E226-45C8-89C1-9D3DBD7C73F2}.Release|Any CPU.Build.0 = Release|Any CPU
{827FCC18-A22B-4175-82CD-1233F6DEE8FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{827FCC18-A22B-4175-82CD-1233F6DEE8FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{827FCC18-A22B-4175-82CD-1233F6DEE8FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{827FCC18-A22B-4175-82CD-1233F6DEE8FB}.Release|Any CPU.Build.0 = Release|Any CPU
{D7E0F672-F5E2-4338-AFF4-4E5091C55A62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D7E0F672-F5E2-4338-AFF4-4E5091C55A62}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D7E0F672-F5E2-4338-AFF4-4E5091C55A62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D7E0F672-F5E2-4338-AFF4-4E5091C55A62}.Release|Any CPU.Build.0 = Release|Any CPU
{299BE52E-823F-408E-9C6D-7E2F81BA34FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{299BE52E-823F-408E-9C6D-7E2F81BA34FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{299BE52E-823F-408E-9C6D-7E2F81BA34FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{299BE52E-823F-408E-9C6D-7E2F81BA34FF}.Release|Any CPU.Build.0 = Release|Any CPU
{F0EE5760-262D-456A-AA7C-E84F484A05F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F0EE5760-262D-456A-AA7C-E84F484A05F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F0EE5760-262D-456A-AA7C-E84F484A05F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F0EE5760-262D-456A-AA7C-E84F484A05F6}.Release|Any CPU.Build.0 = Release|Any CPU
{D651FE09-CF19-472F-819C-47FECD4A697E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D651FE09-CF19-472F-819C-47FECD4A697E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D651FE09-CF19-472F-819C-47FECD4A697E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D651FE09-CF19-472F-819C-47FECD4A697E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -169,25 +101,14 @@ Global
{BD65D04F-08D5-40C1-8C24-77CA0BACB877} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{78040F9E-3501-4A40-82DF-00A597710F35} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{0CE86223-D31D-4315-A1F5-87BA3EE1B844} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{F1C58097-4C08-4D88-8976-6B3389391481} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{077AA5F8-8B61-420C-A6B5-0150A66FDB34} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{36E2735F-CEAB-44C8-A6D1-2CDAFF399751} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{C5BB573D-3030-4BCB-88B7-F6A85C32766C} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{527F645C-C1FC-406E-8479-81386C8ECF13} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{D0AD9179-125C-40B2-A8EE-CD4C1EE24BB6} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{E60895E5-79C4-447D-88B7-85CB5BA336A4} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{90CB5DC4-C040-45C7-8900-9688B26405BC} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{3B7B6317-1B85-4164-8E11-75574F80AE17} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{73513786-B6C6-4A21-89C5-0FBDD0A46107} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{690203F4-3CD5-4569-88D9-EE831EEA5F5F} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{F6AC8D4A-EDD7-4514-8E8A-5BCB019864DB} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{3D872C41-E226-45C8-89C1-9D3DBD7C73F2} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{827FCC18-A22B-4175-82CD-1233F6DEE8FB} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{D7E0F672-F5E2-4338-AFF4-4E5091C55A62} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{299BE52E-823F-408E-9C6D-7E2F81BA34FF} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{F0EE5760-262D-456A-AA7C-E84F484A05F6} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{D651FE09-CF19-472F-819C-47FECD4A697E} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6AAFA1C6-603E-13FA-45E5-7910AA9F661D}

16
services/saas/angular/.editorconfig

@ -1,16 +0,0 @@
# Editor configuration, see https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.ts]
quote_type = single
[*.md]
max_line_length = off
trim_trailing_whitespace = false

46
services/saas/angular/.gitignore

@ -1,46 +0,0 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.
# compiled output
/dist
/tmp
/out-tsc
# Only exists if Bazel was run
/bazel-out
# dependencies
/node_modules
# profiling files
chrome-profiler-events*.json
speed-measure-plugin*.json
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history/*
# misc
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
yarn-error.log
testem.log
/typings
# System Files
.DS_Store
Thumbs.db

5
services/saas/angular/.prettierrc

@ -1,5 +0,0 @@
{
"singleQuote": true,
"printWidth": 100,
"arrowParens": "avoid"
}

15
services/saas/angular/.vscode/extensions.json

@ -1,15 +0,0 @@
{
"recommendations": [
"angular.ng-template",
"esbenp.prettier-vscode",
"ms-vscode.vscode-typescript-tslint-plugin",
"visualstudioexptteam.vscodeintellicode",
"christian-kohler.path-intellisense",
"christian-kohler.npm-intellisense",
"Mikael.Angular-BeastCode",
"xabikos.JavaScriptSnippets",
"msjsdiag.debugger-for-chrome",
"donjayamanne.githistory",
"oderwat.indent-rainbow"
]
}

27
services/saas/angular/README.md

@ -1,27 +0,0 @@
# SaasService
This is a startup project based on the ABP framework. For more information, visit <a href="https://abp.io/" target="_blank">abp.io</a>
## Development server
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
## Code scaffolding
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
## Build
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
## Running unit tests
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Running end-to-end tests
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).

204
services/saas/angular/angular.json

@ -1,204 +0,0 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"saas-service": {
"projectType": "library",
"root": "projects/saas-service",
"sourceRoot": "projects/saas-service/src",
"prefix": "lib",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:ng-packagr",
"options": {
"tsConfig": "projects/saas-service/tsconfig.lib.json",
"project": "projects/saas-service/ng-package.json"
},
"configurations": {
"production": {
"tsConfig": "projects/saas-service/tsconfig.lib.prod.json"
}
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "projects/saas-service/src/test.ts",
"tsConfig": "projects/saas-service/tsconfig.spec.json",
"karmaConfig": "projects/saas-service/karma.conf.js"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"projects/saas-service/tsconfig.lib.json",
"projects/saas-service/tsconfig.spec.json"
],
"exclude": ["**/node_modules/**"]
}
}
}
},
"dev-app": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "projects/dev-app",
"sourceRoot": "projects/dev-app/src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/dev-app",
"index": "projects/dev-app/src/index.html",
"main": "projects/dev-app/src/main.ts",
"polyfills": "projects/dev-app/src/polyfills.ts",
"tsConfig": "projects/dev-app/tsconfig.app.json",
"aot": true,
"allowedCommonJsDependencies": ["chart.js", "js-sha256"],
"assets": ["projects/dev-app/src/favicon.ico", "projects/dev-app/src/assets"],
"styles": [
{
"input": "node_modules/@fortawesome/fontawesome-free/css/all.min.css",
"inject": true,
"bundleName": "fontawesome-all.min"
},
{
"input": "node_modules/@fortawesome/fontawesome-free/css/v4-shims.min.css",
"inject": true,
"bundleName": "fontawesome-v4-shims.min"
},
{
"input": "node_modules/@swimlane/ngx-datatable/index.css",
"inject": true,
"bundleName": "ngx-datatable-index"
},
{
"input": "node_modules/@swimlane/ngx-datatable/assets/icons.css",
"inject": true,
"bundleName": "ngx-datatable-icons"
},
{
"input": "node_modules/@swimlane/ngx-datatable/themes/material.css",
"inject": true,
"bundleName": "ngx-datatable-material"
},
{
"input": "node_modules/@abp/ng.theme.shared/styles/bootstrap-rtl.min.css",
"inject": false,
"bundleName": "bootstrap-rtl.min"
},
{
"input": "node_modules/bootstrap/dist/css/bootstrap.min.css",
"inject": true,
"bundleName": "bootstrap-ltr.min"
},
"projects/dev-app/src/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"tsConfig": "projects/dev-app/tsconfig.prod.json",
"fileReplacements": [
{
"replace": "projects/dev-app/src/environments/environment.ts",
"with": "projects/dev-app/src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb",
"maximumError": "10kb"
}
]
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "dev-app:build"
},
"configurations": {
"production": {
"browserTarget": "dev-app:build:production"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "dev-app:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "projects/dev-app/src/test.ts",
"polyfills": "projects/dev-app/src/polyfills.ts",
"tsConfig": "projects/dev-app/tsconfig.spec.json",
"karmaConfig": "projects/dev-app/karma.conf.js",
"assets": ["projects/dev-app/src/favicon.ico", "projects/dev-app/src/assets"],
"styles": [
"node_modules/bootstrap/dist/css/bootstrap.min.css",
"node_modules/@fortawesome/fontawesome-free/css/all.min.css",
"node_modules/@fortawesome/fontawesome-free/css/v4-shims.min.css",
"node_modules/@swimlane/ngx-datatable/index.css",
"node_modules/@swimlane/ngx-datatable/assets/icons.css",
"node_modules/@swimlane/ngx-datatable/themes/material.css",
"projects/dev-app/src/styles.scss"
],
"scripts": []
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"projects/dev-app/tsconfig.app.json",
"projects/dev-app/tsconfig.spec.json",
"projects/dev-app/e2e/tsconfig.json"
],
"exclude": ["**/node_modules/**"]
}
},
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "projects/dev-app/e2e/protractor.conf.js",
"devServerTarget": "dev-app:serve"
},
"configurations": {
"production": {
"devServerTarget": "dev-app:serve:production"
}
}
}
}
}
},
"cli": {
"analytics": false
},
"defaultProject": "dev-app"
}

62
services/saas/angular/package.json

@ -1,62 +0,0 @@
{
"name": "saas-service",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve dev-app --open",
"build": "ng build saas-service --prod",
"build:app": "npm run symlink:copy -- --no-watch && ng build dev-app --prod",
"symlink:copy": "symlink copy --angular --packages @e-shop-on-abp/saas-service --prod",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"compile:ivy": "yarn ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points --tsconfig './tsconfig.prod.json' --source node_modules --async false",
"postinstall": "npm run compile:ivy"
},
"private": true,
"dependencies": {
"@abp/ng.account": "~4.3.3",
"@abp/ng.components": "~4.3.3",
"@abp/ng.core": "~4.3.3",
"@abp/ng.identity": "~4.3.3",
"@abp/ng.setting-management": "~4.3.3",
"@abp/ng.tenant-management": "~4.3.3",
"@abp/ng.theme.basic": "~4.3.3",
"@abp/ng.theme.shared": "~4.3.3",
"@angular/animations": "~11.1.0",
"@angular/common": "~11.1.0",
"@angular/compiler": "~11.1.0",
"@angular/core": "~11.1.0",
"@angular/forms": "~11.1.0",
"@angular/platform-browser": "~11.1.0",
"@angular/platform-browser-dynamic": "~11.1.0",
"@angular/router": "~11.1.0",
"rxjs": "~6.6.0",
"tslib": "^2.0.0",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@abp/ng.schematics": "~4.3.3",
"@angular-devkit/build-angular": "~0.1101.1",
"@angular/cli": "~11.1.1",
"@angular/compiler-cli": "~11.1.0",
"@angular/language-service": "~11.1.0",
"@types/jasmine": "~3.5.0",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^12.11.1",
"codelyzer": "^6.0.1",
"jasmine-core": "~3.6.0",
"jasmine-spec-reporter": "~5.0.0",
"karma": "~5.2.3",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~3.0.2",
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.5.0",
"ng-packagr": "^11.0.1",
"protractor": "~7.0.0",
"symlink-manager": "^1.5.0",
"ts-node": "~8.3.0",
"tslint": "~6.1.0",
"typescript": "~4.1.3"
}
}

12
services/saas/angular/projects/dev-app/.browserslistrc

@ -1,12 +0,0 @@
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# You can see what browsers were selected by your queries by running:
# npx browserslist
> 0.5%
last 2 versions
Firefox ESR
not dead
not IE 9-11 # For IE 9-11 support, remove 'not'.

32
services/saas/angular/projects/dev-app/e2e/protractor.conf.js

@ -1,32 +0,0 @@
// @ts-check
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts
const { SpecReporter } = require('jasmine-spec-reporter');
/**
* @type { import("protractor").Config }
*/
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./src/**/*.e2e-spec.ts'
],
capabilities: {
browserName: 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
onPrepare() {
require('ts-node').register({
project: require('path').join(__dirname, './tsconfig.json')
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
}
};

23
services/saas/angular/projects/dev-app/e2e/src/app.e2e-spec.ts

@ -1,23 +0,0 @@
import { AppPage } from './app.po';
import { browser, logging } from 'protractor';
describe('workspace-project App', () => {
let page: AppPage;
beforeEach(() => {
page = new AppPage();
});
it('should display welcome message', () => {
page.navigateTo();
expect(page.getTitleText()).toEqual('dev-app app is running!');
});
afterEach(async () => {
// Assert that there are no errors emitted from the browser
const logs = await browser.manage().logs().get(logging.Type.BROWSER);
expect(logs).not.toContain(jasmine.objectContaining({
level: logging.Level.SEVERE,
} as logging.Entry));
});
});

11
services/saas/angular/projects/dev-app/e2e/src/app.po.ts

@ -1,11 +0,0 @@
import { browser, by, element } from 'protractor';
export class AppPage {
navigateTo(): Promise<unknown> {
return browser.get(browser.baseUrl) as Promise<unknown>;
}
getTitleText(): Promise<string> {
return element(by.css('app-root .content span')).getText() as Promise<string>;
}
}

13
services/saas/angular/projects/dev-app/e2e/tsconfig.json

@ -1,13 +0,0 @@
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"outDir": "../../../out-tsc/e2e",
"module": "commonjs",
"target": "es2018",
"types": [
"jasmine",
"jasminewd2",
"node"
]
}
}

BIN
services/saas/angular/projects/dev-app/favicon.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

32
services/saas/angular/projects/dev-app/karma.conf.js

@ -1,32 +0,0 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma')
],
client: {
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, '../../coverage/dev-app'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true
});
};

39
services/saas/angular/projects/dev-app/src/app/app-routing.module.ts

@ -1,39 +0,0 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: '',
pathMatch: 'full',
loadChildren: () => import('./home/home.module').then(m => m.HomeModule),
},
{
path: 'account',
loadChildren: () => import('@abp/ng.account').then(m => m.AccountModule.forLazy()),
},
{
path: 'identity',
loadChildren: () => import('@abp/ng.identity').then(m => m.IdentityModule.forLazy()),
},
{
path: 'tenant-management',
loadChildren: () =>
import('@abp/ng.tenant-management').then(m => m.TenantManagementModule.forLazy()),
},
{
path: 'setting-management',
loadChildren: () =>
import('@abp/ng.setting-management').then(m => m.SettingManagementModule.forLazy()),
},
{
path: 'saas-service',
loadChildren: () =>
import('@e-shop-on-abp/saas-service').then(m => m.SaasServiceModule.forLazy()),
},
];
@NgModule({
imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],
exports: [RouterModule],
})
export class AppRoutingModule {}

10
services/saas/angular/projects/dev-app/src/app/app.component.ts

@ -1,10 +0,0 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<abp-loader-bar></abp-loader-bar>
<abp-dynamic-layout></abp-dynamic-layout>
`,
})
export class AppComponent {}

43
services/saas/angular/projects/dev-app/src/app/app.module.ts

@ -1,43 +0,0 @@
import { AccountConfigModule } from '@abp/ng.account/config';
import { CoreModule } from '@abp/ng.core';
import { registerLocale } from '@abp/ng.core/locale';
import { IdentityConfigModule } from '@abp/ng.identity/config';
import { SettingManagementConfigModule } from '@abp/ng.setting-management/config';
import { TenantManagementConfigModule } from '@abp/ng.tenant-management/config';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { SaasServiceConfigModule } from '@e-shop-on-abp/saas-service/config';
import { NgxsModule } from '@ngxs/store';
import { environment } from '../environments/environment';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { APP_ROUTE_PROVIDER } from './route.provider';
import { ThemeBasicModule } from '@abp/ng.theme.basic';
@NgModule({
imports: [
BrowserModule,
BrowserAnimationsModule,
AppRoutingModule,
CoreModule.forRoot({
environment,
registerLocaleFn: registerLocale(),
sendNullsAsQueryParam: false,
skipGetAppConfiguration: false,
}),
ThemeSharedModule.forRoot(),
AccountConfigModule.forRoot(),
IdentityConfigModule.forRoot(),
TenantManagementConfigModule.forRoot(),
SettingManagementConfigModule.forRoot(),
SaasServiceConfigModule.forRoot(),
ThemeBasicModule.forRoot(),
NgxsModule.forRoot(),
],
providers: [APP_ROUTE_PROVIDER],
declarations: [AppComponent],
bootstrap: [AppComponent],
})
export class AppModule {}

16
services/saas/angular/projects/dev-app/src/app/home/home-routing.module.ts

@ -1,16 +0,0 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home.component';
const routes: Routes = [
{
path: '',
children: [{ path: '', component: HomeComponent }],
},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class HomeRoutingModule {}

0
services/saas/angular/projects/dev-app/src/app/home/home.component.html

7
services/saas/angular/projects/dev-app/src/app/home/home.component.ts

@ -1,7 +0,0 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
})
export class HomeComponent {}

10
services/saas/angular/projects/dev-app/src/app/home/home.module.ts

@ -1,10 +0,0 @@
import { NgModule } from '@angular/core';
import { SharedModule } from '../shared/shared.module';
import { HomeRoutingModule } from './home-routing.module';
import { HomeComponent } from './home.component';
@NgModule({
declarations: [HomeComponent],
imports: [SharedModule, HomeRoutingModule],
})
export class HomeModule {}

25
services/saas/angular/projects/dev-app/src/app/route.provider.ts

@ -1,25 +0,0 @@
import { RoutesService, eLayoutType } from '@abp/ng.core';
import { APP_INITIALIZER } from '@angular/core';
export const APP_ROUTE_PROVIDER = [
{
provide: APP_INITIALIZER,
useFactory: configureRoutes,
deps: [RoutesService],
multi: true,
},
];
function configureRoutes(routesService: RoutesService) {
return () => {
routesService.add([
{
path: '/',
name: 'Home',
iconClass: 'fas fa-home',
order: 1,
layout: eLayoutType.application,
},
]);
};
}

26
services/saas/angular/projects/dev-app/src/app/shared/shared.module.ts

@ -1,26 +0,0 @@
import { CoreModule } from '@abp/ng.core';
import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
import { NgModule } from '@angular/core';
import { ThemeBasicModule } from '@abp/ng.theme.basic';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { NgxValidateCoreModule } from '@ngx-validate/core';
@NgModule({
declarations: [],
imports: [
CoreModule,
ThemeSharedModule,
ThemeBasicModule,
NgbDropdownModule,
NgxValidateCoreModule,
],
exports: [
CoreModule,
ThemeSharedModule,
ThemeBasicModule,
NgbDropdownModule,
NgxValidateCoreModule,
],
providers: [],
})
export class SharedModule {}

0
services/saas/angular/projects/dev-app/src/assets/.gitkeep

29
services/saas/angular/projects/dev-app/src/environments/environment.prod.ts

@ -1,29 +0,0 @@
import { Environment } from '@abp/ng.core';
const baseUrl = 'http://localhost:4200';
export const environment = {
production: true,
application: {
baseUrl: 'http://localhost:4200/',
name: 'SaasService',
logoUrl: '',
},
oAuthConfig: {
issuer: 'https://localhost:44348',
redirectUri: baseUrl,
clientId: 'SaasService_App',
responseType: 'code',
scope: 'offline_access SaasService',
},
apis: {
default: {
url: 'https://localhost:44348',
rootNamespace: 'EShopOnAbp.SaasService',
},
SaasService: {
url: 'https://localhost:44396',
rootNamespace: 'EShopOnAbp.SaasService',
},
},
} as Environment;

29
services/saas/angular/projects/dev-app/src/environments/environment.ts

@ -1,29 +0,0 @@
import { Environment } from '@abp/ng.core';
const baseUrl = 'http://localhost:4200';
export const environment = {
production: false,
application: {
baseUrl: 'http://localhost:4200/',
name: 'SaasService',
logoUrl: '',
},
oAuthConfig: {
issuer: 'https://localhost:44348',
redirectUri: baseUrl,
clientId: 'SaasService_App',
responseType: 'code',
scope: 'offline_access SaasService role email openid profile',
},
apis: {
default: {
url: 'https://localhost:44348',
rootNamespace: 'EShopOnAbp.SaasService',
},
SaasService: {
url: 'https://localhost:44396',
rootNamespace: 'EShopOnAbp.SaasService',
},
},
} as Environment;

13
services/saas/angular/projects/dev-app/src/index.html

@ -1,13 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DevApp</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root></app-root>
</body>
</html>

12
services/saas/angular/projects/dev-app/src/main.ts

@ -1,12 +0,0 @@
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.error(err));

66
services/saas/angular/projects/dev-app/src/polyfills.ts

@ -1,66 +0,0 @@
/***************************************************************************************************
* Load `$localize` onto the global scope - used if i18n tags appear in Angular templates.
*/
import '@angular/localize/init';
/**
* This file includes polyfills needed by Angular and is loaded before the app.
* You can add your own extra polyfills to this file.
*
* This file is divided into 2 sections:
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main
* file.
*
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
*
* Learn more in https://angular.io/guide/browser-support
*/
/***************************************************************************************************
* BROWSER POLYFILLS
*/
/** IE10 and IE11 requires the following for NgClass support on SVG elements */
// import 'classlist.js'; // Run `npm install --save classlist.js`.
/**
* Web Animations `@angular/platform-browser/animations`
* Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
* Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
*/
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
/**
* By default, zone.js will patch all possible macroTask and DomEvents
* user can disable parts of macroTask/DomEvents patch by setting following flags
* because those flags need to be set before `zone.js` being loaded, and webpack
* will put import in the top of bundle, so user need to create a separate file
* in this directory (for example: zone-flags.ts), and put the following flags
* into that file, and then add the following code before importing zone.js.
* import './zone-flags';
*
* The flags allowed in zone-flags.ts are listed here.
*
* The following flags will work for all browsers.
*
* (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
* (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
* (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
*
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
* with the following flag, it will bypass `zone.js` patch for IE/Edge
*
* (window as any).__Zone_enable_cross_context_check = true;
*
*/
/***************************************************************************************************
* Zone JS is required by default for Angular itself.
*/
import 'zone.js/dist/zone'; // Included with Angular CLI.
/***************************************************************************************************
* APPLICATION IMPORTS
*/

1
services/saas/angular/projects/dev-app/src/styles.scss

@ -1 +0,0 @@
/* You can add global styles to this file, and also import other style files */

25
services/saas/angular/projects/dev-app/src/test.ts

@ -1,25 +0,0 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/zone-testing';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(path: string, deep?: boolean, filter?: RegExp): {
keys(): string[];
<T>(id: string): T;
};
};
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

14
services/saas/angular/projects/dev-app/tsconfig.app.json

@ -1,14 +0,0 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/app",
"types": []
},
"files": [
"src/main.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.d.ts"
]
}

9
services/saas/angular/projects/dev-app/tsconfig.prod.json

@ -1,9 +0,0 @@
{
"extends": "../../tsconfig.prod.json",
"compilerOptions": {
"outDir": "../../out-tsc/app",
"types": []
},
"files": ["src/main.ts", "src/polyfills.ts"],
"include": ["src/**/*.d.ts"]
}

18
services/saas/angular/projects/dev-app/tsconfig.spec.json

@ -1,18 +0,0 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/spec",
"types": [
"jasmine",
"node"
]
},
"files": [
"src/test.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}

17
services/saas/angular/projects/dev-app/tslint.json

@ -1,17 +0,0 @@
{
"extends": "../../tslint.json",
"rules": {
"directive-selector": [
true,
"attribute",
"app",
"camelCase"
],
"component-selector": [
true,
"element",
"app",
"kebab-case"
]
}
}

24
services/saas/angular/projects/saas-service/README.md

@ -1,24 +0,0 @@
# SaasService
This is a startup project based on the ABP framework. For more information, visit <a href="https://abp.io/" target="_blank">abp.io</a
## Code scaffolding
Run `ng generate component component-name --project saas-service` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project saas-service`.
> Note: Don't forget to add `--project saas-service` or else it will be added to the default project in your `angular.json` file.
## Build
Run `ng build saas-service` to build the project. The build artifacts will be stored in the `dist/` directory.
## Publishing
After building your library with `ng build saas-service`, go to the dist folder `cd dist/saas-service` and run `npm publish`.
## Running unit tests
Run `ng test saas-service` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).

7
services/saas/angular/projects/saas-service/config/ng-package.json

@ -1,7 +0,0 @@
{
"$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../dist/saas-service/config",
"lib": {
"entryFile": "src/public-api.ts"
}
}

1
services/saas/angular/projects/saas-service/config/src/enums/index.ts

@ -1 +0,0 @@
export * from './route-names';

3
services/saas/angular/projects/saas-service/config/src/enums/route-names.ts

@ -1,3 +0,0 @@
export const enum eSaasServiceRouteNames {
SaasService = 'SaasService',
}

1
services/saas/angular/projects/saas-service/config/src/providers/index.ts

@ -1 +0,0 @@
export * from './route.provider';

26
services/saas/angular/projects/saas-service/config/src/providers/route.provider.ts

@ -1,26 +0,0 @@
import { eLayoutType, RoutesService } from '@abp/ng.core';
import { APP_INITIALIZER } from '@angular/core';
import { eSaasServiceRouteNames } from '../enums/route-names';
export const SAAS_SERVİCE_ROUTE_PROVIDERS = [
{
provide: APP_INITIALIZER,
useFactory: configureRoutes,
deps: [RoutesService],
multi: true,
},
];
export function configureRoutes(routesService: RoutesService) {
return () => {
routesService.add([
{
path: '/saas-service',
name: eSaasServiceRouteNames.SaasService,
iconClass: 'fas fa-book',
layout: eLayoutType.application,
order: 3,
},
]);
};
}

3
services/saas/angular/projects/saas-service/config/src/public-api.ts

@ -1,3 +0,0 @@
export * from './enums';
export * from './saas-service-config.module';
export * from './providers';

12
services/saas/angular/projects/saas-service/config/src/saas-service-config.module.ts

@ -1,12 +0,0 @@
import { ModuleWithProviders, NgModule } from '@angular/core';
import { SAAS_SERVİCE_ROUTE_PROVIDERS } from './providers/route.provider';
@NgModule()
export class SaasServiceConfigModule {
static forRoot(): ModuleWithProviders<SaasServiceConfigModule> {
return {
ngModule: SaasServiceConfigModule,
providers: [SAAS_SERVİCE_ROUTE_PROVIDERS],
};
}
}

32
services/saas/angular/projects/saas-service/karma.conf.js

@ -1,32 +0,0 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma')
],
client: {
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, '../../coverage/saas-service'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true
});
};

7
services/saas/angular/projects/saas-service/ng-package.json

@ -1,7 +0,0 @@
{
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../dist/saas-service",
"lib": {
"entryFile": "src/public-api.ts"
}
}

7
services/saas/angular/projects/saas-service/ngcc.config.js

@ -1,7 +0,0 @@
module.exports = {
entryPoints: {
".": {},
"./config": {},
"./dist": { ignore: true },
},
};

13
services/saas/angular/projects/saas-service/package.json

@ -1,13 +0,0 @@
{
"name": "@e-shop-on-abp/saas-service",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^9.1.11",
"@angular/core": "^9.1.11",
"@abp/ng.core": ">=4.3.3",
"@abp/ng.theme.shared": ">=4.3.3"
},
"dependencies": {
"tslib": "^2.0.0"
}
}

15
services/saas/angular/projects/saas-service/src/lib/components/saas-service.component.ts

@ -1,15 +0,0 @@
import { Component, OnInit } from '@angular/core';
import { SaasServiceService } from '../services/saas-service.service';
@Component({
selector: 'lib-saas-service',
template: ` <p>saas-service works!</p> `,
styles: [],
})
export class SaasServiceComponent implements OnInit {
constructor(private service: SaasServiceService) {}
ngOnInit(): void {
this.service.sample().subscribe(console.log);
}
}

24
services/saas/angular/projects/saas-service/src/lib/saas-service-routing.module.ts

@ -1,24 +0,0 @@
import { NgModule } from '@angular/core';
import { DynamicLayoutComponent } from '@abp/ng.core';
import { Routes, RouterModule } from '@angular/router';
import { SaasServiceComponent } from './components/saas-service.component';
const routes: Routes = [
{
path: '',
pathMatch: 'full',
component: DynamicLayoutComponent,
children: [
{
path: '',
component: SaasServiceComponent,
},
],
},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class SaasServiceRoutingModule {}

25
services/saas/angular/projects/saas-service/src/lib/saas-service.component.spec.ts

@ -1,25 +0,0 @@
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { SaasServiceComponent } from './saas-service.component';
describe('SaasServiceComponent', () => {
let component: SaasServiceComponent;
let fixture: ComponentFixture<SaasServiceComponent>;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
declarations: [ SaasServiceComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SaasServiceComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

23
services/saas/angular/projects/saas-service/src/lib/saas-service.module.ts

@ -1,23 +0,0 @@
import { NgModule, NgModuleFactory, ModuleWithProviders } from '@angular/core';
import { CoreModule, LazyModuleFactory } from '@abp/ng.core';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { SaasServiceComponent } from './components/saas-service.component';
import { SaasServiceRoutingModule } from './saas-service-routing.module';
@NgModule({
declarations: [SaasServiceComponent],
imports: [CoreModule, ThemeSharedModule, SaasServiceRoutingModule],
exports: [SaasServiceComponent],
})
export class SaasServiceModule {
static forChild(): ModuleWithProviders<SaasServiceModule> {
return {
ngModule: SaasServiceModule,
providers: [],
};
}
static forLazy(): NgModuleFactory<SaasServiceModule> {
return new LazyModuleFactory(SaasServiceModule.forChild());
}
}

16
services/saas/angular/projects/saas-service/src/lib/saas-service.service.spec.ts

@ -1,16 +0,0 @@
import { TestBed } from '@angular/core/testing';
import { SaasServiceService } from './saas-service.service';
describe('SaasServiceService', () => {
let service: SaasServiceService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(SaasServiceService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

18
services/saas/angular/projects/saas-service/src/lib/services/saas-service.service.ts

@ -1,18 +0,0 @@
import { Injectable } from '@angular/core';
import { RestService } from '@abp/ng.core';
@Injectable({
providedIn: 'root',
})
export class SaasServiceService {
apiName = 'SaasService';
constructor(private restService: RestService) {}
sample() {
return this.restService.request<void, any>(
{ method: 'GET', url: '/api/SaasService/sample' },
{ apiName: this.apiName }
);
}
}

7
services/saas/angular/projects/saas-service/src/public-api.ts

@ -1,7 +0,0 @@
/*
* Public API Surface of saas-service
*/
export * from './lib/components/saas-service.component';
export * from './lib/services/saas-service.service';
export * from './lib/saas-service.module';

26
services/saas/angular/projects/saas-service/src/test.ts

@ -1,26 +0,0 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/zone';
import 'zone.js/dist/zone-testing';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(path: string, deep?: boolean, filter?: RegExp): {
keys(): string[];
<T>(id: string): T;
};
};
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

18
services/saas/angular/projects/saas-service/tsconfig.lib.json

@ -1,18 +0,0 @@
{
"extends": "../../tsconfig.prod.json",
"compilerOptions": {
"outDir": "../../out-tsc/lib",
"declarationMap": true,
"target": "es2015",
"declaration": true,
"inlineSources": true,
"types": [],
"lib": ["dom", "es2018"]
},
"angularCompilerOptions": {
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"enableResourceInlining": true
},
"exclude": ["src/test.ts", "**/*.spec.ts"]
}

9
services/saas/angular/projects/saas-service/tsconfig.lib.prod.json

@ -1,9 +0,0 @@
{
"extends": "./tsconfig.lib.json",
"compilerOptions": {
"declarationMap": false
},
"angularCompilerOptions": {
"enableIvy": false
}
}

17
services/saas/angular/projects/saas-service/tsconfig.spec.json

@ -1,17 +0,0 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/spec",
"types": [
"jasmine",
"node"
]
},
"files": [
"src/test.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}

17
services/saas/angular/projects/saas-service/tslint.json

@ -1,17 +0,0 @@
{
"extends": "../../tslint.json",
"rules": {
"directive-selector": [
true,
"attribute",
"lib",
"camelCase"
],
"component-selector": [
true,
"element",
"lib",
"kebab-case"
]
}
}

15
services/saas/angular/tsconfig.json

@ -1,15 +0,0 @@
{
"extends": "./tsconfig.prod.json",
"compilerOptions": {
"paths": {
"@e-shop-on-abp/saas-service": [
"projects/saas-service/src/public-api.ts"
],
"@e-shop-on-abp/saas-service/config": [
"projects/saas-service/config/src/public-api.ts"
],
"@proxy": ["projects/saas-service/src/lib/proxy/index.ts"],
"@proxy/*": ["projects/saas-service/src/lib/proxy/*"]
}
}
}

20
services/saas/angular/tsconfig.prod.json

@ -1,20 +0,0 @@
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"module": "esnext",
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"lib": ["es2018", "dom"]
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
}
}

138
services/saas/angular/tslint.json

@ -1,138 +0,0 @@
{
"extends": "tslint:recommended",
"rulesDirectory": [
"codelyzer"
],
"rules": {
"align": {
"options": [
"parameters",
"statements"
]
},
"array-type": false,
"arrow-return-shorthand": true,
"curly": true,
"deprecation": {
"severity": "warning"
},
"eofline": true,
"import-blacklist": [
true,
"rxjs/Rx"
],
"import-spacing": true,
"indent": {
"options": [
"spaces"
]
},
"max-classes-per-file": false,
"max-line-length": [
true,
140
],
"member-ordering": [
true,
{
"order": [
"static-field",
"instance-field",
"static-method",
"instance-method"
]
}
],
"no-console": [
true,
"debug",
"info",
"time",
"timeEnd",
"trace"
],
"no-empty": false,
"no-inferrable-types": [
true,
"ignore-params"
],
"no-non-null-assertion": true,
"no-redundant-jsdoc": true,
"no-switch-case-fall-through": true,
"no-var-requires": false,
"object-literal-key-quotes": [
true,
"as-needed"
],
"quotemark": [
true,
"single"
],
"semicolon": {
"options": [
"always",
"ignore-bound-class-methods"
]
},
"space-before-function-paren": {
"options": {
"anonymous": "never",
"asyncArrow": "always",
"constructor": "never",
"method": "never",
"named": "never"
}
},
"typedef-whitespace": {
"options": [
{
"call-signature": "nospace",
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
},
{
"call-signature": "onespace",
"index-signature": "onespace",
"parameter": "onespace",
"property-declaration": "onespace",
"variable-declaration": "onespace"
}
]
},
"variable-name": {
"options": [
"ban-keywords",
"check-format",
"allow-pascal-case"
]
},
"whitespace": {
"options": [
"check-branch",
"check-decl",
"check-operator",
"check-separator",
"check-type",
"check-typecast"
]
},
"component-class-suffix": true,
"contextual-lifecycle": true,
"directive-class-suffix": true,
"no-conflicting-lifecycle": true,
"no-host-metadata-property": true,
"no-input-rename": true,
"no-inputs-metadata-property": true,
"no-output-native": true,
"no-output-on-prefix": true,
"no-output-rename": true,
"no-outputs-metadata-property": true,
"template-banana-in-box": true,
"template-no-negated-async": true,
"use-lifecycle-interface": true,
"use-pipe-transform-interface": true,
"object-literal-shorthand": false
}
}

16
services/saas/common.props

@ -1,16 +0,0 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>0.1.0</Version>
<NoWarn>$(NoWarn);CS1591;CS0436</NoWarn>
<AbpProjectType>module</AbpProjectType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ConfigureAwait.Fody" Version="3.3.1" PrivateAssets="All" />
<PackageReference Include="Fody" Version="6.5.0">
<PrivateAssets>All</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>

20
services/saas/database/Dockerfile

@ -1,20 +0,0 @@
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
COPY . .
WORKDIR /templates/service/host/IdentityServerHost
RUN dotnet restore
RUN dotnet ef migrations script -i -o migrations-IdentityServerHost.sql
WORKDIR /templates/service/host/EShopOnAbp.SaasService.Host
RUN dotnet restore
RUN dotnet ef migrations script -i -o migrations-SaasService.sql
FROM mcr.microsoft.com/mssql-tools AS final
WORKDIR /src
COPY --from=build /templates/service/host/IdentityServerHost/migrations-IdentityServerHost.sql migrations-IdentityServerHost.sql
COPY --from=build /templates/service/host/EShopOnAbp.SaasService.Host/migrations-SaasService.sql migrations-SaasService.sql
COPY --from=build /templates/service/database/entrypoint.sh .
RUN /bin/bash -c "sed -i $'s/\r$//' entrypoint.sh"
RUN chmod +x ./entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]

12
services/saas/database/entrypoint.sh

@ -1,12 +0,0 @@
#!/bin/bash
until /opt/mssql-tools/bin/sqlcmd -S sqlserver -U SA -P $SA_PASSWORD -Q 'SELECT name FROM master.sys.databases'; do
>&2 echo "SQL Server is starting up"
sleep 1
done
/opt/mssql-tools/bin/sqlcmd -S sqlserver -U SA -P $SA_PASSWORD -Q "CREATE DATABASE [$IdentityServer_DB]"
/opt/mssql-tools/bin/sqlcmd -S sqlserver -U SA -P $SA_PASSWORD -Q "CREATE DATABASE [$SaasService_DB]"
/opt/mssql-tools/bin/sqlcmd -d $IdentityServer_DB -S sqlserver -U sa -P $SA_PASSWORD -i migrations-IdentityServerHost.sql
/opt/mssql-tools/bin/sqlcmd -d $SaasService_DB -S sqlserver -U sa -P $SA_PASSWORD -i migrations-SaasService.sql

13
services/saas/docker-compose.migrations.yml

@ -1,13 +0,0 @@
version: '3.4'
services:
migrations:
build:
context: ../../
dockerfile: templates/service/database/Dockerfile
depends_on:
- sqlserver
environment:
- IdentityServer_DB=SaasService_Identity
- SaasService_DB=SaasService_ModuleDb
- SA_PASSWORD=yourStrong(!)Password

29
services/saas/docker-compose.override.yml

@ -1,29 +0,0 @@
version: '3.4'
services:
sqlserver:
environment:
- SA_PASSWORD=yourStrong(!)Password
- ACCEPT_EULA=Y
ports:
- "51599:1433"
identity-server:
environment:
- ASPNETCORE_URLS=http://0.0.0.0:80
- ConnectionStrings__Default=Server=sqlserver;Database=SaasService_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- ConnectionStrings__SqlServerCache=Server=sqlserver;Database=SaasService_Cache;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
ports:
- "51600:80"
saas-service:
environment:
- ASPNETCORE_URLS=http://0.0.0.0:80
- ConnectionStrings__Default=Server=sqlserver;Database=SaasService_ModuleDb;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- ConnectionStrings__AbpSettingManagement=Server=sqlserver;Database=SaasService_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- ConnectionStrings__AbpPermissionManagement=Server=sqlserver;Database=SaasService_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- ConnectionStrings__AbpAuditLogging=Server=sqlserver;Database=SaasService_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- ConnectionStrings__SqlServerCache=Server=sqlserver;Database=SaasService_Cache;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- AuthServer__Authority=http://identity-server
ports:
- "51601:80"

25
services/saas/docker-compose.yml

@ -1,25 +0,0 @@
version: '3.4'
services:
sqlserver:
image: mcr.microsoft.com/mssql/server
volumes:
- dbdata:/var/opt/mssql
identity-server:
build:
context: ../../
dockerfile: templates/service/host/IdentityServerHost/Dockerfile
depends_on:
- sqlserver
saas-service:
build:
context: ../../
dockerfile: templates/service/host/EShopOnAbp.SaasService.Host/Dockerfile
depends_on:
- sqlserver
- identity-server
volumes:
dbdata:

32
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/EShopOnAbp.SaasService.Blazor.Host.csproj

@ -1,32 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap" Version="0.9.3.5" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="0.9.3.5" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="5.0.*" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="5.0.*" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Autofac.WebAssembly" Version="4.3.3" />
<PackageReference Include="Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme" Version="4.3.3" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Identity.Blazor.WebAssembly" Version="4.3.3" />
<PackageReference Include="Volo.Abp.Account.Blazor" Version="4.3.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EShopOnAbp.SaasService.Host.Shared\EShopOnAbp.SaasService.Host.Shared.csproj" />
<ProjectReference Include="..\..\src\EShopOnAbp.SaasService.Blazor.WebAssembly\EShopOnAbp.SaasService.Blazor.WebAssembly.csproj" />
</ItemGroup>
</Project>

3
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/FodyWeavers.xml

@ -1,3 +0,0 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/FodyWeavers.xsd

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

60
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/Pages/Index.razor

@ -1,60 +0,0 @@
@page "/"
@using Volo.Abp.Users
@using Volo.Abp.MultiTenancy
@using System.Security.Claims
@inject ICurrentUser CurrentUser
@inject ICurrentTenant CurrentTenant
@inject AuthenticationStateProvider AuthenticationStateProvider
<h1>Welcome to SaasService!</h1>
@if (CurrentUser.IsAuthenticated)
{
<h3>Current User</h3>
<ul>
<li>Id: <strong>@CurrentUser.Id</strong></li>
<li>TenantId: <strong>@CurrentUser.TenantId</strong></li>
<li>UserName: <strong>@CurrentUser.UserName</strong></li>
<li>Name: <strong>@CurrentUser.Name</strong></li>
<li>SurName: <strong>@CurrentUser.SurName</strong></li>
<li>Email: <strong>@CurrentUser.Email</strong></li>
<li>EmailVerified: <strong>@CurrentUser.EmailVerified</strong></li>
<li>PhoneNumber: <strong>@CurrentUser.PhoneNumber</strong></li>
<li>PhoneNumberVerified: <strong>@CurrentUser.PhoneNumberVerified</strong></li>
<li>Roles: <strong>@CurrentUser.Roles.JoinAsString(", ")</strong></li>
</ul>
}
@if (_claims != null)
{
<h3>Current Claims</h3>
<ul>
@foreach (var claim in _claims)
{
<li>@claim.Type: @claim.Value</li>
}
</ul>
}
@if (CurrentTenant.IsAvailable)
{
<h3>Current Tenant</h3>
<ul>
<li>Id: <strong>@CurrentTenant.Id</strong></li>
<li>Name: <strong>@CurrentTenant.Name</strong></li>
</ul>
}
@code
{
private IEnumerable<Claim> _claims;
protected async override Task OnInitializedAsync()
{
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
if (authState.User.Identity.IsAuthenticated)
{
_claims = authState.User.Claims;
}
}
}

24
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/Program.cs

@ -1,24 +0,0 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
namespace EShopOnAbp.SaasService.Blazor.Host
{
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
var application = builder.AddApplication<SaasServiceBlazorHostModule>(options =>
{
options.UseAutofac();
});
var host = builder.Build();
await application.InitializeAsync(host.Services);
await host.RunAsync();
}
}
}

29
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/Properties/launchSettings.json

@ -1,29 +0,0 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "https://localhost:44307",
"sslPort": 44307
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"EShopOnAbp.SaasService.Blazor": {
"commandName": "Project",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:44307",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

12
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/SaasServiceBlazorHostAutoMapperProfile.cs

@ -1,12 +0,0 @@
using AutoMapper;
namespace EShopOnAbp.SaasService.Blazor.Host
{
public class SaasServiceBlazorHostAutoMapperProfile : Profile
{
public SaasServiceBlazorHostAutoMapperProfile()
{
//Define your AutoMapper configuration here for the Blazor project.
}
}
}

17
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/SaasServiceBlazorHostBundleContributor.cs

@ -1,17 +0,0 @@
using Volo.Abp.Bundling;
namespace EShopOnAbp.SaasService.Blazor.Host
{
public class SaasServiceBlazorHostBundleContributor : IBundleContributor
{
public void AddScripts(BundleContext context)
{
}
public void AddStyles(BundleContext context)
{
context.Add("main.css", true);
}
}
}

97
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/SaasServiceBlazorHostModule.cs

@ -1,97 +0,0 @@
using System;
using System.Net.Http;
using Blazorise.Bootstrap;
using Blazorise.Icons.FontAwesome;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using EShopOnAbp.SaasService.Blazor.WebAssembly;
using Volo.Abp.Account.Blazor;
using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic;
using Volo.Abp.AspNetCore.Components.Web.Theming.Routing;
using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme;
using Volo.Abp.Autofac.WebAssembly;
using Volo.Abp.AutoMapper;
using Volo.Abp.Identity.Blazor.WebAssembly;
using Volo.Abp.Modularity;
using Volo.Abp.UI.Navigation;
namespace EShopOnAbp.SaasService.Blazor.Host
{
[DependsOn(
typeof(AbpAutofacWebAssemblyModule),
typeof(AbpAspNetCoreComponentsWebAssemblyBasicThemeModule),
typeof(AbpIdentityBlazorWebAssemblyModule),
typeof(AbpAccountBlazorModule),
typeof(SaasServiceBlazorWebAssemblyModule)
)]
public class SaasServiceBlazorHostModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
var environment = context.Services.GetSingletonInstance<IWebAssemblyHostEnvironment>();
var builder = context.Services.GetSingletonInstance<WebAssemblyHostBuilder>();
ConfigureAuthentication(builder);
ConfigureHttpClient(context, environment);
ConfigureBlazorise(context);
ConfigureRouter(context);
ConfigureUI(builder);
ConfigureMenu(context);
ConfigureAutoMapper(context);
}
private void ConfigureRouter(ServiceConfigurationContext context)
{
Configure<AbpRouterOptions>(options =>
{
options.AppAssembly = typeof(SaasServiceBlazorHostModule).Assembly;
});
}
private void ConfigureMenu(ServiceConfigurationContext context)
{
Configure<AbpNavigationOptions>(options =>
{
options.MenuContributors.Add(new SaasServiceHostMenuContributor());
});
}
private void ConfigureBlazorise(ServiceConfigurationContext context)
{
context.Services
.AddBootstrapProviders()
.AddFontAwesomeIcons();
}
private static void ConfigureAuthentication(WebAssemblyHostBuilder builder)
{
builder.Services.AddOidcAuthentication(options =>
{
builder.Configuration.Bind("AuthServer", options.ProviderOptions);
options.ProviderOptions.DefaultScopes.Add("SaasService");
});
}
private static void ConfigureUI(WebAssemblyHostBuilder builder)
{
builder.RootComponents.Add<App>("#ApplicationContainer");
}
private static void ConfigureHttpClient(ServiceConfigurationContext context, IWebAssemblyHostEnvironment environment)
{
context.Services.AddTransient(sp => new HttpClient
{
BaseAddress = new Uri(environment.BaseAddress)
});
}
private void ConfigureAutoMapper(ServiceConfigurationContext context)
{
Configure<AbpAutoMapperOptions>(options =>
{
options.AddMaps<SaasServiceBlazorHostModule>();
});
}
}
}

9
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/SaasServiceHostBrandingProvider.cs

@ -1,9 +0,0 @@
using Volo.Abp.Ui.Branding;
namespace EShopOnAbp.SaasService.Blazor.Host
{
public class SaasServiceHostBrandingProvider : DefaultBrandingProvider
{
public override string AppName => "SaasService";
}
}

31
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/SaasServiceHostMenuContributor.cs

@ -1,31 +0,0 @@
using System.Threading.Tasks;
using EShopOnAbp.SaasService.Localization;
using Volo.Abp.UI.Navigation;
namespace EShopOnAbp.SaasService.Blazor.Host
{
public class SaasServiceHostMenuContributor : IMenuContributor
{
public Task ConfigureMenuAsync(MenuConfigurationContext context)
{
if(context.Menu.DisplayName != StandardMenus.Main)
{
return Task.CompletedTask;
}
var l = context.GetLocalizer<SaasServiceResource>();
context.Menu.Items.Insert(
0,
new ApplicationMenuItem(
"SaasService.Home",
l["Menu:Home"],
"/",
icon: "fas fa-home"
)
);
return Task.CompletedTask;
}
}
}

11
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/_Imports.razor

@ -1,11 +0,0 @@
@using System.Net.Http
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using Microsoft.JSInterop
@using Volo.Abp.AspNetCore.Components.WebAssembly
@using EShopOnAbp.SaasService.Blazor
@using Blazorise
@using Blazorise.DataGrid

3
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/appsettings.Development.json

@ -1,3 +0,0 @@
{
}

12
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/appsettings.json

@ -1,12 +0,0 @@
{
"AuthServer": {
"Authority": "https://localhost:44348",
"ClientId": "SaasService_Blazor",
"ResponseType": "code"
},
"RemoteServices": {
"Default": {
"BaseUrl": "https://localhost:44396"
}
}
}

BIN
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/favicon.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

17
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/global.css

File diff suppressed because one or more lines are too long

53
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/global.js

File diff suppressed because one or more lines are too long

29
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/index.html

@ -1,29 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>EShopOnAbp.SaasService.Blazor</title>
<base href="/" />
<!--ABP:Styles-->
<link href="global.css?_v=637574532170271862" rel="stylesheet"/>
<link href="main.css" rel="stylesheet"/>
<!--/ABP:Styles-->
</head>
<body class="abp-application-layout bg-light">
<div id="ApplicationContainer">
<div class="spinner">
<div class="double-bounce1"></div>
<div class="double-bounce2"></div>
</div>
</div>
<!--ABP:Scripts-->
<script src="global.js?_v=637574532173852047"></script>
<!--/ABP:Scripts-->
</body>
</html>

48
services/saas/host/EShopOnAbp.SaasService.Blazor.Host/wwwroot/main.css

@ -1,48 +0,0 @@
.spinner {
width: 40px;
height: 40px;
display: block;
position: fixed;
top: calc( 50% - ( 40px / 2) );
right: calc( 50% - ( 40px / 2) );
}
.double-bounce1, .double-bounce2 {
width: 100%;
height: 100%;
border-radius: 50%;
background-color: #333;
opacity: 0.6;
position: absolute;
top: 0;
left: 0;
-webkit-animation: sk-bounce 2.0s infinite ease-in-out;
animation: sk-bounce 2.0s infinite ease-in-out;
}
.double-bounce2 {
-webkit-animation-delay: -1.0s;
animation-delay: -1.0s;
}
@-webkit-keyframes sk-bounce {
0%, 100% {
-webkit-transform: scale(0.0)
}
50% {
-webkit-transform: scale(1.0)
}
}
@keyframes sk-bounce {
0%, 100% {
transform: scale(0.0);
-webkit-transform: scale(0.0);
}
50% {
transform: scale(1.0);
-webkit-transform: scale(1.0);
}
}

10
services/saas/host/EShopOnAbp.SaasService.Host.Shared/EShopOnAbp.SaasService.Host.Shared.csproj

@ -1,10 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>EShopOnAbp.SaasService</RootNamespace>
</PropertyGroup>
</Project>

3
services/saas/host/EShopOnAbp.SaasService.Host.Shared/FodyWeavers.xml

@ -1,3 +0,0 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
services/saas/host/EShopOnAbp.SaasService.Host.Shared/FodyWeavers.xsd

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

10
services/saas/host/EShopOnAbp.SaasService.Host.Shared/MultiTenancy/MultiTenancyConsts.cs

@ -1,10 +0,0 @@
namespace EShopOnAbp.SaasService.MultiTenancy
{
public static class MultiTenancyConsts
{
/* Enable/disable multi-tenancy in a single point
* to test your module with multi-tenancy.
*/
public const bool IsEnabled = false;
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save