Add support for absolute path import shortcuts.
This commit is contained in:
parent
81c6b05a42
commit
c0381a170e
@ -1 +0,0 @@
|
||||
// export * from 'password-toggle.directive';
|
@ -1,8 +0,0 @@
|
||||
import { PasswordToggleDirective } from './password-toggle.directive';
|
||||
|
||||
describe('PasswordToggleDirective', () => {
|
||||
it('should create an instance', () => {
|
||||
const directive = new PasswordToggleDirective();
|
||||
expect(directive).toBeTruthy();
|
||||
});
|
||||
});
|
@ -1,36 +0,0 @@
|
||||
import {Directive, ElementRef, Input, Renderer2} from '@angular/core';
|
||||
|
||||
@Directive({
|
||||
selector: '[appPasswordToggle]'
|
||||
})
|
||||
export class PasswordToggleDirective {
|
||||
@Input()
|
||||
id: string;
|
||||
iconId: string;
|
||||
|
||||
constructor(
|
||||
private elementRef: ElementRef,
|
||||
private renderer: Renderer2,
|
||||
) {
|
||||
this.renderer.listen(this.elementRef.nativeElement, 'click', () => {
|
||||
this.togglePasswordVisibility();
|
||||
});
|
||||
}
|
||||
|
||||
togglePasswordVisibility(): void {
|
||||
const password = document.getElementById(this.id);
|
||||
const icon = document.getElementById(this.iconId);
|
||||
// @ts-ignore
|
||||
if (password.type === 'password') {
|
||||
// @ts-ignore
|
||||
password.type = 'text';
|
||||
icon.classList.remove('fa-eye');
|
||||
icon.classList.add('fa-eye-slash');
|
||||
} else {
|
||||
// @ts-ignore
|
||||
password.type = 'password';
|
||||
icon.classList.remove('fa-eye-slash');
|
||||
icon.classList.add('fa-eye');
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { AuthGuard } from './auth.guard';
|
||||
import { AuthGuard } from '@app/_guards/auth.guard';
|
||||
|
||||
describe('AuthGuard', () => {
|
||||
let guard: AuthGuard;
|
||||
|
@ -1,2 +1,2 @@
|
||||
export * from './auth.guard';
|
||||
export * from './role.guard';
|
||||
export * from '@app/_guards/auth.guard';
|
||||
export * from '@app/_guards/role.guard';
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { RoleGuard } from './role.guard';
|
||||
import { RoleGuard } from '@app/_guards/role.guard';
|
||||
|
||||
describe('RoleGuard', () => {
|
||||
let guard: RoleGuard;
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { CustomErrorStateMatcher } from './custom-error-state-matcher';
|
||||
import { CustomErrorStateMatcher } from '@app/_helpers/custom-error-state-matcher';
|
||||
|
||||
describe('CustomErrorStateMatcher', () => {
|
||||
it('should create an instance', () => {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Custom.Validator } from './custom.validator';
|
||||
import { CustomValidator } from '@app/_helpers/custom.validator';
|
||||
|
||||
describe('Custom.Validator', () => {
|
||||
it('should create an instance', () => {
|
||||
expect(new Custom.Validator()).toBeTruthy();
|
||||
expect(new CustomValidator()).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ErrorInterceptor } from './error.interceptor';
|
||||
import { ErrorInterceptor } from '@app/_helpers/error.interceptor';
|
||||
|
||||
describe('ErrorInterceptor', () => {
|
||||
beforeEach(() => TestBed.configureTestingModule({
|
||||
|
@ -1,4 +1,5 @@
|
||||
export * from './custom.validator';
|
||||
export * from './error.interceptor';
|
||||
export * from './custom-error-state-matcher';
|
||||
export * from './unsafe-key-store';
|
||||
export * from '@app/_helpers/custom.validator';
|
||||
export * from '@app/_helpers/error.interceptor';
|
||||
export * from '@app/_helpers/custom-error-state-matcher';
|
||||
export * from '@app/_helpers/unsafe-key-store';
|
||||
export * from '@app/_helpers/pgp-key-store';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { UnsafeKeyStore } from './unsafe-key-store';
|
||||
import { UnsafeKeyStore } from '@app/_helpers/unsafe-key-store';
|
||||
|
||||
describe('UnsafeKeyStore', () => {
|
||||
it('should create an instance', () => {
|
||||
|
@ -1,5 +1,5 @@
|
||||
// import * as openpgp from '../../assets/js/openpgp.min.js';
|
||||
const openpgp = require('../../assets/js/openpgp.min.js');
|
||||
// import * as openpgp from '@src/assets/js/openpgp.min.js';
|
||||
const openpgp = require('@src/assets/js/openpgp.min.js');
|
||||
|
||||
export function UnsafeKeyStore(): void {
|
||||
this.key = undefined;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { AuthService } from './auth.service';
|
||||
import { AuthService } from '@app/_services/auth.service';
|
||||
|
||||
describe('AuthService', () => {
|
||||
let service: AuthService;
|
||||
|
@ -1 +1 @@
|
||||
export * from './auth.service';
|
||||
export * from '@app/_services/auth.service';
|
||||
|
@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
|
||||
const routes: Routes = [
|
||||
{ path: 'auth', loadChildren: () => import('./auth/auth.module').then(m => m.AuthModule) },
|
||||
{ path: 'auth', loadChildren: () => import('@app/auth/auth.module').then(m => m.AuthModule) },
|
||||
{ path: '**', redirectTo: 'auth', pathMatch: 'full' }
|
||||
];
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
import { RouterTestingModule } from '@angular/router/testing';
|
||||
import { AppComponent } from './app.component';
|
||||
import { AppComponent } from '@app/app.component';
|
||||
|
||||
describe('AppComponent', () => {
|
||||
beforeEach(async () => {
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { Component } from '@angular/core';
|
||||
import {AuthService} from '@app/_services';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
@ -7,4 +8,8 @@ import { Component } from '@angular/core';
|
||||
})
|
||||
export class AppComponent {
|
||||
title = 'cic-staff-client';
|
||||
|
||||
constructor(private authService: AuthService) {
|
||||
this.authService.getPublicKeys().then();
|
||||
}
|
||||
}
|
||||
|
@ -1,22 +1,23 @@
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { NgModule } from '@angular/core';
|
||||
|
||||
import { AppRoutingModule } from './app-routing.module';
|
||||
import { AppComponent } from './app.component';
|
||||
import { PasswordToggleDirective } from './_directives/password-toggle.directive';
|
||||
import { AppRoutingModule } from '@app/app-routing.module';
|
||||
import { AppComponent } from '@app/app.component';
|
||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||
import {HttpClientModule} from '@angular/common/http';
|
||||
import {MutablePgpKeyStore} from '@app/_helpers';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent,
|
||||
PasswordToggleDirective
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
AppRoutingModule,
|
||||
BrowserAnimationsModule
|
||||
BrowserAnimationsModule,
|
||||
HttpClientModule
|
||||
],
|
||||
providers: [],
|
||||
providers: [MutablePgpKeyStore],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
export class AppModule { }
|
||||
|
@ -1 +0,0 @@
|
||||
// export * from 'password-toggle.directive';
|
@ -1,8 +1,12 @@
|
||||
import { PasswordToggleDirective } from './password-toggle.directive';
|
||||
import { PasswordToggleDirective } from '@app/auth/_directives/password-toggle.directive';
|
||||
import {ElementRef, Renderer2} from '@angular/core';
|
||||
|
||||
let elementRef: ElementRef;
|
||||
let renderer: Renderer2;
|
||||
|
||||
describe('PasswordToggleDirective', () => {
|
||||
it('should create an instance', () => {
|
||||
const directive = new PasswordToggleDirective();
|
||||
const directive = new PasswordToggleDirective(elementRef, renderer);
|
||||
expect(directive).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
|
||||
import { AuthComponent } from './auth.component';
|
||||
import { AuthComponent } from '@app/auth/auth.component';
|
||||
|
||||
const routes: Routes = [
|
||||
{ path: '', component: AuthComponent },
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { AuthComponent } from './auth.component';
|
||||
import { AuthComponent } from '@app/auth/auth.component';
|
||||
|
||||
describe('AuthComponent', () => {
|
||||
let component: AuthComponent;
|
||||
|
@ -1,7 +1,7 @@
|
||||
import {AfterViewInit, Component, OnInit} from '@angular/core';
|
||||
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
|
||||
import {CustomErrorStateMatcher, CustomValidator} from '../_helpers';
|
||||
import {AuthService} from '../_services';
|
||||
import {CustomErrorStateMatcher} from '@app/_helpers';
|
||||
import {AuthService} from '@app/_services';
|
||||
|
||||
@Component({
|
||||
selector: 'app-auth',
|
||||
|
@ -1,20 +1,20 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
|
||||
import { AuthRoutingModule } from './auth-routing.module';
|
||||
import { AuthComponent } from './auth.component';
|
||||
import { AuthRoutingModule } from '@app/auth/auth-routing.module';
|
||||
import { AuthComponent } from '@app/auth/auth.component';
|
||||
import {ReactiveFormsModule} from '@angular/forms';
|
||||
import {PasswordToggleDirective} from './_directives/password-toggle.directive';
|
||||
import {PasswordToggleDirective} from '@app/auth/_directives/password-toggle.directive';
|
||||
import {MatCardModule} from '@angular/material/card';
|
||||
import {MatSelectModule} from '@angular/material/select';
|
||||
import {MatInputModule} from '@angular/material/input';
|
||||
import {MatButtonModule} from '@angular/material/button';
|
||||
import {MatRippleModule} from '@angular/material/core';
|
||||
// import {PasswordToggleDirective} from '../_directives/password-toggle.directive';
|
||||
import {AddPublicKeysComponent} from '@app/auth/add-public-keys/add-public-keys.component';
|
||||
|
||||
|
||||
@NgModule({
|
||||
declarations: [AuthComponent, PasswordToggleDirective],
|
||||
declarations: [AuthComponent, PasswordToggleDirective, AddPublicKeysComponent],
|
||||
imports: [
|
||||
CommonModule,
|
||||
AuthRoutingModule,
|
||||
@ -24,7 +24,6 @@ import {MatRippleModule} from '@angular/material/core';
|
||||
MatInputModule,
|
||||
MatButtonModule,
|
||||
MatRippleModule,
|
||||
// PasswordToggleDirective
|
||||
]
|
||||
})
|
||||
export class AuthModule { }
|
||||
|
@ -1,4 +1,4 @@
|
||||
import {hobaResult, hobaToSign} from "./hoba.js";
|
||||
import {hobaResult, hobaToSign} from "@src/assets/js/hoba.js";
|
||||
|
||||
const alg = '969';
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
export const environment = {
|
||||
production: true
|
||||
production: true,
|
||||
cicMetaUrl: 'http://localhost:63380',
|
||||
publicKeysUrl: 'http://localhost:8000'
|
||||
};
|
||||
|
@ -3,7 +3,9 @@
|
||||
// The list of file replacements can be found in `angular.json`.
|
||||
|
||||
export const environment = {
|
||||
production: false
|
||||
production: false,
|
||||
cicMetaUrl: 'http://localhost:63380',
|
||||
publicKeysUrl: 'http://localhost:8000'
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -2,7 +2,7 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CicStaffClient</title>
|
||||
<title>CICADA</title>
|
||||
<base href="/">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||
@ -13,7 +13,7 @@
|
||||
</head>
|
||||
<body class="mat-typography">
|
||||
<app-root></app-root>
|
||||
<script async src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script async src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
|
||||
<script async src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
|
@ -3,6 +3,10 @@
|
||||
"compileOnSave": false,
|
||||
"compilerOptions": {
|
||||
"baseUrl": "./",
|
||||
"paths": {
|
||||
"@src/*": ["src/*"],
|
||||
"@app/*": ["src/app/*"]
|
||||
},
|
||||
"outDir": "./dist/out-tsc",
|
||||
"sourceMap": true,
|
||||
"declaration": false,
|
||||
|
Loading…
Reference in New Issue
Block a user