Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
a99079f1
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a99079f1
编写于
12月 13, 2018
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
remove winjs-based polyfill promse #53526
上级
33349fa5
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
2 addition
and
319 deletion
+2
-319
build/monaco/monaco.usage.recipe
build/monaco/monaco.usage.recipe
+0
-1
src/tsconfig.strictNullChecks.json
src/tsconfig.strictNullChecks.json
+1
-2
src/vs/base/common/winjs.polyfill.promise.ts
src/vs/base/common/winjs.polyfill.promise.ts
+0
-133
src/vs/base/test/common/winjs.polyfill.promise.test.ts
src/vs/base/test/common/winjs.polyfill.promise.test.ts
+0
-183
src/vs/monaco.d.ts
src/vs/monaco.d.ts
+1
-0
未找到文件。
build/monaco/monaco.usage.recipe
浏览文件 @
a99079f1
...
...
@@ -11,7 +11,6 @@ import { SimpleWorkerClient, create as create1 } from './vs/base/common/worker/s
import { create as create2 } from './vs/editor/common/services/editorSimpleWorker';
import { QuickOpenWidget } from './vs/base/parts/quickopen/browser/quickOpenWidget';
import { SyncDescriptor0, SyncDescriptor1, SyncDescriptor2, SyncDescriptor3, SyncDescriptor4, SyncDescriptor5, SyncDescriptor6, SyncDescriptor7, SyncDescriptor8 } from './vs/platform/instantiation/common/descriptors';
import { PolyfillPromise } from './vs/base/common/winjs.polyfill.promise';
import { DiffNavigator } from './vs/editor/browser/widget/diffNavigator';
import * as editorAPI from './vs/editor/editor.api';
...
...
src/tsconfig.strictNullChecks.json
浏览文件 @
a99079f1
...
...
@@ -136,7 +136,6 @@
"./vs/base/test/common/types.test.ts"
,
"./vs/base/test/common/utils.ts"
,
"./vs/base/test/common/uuid.test.ts"
,
"./vs/base/test/common/winjs.polyfill.promise.test.ts"
,
"./vs/base/test/common/winjs.promise.test.ts"
,
"./vs/base/test/node/console.test.ts"
,
"./vs/base/test/node/decoder.test.ts"
,
...
...
@@ -772,4 +771,4 @@
"exclude"
:
[
"./typings/require-monaco.d.ts"
]
}
\ No newline at end of file
}
src/vs/base/common/winjs.polyfill.promise.ts
已删除
100644 → 0
浏览文件 @
33349fa5
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
Promise
as
WinJSPromise
}
from
'
./winjs.base
'
;
import
*
as
platform
from
'
vs/base/common/platform
'
;
import
{
isThenable
}
from
'
vs/base/common/async
'
;
function
isWinJSPromise
(
candidate
:
any
):
candidate
is
WinJSPromise
{
return
isThenable
(
candidate
)
&&
typeof
(
candidate
as
any
).
done
===
'
function
'
;
}
declare
class
WinJSPromiseRemovals
{
any
<
T
=
any
>
(
promises
:
(
T
|
PromiseLike
<
T
>
)[]):
WinJSPromise
<
{
key
:
string
;
value
:
WinJSPromise
<
T
>
;
}
>
;
}
/**
* A polyfill for the native promises. The implementation is based on
* WinJS promises but tries to gap differences between winjs promises
* and native promises.
*/
export
class
PolyfillPromise
<
T
=
any
>
implements
Promise
<
T
>
{
static
all
(
thenables
:
Thenable
<
any
>
[]):
PolyfillPromise
{
return
new
PolyfillPromise
(
WinJSPromise
.
join
(
thenables
).
then
(
null
,
values
=>
{
// WinJSPromise returns a sparse array whereas
// native promises return the *first* error
for
(
var
key
in
values
)
{
if
(
values
.
hasOwnProperty
(
key
))
{
return
values
[
key
];
}
}
}));
}
static
race
(
thenables
:
Thenable
<
any
>
[]):
PolyfillPromise
{
// WinJSPromise returns `{ key: <index/key>, value: <promise> }`
// from the `any` call and Promise.race just wants the value
return
new
PolyfillPromise
((
WinJSPromise
as
any
as
WinJSPromiseRemovals
).
any
(
thenables
).
then
(
entry
=>
entry
.
value
,
err
=>
err
.
value
));
}
static
resolve
(
value
):
PolyfillPromise
{
return
new
PolyfillPromise
(
WinJSPromise
.
wrap
(
value
));
}
static
reject
(
value
):
PolyfillPromise
{
return
new
PolyfillPromise
(
WinJSPromise
.
wrapError
(
value
));
}
private
_winjsPromise
:
WinJSPromise
;
constructor
(
winjsPromise
:
WinJSPromise
);
constructor
(
callback
:
(
resolve
:
(
value
?:
T
)
=>
void
,
reject
:
(
err
?:
any
)
=>
void
)
=>
any
);
constructor
(
initOrPromise
:
WinJSPromise
|
((
resolve
:
(
value
?:
T
)
=>
void
,
reject
:
(
err
?:
any
)
=>
void
)
=>
any
))
{
if
(
isWinJSPromise
(
initOrPromise
))
{
this
.
_winjsPromise
=
initOrPromise
;
}
else
{
this
.
_winjsPromise
=
new
WinJSPromise
((
resolve
,
reject
)
=>
{
let
initializing
=
true
;
initOrPromise
(
function
(
value
)
{
if
(
!
initializing
)
{
resolve
(
value
);
}
else
{
platform
.
setImmediate
(()
=>
resolve
(
value
));
}
},
function
(
err
)
{
if
(
!
initializing
)
{
reject
(
err
);
}
else
{
platform
.
setImmediate
(()
=>
reject
(
err
));
}
});
initializing
=
false
;
});
}
}
then
(
onFulfilled
?:
any
,
onRejected
?:
any
):
PolyfillPromise
{
let
sync
=
true
;
// To support chaining, we need to return the value of the
// onFulfilled and onRejected callback.
// WinJSPromise supports a flat-map style #then, ie. the callbacks
// passed to WinJSPromise#then can return a Promise.
let
promise
=
new
PolyfillPromise
(
this
.
_winjsPromise
.
then
(
onFulfilled
&&
function
(
value
)
{
if
(
!
sync
)
{
return
onFulfilled
(
value
);
}
else
{
return
new
WinJSPromise
((
resolve
,
reject
)
=>
{
platform
.
setImmediate
(()
=>
{
let
result
;
try
{
result
=
onFulfilled
(
value
);
}
catch
(
err2
)
{
reject
(
err2
);
return
;
}
resolve
(
result
);
});
});
}
},
onRejected
&&
function
(
err
)
{
if
(
!
sync
)
{
return
onRejected
(
err
);
}
else
{
return
new
WinJSPromise
((
resolve
,
reject
)
=>
{
platform
.
setImmediate
(()
=>
{
let
result
;
try
{
result
=
onRejected
(
err
);
}
catch
(
err2
)
{
reject
(
err2
);
return
;
}
resolve
(
result
);
});
});
}
}
));
sync
=
false
;
return
promise
;
}
catch
(
onRejected
?:
any
):
PolyfillPromise
{
return
this
.
then
(
null
,
onRejected
);
}
}
src/vs/base/test/common/winjs.polyfill.promise.test.ts
已删除
100644 → 0
浏览文件 @
33349fa5
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
*
as
assert
from
'
assert
'
;
import
{
Promise
as
WinJSPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
PolyfillPromise
}
from
'
vs/base/common/winjs.polyfill.promise
'
;
suite
(
'
Polyfill Promise
'
,
function
()
{
test
(
'
sync-resolve, NativePromise
'
,
function
()
{
// native promise behaviour
const
actual
:
string
[]
=
[];
const
promise
=
new
Promise
(
resolve
=>
{
actual
.
push
(
'
inCtor
'
);
resolve
(
void
0
);
}).
then
(()
=>
actual
.
push
(
'
inThen
'
));
actual
.
push
(
'
afterCtor
'
);
return
promise
.
then
(()
=>
{
assert
.
deepEqual
(
actual
,
[
'
inCtor
'
,
'
afterCtor
'
,
'
inThen
'
]);
});
});
test
(
'
sync-resolve, WinJSPromise
'
,
function
()
{
// winjs promise behaviour
const
actual
:
string
[]
=
[];
const
promise
=
new
WinJSPromise
(
resolve
=>
{
actual
.
push
(
'
inCtor
'
);
resolve
(
null
);
}).
then
(()
=>
actual
.
push
(
'
inThen
'
));
actual
.
push
(
'
afterCtor
'
);
return
promise
.
then
(()
=>
{
assert
.
deepEqual
(
actual
,
[
'
inCtor
'
,
'
inThen
'
,
'
afterCtor
'
]);
});
});
test
(
'
sync-resolve, PolyfillPromise
'
,
function
()
{
// winjs promise behaviour
const
actual
:
string
[]
=
[];
const
promise
=
new
PolyfillPromise
(
resolve
=>
{
actual
.
push
(
'
inCtor
'
);
resolve
(
null
);
}).
then
(()
=>
actual
.
push
(
'
inThen
'
));
actual
.
push
(
'
afterCtor
'
);
return
promise
.
then
(()
=>
{
assert
.
deepEqual
(
actual
,
[
'
inCtor
'
,
'
afterCtor
'
,
'
inThen
'
]);
});
});
test
(
'
sync-then, NativePromise
'
,
function
()
{
const
actual
:
string
[]
=
[];
const
promise
=
Promise
.
resolve
(
123
).
then
(()
=>
actual
.
push
(
'
inThen
'
));
actual
.
push
(
'
afterThen
'
);
return
promise
.
then
(()
=>
{
assert
.
deepEqual
(
actual
,
[
'
afterThen
'
,
'
inThen
'
]);
});
});
test
(
'
sync-then, WinJSPromise
'
,
function
()
{
const
actual
:
string
[]
=
[];
const
promise
=
WinJSPromise
.
as
(
123
).
then
(()
=>
actual
.
push
(
'
inThen
'
));
actual
.
push
(
'
afterThen
'
);
return
promise
.
then
(()
=>
{
assert
.
deepEqual
(
actual
,
[
'
inThen
'
,
'
afterThen
'
]);
});
});
test
(
'
sync-then, PolyfillPromise
'
,
function
()
{
const
actual
:
string
[]
=
[];
const
promise
=
PolyfillPromise
.
resolve
(
123
).
then
(()
=>
actual
.
push
(
'
inThen
'
));
actual
.
push
(
'
afterThen
'
);
return
promise
.
then
(()
=>
{
assert
.
deepEqual
(
actual
,
[
'
afterThen
'
,
'
inThen
'
]);
});
});
test
(
'
PolyfillPromise, executor has two params
'
,
function
()
{
return
new
PolyfillPromise
(
function
()
{
assert
.
equal
(
arguments
.
length
,
2
);
assert
.
equal
(
typeof
arguments
[
0
],
'
function
'
);
assert
.
equal
(
typeof
arguments
[
1
],
'
function
'
);
arguments
[
0
]();
});
});
test
(
'
Promises polyfill does not support chaining then and catch #57722
'
,
function
()
{
return
PolyfillPromise
.
resolve
(
1
).
then
(
function
(
x
)
{
return
x
+
1
;
}).
then
(
function
(
x
)
{
assert
.
equal
(
x
,
2
);
});
});
// run the same tests for the native and polyfill promise
(
<
any
[]
>
[
Promise
,
PolyfillPromise
]).
forEach
(
PromiseCtor
=>
{
test
(
PromiseCtor
.
name
+
'
, resolved value
'
,
function
()
{
return
new
PromiseCtor
((
resolve
:
Function
)
=>
resolve
(
1
)).
then
((
value
:
number
)
=>
assert
.
equal
(
value
,
1
));
});
test
(
PromiseCtor
.
name
+
'
, rejected value
'
,
function
()
{
return
new
PromiseCtor
((
_
:
Function
,
reject
:
Function
)
=>
reject
(
1
)).
then
(
null
,
(
value
:
number
)
=>
assert
.
equal
(
value
,
1
));
});
test
(
PromiseCtor
.
name
+
'
, catch
'
,
function
()
{
return
new
PromiseCtor
((
_
:
Function
,
reject
:
Function
)
=>
reject
(
1
)).
catch
((
value
:
number
)
=>
assert
.
equal
(
value
,
1
));
});
test
(
PromiseCtor
.
name
+
'
, static-resolve
'
,
function
()
{
return
PromiseCtor
.
resolve
(
42
).
then
((
value
:
number
)
=>
assert
.
equal
(
value
,
42
));
});
test
(
PromiseCtor
.
name
+
'
, static-reject
'
,
function
()
{
return
PromiseCtor
.
reject
(
42
).
then
(
null
,
(
value
:
number
)
=>
assert
.
equal
(
value
,
42
));
});
test
(
PromiseCtor
.
name
+
'
, static-all, 1
'
,
function
()
{
return
PromiseCtor
.
all
([
PromiseCtor
.
resolve
(
1
),
PromiseCtor
.
resolve
(
2
)
]).
then
((
values
:
number
[])
=>
{
assert
.
deepEqual
(
values
,
[
1
,
2
]);
});
});
test
(
PromiseCtor
.
name
+
'
, static-all, 2
'
,
function
()
{
return
PromiseCtor
.
all
([
PromiseCtor
.
resolve
(
1
),
3
,
PromiseCtor
.
resolve
(
2
)
]).
then
((
values
:
number
[])
=>
{
assert
.
deepEqual
(
values
,
[
1
,
3
,
2
]);
});
});
test
(
PromiseCtor
.
name
+
'
, static-all, 3
'
,
function
()
{
return
PromiseCtor
.
all
([
PromiseCtor
.
resolve
(
1
),
PromiseCtor
.
reject
(
13
),
PromiseCtor
.
reject
(
12
),
]).
catch
((
values
:
number
)
=>
{
assert
.
deepEqual
(
values
,
13
);
});
});
test
(
PromiseCtor
.
name
+
'
, static-race, 1
'
,
function
()
{
return
PromiseCtor
.
race
([
PromiseCtor
.
resolve
(
1
),
PromiseCtor
.
resolve
(
2
),
]).
then
((
value
:
number
)
=>
{
assert
.
deepEqual
(
value
,
1
);
});
});
test
(
PromiseCtor
.
name
+
'
, static-race, 2
'
,
function
()
{
return
PromiseCtor
.
race
([
PromiseCtor
.
reject
(
-
1
),
PromiseCtor
.
resolve
(
2
),
]).
catch
((
value
:
number
)
=>
{
assert
.
deepEqual
(
value
,
-
1
);
});
});
test
(
PromiseCtor
.
name
+
'
, static-race, 3
'
,
function
()
{
return
PromiseCtor
.
race
([
PromiseCtor
.
resolve
(
1
),
PromiseCtor
.
reject
(
2
),
]).
then
((
value
:
number
)
=>
{
assert
.
deepEqual
(
value
,
1
);
});
});
test
(
PromiseCtor
.
name
+
'
, throw in ctor
'
,
function
()
{
return
new
PromiseCtor
(()
=>
{
throw
new
Error
(
'
sooo bad
'
);
}).
catch
((
err
:
Error
)
=>
{
assert
.
equal
(
err
.
message
,
'
sooo bad
'
);
});
});
});
});
src/vs/monaco.d.ts
浏览文件 @
a99079f1
...
...
@@ -362,6 +362,7 @@ declare namespace monaco {
*/
MAX_VALUE
=
112
}
export
class
KeyMod
{
static
readonly
CtrlCmd
:
number
;
static
readonly
Shift
:
number
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录