Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
f5cbb9fe
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f5cbb9fe
编写于
6月 16, 2016
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
cleanup IGalleryExtension
上级
12ba6a2a
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
72 addition
and
69 deletion
+72
-69
src/vs/code/node/cliProcessMain.ts
src/vs/code/node/cliProcessMain.ts
+2
-2
src/vs/platform/extensionManagement/common/extensionManagement.ts
...latform/extensionManagement/common/extensionManagement.ts
+13
-3
src/vs/platform/extensionManagement/node/extensionGalleryService.ts
...tform/extensionManagement/node/extensionGalleryService.ts
+22
-20
src/vs/platform/extensionManagement/node/extensionManagementService.ts
...rm/extensionManagement/node/extensionManagementService.ts
+1
-1
src/vs/platform/extensionManagement/node/extensionManagementUtil.ts
...tform/extensionManagement/node/extensionManagementUtil.ts
+10
-6
src/vs/workbench/parts/extensions/common/extensionsInput.ts
src/vs/workbench/parts/extensions/common/extensionsInput.ts
+5
-6
src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts
...ench/parts/extensions/electron-browser/extensionEditor.ts
+1
-1
src/vs/workbench/parts/extensions/electron-browser/extensionsList.ts
...bench/parts/extensions/electron-browser/extensionsList.ts
+10
-22
src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts
...ch/parts/extensions/electron-browser/extensionsViewlet.ts
+8
-8
未找到文件。
src/vs/code/node/cliProcessMain.ts
浏览文件 @
f5cbb9fe
...
...
@@ -94,8 +94,8 @@ class Main {
console
.
log
(
localize
(
'
foundExtension
'
,
"
Found '{0}' in the marketplace.
"
,
id
));
console
.
log
(
localize
(
'
installing
'
,
"
Installing...
"
));
return
this
.
extensionManagementService
.
install
(
extension
).
then
(()
=>
{
console
.
log
(
localize
(
'
successInstall
'
,
"
Extension '{0}' v{1} was successfully installed!
"
,
id
,
extension
.
version
));
return
this
.
extensionManagementService
.
install
(
extension
.
manifest
).
then
(()
=>
{
console
.
log
(
localize
(
'
successInstall
'
,
"
Extension '{0}' v{1} was successfully installed!
"
,
id
,
extension
.
manifest
.
version
));
});
});
});
...
...
src/vs/platform/extensionManagement/common/extensionManagement.ts
浏览文件 @
f5cbb9fe
...
...
@@ -44,6 +44,16 @@ export interface IExtension extends IExtensionManifest {
path
?:
string
;
}
export
interface
IGalleryExtension
extends
IGalleryMetadata
{
manifest
:
IExtensionManifest
;
// name: galleryExtension.extensionName,
// displayName: galleryExtension.displayName || galleryExtension.extensionName,
// publisher: galleryExtension.publisher.publisherName,
// version: versions[0].version,
// engines: { vscode: void 0 }, // TODO: ugly
// description: galleryExtension.shortDescription || '',
}
export
const
IExtensionManagementService
=
createDecorator
<
IExtensionManagementService
>
(
'
extensionManagementService
'
);
export
const
IExtensionGalleryService
=
createDecorator
<
IExtensionGalleryService
>
(
'
extensionGalleryService
'
);
...
...
@@ -54,10 +64,10 @@ export interface IQueryOptions {
}
export
interface
IQueryResult
{
firstPage
:
IExtension
[];
firstPage
:
I
Gallery
Extension
[];
total
:
number
;
pageSize
:
number
;
getPage
(
pageNumber
:
number
):
TPromise
<
IExtension
[]
>
;
getPage
(
pageNumber
:
number
):
TPromise
<
I
Gallery
Extension
[]
>
;
}
export
interface
IExtensionGalleryService
{
...
...
@@ -76,7 +86,7 @@ export interface IExtensionManagementService {
onUninstallExtension
:
Event
<
string
>
;
onDidUninstallExtension
:
Event
<
string
>
;
install
(
extension
:
IExtension
):
TPromise
<
void
>
;
install
(
extension
:
IExtension
Manifest
):
TPromise
<
void
>
;
install
(
zipPath
:
string
):
TPromise
<
void
>
;
uninstall
(
extension
:
IExtension
):
TPromise
<
void
>
;
getInstalled
(
includeDuplicateVersions
?:
boolean
):
TPromise
<
IExtension
[]
>
;
...
...
src/vs/platform/extensionManagement/node/extensionGalleryService.ts
浏览文件 @
f5cbb9fe
...
...
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
IExtension
,
IExtensionGalleryService
,
IGalleryVersion
,
IQueryOptions
,
IQueryResult
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
I
Gallery
Extension
,
IExtensionGalleryService
,
IGalleryVersion
,
IQueryOptions
,
IQueryResult
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
isUndefined
}
from
'
vs/base/common/types
'
;
import
{
assign
,
getOrDefault
}
from
'
vs/base/common/objects
'
;
import
{
IRequestService
}
from
'
vs/platform/request/common/request
'
;
...
...
@@ -12,29 +12,29 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import
pkg
from
'
vs/platform/package
'
;
import
product
from
'
vs/platform/product
'
;
export
interface
I
GalleryExtensionFile
{
interface
IRaw
GalleryExtensionFile
{
assetType
:
string
;
}
export
interface
I
GalleryExtensionVersion
{
interface
IRaw
GalleryExtensionVersion
{
version
:
string
;
lastUpdated
:
string
;
assetUri
:
string
;
files
:
IGalleryExtensionFile
[];
files
:
I
Raw
GalleryExtensionFile
[];
}
export
interface
I
GalleryExtension
{
interface
IRaw
GalleryExtension
{
extensionId
:
string
;
extensionName
:
string
;
displayName
:
string
;
shortDescription
:
string
;
publisher
:
{
displayName
:
string
,
publisherId
:
string
,
publisherName
:
string
;
};
versions
:
IGalleryExtensionVersion
[];
versions
:
I
Raw
GalleryExtensionVersion
[];
galleryApiUrl
:
string
;
statistics
:
IGalleryExtensionStatistics
[];
statistics
:
I
Raw
GalleryExtensionStatistics
[];
}
export
interface
I
GalleryExtensionStatistics
{
interface
IRaw
GalleryExtensionStatistics
{
statisticName
:
string
;
value
:
number
;
}
...
...
@@ -152,7 +152,7 @@ class Query {
}
}
function
getInstallCount
(
statistics
:
IGalleryExtensionStatistics
[]):
number
{
function
getInstallCount
(
statistics
:
I
Raw
GalleryExtensionStatistics
[]):
number
{
if
(
!
statistics
)
{
return
0
;
}
...
...
@@ -161,7 +161,7 @@ function getInstallCount(statistics: IGalleryExtensionStatistics[]): number {
return
result
?
result
.
value
:
0
;
}
function
toExtension
(
galleryExtension
:
I
GalleryExtension
,
extensionsGalleryUrl
:
string
,
downloadHeaders
:
any
):
I
Extension
{
function
toExtension
(
galleryExtension
:
I
RawGalleryExtension
,
extensionsGalleryUrl
:
string
,
downloadHeaders
:
any
):
IGallery
Extension
{
const
versions
=
galleryExtension
.
versions
.
map
<
IGalleryVersion
>
(
v
=>
({
version
:
v
.
version
,
date
:
v
.
lastUpdated
,
...
...
@@ -172,21 +172,23 @@ function toExtension(galleryExtension: IGalleryExtension, extensionsGalleryUrl:
iconUrl
:
`
${
v
.
assetUri
}
/Microsoft.VisualStudio.Services.Icons.Default`
}));
return
{
const
manifest
=
{
name
:
galleryExtension
.
extensionName
,
displayName
:
galleryExtension
.
displayName
||
galleryExtension
.
extensionName
,
publisher
:
galleryExtension
.
publisher
.
publisherName
,
version
:
versions
[
0
].
version
,
engines
:
{
vscode
:
void
0
},
// TODO: ugly
description
:
galleryExtension
.
shortDescription
||
''
,
galleryInformation
:
{
galleryApiUrl
:
extensionsGalleryUrl
,
id
:
galleryExtension
.
extensionId
,
publisherId
:
galleryExtension
.
publisher
.
publisherId
,
publisherDisplayName
:
galleryExtension
.
publisher
.
displayName
,
installCount
:
getInstallCount
(
galleryExtension
.
statistics
),
versions
}
};
return
{
galleryApiUrl
:
extensionsGalleryUrl
,
id
:
galleryExtension
.
extensionId
,
publisherId
:
galleryExtension
.
publisher
.
publisherId
,
publisherDisplayName
:
galleryExtension
.
publisher
.
displayName
,
installCount
:
getInstallCount
(
galleryExtension
.
statistics
),
versions
,
manifest
};
}
...
...
@@ -253,7 +255,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
});
}
private
queryGallery
(
query
:
Query
):
TPromise
<
{
galleryExtensions
:
IGalleryExtension
[],
total
:
number
;
}
>
{
private
queryGallery
(
query
:
Query
):
TPromise
<
{
galleryExtensions
:
I
Raw
GalleryExtension
[],
total
:
number
;
}
>
{
const
data
=
JSON
.
stringify
(
query
.
raw
);
return
this
.
getRequestHeaders
()
...
...
src/vs/platform/extensionManagement/node/extensionManagementService.ts
浏览文件 @
f5cbb9fe
...
...
@@ -126,7 +126,7 @@ export class ExtensionManagementService implements IExtensionManagementService {
// ];
}
install
(
extension
:
IExtension
):
TPromise
<
void
>
;
install
(
extension
:
IExtension
Manifest
):
TPromise
<
void
>
;
install
(
zipPath
:
string
):
TPromise
<
void
>
;
install
(
arg
:
any
):
TPromise
<
void
>
{
if
(
types
.
isString
(
arg
))
{
...
...
src/vs/platform/extensionManagement/node/extensionManagementUtil.ts
浏览文件 @
f5cbb9fe
...
...
@@ -5,7 +5,7 @@
'
use strict
'
;
import
{
IExtension
,
IExtensionManagementService
,
IExtensionGalleryService
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
IExtension
,
IExtensionMan
ifest
,
IExtensionMan
agementService
,
IExtensionGalleryService
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
*
as
semver
from
'
semver
'
;
...
...
@@ -13,7 +13,7 @@ export function getExtensionId(extension: IExtension): string {
return
`
${
extension
.
publisher
}
.
${
extension
.
name
}
`
;
}
export
function
extensionEquals
(
one
:
IExtension
,
other
:
IExtension
):
boolean
{
export
function
extensionEquals
(
one
:
IExtension
Manifest
,
other
:
IExtensionManifest
):
boolean
{
return
one
.
publisher
===
other
.
publisher
&&
one
.
name
===
other
.
name
;
}
...
...
@@ -39,10 +39,14 @@ export function getOutdatedExtensions(extensionsService: IExtensionManagementSer
return
galleryService
.
query
({
ids
,
pageSize
:
1000
}).
then
(
result
=>
{
const
available
=
result
.
firstPage
;
return
available
.
filter
(
extension
=>
{
const
local
=
installed
.
filter
(
local
=>
extensionEquals
(
local
,
extension
))[
0
];
return
local
&&
semver
.
lt
(
local
.
version
,
extension
.
version
);
});
return
available
.
map
(
extension
=>
{
const
local
=
installed
.
filter
(
local
=>
extensionEquals
(
local
,
extension
.
manifest
))[
0
];
if
(
local
&&
semver
.
lt
(
local
.
version
,
extension
.
manifest
.
version
))
{
return
local
;
}
else
{
return
null
;
}
}).
filter
(
e
=>
!!
e
);
});
});
}
\ No newline at end of file
src/vs/workbench/parts/extensions/common/extensionsInput.ts
浏览文件 @
f5cbb9fe
...
...
@@ -7,15 +7,14 @@
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
EditorInput
}
from
'
vs/workbench/common/editor
'
;
import
{
IExtension
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
extensionEquals
}
from
'
vs/platform/extensionManagement/node/extensionManagementUtil
'
;
import
{
IGalleryExtension
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
export
class
ExtensionsInput
extends
EditorInput
{
static
get
ID
()
{
return
'
workbench.extensions.input2
'
;
}
get
extension
():
IExtension
{
return
this
.
_extension
;
}
get
extension
():
I
Gallery
Extension
{
return
this
.
_extension
;
}
constructor
(
private
_extension
:
IExtension
)
{
constructor
(
private
_extension
:
I
Gallery
Extension
)
{
super
();
}
...
...
@@ -24,7 +23,7 @@ export class ExtensionsInput extends EditorInput {
}
getName
():
string
{
return
this
.
extension
.
displayName
;
return
this
.
extension
.
manifest
.
displayName
;
}
matches
(
other
:
any
):
boolean
{
...
...
@@ -33,7 +32,7 @@ export class ExtensionsInput extends EditorInput {
}
const
otherExtensionInput
=
other
as
ExtensionsInput
;
return
extensionEquals
(
this
.
extension
,
otherExtensionInput
.
extension
)
;
return
this
.
extension
.
id
===
otherExtensionInput
.
extension
.
id
;
}
resolve
(
refresh
?:
boolean
):
TPromise
<
any
>
{
...
...
src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts
浏览文件 @
f5cbb9fe
...
...
@@ -62,7 +62,7 @@ export class ExtensionEditor extends BaseEditor {
addClass
(
this
.
body
,
'
loading
'
);
this
.
body
.
innerHTML
=
''
;
const
[
version
]
=
input
.
extension
.
galleryInformation
.
versions
;
const
[
version
]
=
input
.
extension
.
versions
;
const
headers
=
version
.
downloadHeaders
;
const
promise
=
super
.
setInput
(
input
,
options
)
...
...
src/vs/workbench/parts/extensions/electron-browser/extensionsList.ts
浏览文件 @
f5cbb9fe
...
...
@@ -9,10 +9,10 @@ import { append, emmet as $, addClass, removeClass } from 'vs/base/browser/dom';
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IDelegate
}
from
'
vs/base/browser/ui/list/list
'
;
import
{
IPagedRenderer
}
from
'
vs/base/browser/ui/list/listPaging
'
;
import
{
IExtension
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
I
Gallery
Extension
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
export
interface
ITemplateData
{
extension
:
IExtension
;
extension
:
I
Gallery
Extension
;
element
:
HTMLElement
;
icon
:
HTMLImageElement
;
name
:
HTMLElement
;
...
...
@@ -21,23 +21,12 @@ export interface ITemplateData {
description
:
HTMLElement
;
}
export
enum
ExtensionState
{
Uninstalled
,
Installed
,
Outdated
}
export
interface
IExtensionEntry
{
extension
:
IExtension
;
state
:
ExtensionState
;
}
export
class
Delegate
implements
IDelegate
<
IExtension
>
{
export
class
Delegate
implements
IDelegate
<
IGalleryExtension
>
{
getHeight
()
{
return
62
;
}
getTemplateId
()
{
return
'
extension
'
;
}
}
export
class
Renderer
implements
IPagedRenderer
<
I
ExtensionEntry
,
ITemplateData
>
{
export
class
Renderer
implements
IPagedRenderer
<
I
GalleryExtension
,
ITemplateData
>
{
private
_templates
:
ITemplateData
[];
get
templates
():
ITemplateData
[]
{
return
this
.
_templates
;
}
...
...
@@ -75,18 +64,17 @@ export class Renderer implements IPagedRenderer<IExtensionEntry, ITemplateData>
data
.
description
.
textContent
=
''
;
}
renderElement
(
entry
:
IExtensionEntry
,
index
:
number
,
data
:
ITemplateData
):
void
{
const
extension
=
entry
.
extension
;
const
publisher
=
extension
.
galleryInformation
?
extension
.
galleryInformation
.
publisherDisplayName
:
extension
.
publisher
;
const
version
=
extension
.
galleryInformation
.
versions
[
0
];
renderElement
(
extension
:
IGalleryExtension
,
index
:
number
,
data
:
ITemplateData
):
void
{
const
publisher
=
extension
?
extension
.
publisherDisplayName
:
extension
.
manifest
.
publisher
;
const
version
=
extension
.
versions
[
0
];
data
.
extension
=
extension
;
removeClass
(
data
.
element
,
'
loading
'
);
data
.
icon
.
src
=
version
.
iconUrl
;
data
.
name
.
textContent
=
extension
.
displayName
;
data
.
version
.
textContent
=
`
${
extension
.
version
}
`
;
data
.
name
.
textContent
=
extension
.
manifest
.
displayName
;
data
.
version
.
textContent
=
`
${
extension
.
manifest
.
version
}
`
;
data
.
author
.
textContent
=
`
${
publisher
}
`
;
data
.
description
.
textContent
=
extension
.
description
;
data
.
description
.
textContent
=
extension
.
manifest
.
description
;
}
disposeTemplate
(
data
:
ITemplateData
):
void
{
...
...
src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts
浏览文件 @
f5cbb9fe
...
...
@@ -13,12 +13,12 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import
{
Builder
,
Dimension
}
from
'
vs/base/browser/builder
'
;
import
{
Viewlet
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
append
,
emmet
as
$
}
from
'
vs/base/browser/dom
'
;
import
{
PagedModel
,
mapPager
}
from
'
vs/base/common/paging
'
;
import
{
PagedModel
}
from
'
vs/base/common/paging
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
PagedList
}
from
'
vs/base/browser/ui/list/listPaging
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IExtensionEntry
,
Delegate
,
Renderer
,
ExtensionState
}
from
'
./extensionsList
'
;
import
{
IExtensionGalleryService
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
Delegate
,
Renderer
}
from
'
./extensionsList
'
;
import
{
IExtensionGalleryService
,
IGalleryExtension
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
ExtensionsInput
}
from
'
../common/extensionsInput
'
;
import
{
IProgressService
}
from
'
vs/platform/progress/common/progress
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
...
...
@@ -39,7 +39,7 @@ export class ExtensionsViewlet extends Viewlet {
private
root
:
HTMLElement
;
private
searchBox
:
HTMLInputElement
;
private
extensionsBox
:
HTMLElement
;
private
list
:
PagedList
<
I
ExtensionEntry
>
;
private
list
:
PagedList
<
I
GalleryExtension
>
;
constructor
(
@
ITelemetryService
telemetryService
:
ITelemetryService
,
...
...
@@ -70,13 +70,13 @@ export class ExtensionsViewlet extends Viewlet {
this
.
searchBox
.
oninput
=
()
=>
this
.
triggerSearch
(
this
.
searchBox
.
value
);
this
.
list
.
onSelectionChange
(
e
=>
{
const
[
e
ntry
]
=
e
.
elements
;
const
[
e
xtension
]
=
e
.
elements
;
if
(
!
e
ntry
)
{
if
(
!
e
xtension
)
{
return
;
}
return
this
.
editorService
.
openEditor
(
new
ExtensionsInput
(
e
ntry
.
e
xtension
));
return
this
.
editorService
.
openEditor
(
new
ExtensionsInput
(
extension
));
},
null
,
this
.
disposables
);
return
TPromise
.
as
(
null
);
...
...
@@ -110,7 +110,7 @@ export class ExtensionsViewlet extends Viewlet {
private
doSearch
(
text
:
string
=
''
):
TPromise
<
any
>
{
return
this
.
galleryService
.
query
({
text
})
.
then
(
result
=>
new
PagedModel
(
mapPager
(
result
,
extension
=>
({
extension
,
state
:
ExtensionState
.
Installed
}))
))
.
then
(
result
=>
new
PagedModel
(
result
))
.
then
(
model
=>
this
.
list
.
model
=
model
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录