intermediate-component-sa 1.0.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +1 -20
  3. package/build-dev.bat +2 -0
  4. package/build-prod-aot.bat +2 -0
  5. package/build-prod-rollup-aot.bat +2 -0
  6. package/build-prod.bat +2 -0
  7. package/config.ts +4 -0
  8. package/gulpfile.ts +172 -0
  9. package/index.js +4 -2
  10. package/karma.conf.js +124 -0
  11. package/package.json +326 -5
  12. package/postgrator-test.json +9 -0
  13. package/postgrator.json +9 -0
  14. package/src/app.server.ts +4 -0
  15. package/src/client/app/app.component.ts +37 -0
  16. package/src/client/app/app.html +6 -0
  17. package/src/client/app/app.module.ts +36 -0
  18. package/src/client/app/app.routing.ts +7 -0
  19. package/src/client/app/hot_loader_main.ts +14 -0
  20. package/src/client/app/main-aot.ts +8 -0
  21. package/src/client/app/main.ts +8 -0
  22. package/src/client/app/rxjs-operators.ts +15 -0
  23. package/src/client/index.html +90 -0
  24. package/src/client/tsconfig.json +44 -0
  25. package/src/server/config/app.config.ts +57 -0
  26. package/src/server/config/jwt.config.ts +4 -0
  27. package/src/server/config/logger.config.ts +161 -0
  28. package/src/server/config/mssql.config.ts +30 -0
  29. package/src/server/config/redis.config.ts +10 -0
  30. package/src/server/config/server.config.ts +20 -0
  31. package/src/server/config/templates.config.ts +41 -0
  32. package/src/server/crypt.ts +37 -0
  33. package/src/server/customRequest.ts +609 -0
  34. package/src/server/index.ts +231 -0
  35. package/src/server/interfaces/cleaner.interface.ts +3 -0
  36. package/src/server/interfaces/supervisor.interface.ts +3 -0
  37. package/src/server/routes-centralized.ts +36 -0
  38. package/src/server/routes.ts +6 -0
  39. package/src/server/services/index.ts +10 -0
  40. package/src/server/services/routes.service.ts +11 -0
  41. package/src/server/shared/file-manager.ts +1007 -0
  42. package/src/server/shared/http.shared.ts +49 -0
  43. package/src/server/shared/promises.shared.ts +13 -0
  44. package/src/server/shared/security.shared.ts +90 -0
  45. package/src/server/ssl/star_inconcertcc_com.key +28 -0
  46. package/src/server/ssl/star_inconcertcc_com.pem +62 -0
  47. package/src/server/tsconfig.json +38 -0
  48. package/tools/build.js.prod.ts +40 -0
  49. package/tools/config/project.config.ts +718 -0
  50. package/tools/config.ts +4 -0
  51. package/tools/database/SchemaZen.exe +0 -0
  52. package/tools/database/generate-all-data-scripts.bat +32 -0
  53. package/tools/database/generate-database-scripts.bat +36 -0
  54. package/tools/debug.ts +17 -0
  55. package/tools/env/base.ts +8 -0
  56. package/tools/env/dev.ts +9 -0
  57. package/tools/env/env-config.interface.ts +1 -0
  58. package/tools/env/prod.ts +10 -0
  59. package/tools/manual_typings/project/sample.package.d.ts +3 -0
  60. package/tools/manual_typings/seed/angular2-hot-loader.d.ts +9 -0
  61. package/tools/manual_typings/seed/autoprefixer.d.ts +13 -0
  62. package/tools/manual_typings/seed/colorguard.d.ts +15 -0
  63. package/tools/manual_typings/seed/connect-livereload.d.ts +5 -0
  64. package/tools/manual_typings/seed/cssnano.d.ts +18 -0
  65. package/tools/manual_typings/seed/doiuse.d.ts +16 -0
  66. package/tools/manual_typings/seed/express-history-api-fallback.d.ts +18 -0
  67. package/tools/manual_typings/seed/istream.d.ts +10 -0
  68. package/tools/manual_typings/seed/karma.d.ts +12 -0
  69. package/tools/manual_typings/seed/merge-stream.d.ts +8 -0
  70. package/tools/manual_typings/seed/open.d.ts +8 -0
  71. package/tools/manual_typings/seed/postcss-reporter.d.ts +20 -0
  72. package/tools/manual_typings/seed/slash.d.ts +5 -0
  73. package/tools/manual_typings/seed/stylelint.d.ts +16 -0
  74. package/tools/manual_typings/seed/systemjs-builder.d.ts +10 -0
  75. package/tools/manual_typings/seed/tildify.d.ts +5 -0
  76. package/tools/manual_typings/seed/tiny-lr.d.ts +10 -0
  77. package/tools/manual_typings/seed/walk.d.ts +10 -0
  78. package/tools/scripts/install.speech-analytic.sh +35 -0
  79. package/tools/tasks/build.app.server.ts +57 -0
  80. package/tools/tasks/build.assets.dev.ts +19 -0
  81. package/tools/tasks/build.assets.prod.ts +31 -0
  82. package/tools/tasks/build.bundles.app.aot.ts +31 -0
  83. package/tools/tasks/build.bundles.app.rollup.aot.ts +101 -0
  84. package/tools/tasks/build.bundles.app.ts +31 -0
  85. package/tools/tasks/build.bundles.ts +45 -0
  86. package/tools/tasks/build.database.scripts.runner.ts +137 -0
  87. package/tools/tasks/build.database.scripts.ts +27 -0
  88. package/tools/tasks/build.flags.ts +9 -0
  89. package/tools/tasks/build.fonts.ts +9 -0
  90. package/tools/tasks/build.html_css.ts +126 -0
  91. package/tools/tasks/build.index.dev.ts +68 -0
  92. package/tools/tasks/build.index.prod.ts +64 -0
  93. package/tools/tasks/build.js.dev.ts +66 -0
  94. package/tools/tasks/build.js.prod.aot.ts +44 -0
  95. package/tools/tasks/build.js.prod.rollup.aot.ts +50 -0
  96. package/tools/tasks/build.js.prod.ts +40 -0
  97. package/tools/tasks/build.packages.prod.ts +19 -0
  98. package/tools/tasks/build.server.dev.ts +59 -0
  99. package/tools/tasks/build.server.prod.ts +31 -0
  100. package/tools/tasks/build.server.statics.ts +24 -0
  101. package/tools/tasks/build.skins.ts +51 -0
  102. package/tools/tasks/build.sme.prod.aot.ts +6 -0
  103. package/tools/tasks/build.sme.prod.rollup.aot.ts +6 -0
  104. package/tools/tasks/build.sme.prod.ts +6 -0
  105. package/tools/tasks/build.tar.prod.ts +17 -0
  106. package/tools/tasks/build.test.database.scripts.ts +52 -0
  107. package/tools/tasks/clean.dev.ts +7 -0
  108. package/tools/tasks/clean.prod.ts +7 -0
  109. package/tools/tasks/compile.ahead.prod.ts +65 -0
  110. package/tools/tasks/copy.client.js.prod.rollup.aot.ts +33 -0
  111. package/tools/tasks/copy.client.js.prod.ts +18 -0
  112. package/tools/tasks/copy.server.assets.ts +38 -0
  113. package/tools/tasks/copy.server.js.prod.ts +16 -0
  114. package/tools/tasks/css-lint.ts +58 -0
  115. package/tools/tasks/e2e.ts +32 -0
  116. package/tools/tasks/karma.run.ts +18 -0
  117. package/tools/tasks/karma.watch.ts +9 -0
  118. package/tools/tasks/minify.server.statics.ts +52 -0
  119. package/tools/tasks/server.prod.ts +6 -0
  120. package/tools/tasks/server.start.ts +6 -0
  121. package/tools/tasks/test.database.ts +6 -0
  122. package/tools/tasks/transpile.bundles.rollup.aot.ts +43 -0
  123. package/tools/tasks/tslint.ts +64 -0
  124. package/tools/tasks/watch.file.changes.dev.ts +37 -0
  125. package/tools/tasks/watch.key.press.dev.ts +116 -0
  126. package/tools/tasks/webdriver.ts +6 -0
  127. package/tools/utils/project/sample_util.ts +18 -0
  128. package/tools/utils/project.utils.ts +4 -0
  129. package/tools/utils/seed/build_optimizer.ts +26 -0
  130. package/tools/utils/seed/clean.ts +35 -0
  131. package/tools/utils/seed/code_change_tools.ts +38 -0
  132. package/tools/utils/seed/karma.start.ts +10 -0
  133. package/tools/utils/seed/server.ts +43 -0
  134. package/tools/utils/seed/sme.ts +51 -0
  135. package/tools/utils/seed/tasks_tools.ts +70 -0
  136. package/tools/utils/seed/template_locals.ts +64 -0
  137. package/tools/utils/seed/tsproject.ts +25 -0
  138. package/tools/utils/seed.utils.ts +11 -0
  139. package/tools/utils.ts +5 -0
  140. package/tsconfig.json +33 -0
  141. package/tslint.json +120 -0
  142. package/utils.ts +5 -0
