intermediate-component-sa 1.0.4 → 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.
- package/CHANGELOG.md +11 -0
- package/README.md +1 -20
- package/build-dev.bat +2 -0
- package/build-prod-aot.bat +2 -0
- package/build-prod-rollup-aot.bat +2 -0
- package/build-prod.bat +2 -0
- package/config.ts +4 -0
- package/gulpfile.ts +172 -0
- package/index.js +10 -1
- package/karma.conf.js +124 -0
- package/package.json +340 -15
- package/postgrator-test.json +9 -0
- package/postgrator.json +9 -0
- package/src/app.server.ts +4 -0
- package/src/client/app/app.component.ts +37 -0
- package/src/client/app/app.html +6 -0
- package/src/client/app/app.module.ts +36 -0
- package/src/client/app/app.routing.ts +7 -0
- package/src/client/app/hot_loader_main.ts +14 -0
- package/src/client/app/main-aot.ts +8 -0
- package/src/client/app/main.ts +8 -0
- package/src/client/app/rxjs-operators.ts +15 -0
- package/src/client/index.html +90 -0
- package/src/client/tsconfig.json +44 -0
- package/src/server/config/app.config.ts +57 -0
- package/src/server/config/jwt.config.ts +4 -0
- package/src/server/config/logger.config.ts +161 -0
- package/src/server/config/mssql.config.ts +30 -0
- package/src/server/config/redis.config.ts +10 -0
- package/src/server/config/server.config.ts +20 -0
- package/src/server/config/templates.config.ts +41 -0
- package/src/server/crypt.ts +37 -0
- package/src/server/customRequest.ts +609 -0
- package/src/server/index.ts +231 -0
- package/src/server/interfaces/cleaner.interface.ts +3 -0
- package/src/server/interfaces/supervisor.interface.ts +3 -0
- package/src/server/routes-centralized.ts +36 -0
- package/src/server/routes.ts +6 -0
- package/src/server/services/index.ts +10 -0
- package/src/server/services/routes.service.ts +11 -0
- package/src/server/shared/file-manager.ts +1007 -0
- package/src/server/shared/http.shared.ts +49 -0
- package/src/server/shared/promises.shared.ts +13 -0
- package/src/server/shared/security.shared.ts +90 -0
- package/src/server/ssl/star_inconcertcc_com.key +28 -0
- package/src/server/ssl/star_inconcertcc_com.pem +62 -0
- package/src/server/tsconfig.json +38 -0
- package/tools/build.js.prod.ts +40 -0
- package/tools/config/project.config.ts +718 -0
- package/tools/config.ts +4 -0
- package/tools/database/SchemaZen.exe +0 -0
- package/tools/database/generate-all-data-scripts.bat +32 -0
- package/tools/database/generate-database-scripts.bat +36 -0
- package/tools/debug.ts +17 -0
- package/tools/env/base.ts +8 -0
- package/tools/env/dev.ts +9 -0
- package/tools/env/env-config.interface.ts +1 -0
- package/tools/env/prod.ts +10 -0
- package/tools/manual_typings/project/sample.package.d.ts +3 -0
- package/tools/manual_typings/seed/angular2-hot-loader.d.ts +9 -0
- package/tools/manual_typings/seed/autoprefixer.d.ts +13 -0
- package/tools/manual_typings/seed/colorguard.d.ts +15 -0
- package/tools/manual_typings/seed/connect-livereload.d.ts +5 -0
- package/tools/manual_typings/seed/cssnano.d.ts +18 -0
- package/tools/manual_typings/seed/doiuse.d.ts +16 -0
- package/tools/manual_typings/seed/express-history-api-fallback.d.ts +18 -0
- package/tools/manual_typings/seed/istream.d.ts +10 -0
- package/tools/manual_typings/seed/karma.d.ts +12 -0
- package/tools/manual_typings/seed/merge-stream.d.ts +8 -0
- package/tools/manual_typings/seed/open.d.ts +8 -0
- package/tools/manual_typings/seed/postcss-reporter.d.ts +20 -0
- package/tools/manual_typings/seed/slash.d.ts +5 -0
- package/tools/manual_typings/seed/stylelint.d.ts +16 -0
- package/tools/manual_typings/seed/systemjs-builder.d.ts +10 -0
- package/tools/manual_typings/seed/tildify.d.ts +5 -0
- package/tools/manual_typings/seed/tiny-lr.d.ts +10 -0
- package/tools/manual_typings/seed/walk.d.ts +10 -0
- package/tools/scripts/install.speech-analytic.sh +35 -0
- package/tools/tasks/build.app.server.ts +57 -0
- package/tools/tasks/build.assets.dev.ts +19 -0
- package/tools/tasks/build.assets.prod.ts +31 -0
- package/tools/tasks/build.bundles.app.aot.ts +31 -0
- package/tools/tasks/build.bundles.app.rollup.aot.ts +101 -0
- package/tools/tasks/build.bundles.app.ts +31 -0
- package/tools/tasks/build.bundles.ts +45 -0
- package/tools/tasks/build.database.scripts.runner.ts +137 -0
- package/tools/tasks/build.database.scripts.ts +27 -0
- package/tools/tasks/build.flags.ts +9 -0
- package/tools/tasks/build.fonts.ts +9 -0
- package/tools/tasks/build.html_css.ts +126 -0
- package/tools/tasks/build.index.dev.ts +68 -0
- package/tools/tasks/build.index.prod.ts +64 -0
- package/tools/tasks/build.js.dev.ts +66 -0
- package/tools/tasks/build.js.prod.aot.ts +44 -0
- package/tools/tasks/build.js.prod.rollup.aot.ts +50 -0
- package/tools/tasks/build.js.prod.ts +40 -0
- package/tools/tasks/build.packages.prod.ts +19 -0
- package/tools/tasks/build.server.dev.ts +59 -0
- package/tools/tasks/build.server.prod.ts +31 -0
- package/tools/tasks/build.server.statics.ts +24 -0
- package/tools/tasks/build.skins.ts +51 -0
- package/tools/tasks/build.sme.prod.aot.ts +6 -0
- package/tools/tasks/build.sme.prod.rollup.aot.ts +6 -0
- package/tools/tasks/build.sme.prod.ts +6 -0
- package/tools/tasks/build.tar.prod.ts +17 -0
- package/tools/tasks/build.test.database.scripts.ts +52 -0
- package/tools/tasks/clean.dev.ts +7 -0
- package/tools/tasks/clean.prod.ts +7 -0
- package/tools/tasks/compile.ahead.prod.ts +65 -0
- package/tools/tasks/copy.client.js.prod.rollup.aot.ts +33 -0
- package/tools/tasks/copy.client.js.prod.ts +18 -0
- package/tools/tasks/copy.server.assets.ts +38 -0
- package/tools/tasks/copy.server.js.prod.ts +16 -0
- package/tools/tasks/css-lint.ts +58 -0
- package/tools/tasks/e2e.ts +32 -0
- package/tools/tasks/karma.run.ts +18 -0
- package/tools/tasks/karma.watch.ts +9 -0
- package/tools/tasks/minify.server.statics.ts +52 -0
- package/tools/tasks/server.prod.ts +6 -0
- package/tools/tasks/server.start.ts +6 -0
- package/tools/tasks/test.database.ts +6 -0
- package/tools/tasks/transpile.bundles.rollup.aot.ts +43 -0
- package/tools/tasks/tslint.ts +64 -0
- package/tools/tasks/watch.file.changes.dev.ts +37 -0
- package/tools/tasks/watch.key.press.dev.ts +116 -0
- package/tools/tasks/webdriver.ts +6 -0
- package/tools/utils/project/sample_util.ts +18 -0
- package/tools/utils/project.utils.ts +4 -0
- package/tools/utils/seed/build_optimizer.ts +26 -0
- package/tools/utils/seed/clean.ts +35 -0
- package/tools/utils/seed/code_change_tools.ts +38 -0
- package/tools/utils/seed/karma.start.ts +10 -0
- package/tools/utils/seed/server.ts +43 -0
- package/tools/utils/seed/sme.ts +51 -0
- package/tools/utils/seed/tasks_tools.ts +70 -0
- package/tools/utils/seed/template_locals.ts +64 -0
- package/tools/utils/seed/tsproject.ts +25 -0
- package/tools/utils/seed.utils.ts +11 -0
- package/tools/utils.ts +5 -0
- package/tsconfig.json +33 -0
- package/tslint.json +120 -0
- 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
|
+
};
|