Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_46011646
wechaty
提交
32234c29
W
wechaty
项目概览
weixin_46011646
/
wechaty
与 Fork 源项目一致
Fork自
wechaty / wechaty
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
wechaty
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
32234c29
编写于
10月 26, 2016
作者:
Huan (李卓桓)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix sloc file glob bug in win32
上级
1af458b5
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
64 addition
and
72 deletion
+64
-72
package.json
package.json
+1
-1
src/brolog-env.ts
src/brolog-env.ts
+9
-10
src/io-client.ts
src/io-client.ts
+6
-30
src/puppet-web/browser-cookie.ts
src/puppet-web/browser-cookie.ts
+5
-2
src/puppet-web/browser-driver.ts
src/puppet-web/browser-driver.ts
+25
-5
src/puppet-web/browser.ts
src/puppet-web/browser.ts
+1
-6
src/puppet-web/puppet-web.ts
src/puppet-web/puppet-web.ts
+15
-16
src/state-monitor.ts
src/state-monitor.ts
+1
-1
src/util-lib.ts
src/util-lib.ts
+1
-1
未找到文件。
package.json
浏览文件 @
32234c29
...
...
@@ -23,7 +23,7 @@
"eslint"
:
"eslint
\"
{bin,example,src,test}/**/*.js
\"
"
,
"tslint"
:
"tslint
\"
{bin,example,src,test}/**/*.ts
\"
&& tsc --noEmit"
,
"pretest"
:
"npm run lint && npm run clean && npm run build"
,
"sloc"
:
"sloc
{bin,example,script,src,test,index.ts} --details --format cli-table --keys total,source,comment && sloc {bin,example,script,src,test,index.ts}
"
,
"sloc"
:
"sloc
\"
{bin,example,src,test,index.ts}
\"
--details --format cli-table --keys total,source,comment && sloc
\"
{bin,example,src,test,index.ts}
\"
"
,
"test"
:
"npm run test:chrome"
,
"posttest"
:
"npm run clean && npm run sloc"
,
"test:phantomjs"
:
"cross-env LC_ALL=C WECHATY_LOG=info WECHATY_HEAD=phantomjs ava --timeout=10m
\"
dist/test/*.spec.js
\"
"
,
...
...
src/brolog-env.ts
浏览文件 @
32234c29
...
...
@@ -9,6 +9,8 @@ import {
Brolog
}
from
'
brolog
'
export
let
log
:
Brolog
const
level
=
process
.
env
[
'
WECHATY_LOG
'
]
// use a typescript switch/case/default: never to replace regex
...
...
@@ -16,16 +18,13 @@ const levelRegexStr = 'silly|verbose|info|warn|error|silent'
const
levelRegex
=
new
RegExp
(
levelRegexStr
,
'
i
'
)
if
(
levelRegex
.
test
(
level
))
{
// log.level = level.toLowerCase()
Brolog
.
level
(
level
)
Bro
log
.
silly
(
'
Brolog
'
,
'
WECHATY_LOG set level to %s
'
,
level
)
}
else
if
(
level
)
{
Bro
log
.
warn
(
'
Brolog
'
,
'
env WECHATY_LOG(%s) must be one of silly|verbose|info|warn|error|silent
'
,
level
)
log
=
new
Brolog
(
level
)
log
.
silly
(
'
Brolog
'
,
'
WECHATY_LOG set level to %s
'
,
level
)
}
else
{
log
=
new
Brolog
()
log
.
warn
(
'
Brolog
'
,
'
env WECHATY_LOG(%s) must be one of silly|verbose|info|warn|error|silent
'
,
level
)
}
export
{
Brolog
,
Brolog
as
log
}
export
{
Brolog
}
export
default
Bro
log
export
default
log
src/io-client.ts
浏览文件 @
32234c29
...
...
@@ -23,22 +23,20 @@ import Wechaty from './wechaty'
import
brolog
from
'
./brolog-env
'
export
class
IoClient
{
// private _targetState
// private _currentState
private
state
=
new
StateMonitor
<
'
online
'
,
'
offline
'
>
(
'
IoClient
'
,
'
offline
'
)
private
wechaty
:
Wechaty
|
null
private
io
:
Io
|
null
private
state
=
new
StateMonitor
<
'
online
'
,
'
offline
'
>
(
'
IoClient
'
,
'
offline
'
)
constructor
(
private
token
:
string
=
Config
.
token
||
Config
.
DEFAULT_TOKEN
,
private
log
=
brolog
,
private
log
:
any
=
brolog
)
{
if
(
!
log
)
{
const
e
=
new
Error
(
'
constructor() log(npmlog/brolog) must be set
'
)
throw
e
}
this
.
log
=
log
this
.
log
.
verbose
(
'
IoClient
'
,
'
constructor() with token: %s
'
,
token
)
if
(
!
token
)
{
...
...
@@ -46,38 +44,16 @@ export class IoClient {
this
.
log
.
error
(
'
IoClient
'
,
e
.
message
)
throw
e
}
// this.targetState('disconnected')
// this.currentState('disconnected')
// this.state.target('offline')
// this.state.current('offline')
}
// // targetState : 'connected' | 'disconnected'
// private targetState(newState?) {
// if (newState) {
// this.log.verbose('IoClient', 'targetState(%s)', newState)
// this._targetState = newState
// }
// return this._targetState
// }
// // currentState : 'connecting' | 'connected' | 'disconnecting' | 'disconnected'
// private currentState(newState?) {
// if (newState) {
// this.log.verbose('IoClient', 'currentState(%s)', newState)
// this._currentState = newState
// }
// return this._currentState
// }
public
async
init
():
Promise
<
IoClient
>
{
this
.
log
.
verbose
(
'
IoClient
'
,
'
init()
'
)
// if (/connecting|disconnecting/.test(this.currentState())) {
if
(
this
.
state
.
inprocess
())
{
this
.
log
.
warn
(
'
IoClient
'
,
'
init() with state.inprocess(), skip init
'
)
return
Promise
.
reject
(
'
pending
'
)
const
e
=
new
Error
(
'
state.inprocess(), skip init
'
)
this
.
log
.
warn
(
'
IoClient
'
,
'
init() with %s
'
,
e
.
message
)
throw
e
}
// this.targetState('connected')
...
...
src/puppet-web/browser-cookie.ts
浏览文件 @
32234c29
...
...
@@ -148,8 +148,8 @@ export class BrowserCookie {
await
new
Promise
((
resolve
,
reject
)
=>
{
fs
.
readFile
(
storeFile
,
(
err
,
jsonStr
)
=>
{
if
(
err
)
{
if
(
err
)
{
log
.
silly
(
'
PuppetWebBrowserCookie
'
,
'
load(%s) skipped because error code: %s
'
,
this
.
storeFile
,
err
.
code
)
}
return
reject
(
new
Error
(
'
error code:
'
+
err
.
code
))
log
.
verbose
(
'
PuppetWebBrowserCookie
'
,
'
load(%s) skipped because error code: %s
'
,
this
.
storeFile
,
err
.
code
)
return
// fail safe
}
const
cookies
=
JSON
.
parse
(
jsonStr
.
toString
())
...
...
@@ -165,6 +165,9 @@ export class BrowserCookie {
})
})
})
return
}
/**
...
...
src/puppet-web/browser-driver.ts
浏览文件 @
32234c29
...
...
@@ -97,11 +97,31 @@ export class BrowserDriver {
const
customChrome
=
Capabilities
.
chrome
()
.
set
(
'
chromeOptions
'
,
options
)
return
new
Builder
()
.
setAlertBehavior
(
'
ignore
'
)
.
forBrowser
(
'
chrome
'
)
.
withCapabilities
(
customChrome
)
.
build
()
/**
* XXX when will Builder().build() throw exception???
*/
let
driver
let
ttl
=
3
let
err
while
(
!
driver
&&
ttl
--
)
{
try
{
driver
=
new
Builder
()
.
setAlertBehavior
(
'
ignore
'
)
.
forBrowser
(
'
chrome
'
)
.
withCapabilities
(
customChrome
)
.
build
()
}
catch
(
e
)
{
log
.
warn
(
'
PuppetWebBrowserDriver
'
,
'
getChromeDriver() exception: %s, retry ttl: %d
'
,
e
.
message
,
ttl
)
err
=
e
}
}
if
(
driver
)
{
return
driver
}
throw
err
}
private
getPhantomJsDriver
():
WebDriver
{
...
...
src/puppet-web/browser.ts
浏览文件 @
32234c29
...
...
@@ -33,9 +33,9 @@ export type BrowserSetting = {
export
class
Browser
extends
EventEmitter
{
private
cookie
:
BrowserCookie
public
driver
:
BrowserDriver
public
state
=
new
StateMonitor
<
'
open
'
,
'
close
'
>
(
'
Browser
'
,
'
close
'
)
public
driver
:
BrowserDriver
constructor
(
private
setting
:
BrowserSetting
=
{
head
:
Config
.
head
...
...
@@ -44,11 +44,6 @@ export class Browser extends EventEmitter {
super
()
log
.
verbose
(
'
PuppetWebBrowser
'
,
'
constructor() with head(%s) sessionFile(%s)
'
,
setting
.
head
,
setting
.
sessionFile
)
// this.targetState('close')
// this.currentState('close')
// this.state.target('close')
// this.state.current('close')
this
.
driver
=
new
BrowserDriver
(
this
.
setting
.
head
)
this
.
cookie
=
new
BrowserCookie
(
this
.
driver
,
this
.
setting
.
sessionFile
)
}
...
...
src/puppet-web/puppet-web.ts
浏览文件 @
32234c29
...
...
@@ -193,15 +193,13 @@ export class PuppetWeb extends Puppet {
// if (this.targetState() !== 'live') {
if
(
this
.
state
.
target
()
!==
'
live
'
)
{
log
.
warn
(
'
PuppetWeb
'
,
'
initBrowser()
found state.target()) != live, no init anymore
'
)
// return Promise.resolve('skipped'
)
return
Promise
.
reject
(
'
skipped
'
)
const
e
=
new
Error
(
'
found state.target()) != live, no init anymore
'
)
log
.
warn
(
'
PuppetWeb
'
,
'
initBrowser() %s
'
,
e
.
message
)
throw
e
}
// return co.call(this, function* () {
try
{
await
browser
.
init
()
// }).catch(e => {
}
catch
(
e
)
{
log
.
error
(
'
PuppetWeb
'
,
'
initBrowser() exception: %s
'
,
e
.
message
)
throw
e
...
...
@@ -225,17 +223,18 @@ export class PuppetWeb extends Puppet {
return
Promise
.
reject
(
errMsg
)
}
await
bridge
.
init
()
.
catch
(
e
=>
{
if
(
!
this
.
browser
)
{
log
.
warn
(
'
PuppetWeb
'
,
'
initBridge() without browser?
'
)
}
else
if
(
this
.
browser
.
dead
())
{
log
.
warn
(
'
PuppetWeb
'
,
'
initBridge() found browser dead, wait it to restore
'
)
}
else
{
log
.
error
(
'
PuppetWeb
'
,
'
initBridge() exception: %s
'
,
e
.
message
)
throw
e
}
})
try
{
await
bridge
.
init
()
}
catch
(
e
)
{
if
(
!
this
.
browser
)
{
log
.
warn
(
'
PuppetWeb
'
,
'
initBridge() without browser?
'
)
}
else
if
(
this
.
browser
.
dead
())
{
log
.
warn
(
'
PuppetWeb
'
,
'
initBridge() found browser dead, wait it to restore
'
)
}
else
{
log
.
error
(
'
PuppetWeb
'
,
'
initBridge() exception: %s
'
,
e
.
message
)
throw
e
}
}
return
}
...
...
src/state-monitor.ts
浏览文件 @
32234c29
...
...
@@ -22,7 +22,7 @@ export class StateMonitor <A, B>{
private
_stable
:
boolean
constructor
(
private
_client
:
string
,
initState
:
A
|
B
)
{
log
.
verbose
(
'
StateMonitor
'
,
'
constructor(%s, %s)
'
,
_client
,
initState
)
log
.
silly
(
'
StateMonitor
'
,
'
constructor(%s, %s)
'
,
_client
,
initState
)
this
.
_target
=
initState
this
.
_current
=
initState
...
...
src/util-lib.ts
浏览文件 @
32234c29
...
...
@@ -128,7 +128,7 @@ class UtilLib {
log
.
verbose
(
'
UtilLib
'
,
'
getPort(%d) return: %d
'
,
port
,
okPort
)
)
resolve
(
okPort
)
})
})
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录