@@ -0,0 +1,49 @@
1
+ import * as express from 'express';
2
+ import * as url from 'url';
3
+ import * as jwt from 'jsonwebtoken';
4
+ import * as log4js from 'log4js';
5
+
6
+ // Importo configuracion de JWT
7
+ import { JWT_SECRET } from '../config/jwt.config';
8
+
9
+ // Obtengo logger
10
+ let logger = log4js.getLogger('ServerScripts');
11
+
12
+ export function GetDomainFromRequestHost(requestHost: string): string {
13
+
14
+ // Acomodo el host para que tenga forma de url
15
+ let host: string = requestHost || '';
16
+ if (host.match(/^http:\/\//)) host = host.substring(7);
17
+ if (host.match(/^https:\/\//)) host = host.substring(8);
18
+ if (host.match(/^www\./)) host = host.substring(4);
19
+ if (!/http:/.test(host) && !/https:/.test(host)) host = 'http://' + host;
20
+
21
+ // Obtengo el dominio asociado al request
22
+ let requestDomain: string = url.parse(host).hostname;
23
+
24
+ // Devuelvo el dominio obtenido
25
+ return requestDomain;
26
+ }
27
+
28
+ export function GetRequestUser(authorizationHeader: string): string {
29
+
30
+ // Verifico que el input no sea nulo
31
+ let session: string = authorizationHeader || '';
32
+ let userId: string;
33
+
34
+ try {
35
+ // Decodifico el token recibido
36
+ session = session.replace(/^Bearer /i, '');
37
+ // Si no hay sesion no sigo
38
+ if (session) {
39
+ let decoded: any = jwt.verify(session, JWT_SECRET);
40
+ if (decoded.userId) userId = decoded.userId;
41
+ }
42
+ } catch (err) {
43
+ // Obtengo el mensaje de error, que es lo que se va a enviar hacia atras
44
+ let errMsg: string = (typeof err === 'string' ? err : err.message || err.description || '');
45
+ logger.error('Error al decodificar datos de la sesion: ' + errMsg);
46
+ }
47
+ // Devuelvo el dato obtenido
48
+ return userId;
49
+ }
@@ -0,0 +1,13 @@
1
+ export function DummyPromise(): Promise<boolean> {
2
+ // Devuelvo promesa dummy que siempre resuelve true
3
+ return new Promise(function(resolve, reject) {
4
+ resolve(true);
5
+ });
6
+ }
7
+
8
+ export function SleepPromise(secondTime: number): Promise<boolean> {
9
+ // Devuelvo promesa dummy que siempre resuelve true
10
+ return new Promise(function(resolve, reject) {
11
+ setTimeout(resolve,(1000 * secondTime));
12
+ });
13
+ }
@@ -0,0 +1,90 @@
1
+ import * as express from 'express';
2
+ import * as cors from 'cors';
3
+
4
+ export function InitHeaders(app: express.Application) {
5
+
6
+ // Aplico los handelrs para setear los headers de seguridad
7
+ app.use(FrameGuard);
8
+ app.use(HidePoweredBy);
9
+ app.use(XssFilter);
10
+ app.use(IeNoOpen);
11
+
12
+ // Configuración para CORS
13
+ let corsOptions: cors.CorsOptions = {
14
+ // Header Access-Control-Allow-Origin con el origen del request (sin esto no puedo setear cookies)
15
+ origin: true,
16
+ // Header Access-Control-Allow-Credentials
17
+ credentials: true,
18
+ // Header Access-Control-Allow-Methods
19
+ methods: ['GET', 'POST']
20
+ };
21
+
22
+ // Activo CORS para las URL necesarias
23
+ app.all('/api|auth|public|popup|builder|payments|distributed|static|template|assets|favicon/*', cors(corsOptions));
24
+ }
25
+
26
+ export function FrameGuard(req: express.Request, res: express.Response, next: any) {
27
+
28
+ // El header se aplica solo para URLs que no sean embebibles
29
+ if (req.url.match('^\/(builder|payments|popup)\/') || req.url.startsWith('/public/tracking/frame.html') || req.url.startsWith('/public/preview_template_edit/')) return next();
30
+
31
+ // Aplico el X-Frame-Options para indicar que la página solo se puede meter dentro de un iframe en el mismo origen (evitar clickjacking)
32
+ res.setHeader('X-Frame-Options', 'SAMEORIGIN');
33
+
34
+ // Sigo procesando
35
+ return next();
36
+ }
37
+
38
+ export function HidePoweredBy(req: express.Request, res: express.Response, next: any) {
39
+
40
+ // Escondo el X-Powered-By: Express para no dar información a atacantes
41
+ res.removeHeader('X-Powered-By');
42
+
43
+ // Sigo procesando
44
+ return next();
45
+ }
46
+
47
+ export function XssFilter(req: express.Request, res: express.Response, next: any) {
48
+
49
+ // Verifico si estoy en un browser IE viejo (el header no se usa en estos casos)
50
+ let matches: RegExpExecArray = /msie\s*(\d+)/i.exec(req.headers['user-agent']);
51
+
52
+ // Valor del header
53
+ let value: string;
54
+
55
+ // Segun el caso habilito el header o no el X-XSS-Protection
56
+ if (!matches || (parseFloat(matches[1]) >= 9))
57
+ value = '1; mode=block';
58
+ else
59
+ value = '0';
60
+
61
+ // Agrego el X-XSS-Protection para vitar reflected XSS (ejecucion de scripts injectados en el querystring de la página)
62
+ res.setHeader('X-XSS-Protection', value);
63
+
64
+ // Sigo procesando
65
+ return next();
66
+ }
67
+
68
+ export function IeNoOpen(req: express.Request, res: express.Response, next: any) {
69
+
70
+ // Agrego el X-Download-Options para evitar descargas inseguras en explorer
71
+ res.setHeader('X-Download-Options', 'noopen');
72
+
73
+ // Sigo procesando
74
+ return next();
75
+ }
76
+
77
+ export function HstsGuard(req: express.Request, res: express.Response, next: any) {
78
+
79
+ // Por defecto empezo con maxage 0, lo cual deshabilita el HSTS
80
+ let maxAge: string = '0';
81
+
82
+ // Si estoy en un dominio que tiene habilitado HTTPS seteo un año de HSTS
83
+ if (res.locals && res.locals.domain && res.locals.domain.hasHttps) maxAge = '31536000';
84
+
85
+ // Aplico el X-Frame-Options para indicar que la página solo se puede meter dentro de un iframe en el mismo origen (evitar clickjacking)
86
+ res.setHeader('Strict-Transport-Security', 'max-age=' + maxAge);
87
+
88
+ // Sigo procesando
89
+ return next();
90
+ }
@@ -0,0 +1,28 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDU+0V/p+RZFcXs
3
+ oev5nfRMEuo4B2LlWtDpiQqL3HVHSXZPyjNu5EVF5Nfid8elLjXOA6DAyPshdcSn
4
+ Uj1qWPDBCPNT3GL/qeJhHVe3SmIv2nDdVJ6UZvWv3+kZGaLXNsrkFA6zcj1i9Ac3
5
+ lGwcs2bNN5MUXGGggZVDRwdWam9f/uJZxuZptr5umyAO/FX1N0CZVIW3XN0PCPo/
6
+ b5JdYTS4Hrd0EK5nhbUPISOZc5+9PbX6LQd3i5aPPNxnraL4+p76l1Vy8jaD8Fl3
7
+ F8/1UB2V1UMqt6QqbumY61why9KNS44mzvSYnPgh/QV5Jsh7fSlZi4tzT11np5ed
8
+ u4bh5rHxAgMBAAECggEBALgEIhgZx4Hw/gFmJayWfOz9qsCeISRpQveEIEiXQf1F
9
+ y6NE4Qt+zxuEjcJuG2DsfDBzkgD/pXtTdYXb2JR6JAmk4hgi4qZi8eVWpOMIsa0G
10
+ 311cL2epTb2XiJ7XN4sbHFHTwp/opIFKtrGe24owtzG4Qqvk5bT4QS7Pv9c6PuCA
11
+ lTHUNc8Lc+mxswlERL6NEx2LwfJe0Pwu/OBNGkr1DsKtkIo9cGdWUNIjfGpFCK2v
12
+ IPUosZB5Xw0VzTDinEAybWoXGCLwu6+XXuYv6Mv8WxzC7oFA5OOM7DYNrU/QXGzB
13
+ IC71fbeCTcgX3ryvMKwQ9uxwxsCcbJqf5jm0NuCuzsECgYEA6YtLucK8xKeLIO6L
14
+ HQ36tzacpi4y4LjZ5DR2rmn7bZy8x+N3sQCirEaCZcxJxSm9JVv4sr4ZIgnpPdCo
15
+ 8usePGLhmB7tvVleuTZHwKM/4jB29jYe0Ew2t63IjxQGEqhuMFZJc98L49VkNv9G
16
+ AYBd6CyUrwDuniZPdNB1libsUs8CgYEA6XXTdpDV8Ec3y+9daTYl0LvqJkonumNZ
17
+ bzzEZfnWps9NBBK9ndLIcyclE9HuYS7GKLkR8MkqxYJEPNUoEsf9TyZWdj+BjMSh
18
+ 6JndX9mZbEEi7viUBo5Z+jSoZFJJM9zrMlb4UP8CjUWN/1rtYDY2wCN0D8y2VYoO
19
+ /+RfsIuk3z8CgYAzGBiPIX2vAIC9ybKBvsc1QitvZ/gVlhuFg7zbV7B8QKhEiw1q
20
+ mhr82cg5gUI6cnFBNSfp4xEYk1aGAZqU2r+YsoFsiIe2v1Cr8KYuDQky8St1nk2L
21
+ gMEP2mNgeh8CAftpc9dKFGhDhjIQnjSwq2bgHrDAwNFzpCoKAnlXSli1nQKBgGfW
22
+ JTi+ELmvI20MSNLL56PggLOJFgR7vcKRF5V3uvY0i7+9CiNRJiC5j28yV0FYSYDB
23
+ V+5tux1f5DPeZtV7p/n1Rk2Pz3Ip3w2SqfjA0tFoYz5Ax63m0LRNiXwdcTulDeM0
24
+ 9XspARyOjCrAaYX6dv2chzmjxpFjN2qvS7Q9WBaHAoGBAOF/78FN2FQ130xWL/xM
25
+ JfCSC2Ks2c7wdypxYyMf2rKmTG4/hwPSu+lbGRQggwiszBYHSgvYOsKJaoI3R0zO
26
+ O3LkbAphkrG7pr7jpv/vsyO06/SAEL6rnewlpb0aTTg1WMxK1tOy+nDhNtshEqPh
27
+ 0s0xAWLxb54b7Jb2J0+Us/kG
28
+ -----END PRIVATE KEY-----
@@ -0,0 +1,62 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIGIDCCBQigAwIBAgIQAk7pfq6PPfJcjk3VbUj1PDANBgkqhkiG9w0BAQsFADBN
3
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E
4
+ aWdpQ2VydCBTSEEyIFNlY3VyZSBTZXJ2ZXIgQ0EwHhcNMTgxMDE4MDAwMDAwWhcN
5
+ MTkxMjE4MTIwMDAwWjBWMQswCQYDVQQGEwJVWTETMBEGA1UEBxMKTW9udGV2aWRl
6
+ bzEWMBQGA1UEChMNVGVjbm9saW5rIFMuQTEaMBgGA1UEAwwRKi5pbmNvbmNlcnRj
7
+ Yy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDU+0V/p+RZFcXs
8
+ oev5nfRMEuo4B2LlWtDpiQqL3HVHSXZPyjNu5EVF5Nfid8elLjXOA6DAyPshdcSn
9
+ Uj1qWPDBCPNT3GL/qeJhHVe3SmIv2nDdVJ6UZvWv3+kZGaLXNsrkFA6zcj1i9Ac3
10
+ lGwcs2bNN5MUXGGggZVDRwdWam9f/uJZxuZptr5umyAO/FX1N0CZVIW3XN0PCPo/
11
+ b5JdYTS4Hrd0EK5nhbUPISOZc5+9PbX6LQd3i5aPPNxnraL4+p76l1Vy8jaD8Fl3
12
+ F8/1UB2V1UMqt6QqbumY61why9KNS44mzvSYnPgh/QV5Jsh7fSlZi4tzT11np5ed
13
+ u4bh5rHxAgMBAAGjggLxMIIC7TAfBgNVHSMEGDAWgBQPgGEcgjFh1S8o541GOLQs
14
+ 4cbZ4jAdBgNVHQ4EFgQU2CMQ0orM9d9s4mO93ea0Blw5lPEwLQYDVR0RBCYwJIIR
15
+ Ki5pbmNvbmNlcnRjYy5jb22CD2luY29uY2VydGNjLmNvbTAOBgNVHQ8BAf8EBAMC
16
+ BaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMGsGA1UdHwRkMGIwL6At
17
+ oCuGKWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9zc2NhLXNoYTItZzYuY3JsMC+g
18
+ LaArhilodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc3NjYS1zaGEyLWc2LmNybDBM
19
+ BgNVHSAERTBDMDcGCWCGSAGG/WwBATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3
20
+ dy5kaWdpY2VydC5jb20vQ1BTMAgGBmeBDAECAjB8BggrBgEFBQcBAQRwMG4wJAYI
21
+ KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBGBggrBgEFBQcwAoY6
22
+ aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMlNlY3VyZVNl
23
+ cnZlckNBLmNydDAMBgNVHRMBAf8EAjAAMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDw
24
+ AHYAu9nfvB+KcbWTlCOXqpJ7RzhXlQqrUugakJZkNo4e0YUAAAFmhZsJTAAABAMA
25
+ RzBFAiBugjf2/aPKsj9zjj5FKyilRuA26KfK09WuIGs666CItgIhAMLMMrsKyRjN
26
+ cuFVENQ+ClgiDytx4sziX76N8AGhMl7fAHYAh3W/51l8+IxDmV+9827/Vo1HVjb/
27
+ SrVgwbTq/16ggw8AAAFmhZsJTwAABAMARzBFAiEA8/65DlLI1OufHMKvTMiRZsxr
28
+ v+Uh67qjjMwF/o3iq3QCIB3QhkUT3jEUlsM6t+Bt/cjbuJMgsK++jzf5WP261uPw
29
+ MA0GCSqGSIb3DQEBCwUAA4IBAQBTDGp5lureeHX3lijjKUBpfnrYvbeQy2HAxxMj
30
+ kuFqNEZNV1IBKKID/73aNoArhh9LBpWKjb9/x33/uFJpYORmlLWiROucNtwCXG7a
31
+ W5Sl+vUMk1X8yjgRmUaL9rui36Uhr3AAusdwahZtHK/Whs9ADP3ckuJ95PZLee2f
32
+ Ko+JzfN4cDzspReDyMitF9HNlN8U0+Xqv71jIqn/DbaFpwll3UsgeRw2/3vMnF4h
33
+ NB7+ASXqubWzO23fS3Fwv2qOnr6e/3ZktAWyYH0pujwu92ZnatWlGGWkAIlfzRbp
34
+ xNveJht5bI1TZfNrH5KUmqznpU5o5xGq7SrqLmzzRzuDgtME
35
+ -----END CERTIFICATE-----
36
+ -----BEGIN CERTIFICATE-----
37
+ MIIElDCCA3ygAwIBAgIQAf2j627KdciIQ4tyS8+8kTANBgkqhkiG9w0BAQsFADBh
38
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
39
+ d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
40
+ QTAeFw0xMzAzMDgxMjAwMDBaFw0yMzAzMDgxMjAwMDBaME0xCzAJBgNVBAYTAlVT
41
+ MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxJzAlBgNVBAMTHkRpZ2lDZXJ0IFNIQTIg
42
+ U2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
43
+ ANyuWJBNwcQwFZA1W248ghX1LFy949v/cUP6ZCWA1O4Yok3wZtAKc24RmDYXZK83
44
+ nf36QYSvx6+M/hpzTc8zl5CilodTgyu5pnVILR1WN3vaMTIa16yrBvSqXUu3R0bd
45
+ KpPDkC55gIDvEwRqFDu1m5K+wgdlTvza/P96rtxcflUxDOg5B6TXvi/TC2rSsd9f
46
+ /ld0Uzs1gN2ujkSYs58O09rg1/RrKatEp0tYhG2SS4HD2nOLEpdIkARFdRrdNzGX
47
+ kujNVA075ME/OV4uuPNcfhCOhkEAjUVmR7ChZc6gqikJTvOX6+guqw9ypzAO+sf0
48
+ /RR3w6RbKFfCs/mC/bdFWJsCAwEAAaOCAVowggFWMBIGA1UdEwEB/wQIMAYBAf8C
49
+ AQAwDgYDVR0PAQH/BAQDAgGGMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYY
50
+ aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMHsGA1UdHwR0MHIwN6A1oDOGMWh0dHA6
51
+ Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwN6A1
52
+ oDOGMWh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RD
53
+ QS5jcmwwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
54
+ d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwHQYDVR0OBBYEFA+AYRyCMWHVLyjnjUY4tCzh
55
+ xtniMB8GA1UdIwQYMBaAFAPeUDVW0Uy7ZvCj4hsbw5eyPdFVMA0GCSqGSIb3DQEB
56
+ CwUAA4IBAQAjPt9L0jFCpbZ+QlwaRMxp0Wi0XUvgBCFsS+JtzLHgl4+mUwnNqipl
57
+ 5TlPHoOlblyYoiQm5vuh7ZPHLgLGTUq/sELfeNqzqPlt/yGFUzZgTHbO7Djc1lGA
58
+ 8MXW5dRNJ2Srm8c+cftIl7gzbckTB+6WohsYFfZcTEDts8Ls/3HB40f/1LkAtDdC
59
+ 2iDJ6m6K7hQGrn2iWZiIqBtvLfTyyRRfJs8sjX7tN8Cp1Tm5gr8ZDOo0rwAhaPit
60
+ c+LJMto4JQtV05od8GiG7S5BNO98pVAdvzr508EIDObtHopYJeS4d60tbvVS3bR0
61
+ j6tJLp07kzQoH3jOlOrHvdPJbRzeXDLz
62
+ -----END CERTIFICATE-----
@@ -0,0 +1,38 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es5",
4
+ "module": "commonjs",
5
+ "declaration": false,
6
+ "removeComments": true,
7
+ "noLib": false,
8
+ "lib": ["es2016", "dom"],
9
+ "emitDecoratorMetadata": true,
10
+ "experimentalDecorators": true,
11
+ "sourceMap": true,
12
+ "pretty": true,
13
+ "allowUnreachableCode": false,
14
+ "allowUnusedLabels": false,
15
+ "noImplicitAny": false,
16
+ "noImplicitReturns": true,
17
+ "noImplicitUseStrict": false,
18
+ "noFallthroughCasesInSwitch": true,
19
+ "allowSyntheticDefaultImports": true,
20
+ "typeRoots": [
21
+ "../../node_modules/@types",
22
+ "../../node_modules"
23
+ ],
24
+ "types": [
25
+ "core-js",
26
+ "node",
27
+ "express",
28
+ "jasmine",
29
+ "systemjs"
30
+ ]
31
+ },
32
+ "exclude": [
33
+ "node_modules",
34
+ "dist",
35
+ "src"
36
+ ],
37
+ "compileOnSave": false
38
+ }
@@ -0,0 +1,40 @@
1
+ import * as gulp from 'gulp';
2
+ import * as gulpLoadPlugins from 'gulp-load-plugins';
3
+ import { join } from 'path';
4
+
5
+ import { APP_CLIENT_SRC, TMP_CLIENT_DIR, TOOLS_DIR, BOOTSTRAP_MODULE_AOT, TEMPLATE_CONFIG } from '../config';
6
+ import { makeTsProject, TemplateLocalsBuilder } from '../utils';
7
+
8
+ const plugins = <any>gulpLoadPlugins();
9
+
10
+ const INLINE_OPTIONS = {
11
+ base: TMP_CLIENT_DIR,
12
+ useRelativePaths: true,
13
+ removeLineBreaks: true
14
+ };
15
+
16
+ /**
17
+ * Executes the build process, transpiling the TypeScript files for the production environment.
18
+ */
19
+ export = () => {
20
+
21
+ let tsProject = makeTsProject({}, APP_CLIENT_SRC);
22
+
23
+ let src = [
24
+ TOOLS_DIR + '/manual_typings/**/*.d.ts',
25
+ join(TMP_CLIENT_DIR, '**/*.ts'),
26
+ '!' + join(TMP_CLIENT_DIR, '/' + BOOTSTRAP_MODULE_AOT + '.ts'),
27
+ ];
28
+
29
+ let result = gulp.src(src)
30
+ .pipe(plugins.plumber())
31
+ .pipe(plugins.inlineNg2Template(INLINE_OPTIONS))
32
+ .pipe(tsProject())
33
+ .once('error', function () {
34
+ this.once('finish', () => process.exit(1));
35
+ });
36
+
37
+ return result.js
38
+ .pipe(plugins.template(new TemplateLocalsBuilder().withStringifiedSystemConfigDev().build(), TEMPLATE_CONFIG))
39
+ .pipe(gulp.dest(TMP_CLIENT_DIR));
40
+ };