Revize 37412123
Přidáno uživatelem Václav Jirák před téměř 6 roky(ů)
.gitignore | ||
---|---|---|
1 |
# Compiled class file |
|
2 |
*.class |
|
3 |
|
|
4 |
# Log file |
|
5 |
*.log |
|
6 |
|
|
7 |
# BlueJ files |
|
8 |
*.ctxt |
|
9 |
|
|
10 |
# Mobile Tools for Java (J2ME) |
|
11 |
.mtj.tmp/ |
|
12 |
|
|
13 |
# Package Files # |
|
14 |
*.jar |
|
15 |
*.war |
|
16 |
*.nar |
|
17 |
*.ear |
|
18 |
*.zip |
|
19 |
*.tar.gz |
|
20 |
*.rar |
|
21 |
|
|
22 |
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml |
|
23 |
hs_err_pid* |
|
24 |
|
|
25 |
# IntelliJ |
|
26 |
.idea/* |
|
27 |
*.iml |
|
28 |
|
backend/.gitignore | ||
---|---|---|
1 |
# Compiled class file |
|
2 |
target/* |
|
3 |
|
|
4 |
# Log file |
|
5 |
*.log |
|
6 |
|
|
7 |
# BlueJ files |
|
8 |
*.ctxt |
|
9 |
|
|
10 |
# Mobile Tools for Java (J2ME) |
|
11 |
.mtj.tmp/ |
|
12 |
|
|
13 |
# Package Files # |
|
14 |
*.jar |
|
15 |
*.war |
|
16 |
*.nar |
|
17 |
*.ear |
|
18 |
*.zip |
|
19 |
*.tar.gz |
|
20 |
*.rar |
|
21 |
|
|
22 |
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml |
|
23 |
hs_err_pid* |
|
24 |
|
|
25 |
# IntelliJ |
|
26 |
.idea/* |
|
27 |
*.iml |
|
28 |
|
backend/build.sh | ||
---|---|---|
1 |
mvn package && docker restart yamanager_app |
backend/docker-compose.yml | ||
---|---|---|
1 |
version: '3.1' |
|
2 |
|
|
3 |
services: |
|
4 |
|
|
5 |
app: |
|
6 |
image: openjdk:13-jdk-alpine |
|
7 |
container_name: yamanager_app |
|
8 |
volumes: |
|
9 |
- /tmp |
|
10 |
- ./target/ymanager-1.0-SNAPSHOT.jar:/app.jar |
|
11 |
entrypoint: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -Djava.security.egd=file:/dev/./urandom -jar /app.jar |
|
12 |
restart: always |
|
13 |
ports: |
|
14 |
- 9080:8080 |
|
15 |
- 6005:5005 |
|
16 |
depends_on: |
|
17 |
- db |
|
18 |
links: |
|
19 |
- db |
|
20 |
|
|
21 |
db: |
|
22 |
image: mariadb |
|
23 |
container_name: yamanager_db |
|
24 |
restart: always |
|
25 |
volumes: |
|
26 |
- ./init.sql:/docker-entrypoint-initdb.d/init.sql |
|
27 |
environment: |
|
28 |
MYSQL_ROOT_PASSWORD: root |
|
29 |
MYSQL_USER: user |
|
30 |
MYSQL_PASSWORD: passwd |
|
31 |
MYSQL_DATABASE: yamanager |
|
32 |
ports: |
|
33 |
- 3306:3306 |
backend/init.sql | ||
---|---|---|
1 |
CREATE TABLE test ( |
|
2 |
id MEDIUMINT NOT NULL AUTO_INCREMENT, |
|
3 |
message VARCHAR(255), |
|
4 |
PRIMARY KEY (id) |
|
5 |
); |
|
6 |
|
|
7 |
INSERT INTO test (message) VALUES ('test 1'); |
|
8 |
INSERT INTO test (message) VALUES ('test 2'); |
|
9 |
INSERT INTO test (message) VALUES ('test 3'); |
|
10 |
INSERT INTO test (message) VALUES ('test 4'); |
backend/install.sh | ||
---|---|---|
1 |
docker-compose up |
backend/pom.xml | ||
---|---|---|
1 |
<?xml version="1.0" encoding="UTF-8"?> |
|
2 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|
3 |
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
|
4 |
<modelVersion>4.0.0</modelVersion> |
|
5 |
|
|
6 |
<groupId>cz.zcu.fav.kiv</groupId> |
|
7 |
<artifactId>ymanager</artifactId> |
|
8 |
<version>1.0-SNAPSHOT</version> |
|
9 |
|
|
10 |
<parent> |
|
11 |
<groupId>org.springframework.boot</groupId> |
|
12 |
<artifactId>spring-boot-starter-parent</artifactId> |
|
13 |
<version>2.0.5.RELEASE</version> |
|
14 |
</parent> |
|
15 |
|
|
16 |
<properties> |
|
17 |
<java.version>1.8</java.version> |
|
18 |
</properties> |
|
19 |
|
|
20 |
<dependencies> |
|
21 |
<dependency> |
|
22 |
<groupId>org.springframework.boot</groupId> |
|
23 |
<artifactId>spring-boot-starter-web</artifactId> |
|
24 |
</dependency> |
|
25 |
|
|
26 |
<!-- DATABASE --> |
|
27 |
<dependency> |
|
28 |
<groupId>org.springframework.boot</groupId> |
|
29 |
<artifactId>spring-boot-starter-jdbc</artifactId> |
|
30 |
</dependency> |
|
31 |
<dependency> |
|
32 |
<groupId>org.mariadb.jdbc</groupId> |
|
33 |
<artifactId>mariadb-java-client</artifactId> |
|
34 |
<version>2.4.1</version> |
|
35 |
</dependency> |
|
36 |
|
|
37 |
|
|
38 |
<!-- TESTS --> |
|
39 |
<dependency> |
|
40 |
<groupId>org.springframework.boot</groupId> |
|
41 |
<artifactId>spring-boot-starter-test</artifactId> |
|
42 |
<scope>test</scope> |
|
43 |
</dependency> |
|
44 |
<dependency> |
|
45 |
<groupId>org.junit.jupiter</groupId> |
|
46 |
<artifactId>junit-jupiter-api</artifactId> |
|
47 |
<scope>test</scope> |
|
48 |
</dependency> |
|
49 |
<dependency> |
|
50 |
<groupId>org.mockito</groupId> |
|
51 |
<artifactId>mockito-core</artifactId> |
|
52 |
<version>2.25.1</version> |
|
53 |
<scope>test</scope> |
|
54 |
</dependency> |
|
55 |
</dependencies> |
|
56 |
|
|
57 |
|
|
58 |
<build> |
|
59 |
<plugins> |
|
60 |
<plugin> |
|
61 |
<groupId>org.springframework.boot</groupId> |
|
62 |
<artifactId>spring-boot-maven-plugin</artifactId> |
|
63 |
</plugin> |
|
64 |
</plugins> |
|
65 |
</build> |
|
66 |
|
|
67 |
</project> |
backend/src/main/java/cz/zcu/yamanager/Application.java | ||
---|---|---|
1 |
package cz.zcu.yamanager; |
|
2 |
|
|
3 |
import cz.zcu.yamanager.util.localization.Language; |
|
4 |
import cz.zcu.yamanager.util.localization.Message; |
|
5 |
import org.springframework.boot.SpringApplication; |
|
6 |
import org.springframework.boot.autoconfigure.SpringBootApplication; |
|
7 |
|
|
8 |
@SpringBootApplication |
|
9 |
public class Application { |
|
10 |
|
|
11 |
public static void main(String[] args) { |
|
12 |
|
|
13 |
Message.config() |
|
14 |
.addLanguage(Language.EN) |
|
15 |
.addLanguage(Language.CZ); |
|
16 |
|
|
17 |
SpringApplication.run(Application.class, args); |
|
18 |
} |
|
19 |
} |
backend/src/main/java/cz/zcu/yamanager/domain/Test.java | ||
---|---|---|
1 |
package cz.zcu.yamanager.domain; |
|
2 |
|
|
3 |
public class Test { |
|
4 |
|
|
5 |
private final long id; |
|
6 |
private final String message; |
|
7 |
|
|
8 |
public Test(long id, String message) { |
|
9 |
this.id = id; |
|
10 |
this.message = message; |
|
11 |
} |
|
12 |
|
|
13 |
public long getId() { |
|
14 |
return id; |
|
15 |
} |
|
16 |
|
|
17 |
public String getMessage() { |
|
18 |
return message; |
|
19 |
} |
|
20 |
|
|
21 |
@Override |
|
22 |
public String toString() { |
|
23 |
return String.format("Test[id=%d, message='%s']", id, message); |
|
24 |
} |
|
25 |
} |
backend/src/main/java/cz/zcu/yamanager/repository/HelloRepository.java | ||
---|---|---|
1 |
package cz.zcu.yamanager.repository; |
|
2 |
|
|
3 |
import cz.zcu.yamanager.domain.Test; |
|
4 |
import org.slf4j.Logger; |
|
5 |
import org.slf4j.LoggerFactory; |
|
6 |
import org.springframework.beans.factory.annotation.Autowired; |
|
7 |
import org.springframework.jdbc.core.JdbcTemplate; |
|
8 |
import org.springframework.stereotype.Repository; |
|
9 |
|
|
10 |
import java.util.List; |
|
11 |
|
|
12 |
@Repository |
|
13 |
public class HelloRepository { |
|
14 |
|
|
15 |
private static final Logger log = LoggerFactory.getLogger(HelloRepository.class); |
|
16 |
|
|
17 |
private final JdbcTemplate jdbc; |
|
18 |
|
|
19 |
@Autowired |
|
20 |
public HelloRepository(JdbcTemplate jdbc) { |
|
21 |
this.jdbc = jdbc; |
|
22 |
} |
|
23 |
|
|
24 |
public List<Test> all() { |
|
25 |
return jdbc.query("SELECT id, message FROM test", |
|
26 |
(rs, rowNum) -> new Test(rs.getLong("id"), rs.getString("message"))); |
|
27 |
} |
|
28 |
} |
backend/src/main/java/cz/zcu/yamanager/util/localization/Language.java | ||
---|---|---|
1 |
package cz.zcu.yamanager.util.localization; |
|
2 |
|
|
3 |
import java.util.Locale; |
|
4 |
|
|
5 |
public enum Language { |
|
6 |
|
|
7 |
EN (Locale.ENGLISH), |
|
8 |
CZ (new Locale("cs", "")), |
|
9 |
|
|
10 |
; |
|
11 |
private Locale locale; |
|
12 |
Language(Locale locale) { |
|
13 |
this.locale = locale; |
|
14 |
} |
|
15 |
|
|
16 |
public Locale getLocale() { |
|
17 |
return locale; |
|
18 |
} |
|
19 |
|
|
20 |
public static Language get(String lang) { |
|
21 |
return valueOf(lang.toUpperCase()); |
|
22 |
} |
|
23 |
} |
backend/src/main/java/cz/zcu/yamanager/util/localization/Message.java | ||
---|---|---|
1 |
package cz.zcu.yamanager.util.localization; |
|
2 |
|
|
3 |
import java.util.HashMap; |
|
4 |
import java.util.Map; |
|
5 |
import java.util.ResourceBundle; |
|
6 |
|
|
7 |
import static java.util.ResourceBundle.getBundle; |
|
8 |
|
|
9 |
public final class Message { |
|
10 |
|
|
11 |
private static Map<Language, ResourceBundle> BUNDLES; |
|
12 |
|
|
13 |
static { |
|
14 |
BUNDLES = new HashMap<>(); |
|
15 |
|
|
16 |
config().addLanguage(Language.EN); |
|
17 |
} |
|
18 |
|
|
19 |
public interface Config { |
|
20 |
Config addLanguage(Language language); |
|
21 |
} |
|
22 |
|
|
23 |
public static Config config() { |
|
24 |
return new Config() { |
|
25 |
|
|
26 |
@Override |
|
27 |
public Config addLanguage(Language language) { |
|
28 |
if (!BUNDLES.containsKey(language)) { |
|
29 |
BUNDLES.put(language, getBundle("Message", language.getLocale())); |
|
30 |
} |
|
31 |
return this; |
|
32 |
} |
|
33 |
}; |
|
34 |
} |
|
35 |
|
|
36 |
public static String getString(Language language, String key) { |
|
37 |
if (!BUNDLES.containsKey(language)) return language.name()+" SOURCE MISSING"; |
|
38 |
return BUNDLES.get(language).getString(key); |
|
39 |
} |
|
40 |
|
|
41 |
public static String getString(String key) { |
|
42 |
return getString(Language.EN, key); |
|
43 |
} |
|
44 |
} |
backend/src/main/java/cz/zcu/yamanager/ws/rest/HelloController.java | ||
---|---|---|
1 |
package cz.zcu.yamanager.ws.rest; |
|
2 |
|
|
3 |
import cz.zcu.yamanager.domain.Test; |
|
4 |
import cz.zcu.yamanager.repository.HelloRepository; |
|
5 |
import org.springframework.beans.factory.annotation.Autowired; |
|
6 |
import org.springframework.web.bind.annotation.RequestMapping; |
|
7 |
import org.springframework.web.bind.annotation.RequestParam; |
|
8 |
import org.springframework.web.bind.annotation.RestController; |
|
9 |
|
|
10 |
import java.util.List; |
|
11 |
|
|
12 |
import static cz.zcu.yamanager.util.localization.Language.get; |
|
13 |
import static cz.zcu.yamanager.util.localization.Message.getString; |
|
14 |
import static org.springframework.web.bind.annotation.RequestMethod.GET; |
|
15 |
|
|
16 |
@RestController |
|
17 |
public class HelloController { |
|
18 |
|
|
19 |
private final HelloRepository repository; |
|
20 |
|
|
21 |
@Autowired |
|
22 |
public HelloController(HelloRepository repository) { |
|
23 |
this.repository = repository; |
|
24 |
} |
|
25 |
|
|
26 |
@RequestMapping(value = "/hello", method=GET) |
|
27 |
public String hello(@RequestParam(value = "lang", required = false, defaultValue = "en") String lang) { |
|
28 |
return getString(get(lang), "hello"); |
|
29 |
} |
|
30 |
|
|
31 |
@RequestMapping(value = "/database", method=GET) |
|
32 |
public List<Test> database() { |
|
33 |
return repository.all(); |
|
34 |
} |
|
35 |
} |
backend/src/main/java/cz/zcu/yamanager/ws/rest/TestController.java | ||
---|---|---|
1 |
package cz.zcu.yamanager.ws.rest; |
|
2 |
|
|
3 |
import org.springframework.web.bind.annotation.RequestMapping; |
|
4 |
import org.springframework.web.bind.annotation.RestController; |
|
5 |
|
|
6 |
import static org.springframework.web.bind.annotation.RequestMethod.GET; |
|
7 |
import static org.springframework.web.bind.annotation.RequestMethod.POST; |
|
8 |
|
|
9 |
@RestController("/test") |
|
10 |
public class TestController { |
|
11 |
|
|
12 |
@RequestMapping(method=GET) |
|
13 |
public String get() { |
|
14 |
return "test GET"; |
|
15 |
} |
|
16 |
|
|
17 |
@RequestMapping(method=POST) |
|
18 |
public String post() { |
|
19 |
return "test POST"; |
|
20 |
} |
|
21 |
} |
backend/src/main/resources/Message_cs.properties | ||
---|---|---|
1 |
hello=Ahoj sv\u011Bte |
backend/src/main/resources/Message_en.properties | ||
---|---|---|
1 |
hello=Hello world |
backend/src/main/resources/application.properties | ||
---|---|---|
1 |
spring.datasource.url=jdbc:mariadb://db:3306/yamanager |
|
2 |
spring.datasource.username=user |
|
3 |
spring.datasource.password=passwd |
|
4 |
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver |
backend/src/test/java/cz/zcu/yamanager/util/localization/MessageTest.java | ||
---|---|---|
1 |
package cz.zcu.yamanager.util.localization; |
|
2 |
|
|
3 |
import org.junit.jupiter.api.Test; |
|
4 |
|
|
5 |
import static org.junit.jupiter.api.Assertions.*; |
|
6 |
|
|
7 |
class MessageTest { |
|
8 |
|
|
9 |
@Test |
|
10 |
void getString_inCzech_true() { |
|
11 |
Message.config().addLanguage(Language.CZ); |
|
12 |
|
|
13 |
assertEquals("český jazyk", Message.getString(Language.CZ, "hello")); |
|
14 |
} |
|
15 |
|
|
16 |
@Test |
|
17 |
void getString_inEnglish_true() { |
|
18 |
Message.config().addLanguage(Language.EN); |
|
19 |
|
|
20 |
assertEquals("english language", Message.getString(Language.EN, "hello")); |
|
21 |
} |
|
22 |
|
|
23 |
@Test |
|
24 |
void getString_general_true() { |
|
25 |
assertEquals("english language", Message.getString("hello")); |
|
26 |
} |
|
27 |
|
|
28 |
@Test |
|
29 |
void getString_multiple_true() { |
|
30 |
Message.config() |
|
31 |
.addLanguage(Language.CZ) |
|
32 |
.addLanguage(Language.EN); |
|
33 |
|
|
34 |
assertEquals("český jazyk", Message.getString(Language.CZ, "hello")); |
|
35 |
assertEquals("english language", Message.getString(Language.EN, "hello")); |
|
36 |
assertEquals("english language", Message.getString("hello")); |
|
37 |
} |
|
38 |
|
|
39 |
@Test |
|
40 |
void getString_missingSource_true() { |
|
41 |
assertEquals("CZ SOURCE MISSING", Message.getString(Language.CZ, "hello")); |
|
42 |
} |
|
43 |
} |
backend/src/test/java/cz/zcu/yamanager/ws/rest/HelloControllerTest.java | ||
---|---|---|
1 |
package cz.zcu.yamanager.ws.rest; |
|
2 |
|
|
3 |
import cz.zcu.yamanager.util.localization.Language; |
|
4 |
import cz.zcu.yamanager.util.localization.Message; |
|
5 |
import org.junit.jupiter.api.BeforeEach; |
|
6 |
import org.junit.jupiter.api.Test; |
|
7 |
|
|
8 |
import static org.junit.jupiter.api.Assertions.assertEquals; |
|
9 |
|
|
10 |
class HelloControllerTest { |
|
11 |
|
|
12 |
private HelloController helloController; |
|
13 |
|
|
14 |
@BeforeEach |
|
15 |
void setUp() { |
|
16 |
Message.config() |
|
17 |
.addLanguage(Language.EN) |
|
18 |
.addLanguage(Language.CZ); |
|
19 |
|
|
20 |
helloController = new HelloController(null); |
|
21 |
} |
|
22 |
|
|
23 |
@Test |
|
24 |
void hello_inCzech_true() { |
|
25 |
assertEquals("český jazyk", helloController.hello("cz")); |
|
26 |
} |
|
27 |
|
|
28 |
@Test |
|
29 |
void hello_inEnglish_true() { |
|
30 |
assertEquals("english language", helloController.hello("en")); |
|
31 |
} |
|
32 |
} |
backend/src/test/resources/Message_cs.properties | ||
---|---|---|
1 |
hello=\u010Desk\u00FD jazyk |
backend/src/test/resources/Message_en.properties | ||
---|---|---|
1 |
hello=english language |
build.sh | ||
---|---|---|
1 |
mvn package && docker restart yamanager_app |
docker-compose.yml | ||
---|---|---|
1 |
version: '3.1' |
|
2 |
|
|
3 |
services: |
|
4 |
|
|
5 |
app: |
|
6 |
image: openjdk:13-jdk-alpine |
|
7 |
container_name: yamanager_app |
|
8 |
volumes: |
|
9 |
- /tmp |
|
10 |
- ./target/ymanager-1.0-SNAPSHOT.jar:/app.jar |
|
11 |
entrypoint: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -Djava.security.egd=file:/dev/./urandom -jar /app.jar |
|
12 |
restart: always |
|
13 |
ports: |
|
14 |
- 9080:8080 |
|
15 |
- 6005:5005 |
|
16 |
depends_on: |
|
17 |
- db |
|
18 |
links: |
|
19 |
- db |
|
20 |
|
|
21 |
db: |
|
22 |
image: mariadb |
|
23 |
container_name: yamanager_db |
|
24 |
restart: always |
|
25 |
volumes: |
|
26 |
- ./init.sql:/docker-entrypoint-initdb.d/init.sql |
|
27 |
environment: |
|
28 |
MYSQL_ROOT_PASSWORD: root |
|
29 |
MYSQL_USER: user |
|
30 |
MYSQL_PASSWORD: passwd |
|
31 |
MYSQL_DATABASE: yamanager |
|
32 |
ports: |
|
33 |
- 3306:3306 |
frontend/.editorconfig | ||
---|---|---|
1 |
# Editor configuration, see https://editorconfig.org |
|
2 |
root = true |
|
3 |
|
|
4 |
[*] |
|
5 |
charset = utf-8 |
|
6 |
indent_style = space |
|
7 |
indent_size = 2 |
|
8 |
insert_final_newline = true |
|
9 |
trim_trailing_whitespace = true |
|
10 |
|
|
11 |
[*.md] |
|
12 |
max_line_length = off |
|
13 |
trim_trailing_whitespace = false |
frontend/.gitignore | ||
---|---|---|
1 |
# See http://help.github.com/ignore-files/ for more about ignoring files. |
|
2 |
|
|
3 |
# compiled output |
|
4 |
/dist |
|
5 |
/tmp |
|
6 |
/out-tsc |
|
7 |
# Only exists if Bazel was run |
|
8 |
/bazel-out |
|
9 |
|
|
10 |
# dependencies |
|
11 |
/node_modules |
|
12 |
|
|
13 |
# profiling files |
|
14 |
chrome-profiler-events.json |
|
15 |
speed-measure-plugin.json |
|
16 |
|
|
17 |
# IDEs and editors |
|
18 |
/.idea |
|
19 |
.project |
|
20 |
.classpath |
|
21 |
.c9/ |
|
22 |
*.launch |
|
23 |
.settings/ |
|
24 |
*.sublime-workspace |
|
25 |
|
|
26 |
# IDE - VSCode |
|
27 |
.vscode/* |
|
28 |
!.vscode/settings.json |
|
29 |
!.vscode/tasks.json |
|
30 |
!.vscode/launch.json |
|
31 |
!.vscode/extensions.json |
|
32 |
.history/* |
|
33 |
|
|
34 |
# misc |
|
35 |
/.sass-cache |
|
36 |
/connect.lock |
|
37 |
/coverage |
|
38 |
/libpeerconnection.log |
|
39 |
npm-debug.log |
|
40 |
yarn-error.log |
|
41 |
testem.log |
|
42 |
/typings |
|
43 |
|
|
44 |
# System Files |
|
45 |
.DS_Store |
|
46 |
Thumbs.db |
frontend/angular.json | ||
---|---|---|
1 |
{ |
|
2 |
"$schema": "./node_modules/@angular/cli/lib/config/schema.json", |
|
3 |
"version": 1, |
|
4 |
"newProjectRoot": "projects", |
|
5 |
"projects": { |
|
6 |
"ymanager-frontend": { |
|
7 |
"root": "", |
|
8 |
"sourceRoot": "src", |
|
9 |
"projectType": "application", |
|
10 |
"prefix": "app", |
|
11 |
"schematics": { |
|
12 |
"@schematics/angular:component": { |
|
13 |
"style": "sass" |
|
14 |
} |
|
15 |
}, |
|
16 |
"architect": { |
|
17 |
"build": { |
|
18 |
"builder": "@angular-devkit/build-angular:browser", |
|
19 |
"options": { |
|
20 |
"outputPath": "dist/ymanager-frontend", |
|
21 |
"index": "src/index.html", |
|
22 |
"main": "src/main.ts", |
|
23 |
"polyfills": "src/polyfills.ts", |
|
24 |
"tsConfig": "src/tsconfig.app.json", |
|
25 |
"assets": [ |
|
26 |
"src/favicon.ico", |
|
27 |
"src/assets" |
|
28 |
], |
|
29 |
"styles": [ |
|
30 |
"src/styles.sass" |
|
31 |
], |
|
32 |
"scripts": [], |
|
33 |
"es5BrowserSupport": true |
|
34 |
}, |
|
35 |
"configurations": { |
|
36 |
"production": { |
|
37 |
"fileReplacements": [ |
|
38 |
{ |
|
39 |
"replace": "src/environments/environment.ts", |
|
40 |
"with": "src/environments/environment.prod.ts" |
|
41 |
} |
|
42 |
], |
|
43 |
"optimization": true, |
|
44 |
"outputHashing": "all", |
|
45 |
"sourceMap": false, |
|
46 |
"extractCss": true, |
|
47 |
"namedChunks": false, |
|
48 |
"aot": true, |
|
49 |
"extractLicenses": true, |
|
50 |
"vendorChunk": false, |
|
51 |
"buildOptimizer": true, |
|
52 |
"budgets": [ |
|
53 |
{ |
|
54 |
"type": "initial", |
|
55 |
"maximumWarning": "2mb", |
|
56 |
"maximumError": "5mb" |
|
57 |
} |
|
58 |
] |
|
59 |
} |
|
60 |
} |
|
61 |
}, |
|
62 |
"serve": { |
|
63 |
"builder": "@angular-devkit/build-angular:dev-server", |
|
64 |
"options": { |
|
65 |
"browserTarget": "ymanager-frontend:build" |
|
66 |
}, |
|
67 |
"configurations": { |
|
68 |
"production": { |
|
69 |
"browserTarget": "ymanager-frontend:build:production" |
|
70 |
} |
|
71 |
} |
|
72 |
}, |
|
73 |
"extract-i18n": { |
|
74 |
"builder": "@angular-devkit/build-angular:extract-i18n", |
|
75 |
"options": { |
|
76 |
"browserTarget": "ymanager-frontend:build" |
|
77 |
} |
|
78 |
}, |
|
79 |
"test": { |
|
80 |
"builder": "@angular-devkit/build-angular:karma", |
|
81 |
"options": { |
|
82 |
"main": "src/test.ts", |
|
83 |
"polyfills": "src/polyfills.ts", |
|
84 |
"tsConfig": "src/tsconfig.spec.json", |
|
85 |
"karmaConfig": "src/karma.conf.js", |
|
86 |
"styles": [ |
|
87 |
"src/styles.sass" |
|
88 |
], |
|
89 |
"scripts": [], |
|
90 |
"assets": [ |
|
91 |
"src/favicon.ico", |
|
92 |
"src/assets" |
|
93 |
] |
|
94 |
} |
|
95 |
}, |
|
96 |
"lint": { |
|
97 |
"builder": "@angular-devkit/build-angular:tslint", |
|
98 |
"options": { |
|
99 |
"tsConfig": [ |
|
100 |
"src/tsconfig.app.json", |
|
101 |
"src/tsconfig.spec.json" |
|
102 |
], |
|
103 |
"exclude": [ |
|
104 |
"**/node_modules/**" |
|
105 |
] |
|
106 |
} |
|
107 |
} |
|
108 |
} |
|
109 |
}, |
|
110 |
"ymanager-frontend-e2e": { |
|
111 |
"root": "e2e/", |
|
112 |
"projectType": "application", |
|
113 |
"prefix": "", |
|
114 |
"architect": { |
|
115 |
"e2e": { |
|
116 |
"builder": "@angular-devkit/build-angular:protractor", |
|
117 |
"options": { |
|
118 |
"protractorConfig": "e2e/protractor.conf.js", |
|
119 |
"devServerTarget": "ymanager-frontend:serve" |
|
120 |
}, |
|
121 |
"configurations": { |
|
122 |
"production": { |
|
123 |
"devServerTarget": "ymanager-frontend:serve:production" |
|
124 |
} |
|
125 |
} |
|
126 |
}, |
|
127 |
"lint": { |
|
128 |
"builder": "@angular-devkit/build-angular:tslint", |
|
129 |
"options": { |
|
130 |
"tsConfig": "e2e/tsconfig.e2e.json", |
|
131 |
"exclude": [ |
|
132 |
"**/node_modules/**" |
|
133 |
] |
|
134 |
} |
|
135 |
} |
|
136 |
} |
|
137 |
} |
|
138 |
}, |
|
139 |
"defaultProject": "ymanager-frontend" |
|
140 |
} |
frontend/e2e/protractor.conf.js | ||
---|---|---|
1 |
// Protractor configuration file, see link for more information |
|
2 |
// https://github.com/angular/protractor/blob/master/lib/config.ts |
|
3 |
|
|
4 |
const { SpecReporter } = require('jasmine-spec-reporter'); |
|
5 |
|
|
6 |
exports.config = { |
|
7 |
allScriptsTimeout: 11000, |
|
8 |
specs: [ |
|
9 |
'./src/**/*.e2e-spec.ts' |
|
10 |
], |
|
11 |
capabilities: { |
|
12 |
'browserName': 'chrome' |
|
13 |
}, |
|
14 |
directConnect: true, |
|
15 |
baseUrl: 'http://localhost:4200/', |
|
16 |
framework: 'jasmine', |
|
17 |
jasmineNodeOpts: { |
|
18 |
showColors: true, |
|
19 |
defaultTimeoutInterval: 30000, |
|
20 |
print: function() {} |
|
21 |
}, |
|
22 |
onPrepare() { |
|
23 |
require('ts-node').register({ |
|
24 |
project: require('path').join(__dirname, './tsconfig.e2e.json') |
|
25 |
}); |
|
26 |
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); |
|
27 |
} |
|
28 |
}; |
frontend/e2e/src/app.e2e-spec.ts | ||
---|---|---|
1 |
import { AppPage } from './app.po'; |
|
2 |
import { browser, logging } from 'protractor'; |
|
3 |
|
|
4 |
describe('workspace-project App', () => { |
|
5 |
let page: AppPage; |
|
6 |
|
|
7 |
beforeEach(() => { |
|
8 |
page = new AppPage(); |
|
9 |
}); |
|
10 |
|
|
11 |
it('should display welcome message', () => { |
|
12 |
page.navigateTo(); |
|
13 |
expect(page.getTitleText()).toEqual('Welcome to ymanager-frontend!'); |
|
14 |
}); |
|
15 |
|
|
16 |
afterEach(async () => { |
|
17 |
// Assert that there are no errors emitted from the browser |
|
18 |
const logs = await browser.manage().logs().get(logging.Type.BROWSER); |
|
19 |
expect(logs).not.toContain(jasmine.objectContaining({ |
|
20 |
level: logging.Level.SEVERE, |
|
21 |
} as logging.Entry)); |
|
22 |
}); |
|
23 |
}); |
frontend/e2e/src/app.po.ts | ||
---|---|---|
1 |
import { browser, by, element } from 'protractor'; |
|
2 |
|
|
3 |
export class AppPage { |
|
4 |
navigateTo() { |
|
5 |
return browser.get(browser.baseUrl) as Promise<any>; |
|
6 |
} |
|
7 |
|
|
8 |
getTitleText() { |
|
9 |
return element(by.css('app-root h1')).getText() as Promise<string>; |
|
10 |
} |
|
11 |
} |
frontend/e2e/tsconfig.e2e.json | ||
---|---|---|
1 |
{ |
|
2 |
"extends": "../tsconfig.json", |
|
3 |
"compilerOptions": { |
|
4 |
"outDir": "../out-tsc/app", |
|
5 |
"module": "commonjs", |
|
6 |
"target": "es5", |
|
7 |
"types": [ |
|
8 |
"jasmine", |
|
9 |
"jasminewd2", |
|
10 |
"node" |
|
11 |
] |
|
12 |
} |
|
13 |
} |
frontend/install.sh | ||
---|---|---|
1 |
yarn install |
frontend/package-lock.json | ||
---|---|---|
1 |
{ |
|
2 |
"name": "ymanager-frontend", |
|
3 |
"version": "0.0.0", |
|
4 |
"lockfileVersion": 1, |
|
5 |
"requires": true, |
|
6 |
"dependencies": { |
|
7 |
"@angular-devkit/architect": { |
|
8 |
"version": "0.13.8", |
|
9 |
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.13.8.tgz", |
|
10 |
"integrity": "sha512-gxUs5rhnP576T8ZclKqxlspiChrqRtqaJo54wqNVFvYKEjRZKyMa+1AK6p0oD9zcIToEkcjknj3BbtQa27lLHg==", |
|
11 |
"dev": true, |
|
12 |
"requires": { |
|
13 |
"@angular-devkit/core": "7.3.8", |
|
14 |
"rxjs": "6.3.3" |
|
15 |
} |
|
16 |
}, |
|
17 |
"@angular-devkit/build-angular": { |
|
18 |
"version": "0.13.8", |
|
19 |
"resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.13.8.tgz", |
|
20 |
"integrity": "sha512-uRb8CKC0hUdcE+Fv2Ov9LJNelyjsiMuddBpo8pdTKCIHVVC6hvip9S/Z18Tvb207kKI3k7Dn+Ji1J63mCqmQzA==", |
|
21 |
"dev": true, |
|
22 |
"requires": { |
|
23 |
"@angular-devkit/architect": "0.13.8", |
|
24 |
"@angular-devkit/build-optimizer": "0.13.8", |
|
25 |
"@angular-devkit/build-webpack": "0.13.8", |
|
26 |
"@angular-devkit/core": "7.3.8", |
|
27 |
"@ngtools/webpack": "7.3.8", |
|
28 |
"ajv": "6.9.1", |
|
29 |
"autoprefixer": "9.4.6", |
|
30 |
"circular-dependency-plugin": "5.0.2", |
|
31 |
"clean-css": "4.2.1", |
|
32 |
"copy-webpack-plugin": "4.6.0", |
|
33 |
"file-loader": "3.0.1", |
|
34 |
"glob": "7.1.3", |
|
35 |
"istanbul-instrumenter-loader": "3.0.1", |
|
36 |
"karma-source-map-support": "1.3.0", |
|
37 |
"less": "3.9.0", |
|
38 |
"less-loader": "4.1.0", |
|
39 |
"license-webpack-plugin": "2.1.0", |
|
40 |
"loader-utils": "1.2.3", |
|
41 |
"mini-css-extract-plugin": "0.5.0", |
|
42 |
"minimatch": "3.0.4", |
|
43 |
"node-sass": "4.11.0", |
|
44 |
"open": "6.0.0", |
|
45 |
"parse5": "4.0.0", |
|
46 |
"postcss": "7.0.14", |
|
47 |
"postcss-import": "12.0.1", |
|
48 |
"postcss-loader": "3.0.0", |
|
49 |
"raw-loader": "1.0.0", |
|
50 |
"rxjs": "6.3.3", |
|
51 |
"sass-loader": "7.1.0", |
|
52 |
"semver": "5.6.0", |
|
53 |
"source-map-loader": "0.2.4", |
|
54 |
"source-map-support": "0.5.10", |
|
55 |
"speed-measure-webpack-plugin": "1.3.1", |
|
56 |
"stats-webpack-plugin": "0.7.0", |
|
57 |
"style-loader": "0.23.1", |
|
58 |
"stylus": "0.54.5", |
|
59 |
"stylus-loader": "3.0.2", |
|
60 |
"terser-webpack-plugin": "1.2.2", |
|
61 |
"tree-kill": "1.2.1", |
|
62 |
"webpack": "4.29.0", |
|
63 |
"webpack-dev-middleware": "3.5.1", |
|
64 |
"webpack-dev-server": "3.1.14", |
|
65 |
"webpack-merge": "4.2.1", |
|
66 |
"webpack-sources": "1.3.0", |
|
67 |
"webpack-subresource-integrity": "1.1.0-rc.6" |
|
68 |
} |
|
69 |
}, |
|
70 |
"@angular-devkit/build-optimizer": { |
|
71 |
"version": "0.13.8", |
|
72 |
"resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.13.8.tgz", |
|
73 |
"integrity": "sha512-RvYxtsdYuvpFb1iivVixylSVN/Q8LsQ449uYuqEe3OsDjQBvUVG2fMLPOQjmKWhi0NC9WSsNiUluxLDNdvd0Vw==", |
|
74 |
"dev": true, |
|
75 |
"requires": { |
|
76 |
"loader-utils": "1.2.3", |
|
77 |
"source-map": "0.5.6", |
|
78 |
"typescript": "3.2.4", |
|
79 |
"webpack-sources": "1.3.0" |
|
80 |
}, |
|
81 |
"dependencies": { |
|
82 |
"source-map": { |
|
83 |
"version": "0.5.6", |
|
84 |
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", |
|
85 |
"integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", |
|
86 |
"dev": true |
|
87 |
} |
|
88 |
} |
|
89 |
}, |
|
90 |
"@angular-devkit/build-webpack": { |
|
91 |
"version": "0.13.8", |
|
92 |
"resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.13.8.tgz", |
|
93 |
"integrity": "sha512-WMyn1vUHyx+VfJKgYuEHrICwQzPMDTaUNB1zlvzZt9gX/9H+XnetrebeWBZCITPXHBw/377oA6wmiHWJ0yaZRw==", |
|
94 |
"dev": true, |
|
95 |
"requires": { |
|
96 |
"@angular-devkit/architect": "0.13.8", |
|
97 |
"@angular-devkit/core": "7.3.8", |
|
98 |
"rxjs": "6.3.3" |
|
99 |
} |
|
100 |
}, |
|
101 |
"@angular-devkit/core": { |
|
102 |
"version": "7.3.8", |
|
103 |
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.8.tgz", |
|
104 |
"integrity": "sha512-3X9uzaZXFpm5o2TSzhD6wEOtVU32CgeytKjD1Scxj+uMMVo48SWLlKiFh312T+smI9ko7tOT8VqxglwYkWosgg==", |
|
105 |
"dev": true, |
|
106 |
"requires": { |
|
107 |
"ajv": "6.9.1", |
|
108 |
"chokidar": "2.0.4", |
|
109 |
"fast-json-stable-stringify": "2.0.0", |
|
110 |
"rxjs": "6.3.3", |
|
111 |
"source-map": "0.7.3" |
|
112 |
} |
|
113 |
}, |
|
114 |
"@angular-devkit/schematics": { |
|
115 |
"version": "7.3.8", |
|
116 |
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.3.8.tgz", |
|
117 |
"integrity": "sha512-mvaKoORZIaW/h0VNZ3IQWP0qThRCZRX6869FNlzV0jlW0mhn07XbiIGHCGGSCDRxS7qJ0VbuIVnKXntF+iDeWw==", |
|
118 |
"dev": true, |
|
119 |
"requires": { |
|
120 |
"@angular-devkit/core": "7.3.8", |
|
121 |
"rxjs": "6.3.3" |
|
122 |
} |
|
123 |
}, |
|
124 |
"@angular/animations": { |
|
125 |
"version": "7.2.13", |
|
126 |
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.2.13.tgz", |
|
127 |
"integrity": "sha512-Z0g0DthJnxTZ0dUc5BlojMq/0XIikhWzTqq0ym8w3G6jqBJD0OJ0jRCIfV0Leqlgzq6Jzvdrx0/JngBiKi5+uA==", |
|
128 |
"requires": { |
|
129 |
"tslib": "^1.9.0" |
|
130 |
} |
|
131 |
}, |
|
132 |
"@angular/cli": { |
|
133 |
"version": "7.3.8", |
|
134 |
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-7.3.8.tgz", |
|
135 |
"integrity": "sha512-5ldU1idvWstmRaavGZen9WRjfjIViERGt8NYuLLI7dgVLYOPF5TyFoTnpT5nxkiCopp4tPIcpbzPV394Bxmdtg==", |
|
136 |
"dev": true, |
|
137 |
"requires": { |
|
138 |
"@angular-devkit/architect": "0.13.8", |
|
139 |
"@angular-devkit/core": "7.3.8", |
|
140 |
"@angular-devkit/schematics": "7.3.8", |
|
141 |
"@schematics/angular": "7.3.8", |
|
142 |
"@schematics/update": "0.13.8", |
|
143 |
"@yarnpkg/lockfile": "1.1.0", |
|
144 |
"ini": "1.3.5", |
|
145 |
"inquirer": "6.2.1", |
|
146 |
"npm-package-arg": "6.1.0", |
|
147 |
"open": "6.0.0", |
|
148 |
"pacote": "9.4.0", |
|
149 |
"semver": "5.6.0", |
|
150 |
"symbol-observable": "1.2.0" |
|
151 |
} |
|
152 |
}, |
|
153 |
"@angular/common": { |
|
154 |
"version": "7.2.13", |
|
155 |
"resolved": "https://registry.npmjs.org/@angular/common/-/common-7.2.13.tgz", |
|
156 |
"integrity": "sha512-NYlzUkFVgjLg9VB6/lkd8ZV0ZezSiv9vlg+26wOyw7x+gahRrm5WMAGF7eBLrXoZPEaoOO0uhKWKo7oiA0aufA==", |
|
157 |
"requires": { |
|
158 |
"tslib": "^1.9.0" |
|
159 |
} |
|
160 |
}, |
|
161 |
"@angular/compiler": { |
|
162 |
"version": "7.2.13", |
|
163 |
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-7.2.13.tgz", |
|
164 |
"integrity": "sha512-k0IvaozNIlrPKUNF3M/NXMb/jfHBCDO9uRYA6h+84FFY4Y9po40c7YXfsfUxGKwouTWyemaxy9iXlLEnd3ELSQ==", |
|
165 |
"requires": { |
|
166 |
"tslib": "^1.9.0" |
|
167 |
} |
|
168 |
}, |
|
169 |
"@angular/compiler-cli": { |
|
170 |
"version": "7.2.13", |
|
171 |
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-7.2.13.tgz", |
|
172 |
"integrity": "sha512-UpA6V+GCY9qKj5j6tvzun2DJNjqRKjCrQgJqD5BIf4FTAKjVgqOvh++d23tbdltdjXlbHqUVRgfeXltbO91fWg==", |
|
173 |
"dev": true, |
|
174 |
"requires": { |
|
175 |
"canonical-path": "1.0.0", |
|
176 |
"chokidar": "^2.1.1", |
|
177 |
"convert-source-map": "^1.5.1", |
|
178 |
"dependency-graph": "^0.7.2", |
|
179 |
"magic-string": "^0.25.0", |
|
180 |
"minimist": "^1.2.0", |
|
181 |
"reflect-metadata": "^0.1.2", |
|
182 |
"shelljs": "^0.8.1", |
|
183 |
"source-map": "^0.6.1", |
|
184 |
"tslib": "^1.9.0", |
|
185 |
"yargs": "9.0.1" |
|
186 |
}, |
|
187 |
"dependencies": { |
|
188 |
"ansi-regex": { |
|
189 |
"version": "3.0.0", |
|
190 |
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", |
|
191 |
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", |
|
192 |
"dev": true |
|
193 |
}, |
|
194 |
"camelcase": { |
|
195 |
"version": "4.1.0", |
|
196 |
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", |
|
197 |
"integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", |
|
198 |
"dev": true |
|
199 |
}, |
|
200 |
"chokidar": { |
|
201 |
"version": "2.1.5", |
|
202 |
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", |
|
203 |
"integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", |
|
204 |
"dev": true, |
|
205 |
"requires": { |
|
206 |
"anymatch": "^2.0.0", |
|
207 |
"async-each": "^1.0.1", |
|
208 |
"braces": "^2.3.2", |
|
209 |
"fsevents": "^1.2.7", |
|
210 |
"glob-parent": "^3.1.0", |
|
211 |
"inherits": "^2.0.3", |
|
212 |
"is-binary-path": "^1.0.0", |
|
213 |
"is-glob": "^4.0.0", |
|
214 |
"normalize-path": "^3.0.0", |
|
215 |
"path-is-absolute": "^1.0.0", |
|
216 |
"readdirp": "^2.2.1", |
|
217 |
"upath": "^1.1.1" |
|
218 |
} |
|
219 |
}, |
|
220 |
"cross-spawn": { |
|
221 |
"version": "5.1.0", |
|
222 |
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", |
|
223 |
"integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", |
|
224 |
"dev": true, |
|
225 |
"requires": { |
|
226 |
"lru-cache": "^4.0.1", |
|
227 |
"shebang-command": "^1.2.0", |
|
228 |
"which": "^1.2.9" |
|
229 |
} |
|
230 |
}, |
|
231 |
"execa": { |
|
232 |
"version": "0.7.0", |
|
233 |
"resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", |
|
234 |
"integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", |
|
235 |
"dev": true, |
|
236 |
"requires": { |
|
237 |
"cross-spawn": "^5.0.1", |
|
238 |
"get-stream": "^3.0.0", |
|
239 |
"is-stream": "^1.1.0", |
|
240 |
"npm-run-path": "^2.0.0", |
|
241 |
"p-finally": "^1.0.0", |
|
242 |
"signal-exit": "^3.0.0", |
|
243 |
"strip-eof": "^1.0.0" |
|
244 |
} |
|
245 |
}, |
|
246 |
"is-fullwidth-code-point": { |
|
247 |
"version": "2.0.0", |
|
248 |
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", |
|
249 |
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", |
|
250 |
"dev": true |
|
251 |
}, |
|
252 |
"load-json-file": { |
|
253 |
"version": "2.0.0", |
|
254 |
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", |
|
255 |
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", |
|
256 |
"dev": true, |
|
257 |
"requires": { |
|
258 |
"graceful-fs": "^4.1.2", |
|
259 |
"parse-json": "^2.2.0", |
|
260 |
"pify": "^2.0.0", |
|
261 |
"strip-bom": "^3.0.0" |
|
262 |
} |
|
263 |
}, |
|
264 |
"mem": { |
|
265 |
"version": "1.1.0", |
|
266 |
"resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", |
|
267 |
"integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", |
|
268 |
"dev": true, |
|
269 |
"requires": { |
|
270 |
"mimic-fn": "^1.0.0" |
|
271 |
} |
|
272 |
}, |
|
273 |
"mimic-fn": { |
|
274 |
"version": "1.2.0", |
|
275 |
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", |
|
276 |
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", |
|
277 |
"dev": true |
|
278 |
}, |
|
279 |
"normalize-path": { |
|
280 |
"version": "3.0.0", |
|
281 |
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", |
|
282 |
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", |
|
283 |
"dev": true |
|
284 |
}, |
|
285 |
"os-locale": { |
|
286 |
"version": "2.1.0", |
|
287 |
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", |
|
288 |
"integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", |
|
289 |
"dev": true, |
|
290 |
"requires": { |
|
291 |
"execa": "^0.7.0", |
|
292 |
"lcid": "^1.0.0", |
|
293 |
"mem": "^1.1.0" |
|
294 |
} |
|
295 |
}, |
|
296 |
"path-type": { |
|
297 |
"version": "2.0.0", |
|
298 |
"resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", |
|
299 |
"integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", |
|
300 |
"dev": true, |
|
301 |
"requires": { |
|
302 |
"pify": "^2.0.0" |
|
303 |
} |
|
304 |
}, |
|
305 |
"pify": { |
|
306 |
"version": "2.3.0", |
|
307 |
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", |
|
308 |
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", |
|
309 |
"dev": true |
|
310 |
}, |
|
311 |
"read-pkg": { |
|
312 |
"version": "2.0.0", |
|
313 |
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", |
|
314 |
"integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", |
|
315 |
"dev": true, |
|
316 |
"requires": { |
|
317 |
"load-json-file": "^2.0.0", |
|
318 |
"normalize-package-data": "^2.3.2", |
|
319 |
"path-type": "^2.0.0" |
|
320 |
} |
|
321 |
}, |
|
322 |
"read-pkg-up": { |
|
323 |
"version": "2.0.0", |
|
324 |
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", |
|
325 |
"integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", |
|
326 |
"dev": true, |
|
327 |
"requires": { |
|
328 |
"find-up": "^2.0.0", |
|
329 |
"read-pkg": "^2.0.0" |
|
330 |
} |
|
331 |
}, |
|
332 |
"source-map": { |
|
333 |
"version": "0.6.1", |
|
334 |
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", |
|
335 |
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", |
|
336 |
"dev": true |
|
337 |
}, |
|
338 |
"string-width": { |
|
339 |
"version": "2.1.1", |
|
340 |
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", |
|
341 |
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", |
|
342 |
"dev": true, |
|
343 |
"requires": { |
|
344 |
"is-fullwidth-code-point": "^2.0.0", |
|
345 |
"strip-ansi": "^4.0.0" |
|
346 |
} |
|
347 |
}, |
|
348 |
"strip-ansi": { |
|
349 |
"version": "4.0.0", |
|
350 |
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", |
|
351 |
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", |
|
352 |
"dev": true, |
|
353 |
"requires": { |
|
354 |
"ansi-regex": "^3.0.0" |
|
355 |
} |
|
356 |
}, |
|
357 |
"strip-bom": { |
|
358 |
"version": "3.0.0", |
|
359 |
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", |
|
360 |
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", |
|
361 |
"dev": true |
|
362 |
}, |
|
363 |
"which-module": { |
|
364 |
"version": "2.0.0", |
|
365 |
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", |
|
366 |
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", |
|
367 |
"dev": true |
|
368 |
}, |
|
369 |
"y18n": { |
|
370 |
"version": "3.2.1", |
|
371 |
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", |
|
372 |
"integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", |
|
373 |
"dev": true |
|
374 |
}, |
|
375 |
"yargs": { |
|
376 |
"version": "9.0.1", |
|
377 |
"resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", |
|
378 |
"integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", |
|
379 |
"dev": true, |
|
380 |
"requires": { |
|
381 |
"camelcase": "^4.1.0", |
|
382 |
"cliui": "^3.2.0", |
|
383 |
"decamelize": "^1.1.1", |
|
384 |
"get-caller-file": "^1.0.1", |
|
385 |
"os-locale": "^2.0.0", |
|
386 |
"read-pkg-up": "^2.0.0", |
|
387 |
"require-directory": "^2.1.1", |
|
388 |
"require-main-filename": "^1.0.1", |
|
389 |
"set-blocking": "^2.0.0", |
|
390 |
"string-width": "^2.0.0", |
|
391 |
"which-module": "^2.0.0", |
|
392 |
"y18n": "^3.2.1", |
|
393 |
"yargs-parser": "^7.0.0" |
|
394 |
} |
|
395 |
}, |
|
396 |
"yargs-parser": { |
|
397 |
"version": "7.0.0", |
|
398 |
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", |
|
399 |
"integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", |
|
400 |
"dev": true, |
|
401 |
"requires": { |
|
402 |
"camelcase": "^4.1.0" |
|
403 |
} |
|
404 |
} |
|
405 |
} |
|
406 |
}, |
|
407 |
"@angular/core": { |
|
408 |
"version": "7.2.13", |
|
409 |
"resolved": "https://registry.npmjs.org/@angular/core/-/core-7.2.13.tgz", |
|
410 |
"integrity": "sha512-vHD69xxDDSQaE8KfHeY2STJSd3xgfsz3/meBCAnT+Bpq9LqxL8DuPlrkC0kyBa2vyj/BwPR3CJNTaQrZcszJ/w==", |
|
411 |
"requires": { |
|
412 |
"tslib": "^1.9.0" |
|
413 |
} |
|
414 |
}, |
|
415 |
"@angular/forms": { |
|
416 |
"version": "7.2.13", |
|
417 |
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.2.13.tgz", |
|
418 |
"integrity": "sha512-dBz7kYa8XoCKxZ+3EvYt6CxHZhM9Qbn3uYkLMsPA+NC6GtIt/tmYn1kNn+YWgVWZtWLvYRaOtYiCuMUJaRNQQw==", |
|
419 |
"requires": { |
|
420 |
"tslib": "^1.9.0" |
|
421 |
} |
|
422 |
}, |
|
423 |
"@angular/language-service": { |
|
424 |
"version": "7.2.13", |
|
425 |
"resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-7.2.13.tgz", |
|
426 |
"integrity": "sha512-1bNWJpwH9wB0JybkbjdQp9J4bGmGxJX6BG7Mz3188Wc4J+aNy696Gc6IaJs7tFK8VXAdJrTJ5jGr9Oiu+ATe8w==", |
|
427 |
"dev": true |
|
428 |
}, |
|
429 |
"@angular/platform-browser": { |
|
430 |
"version": "7.2.13", |
|
431 |
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-7.2.13.tgz", |
|
432 |
"integrity": "sha512-4n9De4sOwVoYHh6IGO2+UQIjABqGAXk4RdrEGpXqPBHCNO4sF43c2JsXbPTU4kjPVwTwposfLlKEOjTXfwxGow==", |
|
433 |
"requires": { |
|
434 |
"tslib": "^1.9.0" |
|
435 |
} |
|
436 |
}, |
|
437 |
"@angular/platform-browser-dynamic": { |
|
438 |
"version": "7.2.13", |
|
439 |
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.2.13.tgz", |
|
440 |
"integrity": "sha512-3+/BzrNLQ/Tn1hoPal3fvIeB3S/P3e00gHcH3oK+hfACYgWxLE1oIHL+w4NE2eTIJbHfphKhuascMaOH5WNlkg==", |
|
441 |
"requires": { |
|
442 |
"tslib": "^1.9.0" |
|
443 |
} |
|
444 |
}, |
|
445 |
"@angular/router": { |
|
446 |
"version": "7.2.13", |
|
447 |
"resolved": "https://registry.npmjs.org/@angular/router/-/router-7.2.13.tgz", |
|
448 |
"integrity": "sha512-pTdJT9TXk1A9YMa6C2zRRqLB4GPGMSik838P7n+yGrzhdybiudZU9T3egcxDRCWQMjsobVBRKLEUn405n3Hjgg==", |
|
449 |
"requires": { |
|
450 |
"tslib": "^1.9.0" |
|
451 |
} |
|
452 |
}, |
|
453 |
"@babel/code-frame": { |
|
454 |
"version": "7.0.0", |
|
455 |
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", |
|
456 |
"integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", |
|
457 |
"dev": true, |
|
458 |
"requires": { |
|
459 |
"@babel/highlight": "^7.0.0" |
|
460 |
} |
|
461 |
}, |
|
462 |
"@babel/generator": { |
|
463 |
"version": "7.4.0", |
|
464 |
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", |
|
465 |
"integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", |
|
466 |
"dev": true, |
|
467 |
"requires": { |
|
468 |
"@babel/types": "^7.4.0", |
|
469 |
"jsesc": "^2.5.1", |
|
470 |
"lodash": "^4.17.11", |
|
471 |
"source-map": "^0.5.0", |
|
472 |
"trim-right": "^1.0.1" |
|
473 |
}, |
|
474 |
"dependencies": { |
|
475 |
"jsesc": { |
|
476 |
"version": "2.5.2", |
|
477 |
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", |
|
478 |
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", |
|
479 |
"dev": true |
|
480 |
}, |
|
481 |
"source-map": { |
|
482 |
"version": "0.5.7", |
|
483 |
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", |
|
484 |
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", |
|
485 |
"dev": true |
|
486 |
} |
|
487 |
} |
|
488 |
}, |
|
489 |
"@babel/helper-function-name": { |
|
490 |
"version": "7.1.0", |
|
491 |
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", |
|
492 |
"integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", |
|
493 |
"dev": true, |
|
494 |
"requires": { |
|
495 |
"@babel/helper-get-function-arity": "^7.0.0", |
|
496 |
"@babel/template": "^7.1.0", |
|
497 |
"@babel/types": "^7.0.0" |
|
498 |
} |
|
499 |
}, |
|
500 |
"@babel/helper-get-function-arity": { |
|
501 |
"version": "7.0.0", |
|
502 |
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", |
|
503 |
"integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", |
|
504 |
"dev": true, |
|
505 |
"requires": { |
|
506 |
"@babel/types": "^7.0.0" |
|
507 |
} |
|
508 |
}, |
|
509 |
"@babel/helper-split-export-declaration": { |
|
510 |
"version": "7.4.0", |
|
511 |
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", |
|
512 |
"integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", |
|
513 |
"dev": true, |
|
514 |
"requires": { |
|
515 |
"@babel/types": "^7.4.0" |
|
516 |
} |
|
517 |
}, |
|
518 |
"@babel/highlight": { |
|
519 |
"version": "7.0.0", |
|
520 |
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", |
|
521 |
"integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", |
|
522 |
"dev": true, |
|
523 |
"requires": { |
|
524 |
"chalk": "^2.0.0", |
|
525 |
"esutils": "^2.0.2", |
|
526 |
"js-tokens": "^4.0.0" |
|
527 |
}, |
|
528 |
"dependencies": { |
|
529 |
"js-tokens": { |
|
530 |
"version": "4.0.0", |
Také k dispozici: Unified diff
Re #7264 Angular project initialized