Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
mycard
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
syntax_j
mycard
Commits
56940564
Commit
56940564
authored
Apr 21, 2017
by
神楽坂玲奈
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
改了好多东西?
parent
ff09c0dd
Changes
23
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
188 additions
and
152 deletions
+188
-152
app/app.module.ts
app/app.module.ts
+5
-5
app/candy/candy.component.ts
app/candy/candy.component.ts
+10
-5
app/community/community.component.css
app/community/community.component.css
+6
-3
app/community/community.component.html
app/community/community.component.html
+0
-1
app/community/community.component.ts
app/community/community.component.ts
+8
-4
app/cube-actions/cube-actions.component.ts
app/cube-actions/cube-actions.component.ts
+1
-2
app/cube-detail/cube-detail.component.ts
app/cube-detail/cube-detail.component.ts
+25
-17
app/cubes.service.ts
app/cubes.service.ts
+1
-5
app/electron-schema.ts
app/electron-schema.ts
+0
-44
app/lobby/lobby.component.html
app/lobby/lobby.component.html
+9
-9
app/lobby/lobby.component.ts
app/lobby/lobby.component.ts
+29
-23
app/login/login.component.css
app/login/login.component.css
+0
-5
app/login/login.component.html
app/login/login.component.html
+0
-2
app/login/login.component.ts
app/login/login.component.ts
+11
-8
app/moecube/moecube.component.html
app/moecube/moecube.component.html
+18
-8
app/moecube/moecube.component.ts
app/moecube/moecube.component.ts
+1
-0
app/profile/profile.component.css
app/profile/profile.component.css
+0
-5
app/profile/profile.component.html
app/profile/profile.component.html
+0
-1
app/profile/profile.component.ts
app/profile/profile.component.ts
+4
-2
app/routing.sevices.ts
app/routing.sevices.ts
+46
-0
package.json
package.json
+4
-0
systemjs.config.js
systemjs.config.js
+7
-1
tsconfig.json
tsconfig.json
+3
-2
No files found.
app/app.module.ts
View file @
56940564
...
@@ -13,7 +13,6 @@ import { CubesService } from './cubes.service';
...
@@ -13,7 +13,6 @@ import { CubesService } from './cubes.service';
import
{
SettingsService
}
from
'
./settings.sevices
'
;
import
{
SettingsService
}
from
'
./settings.sevices
'
;
import
{
LoginService
}
from
'
./login.service
'
;
import
{
LoginService
}
from
'
./login.service
'
;
import
{
DownloadService
}
from
'
./download.service
'
;
import
{
DownloadService
}
from
'
./download.service
'
;
import
{
AppRoutingModule
}
from
'
./app-routing.module
'
;
import
{
AuthGuard
}
from
'
./auth.guard
'
;
import
{
AuthGuard
}
from
'
./auth.guard
'
;
import
{
ProgressSpinnerComponent
}
from
'
./progress-spinner/progress-spinner.component
'
;
import
{
ProgressSpinnerComponent
}
from
'
./progress-spinner/progress-spinner.component
'
;
import
{
CommunityComponent
}
from
'
./community/community.component
'
;
import
{
CommunityComponent
}
from
'
./community/community.component
'
;
...
@@ -26,13 +25,13 @@ import { CubeDescriptionComponent } from './cube-description/cube-description.co
...
@@ -26,13 +25,13 @@ import { CubeDescriptionComponent } from './cube-description/cube-description.co
import
{
CubeNewsComponent
}
from
'
./cube-news/cube-news.component
'
;
import
{
CubeNewsComponent
}
from
'
./cube-news/cube-news.component
'
;
import
{
CubeExpansionsComponent
}
from
'
./cube-expansions/cube-expansions.component
'
;
import
{
CubeExpansionsComponent
}
from
'
./cube-expansions/cube-expansions.component
'
;
import
{
ProgressBarComponent
}
from
'
./progress-bar/progress-bar.component
'
;
import
{
ProgressBarComponent
}
from
'
./progress-bar/progress-bar.component
'
;
import
{
ELECTRON_SCHEMA
}
from
'
./
electron-schema
'
;
import
{
ELECTRON_SCHEMA
}
from
'
electron-schema
'
;
import
{
MaotamaComponent
}
from
'
./maotama/maotama.component
'
;
import
{
MaotamaComponent
}
from
'
./maotama/maotama.component
'
;
import
{
ProfileComponent
}
from
'
./profile/profile.component
'
;
import
{
ProfileComponent
}
from
'
./profile/profile.component
'
;
import
{
RoutingService
}
from
'
./routing.sevices
'
;
@
NgModule
({
@
NgModule
({
imports
:
[
BrowserModule
,
FormsModule
,
ReactiveFormsModule
,
HttpModule
,
AppRoutingModule
],
imports
:
[
BrowserModule
,
FormsModule
,
ReactiveFormsModule
,
HttpModule
],
declarations
:
[
declarations
:
[
MoeCubeComponent
,
LoginComponent
,
LobbyComponent
,
MoeCubeComponent
,
LoginComponent
,
LobbyComponent
,
CubeDetailComponent
,
RosterComponent
,
YGOProComponent
,
CandyComponent
,
CubeDetailComponent
,
RosterComponent
,
YGOProComponent
,
CandyComponent
,
...
@@ -42,7 +41,8 @@ import { ProfileComponent } from './profile/profile.component';
...
@@ -42,7 +41,8 @@ import { ProfileComponent } from './profile/profile.component';
],
],
bootstrap
:
[
MoeCubeComponent
],
bootstrap
:
[
MoeCubeComponent
],
providers
:
[
providers
:
[
CubesService
,
SettingsService
,
LoginService
,
DownloadService
,
AuthGuard
,
LoadingGuard
CubesService
,
SettingsService
,
LoginService
,
DownloadService
,
RoutingService
// , AuthGuard, LoadingGuard,
// 执行 xi18n 的时候注释掉这几行
// 执行 xi18n 的时候注释掉这几行
// , {
// , {
// provide: LOCALE_ID,
// provide: LOCALE_ID,
...
...
app/candy/candy.component.ts
View file @
56940564
...
@@ -10,6 +10,9 @@ import 'node_modules/candy-shop/notifications/candy.js';
...
@@ -10,6 +10,9 @@ import 'node_modules/candy-shop/notifications/candy.js';
import
'
node_modules/candy-shop/refocus/candy.js
'
;
import
'
node_modules/candy-shop/refocus/candy.js
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
*
as
uuid
from
'
uuid
'
;
// import * as jqueryShadow from '../../jquery-shadow.js';
// import 'electron-cookies';
/**
/**
* Created by zh99998 on 16/9/2.
* Created by zh99998 on 16/9/2.
*/
*/
...
@@ -213,7 +216,7 @@ declare const $iq: any;
...
@@ -213,7 +216,7 @@ declare const $iq: any;
})
})
export
class
CandyComponent
implements
OnInit
,
OnChanges
{
export
class
CandyComponent
implements
OnInit
,
OnChanges
{
@
Input
()
@
Input
()
current
App
:
Cube
;
current
Cube
:
Cube
;
jid
:
string
;
jid
:
string
;
password
:
string
;
password
:
string
;
nickname
:
string
;
nickname
:
string
;
...
@@ -226,7 +229,7 @@ export class CandyComponent implements OnInit, OnChanges {
...
@@ -226,7 +229,7 @@ export class CandyComponent implements OnInit, OnChanges {
ngOnInit
()
{
ngOnInit
()
{
this
.
jid
=
this
.
loginService
.
user
.
username
+
'
@m
oecube.com
'
;
this
.
jid
=
this
.
loginService
.
user
.
username
+
'
@m
ycard.moe
'
;
this
.
password
=
this
.
loginService
.
user
.
external_id
.
toString
();
this
.
password
=
this
.
loginService
.
user
.
external_id
.
toString
();
this
.
nickname
=
this
.
loginService
.
user
.
username
;
this
.
nickname
=
this
.
loginService
.
user
.
username
;
...
@@ -260,11 +263,13 @@ export class CandyComponent implements OnInit, OnChanges {
...
@@ -260,11 +263,13 @@ export class CandyComponent implements OnInit, OnChanges {
</form>
</form>
`
;
`
;
Candy
.
Util
.
setCookie
(
'
candy-nostatusmessages
'
,
'
1
'
,
365
);
Candy
.
init
(
'
wss://chat.moecube.com:5280/websocket
'
,
{
Candy
.
init
(
'
wss://chat.moecube.com:5280/websocket
'
,
{
core
:
{
core
:
{
debug
:
false
,
debug
:
false
,
autojoin
:
this
.
current
App
.
conference
&&
[
this
.
currentApp
.
conference
+
'
@conference.moecube.com
'
],
autojoin
:
this
.
current
Cube
.
conference
&&
[
this
.
currentCube
.
conference
+
'
@conference.mycard.moe
'
],
resource
:
'
moecube-
'
+
Math
.
random
().
toString
().
split
(
'
.
'
)[
1
]
resource
:
uuid
.
v1
()
},
},
view
:
{
view
:
{
assets
:
'
node_modules/candy/res/
'
,
assets
:
'
node_modules/candy/res/
'
,
...
@@ -303,7 +308,7 @@ export class CandyComponent implements OnInit, OnChanges {
...
@@ -303,7 +308,7 @@ export class CandyComponent implements OnInit, OnChanges {
if
(
!
Candy
.
Core
.
getConnection
())
{
if
(
!
Candy
.
Core
.
getConnection
())
{
return
;
return
;
}
}
let
conference
=
changes
[
'
current
App
'
].
currentValue
.
conference
;
let
conference
=
changes
[
'
current
Cube
'
].
currentValue
.
conference
;
if
(
!
conference
)
{
if
(
!
conference
)
{
return
;
return
;
}
}
...
...
app/community/community.component.css
View file @
56940564
:host
{
:host
{
display
:
flex
;
flex
:
1
;
}
}
:host
,
webview
{
:host
[
hidden
]
{
flex
:
1
;
display
:
flex
!important
;
width
:
0
;
height
:
0
;
flex
:
0
1
;
}
}
app/community/community.component.html
deleted
100644 → 0
View file @
ff09c0dd
<webview
src=
"https://ygobbs.com"
(new-window)=
"openExternal($event.url)"
></webview>
app/community/community.component.ts
View file @
56940564
...
@@ -3,14 +3,18 @@
...
@@ -3,14 +3,18 @@
*/
*/
import
{
Component
}
from
'
@angular/core
'
;
import
{
Component
}
from
'
@angular/core
'
;
import
{
shell
}
from
'
electron
'
;
import
{
shell
}
from
'
electron
'
;
import
{
RoutingService
}
from
'
../routing.sevices
'
;
@
Component
({
@
Component
({
selector
:
'
community
'
,
selector
:
'
webview[community]
'
,
template
Url
:
'
./community.component.html
'
,
template
:
'
'
,
styleUrls
:
[
'
./community.component.css
'
],
styleUrls
:
[
'
./community.component.css
'
],
host
:
{
'
[src]
'
:
'
routingService.currentCommunityURL
'
,
'
(new-window)
'
:
'
shell.openExternal($event.url)
'
}
})
})
export
class
CommunityComponent
{
export
class
CommunityComponent
{
openExternal
(
url
:
string
)
{
shell
.
openExternal
(
url
);
public
shell
=
shell
;
constructor
(
public
routingService
:
RoutingService
)
{
}
}
}
}
app/cube-actions/cube-actions.component.ts
View file @
56940564
...
@@ -5,7 +5,6 @@ import { ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnInit, Sim
...
@@ -5,7 +5,6 @@ import { ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnInit, Sim
import
{
Cube
,
InstallOption
}
from
'
../cube
'
;
import
{
Cube
,
InstallOption
}
from
'
../cube
'
;
import
{
CubesService
}
from
'
../cubes.service
'
;
import
{
CubesService
}
from
'
../cubes.service
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
ActivatedRoute
}
from
'
@angular/router
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
DownloadService
}
from
'
../download.service
'
;
import
{
DownloadService
}
from
'
../download.service
'
;
import
{
Http
}
from
'
@angular/http
'
;
import
{
Http
}
from
'
@angular/http
'
;
...
@@ -40,7 +39,7 @@ export class CubeActionsComponent implements OnInit, OnChanges {
...
@@ -40,7 +39,7 @@ export class CubeActionsComponent implements OnInit, OnChanges {
constructor
(
private
cubesService
:
CubesService
,
private
settingsService
:
SettingsService
,
constructor
(
private
cubesService
:
CubesService
,
private
settingsService
:
SettingsService
,
private
downloadService
:
DownloadService
,
private
ref
:
ChangeDetectorRef
,
private
el
:
ElementRef
,
private
downloadService
:
DownloadService
,
private
ref
:
ChangeDetectorRef
,
private
el
:
ElementRef
,
private
http
:
Http
,
private
loginService
:
LoginService
,
private
route
:
ActivatedRoute
)
{
private
http
:
Http
,
private
loginService
:
LoginService
)
{
}
}
async
ngOnInit
():
Promise
<
void
>
{
async
ngOnInit
():
Promise
<
void
>
{
...
...
app/cube-detail/cube-detail.component.ts
View file @
56940564
import
{
ChangeDetectorRef
,
Component
,
ElementRef
,
OnChanges
,
OnInit
,
SimpleChanges
}
from
'
@angular/core
'
;
import
{
ChangeDetectorRef
,
Component
,
ElementRef
,
Input
,
OnChanges
,
OnInit
,
SimpleChanges
}
from
'
@angular/core
'
;
import
{
clipboard
,
remote
}
from
'
electron
'
;
import
{
clipboard
,
remote
}
from
'
electron
'
;
import
*
as
path
from
'
path
'
;
import
*
as
path
from
'
path
'
;
import
*
as
fs
from
'
fs
'
;
import
*
as
fs
from
'
fs
'
;
...
@@ -9,7 +9,6 @@ import { CubesService } from '../cubes.service';
...
@@ -9,7 +9,6 @@ import { CubesService } from '../cubes.service';
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
DownloadService
}
from
'
../download.service
'
;
import
{
DownloadService
}
from
'
../download.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
ActivatedRoute
,
Params
}
from
'
@angular/router
'
;
declare
const
Notification
:
any
;
declare
const
Notification
:
any
;
...
@@ -26,6 +25,7 @@ declare const Notification: any;
...
@@ -26,6 +25,7 @@ declare const Notification: any;
styleUrls
:
[
'
./cube-detail.component.css
'
],
styleUrls
:
[
'
./cube-detail.component.css
'
],
})
})
export
class
CubeDetailComponent
implements
OnInit
,
OnChanges
{
export
class
CubeDetailComponent
implements
OnInit
,
OnChanges
{
@
Input
()
currentCube
:
Cube
;
currentCube
:
Cube
;
platform
=
process
.
platform
;
platform
=
process
.
platform
;
...
@@ -46,7 +46,7 @@ export class CubeDetailComponent implements OnInit, OnChanges {
...
@@ -46,7 +46,7 @@ export class CubeDetailComponent implements OnInit, OnChanges {
constructor
(
private
cubesService
:
CubesService
,
private
settingsService
:
SettingsService
,
constructor
(
private
cubesService
:
CubesService
,
private
settingsService
:
SettingsService
,
private
downloadService
:
DownloadService
,
private
ref
:
ChangeDetectorRef
,
private
el
:
ElementRef
,
private
downloadService
:
DownloadService
,
private
ref
:
ChangeDetectorRef
,
private
el
:
ElementRef
,
private
http
:
Http
,
private
loginService
:
LoginService
,
private
route
:
ActivatedRoute
)
{
private
http
:
Http
,
private
loginService
:
LoginService
)
{
this
.
tags
=
this
.
settingsService
.
getLocale
().
startsWith
(
'
zh
'
)
?
{
this
.
tags
=
this
.
settingsService
.
getLocale
().
startsWith
(
'
zh
'
)
?
{
'
recommend
'
:
'
推荐
'
,
'
recommend
'
:
'
推荐
'
,
...
@@ -64,20 +64,20 @@ export class CubeDetailComponent implements OnInit, OnChanges {
...
@@ -64,20 +64,20 @@ export class CubeDetailComponent implements OnInit, OnChanges {
}
}
async
ngOnInit
():
Promise
<
void
>
{
async
ngOnInit
():
Promise
<
void
>
{
this
.
route
.
params
//
this.route.params
.
switchMap
((
params
:
Params
)
=>
this
.
cubesService
.
getCube
(
params
[
'
id
'
]))
//
.switchMap((params: Params) => this.cubesService.getCube(params['id']))
.
subscribe
(
async
(
cube
:
Cube
)
=>
{
//
.subscribe(async (cube: Cube) => {
this
.
currentCube
=
cube
;
//
this.currentCube = cube;
this
.
cubesService
.
lastVisited
=
cube
;
//
this.cubesService.lastVisited = cube;
if
(
this
.
currentCube
.
background
)
{
//
if (this.currentCube.background) {
this
.
el
.
nativeElement
.
style
.
background
=
`url("
${
this
.
currentCube
.
background
}
") rgba(255,255,255,.8)`
;
//
this.el.nativeElement.style.background = `url("${this.currentCube.background}") rgba(255,255,255,.8)`;
}
else
{
//
} else {
this
.
el
.
nativeElement
.
style
.
background
=
'
white
'
;
//
this.el.nativeElement.style.background = 'white';
}
//
}
//
// let top = await this.http.get('https://ygobbs.com/top.json').map(response => response.json()).toPromise();
//
// let top = await this.http.get('https://ygobbs.com/top.json').map(response => response.json()).toPromise();
// console.log(top.topic_list.topics);
//
// console.log(top.topic_list.topics);
});
//
});
let
volume
=
'
A
'
;
let
volume
=
'
A
'
;
for
(
let
i
=
0
;
i
<
26
;
i
++
)
{
for
(
let
i
=
0
;
i
<
26
;
i
++
)
{
...
@@ -97,6 +97,14 @@ export class CubeDetailComponent implements OnInit, OnChanges {
...
@@ -97,6 +97,14 @@ export class CubeDetailComponent implements OnInit, OnChanges {
}
}
async
ngOnChanges
(
changes
:
SimpleChanges
)
{
async
ngOnChanges
(
changes
:
SimpleChanges
)
{
if
(
changes
.
currentCube
)
{
if
(
this
.
currentCube
.
background
)
{
this
.
el
.
nativeElement
.
style
.
background
=
`url("
${
this
.
currentCube
.
background
}
") rgba(255,255,255,.8)`
;
}
else
{
this
.
el
.
nativeElement
.
style
.
background
=
'
white
'
;
}
}
if
(
this
.
currentCube
.
isBought
())
{
if
(
this
.
currentCube
.
isBought
())
{
$
(
'
#purchase-modal-alipay
'
).
modal
(
'
hide
'
);
$
(
'
#purchase-modal-alipay
'
).
modal
(
'
hide
'
);
}
}
...
...
app/cubes.service.ts
View file @
56940564
...
@@ -106,11 +106,7 @@ export class CubesService {
...
@@ -106,11 +106,7 @@ export class CubesService {
// 这里必须返回个 Promise,于是不能去掉 async
// 这里必须返回个 Promise,于是不能去掉 async
async
getCube
(
id
:
string
)
{
async
getCube
(
id
:
string
)
{
let
result
=
this
.
apps
.
get
(
id
);
return
this
.
apps
.
get
(
id
);
if
(
!
result
)
{
throw
'
not found
'
;
}
return
result
;
}
}
async
migrate
()
{
async
migrate
()
{
...
...
app/electron-schema.ts
deleted
100644 → 0
View file @
ff09c0dd
import
{
DomElementSchemaRegistry
}
from
'
@angular/compiler
'
;
import
{
SchemaMetadata
}
from
'
@angular/core
'
;
const
tags
:
Object
=
{
webview
:
{
src
:
true
,
autosize
:
true
,
nodeintegration
:
true
,
plugins
:
true
,
preload
:
true
,
httpreferrer
:
true
,
useragent
:
true
,
disablewebsecurity
:
true
,
partition
:
true
,
allowpopups
:
true
,
webpreferences
:
true
,
blinkfeatures
:
true
,
disableblinkfeatures
:
true
,
guestinstance
:
true
,
disableguestresize
:
true
}
};
export
const
ELECTRON_SCHEMA
:
SchemaMetadata
=
{
name
:
'
electron-schema
'
};
DomElementSchemaRegistry
.
prototype
.
hasElement
=
new
Proxy
(
DomElementSchemaRegistry
.
prototype
.
hasElement
,
{
apply
(
target
,
thisArgument
,
argumentsList
)
{
const
[
tagName
,
schemaMetas
]
=
argumentsList
;
if
(
schemaMetas
.
some
((
schema
:
SchemaMetadata
)
=>
schema
.
name
===
ELECTRON_SCHEMA
.
name
)
&&
tags
[
tagName
])
{
return
true
;
}
return
Reflect
.
apply
(
target
,
thisArgument
,
argumentsList
);
}
});
DomElementSchemaRegistry
.
prototype
.
hasProperty
=
new
Proxy
(
DomElementSchemaRegistry
.
prototype
.
hasProperty
,
{
apply
(
target
,
thisArgument
,
argumentsList
)
{
const
[
tagName
,
propName
,
schemaMetas
]
=
argumentsList
;
if
(
schemaMetas
.
some
((
schema
:
SchemaMetadata
)
=>
schema
.
name
===
ELECTRON_SCHEMA
.
name
)
&&
tags
[
tagName
]
&&
tags
[
tagName
][
propName
])
{
return
true
;
}
return
Reflect
.
apply
(
target
,
thisArgument
,
argumentsList
);
}
});
app/lobby/lobby.component.html
View file @
56940564
...
@@ -3,19 +3,18 @@
...
@@ -3,19 +3,18 @@
<nav
id=
"apps"
*ngIf=
"apps"
class=
"bg-faded sidebar scroll"
>
<nav
id=
"apps"
*ngIf=
"apps"
class=
"bg-faded sidebar scroll"
>
<div
id=
"search"
class=
"input-group"
>
<div
id=
"search"
class=
"input-group"
>
<i
class=
"fa fa-search input-group-addon search"
id=
"basic-addon1"
></i>
<i
class=
"fa fa-search input-group-addon search"
id=
"basic-addon1"
></i>
<input
#search
id=
"search-input"
type=
"text"
class=
"form-control search"
placeholder=
"搜索游戏"
<input
#search
id=
"search-input"
type=
"text"
class=
"form-control search"
placeholder=
"搜索游戏"
aria-describedby=
"basic-addon1"
>
aria-describedby=
"basic-addon1"
>
</div>
</div>
<ng-container
*ngFor=
"let tag of tags"
>
<ng-container
*ngFor=
"let tag of tags"
>
<ng-container
*ngIf=
"grouped_apps[tag]"
>
<ng-container
*ngIf=
"grouped_apps[tag]"
>
<span
i18n
>
{tag, select, installed {已安装} test {测试} recommend {推荐} mysterious {迷之物体} touhou {东方 Project} touhou_pc98 {东方旧作} runtime_installed {已安装的运行库} }
</span>
<span
i18n
>
{tag, select, installed {已安装} test {测试} recommend {推荐} mysterious {迷之物体} touhou {东方 Project} touhou_pc98 {东方旧作} runtime_installed {已安装的运行库} }
</span>
<ul
class=
"nav nav-pills flex-column"
>
<ul
class=
"nav nav-pills flex-column"
>
<li
*ngFor=
"let
app
of grouped_apps[tag]"
class=
"nav-item"
>
<li
*ngFor=
"let
cube
of grouped_apps[tag]"
class=
"nav-item"
>
<a
[routerLink]=
"app.id"
routerLinkActive=
"activ
e"
class=
"nav-link"
>
<a
(click)=
"currentCube = cube"
[class.active]=
"currentCube === cub
e"
class=
"nav-link"
>
<img
*ngIf=
"
app.icon"
class=
"icon"
[src]=
"app
.icon"
>
<img
*ngIf=
"
cube.icon"
class=
"icon"
[src]=
"cube
.icon"
>
{{
app
.name}}
{{
cube
.name}}
<progress-spinner
*ngIf=
"
app.isWorking()"
[value]=
"app.status.progress / app
.status.total"
></progress-spinner>
<progress-spinner
*ngIf=
"
cube.isWorking()"
[value]=
"cube.status.progress / cube
.status.total"
></progress-spinner>
</a>
</a>
</li>
</li>
</ul>
</ul>
...
@@ -28,13 +27,14 @@
...
@@ -28,13 +27,14 @@
<div
id=
"right"
>
<div
id=
"right"
>
<div
id=
"main"
>
<div
id=
"main"
>
<router-outlet></router-outlet>
<cube-detail
*ngIf=
"currentCube"
[currentCube]=
"currentCube"
></cube-detail>
<!--<router-outlet></router-outlet>-->
<roster
class=
"scroll"
></roster>
<roster
class=
"scroll"
></roster>
</div>
</div>
<div
id=
"candy-wrapper"
class=
"resize-wrapper resize-top"
style=
"max-height: calc( 100% - 180px )"
>
<div
id=
"candy-wrapper"
class=
"resize-wrapper resize-top"
style=
"max-height: calc( 100% - 180px )"
>
<div
class=
"resize"
(mousedown)=
"mousedown($event)"
></div>
<div
class=
"resize"
(mousedown)=
"mousedown($event)"
></div>
<candy
*ngIf=
"current
App"
[currentApp]=
"currentApp
"
></candy>
<candy
*ngIf=
"current
Cube"
[currentCube]=
"currentCube
"
></candy>
</div>
</div>
</div>
</div>
...
...
app/lobby/lobby.component.ts
View file @
56940564
...
@@ -2,13 +2,11 @@
...
@@ -2,13 +2,11 @@
* Created by zh99998 on 16/9/2.
* Created by zh99998 on 16/9/2.
*/
*/
import
{
ChangeDetectorRef
,
Component
,
ElementRef
,
OnInit
,
ViewChild
}
from
'
@angular/core
'
;
import
{
ChangeDetectorRef
,
Component
,
ElementRef
,
OnInit
,
ViewChild
}
from
'
@angular/core
'
;
import
{
shell
}
from
'
electron
'
;
import
{
URLSearchParams
}
from
'
@angular/http
'
;
import
{
URLSearchParams
}
from
'
@angular/http
'
;
import
{
Category
,
Cube
}
from
'
../cube
'
;
import
{
Category
,
Cube
}
from
'
../cube
'
;
import
{
CubesService
}
from
'
../cubes.service
'
;
import
{
CubesService
}
from
'
../cubes.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
ActivatedRoute
,
Router
}
from
'
@angular/router
'
;
import
*
as
ReconnectingWebSocket
from
'
reconnecting-websocket
'
;
import
*
as
ReconnectingWebSocket
from
'
reconnecting-websocket
'
;
// import 'typeahead.js';
// import 'typeahead.js';
...
@@ -25,7 +23,7 @@ export class LobbyComponent implements OnInit {
...
@@ -25,7 +23,7 @@ export class LobbyComponent implements OnInit {
readonly
tags
=
[
'
installed
'
,
'
recommend
'
,
'
test
'
,
'
mysterious
'
,
'
touhou
'
,
'
touhou_pc98
'
,
'
runtime_installed
'
];
readonly
tags
=
[
'
installed
'
,
'
recommend
'
,
'
test
'
,
'
mysterious
'
,
'
touhou
'
,
'
touhou_pc98
'
,
'
runtime_installed
'
];
current
App
:
Cube
;
current
Cube
:
Cube
;
private
apps
:
Map
<
string
,
Cube
>
;
private
apps
:
Map
<
string
,
Cube
>
;
resizing
:
HTMLElement
|
undefined
;
resizing
:
HTMLElement
|
undefined
;
...
@@ -36,29 +34,42 @@ export class LobbyComponent implements OnInit {
...
@@ -36,29 +34,42 @@ export class LobbyComponent implements OnInit {
private
messages
:
WebSocket
;
private
messages
:
WebSocket
;
constructor
(
private
appsService
:
CubesService
,
private
loginService
:
LoginService
,
constructor
(
private
cubesService
:
CubesService
,
private
loginService
:
LoginService
,
private
settingsService
:
SettingsService
,
private
ref
:
ChangeDetectorRef
,
private
settingsService
:
SettingsService
,
private
ref
:
ChangeDetectorRef
)
{
private
route
:
ActivatedRoute
,
private
router
:
Router
)
{
}
}
async
ngOnInit
()
{
async
ngOnInit
()
{
try
{
try
{
this
.
apps
=
await
this
.
app
sService
.
loadCubes
();
this
.
apps
=
await
this
.
cube
sService
.
loadCubes
();
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
error
);
console
.
error
(
error
);
//
if (confirm('获取程序列表失败,是否重试?')) {
if
(
confirm
(
'
获取程序列表失败,是否重试?
'
))
{
//
location.reload();
location
.
reload
();
//
} else {
}
else
{
//
window.close();
window
.
close
();
//
}
}
return
;
return
;
}
}
await
this
.
router
.
navigate
([
'
lobby
'
,
this
.
appsService
.
lastVisited
?
this
.
appsService
.
lastVisited
.
id
:
'
ygopro
'
])
;
this
.
currentCube
=
this
.
cubesService
.
lastVisited
||
this
.
apps
.
get
(
'
ygopro
'
)
!
;
await
this
.
appsService
.
migrate
();
// this.route.params
// .switchMap((params: Params) => this.cubesService.getCube(params['id']))
// .subscribe((cube: Cube) => {
// if (cube) {
// this.currentCube = cube;
// this.cubesService.lastVisited = cube;
// } else {
// this.router.navigate(['lobby', this.cubesService.lastVisited ? this.cubesService.lastVisited.id : 'ygopro']);
// }
//
// // let top = await this.http.get('https://ygobbs.com/top.json').map(response => response.json()).toPromise();
// // console.log(top.topic_list.topics);
// });
await
this
.
cubesService
.
migrate
();
for
(
let
app
of
this
.
apps
.
values
())
{
for
(
let
app
of
this
.
apps
.
values
())
{
await
this
.
app
sService
.
update
(
app
);
await
this
.
cube
sService
.
update
(
app
);
}
}
// 特化个 YGOPRO 国际服聊天室。其他的暂时没需求。
// 特化个 YGOPRO 国际服聊天室。其他的暂时没需求。
...
@@ -75,8 +86,8 @@ export class LobbyComponent implements OnInit {
...
@@ -75,8 +86,8 @@ export class LobbyComponent implements OnInit {
this
.
messages
.
onmessage
=
async
(
event
)
=>
{
this
.
messages
.
onmessage
=
async
(
event
)
=>
{
let
data
=
JSON
.
parse
(
event
.
data
);
let
data
=
JSON
.
parse
(
event
.
data
);
console
.
log
(
data
);
console
.
log
(
data
);
this
.
apps
=
await
this
.
app
sService
.
loadCubes
();
this
.
apps
=
await
this
.
cube
sService
.
loadCubes
();
this
.
current
App
=
this
.
apps
.
get
(
this
.
currentApp
.
id
)
!
;
this
.
current
Cube
=
this
.
apps
.
get
(
this
.
currentCube
.
id
)
!
;
};
};
...
@@ -170,8 +181,7 @@ export class LobbyComponent implements OnInit {
...
@@ -170,8 +181,7 @@ export class LobbyComponent implements OnInit {
}
}
select
(
app
:
Cube
)
{
select
(
app
:
Cube
)
{
this
.
cubesService
.
lastVisited
=
app
;
this
.
appsService
.
lastVisited
=
app
;
}
}
...
@@ -201,8 +211,4 @@ export class LobbyComponent implements OnInit {
...
@@ -201,8 +211,4 @@ export class LobbyComponent implements OnInit {
}
}
return
result
;
return
result
;
}
}
openExternal
(
url
:
string
)
{
shell
.
openExternal
(
url
);
}
}
}
app/login/login.component.css
View file @
56940564
:host
{
:host
{
flex
:
1
;
flex
:
1
;
display
:
flex
;
}
webview
{
flex-grow
:
1
;
}
}
app/login/login.component.html
deleted
100644 → 0
View file @
ff09c0dd
<webview
[src]=
"url"
(will-navigate)=
"return_sso($event.url)"
(did-get-redirect-request)=
"return_sso($event.newURL)"
(new-window)=
"openExternal($event.url)"
></webview>
app/login/login.component.ts
View file @
56940564
...
@@ -8,15 +8,22 @@ import { LoginService } from '../login.service';
...
@@ -8,15 +8,22 @@ import { LoginService } from '../login.service';
import
{
Router
}
from
'
@angular/router
'
;
import
{
Router
}
from
'
@angular/router
'
;
@
Component
({
@
Component
({
selector
:
'
login
'
,
selector
:
'
webview[login]
'
,
template
Url
:
'
./login.component.html
'
,
template
:
'
'
,
styleUrls
:
[
'
./login.component.css
'
],
styleUrls
:
[
'
./login.component.css
'
],
host
:
{
'
[src]
'
:
'
url
'
,
'
(will-navigate)
'
:
'
return_sso($event.url)
'
,
'
(did-get-redirect-request)
'
:
'
return_sso($event.newURL)
'
,
'
(new-window)
'
:
'
openExternal($event.url)
'
}
})
})
export
class
LoginComponent
implements
OnInit
{
export
class
LoginComponent
implements
OnInit
{
shell
=
shell
;
url
:
string
;
url
:
string
;
readonly
return_sso_url
=
'
https://moecube.com/login_callback
'
;
// 这个url不会真的被使用,可以填写不存在的
readonly
return_sso_url
=
'
https://moecube.com/login_callback
'
;
// 这个url不会真的被使用,可以填写不存在的
constructor
(
private
router
:
Router
,
private
loginService
:
LoginService
)
{
constructor
(
private
loginService
:
LoginService
)
{
}
}
ngOnInit
()
{
ngOnInit
()
{
...
@@ -55,7 +62,7 @@ export class LoginComponent implements OnInit {
...
@@ -55,7 +62,7 @@ export class LoginComponent implements OnInit {
// 这里是 TypeScript 的一个bug,https://github.com/Microsoft/TypeScript/issues/15243
// 这里是 TypeScript 的一个bug,https://github.com/Microsoft/TypeScript/issues/15243
let
user
=
this
.
toObject
(
<
any
>
new
URLSearchParams
(
Buffer
.
from
(
token
,
'
base64
'
).
toString
()));
let
user
=
this
.
toObject
(
<
any
>
new
URLSearchParams
(
Buffer
.
from
(
token
,
'
base64
'
).
toString
()));
this
.
loginService
.
login
(
user
);
this
.
loginService
.
login
(
user
);
this
.
router
.
navigate
([
'
/
'
]);
//
this.router.navigate(['/']);
}
}
toObject
(
entries
:
Iterable
<
[
string
,
any
]
>
):
any
{
toObject
(
entries
:
Iterable
<
[
string
,
any
]
>
):
any
{
...
@@ -65,8 +72,4 @@ export class LoginComponent implements OnInit {
...
@@ -65,8 +72,4 @@ export class LoginComponent implements OnInit {
}
}
return
result
;
return
result
;
}
}
openExternal
(
url
:
string
)
{
shell
.
openExternal
(
url
);
}
}
}
app/moecube/moecube.component.html
View file @
56940564
<nav
id=
"navbar"
class=
"navbar navbar-toggleable-md navbar-light"
>
<nav
id=
"navbar"
class=
"navbar navbar-toggleable-md navbar-light"
>
<a
id=
"navbar-brand"
class=
"navbar-brand"
href=
"#"
>
MoeCube
</a>
<a
id=
"navbar-brand"
class=
"navbar-brand"
href=
"#"
>
MoeCube
</a>
<ul
class=
"navbar-nav mr-auto"
>
<ul
class=
"navbar-nav mr-auto"
>
<ng-template
#login
>
<ng-template
#login
Nav
>
<li
class=
"nav-item active"
><a
i18n
class=
"nav-link"
href=
"#"
>
登录
</a></li>
<li
class=
"nav-item active"
><a
i18n
class=
"nav-link"
href=
"#"
>
登录
</a></li>
</ng-template>
</ng-template>
<ng-container
*ngIf=
"loginService.logged_in; else login"
>
<ng-container
*ngIf=
"loginService.logged_in; else loginNav"
>
<li
routerLinkActive=
"active"
class=
"nav-item"
><a
i18n
routerLink=
"lobby"
class=
"nav-link"
href=
"#"
>
游戏
</a></li>
<li
[class.active]=
"currentPage === 'lobby'"
class=
"nav-item"
>
<li
routerLinkActive=
"active"
class=
"nav-item"
><a
i18n
routerLink=
"community"
class=
"nav-link"
href=
"#"
>
社区
</a>
<a
i18n
(click)=
"currentPage = 'lobby'"
class=
"nav-link"
href=
"#"
>
游戏
</a>
</li>
<li
[class.active]=
"currentPage === 'community'"
class=
"nav-item"
>
<a
i18n
(click)=
"currentPage = 'community'"
class=
"nav-link"
href=
"#"
>
社区
</a>
</li>
</li>
</ng-container>
</ng-container>
...
@@ -16,14 +19,14 @@
...
@@ -16,14 +19,14 @@
<update></update>
<update></update>
<ul
class=
"navbar-nav mr-auto"
*ngIf=
"loginService.logged_in"
>
<ul
class=
"navbar-nav mr-auto"
*ngIf=
"loginService.logged_in"
>
<li
routerLinkActive=
"active
"
class=
"nav-item dropdown"
>
<li
[class.active]=
"currentPage === 'profile'
"
class=
"nav-item dropdown"
>
<a
class=
"nav-link dropdown-toggle"
data-toggle=
"dropdown"
role=
"button"
>
<a
class=
"nav-link dropdown-toggle"
data-toggle=
"dropdown"
role=
"button"
>
<img
id=
"avatar"
[src]=
"loginService.user.avatar_url"
alt=
"avatar"
>
<img
id=
"avatar"
[src]=
"loginService.user.avatar_url"
alt=
"avatar"
>
{{loginService.user.username}}
{{loginService.user.username}}
</a>
</a>
<div
class=
"dropdown-menu"
>
<div
class=
"dropdown-menu"
>
<a
i18n
class=
"dropdown-item"
routerLink=
"profile
"
>
个人资料
</a>
<a
i18n
class=
"dropdown-item"
(click)=
"currentPage = 'profile'
"
>
个人资料
</a>
<a
i18n
(click)=
"loginService.logout()"
routerLink=
"login"
class=
"dropdown-item"
>
切换用户
</a>
<a
i18n
(click)=
"loginService.logout()"
class=
"dropdown-item"
>
切换用户
</a>
<a
i18n
data-toggle=
"modal"
data-target=
"#settings-modal"
class=
"dropdown-item"
href=
"#"
>
设置
</a>
<a
i18n
data-toggle=
"modal"
data-target=
"#settings-modal"
class=
"dropdown-item"
href=
"#"
>
设置
</a>
</div>
</div>
</li>
</li>
...
@@ -33,7 +36,14 @@
...
@@ -33,7 +36,14 @@
</div>
</div>
</nav>
</nav>
<router-outlet></router-outlet>
<ng-template
#login
>
<webview
login
></webview>
</ng-template>
<ng-container
*ngIf=
"loginService.logged_in; else login"
>
<lobby
[hidden]=
"currentPage !== 'lobby'"
></lobby>
<webview
community
[hidden]=
"currentPage !== 'community'"
></webview>
<webview
profile
*ngIf=
"currentPage === 'profile'"
></webview>
</ng-container>
<!-- Modal -->
<!-- Modal -->
<div
class=
"modal fade"
id=
"settings-modal"
tabindex=
"-1"
role=
"dialog"
aria-labelledby=
"myModalLabel"
aria-hidden=
"true"
>
<div
class=
"modal fade"
id=
"settings-modal"
tabindex=
"-1"
role=
"dialog"
aria-labelledby=
"myModalLabel"
aria-hidden=
"true"
>
...
...
app/moecube/moecube.component.ts
View file @
56940564
...
@@ -13,6 +13,7 @@ import { SettingsService } from '../settings.sevices';
...
@@ -13,6 +13,7 @@ import { SettingsService } from '../settings.sevices';
export
class
MoeCubeComponent
implements
OnInit
{
export
class
MoeCubeComponent
implements
OnInit
{
locale
:
string
;
locale
:
string
;
currentPage
=
'
lobby
'
;
constructor
(
public
loginService
:
LoginService
,
private
settingsService
:
SettingsService
)
{
constructor
(
public
loginService
:
LoginService
,
private
settingsService
:
SettingsService
)
{
}
}
...
...
app/profile/profile.component.css
View file @
56940564
:host
{
:host
{
flex
:
1
;
flex
:
1
;
display
:
flex
;
}
webview
{
flex-grow
:
1
;
}
}
app/profile/profile.component.html
deleted
100644 → 0
View file @
ff09c0dd
<webview
src=
"https://accounts.moecube.com/profiles"
(new-window)=
"openExternal($event.url)"
></webview>
app/profile/profile.component.ts
View file @
56940564
...
@@ -7,9 +7,11 @@ declare const URLSearchParams: any;
...
@@ -7,9 +7,11 @@ declare const URLSearchParams: any;
@
Component
({
@
Component
({
selector
:
'
profile
'
,
selector
:
'
webview[profile]
'
,
template
Url
:
'
./profile.component.html
'
,
template
:
'
'
,
styleUrls
:
[
'
./profile.component.css
'
],
styleUrls
:
[
'
./profile.component.css
'
],
host
:
{
'
src
'
:
'
https://accounts.moecube.com/profiles
'
,
'
(new-window)
'
:
'
openExternal($event.url)
'
}
})
})
export
class
ProfileComponent
{
export
class
ProfileComponent
{
}
}
app/routing.sevices.ts
0 → 100644
View file @
56940564
/**
* Created by weijian on 2016/10/24.
*/
import
{
Injectable
}
from
'
@angular/core
'
;
import
{
Cube
}
from
'
./cube
'
;
interface
Community
{
id
:
string
,
url
:
string
}
@
Injectable
()
export
class
RoutingService
{
currentPage
=
'
lobby
'
;
currentCube
:
Cube
;
communities
=
[
{
id
:
'
ygopro
'
,
url
:
'
http://ygobbs.com
'
},
{
id
:
'
oz
'
,
url
:
'
http://fuckoz.com
'
}
];
currentCommunity
=
this
.
communities
[
0
];
currentCommunityURL
=
this
.
currentCommunity
.
url
;
navigate
(
page
,
item
?:
Cube
|
Community
,
url
?)
{
this
.
currentPage
=
page
;
switch
(
page
)
{
case
'
community
'
:
if
(
item
)
{
this
.
currentCommunity
=
<
Community
>
item
;
}
if
(
url
)
{
this
.
currentCommunityURL
=
url
;
}
break
;
case
'
lobby
'
:
if
(
item
)
{
this
.
currentCube
=
<
Cube
>
item
;
}
break
;
}
}
getCommunity
(
id
)
{
return
this
.
communities
.
find
((
item
)
=>
item
.
id
===
id
);
}
}
package.json
View file @
56940564
...
@@ -27,13 +27,16 @@
...
@@ -27,13 +27,16 @@
"
@angular/platform-browser-dynamic
"
:
"
latest
"
,
"
@angular/platform-browser-dynamic
"
:
"
latest
"
,
"
@angular/platform-server
"
:
"
latest
"
,
"
@angular/platform-server
"
:
"
latest
"
,
"
@angular/router
"
:
"
latest
"
,
"
@angular/router
"
:
"
latest
"
,
"
@types/uuid
"
:
"
^2.0.29
"
,
"
angular-in-memory-web-api
"
:
"
latest
"
,
"
angular-in-memory-web-api
"
:
"
latest
"
,
"
aria2
"
:
"
latest
"
,
"
aria2
"
:
"
latest
"
,
"
bootstrap
"
:
"
next
"
,
"
bootstrap
"
:
"
next
"
,
"
candy
"
:
"
https://github.com/moecube/candy/releases/download/v2.2.0/candy.tar.gz
"
,
"
candy
"
:
"
https://github.com/moecube/candy/releases/download/v2.2.0/candy.tar.gz
"
,
"
candy-shop
"
:
"
zh99998/candy-plugins#patch-5
"
,
"
candy-shop
"
:
"
zh99998/candy-plugins#patch-5
"
,
"
core-js
"
:
"
latest
"
,
"
core-js
"
:
"
latest
"
,
"
electron-cookies
"
:
"
^1.1.0
"
,
"
electron-is-dev
"
:
"
latest
"
,
"
electron-is-dev
"
:
"
latest
"
,
"
electron-schema
"
:
"
moecube/electron-schema
"
,
"
electron-sudo
"
:
"
moecube/electron-sudo#moecube
"
,
"
electron-sudo
"
:
"
moecube/electron-sudo#moecube
"
,
"
electron-updater
"
:
"
latest
"
,
"
electron-updater
"
:
"
latest
"
,
"
font-awesome
"
:
"
latest
"
,
"
font-awesome
"
:
"
latest
"
,
...
@@ -49,6 +52,7 @@
...
@@ -49,6 +52,7 @@
"
systemjs-plugin-text
"
:
"
latest
"
,
"
systemjs-plugin-text
"
:
"
latest
"
,
"
tether
"
:
"
latest
"
,
"
tether
"
:
"
latest
"
,
"
typeahead.js
"
:
"
latest
"
,
"
typeahead.js
"
:
"
latest
"
,
"
uuid
"
:
"
latest
"
,
"
vue
"
:
"
latest
"
,
"
vue
"
:
"
latest
"
,
"
zone.js
"
:
"
latest
"
"
zone.js
"
:
"
latest
"
},
},
...
...
systemjs.config.js
View file @
56940564
...
@@ -76,7 +76,13 @@
...
@@ -76,7 +76,13 @@
'
tether
'
:
'
npm:tether/dist/js/tether.min.js
'
,
'
tether
'
:
'
npm:tether/dist/js/tether.min.js
'
,
'
bootstrap
'
:
'
npm:bootstrap/dist/js/bootstrap.min.js
'
,
'
bootstrap
'
:
'
npm:bootstrap/dist/js/bootstrap.min.js
'
,
'
reconnecting-websocket
'
:
'
npm:reconnecting-websocket/dist/index.js
'
,
'
reconnecting-websocket
'
:
'
npm:reconnecting-websocket/dist/index.js
'
,
'
reflect-metadata
'
:
'
npm:reflect-metadata/Reflect.js
'
'
reflect-metadata
'
:
'
npm:reflect-metadata/Reflect.js
'
,
'
electron-schema
'
:
'
npm:electron-schema/index.js
'
,
'
electron-cookies
'
:
'
npm:electron-cookies/src/index.js
'
,
'
uuid
'
:
'
@node/uuid
'
,
'
candy
'
:
'
npm:candy/candy.min.js
'
,
'
candy-libs
'
:
'
npm:candy/libs.min.js
'
,
'
candy-shop
'
:
'
npm:candy-shop/index.js
'
},
},
// packages tells the System loader how to load when no filename and/or no extension
// packages tells the System loader how to load when no filename and/or no extension
packages
:
{
packages
:
{
...
...
tsconfig.json
View file @
56940564
...
@@ -10,9 +10,10 @@
...
@@ -10,9 +10,10 @@
"es2017"
,
"es2017"
,
"dom"
"dom"
],
],
"noImplicitAny"
:
tru
e
,
"noImplicitAny"
:
fals
e
,
"suppressImplicitAnyIndexErrors"
:
true
,
"suppressImplicitAnyIndexErrors"
:
true
,
"strictNullChecks"
:
true
,
"strictNullChecks"
:
true
,
"skipLibCheck"
:
true
"skipLibCheck"
:
true
,
"allowJs"
:
true
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment