@adminide-stack/marketplace-module-server 12.0.4-alpha.95 → 13.0.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/containers/module.d.ts +4 -4
- package/lib/containers/module.d.ts.map +1 -1
- package/lib/containers/module.js +12 -7
- package/lib/containers/module.js.map +1 -1
- package/lib/dataloaders/index.d.ts +1 -1
- package/lib/dataloaders/index.d.ts.map +1 -1
- package/lib/dataloaders/publisher-data-loader.d.ts +6 -0
- package/lib/dataloaders/publisher-data-loader.d.ts.map +1 -0
- package/lib/demo/test-graphql-examples.d.ts +73 -0
- package/lib/demo/test-graphql-examples.d.ts.map +1 -0
- package/lib/graphql/resolvers/form-templates-resolver.d.ts +220 -0
- package/lib/graphql/resolvers/form-templates-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/form-templates-resolver.js +170 -0
- package/lib/graphql/resolvers/form-templates-resolver.js.map +1 -0
- package/lib/graphql/resolvers/gallery-resolver.d.ts +15 -0
- package/lib/graphql/resolvers/gallery-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/gallery-resolver.js +35 -0
- package/lib/graphql/resolvers/gallery-resolver.js.map +1 -0
- package/lib/graphql/resolvers/index.d.ts +247 -1
- package/lib/graphql/resolvers/index.d.ts.map +1 -1
- package/lib/graphql/resolvers/index.js +1 -1
- package/lib/graphql/resolvers/installed-extension-resolver.d.ts.map +1 -1
- package/lib/graphql/resolvers/installed-extension-resolver.js +161 -35
- package/lib/graphql/resolvers/installed-extension-resolver.js.map +1 -1
- package/lib/graphql/resolvers/marketplace-form-resolver.d.ts +13 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.js +90 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.js.map +1 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts +14 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.js +221 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.js.map +1 -0
- package/lib/graphql/resolvers/publisher-resolver.d.ts +5 -0
- package/lib/graphql/resolvers/publisher-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/publisher-resolver.js +183 -0
- package/lib/graphql/resolvers/publisher-resolver.js.map +1 -0
- package/lib/graphql/resolvers/registry-extension-resolver.d.ts.map +1 -1
- package/lib/graphql/resolvers/registry-extension-resolver.js +34 -167
- package/lib/graphql/resolvers/registry-extension-resolver.js.map +1 -1
- package/lib/graphql/schemas/extension-pricing.graphql +546 -0
- package/lib/graphql/schemas/extension-pricing.graphql.js +1 -0
- package/lib/graphql/schemas/extension-pricing.graphql.js.map +1 -0
- package/lib/graphql/schemas/extension-registry.graphql +91 -58
- package/lib/graphql/schemas/extension-registry.graphql.js +1 -1
- package/lib/graphql/schemas/form-templates.graphql +269 -0
- package/lib/graphql/schemas/form-templates.graphql.js +1 -0
- package/lib/graphql/schemas/form-templates.graphql.js.map +1 -0
- package/lib/graphql/schemas/gallery-schema.graphql +247 -0
- package/lib/graphql/schemas/gallery-schema.graphql.js +1 -0
- package/lib/graphql/schemas/gallery-schema.graphql.js.map +1 -0
- package/lib/graphql/schemas/index.d.ts.map +1 -1
- package/lib/graphql/schemas/index.js +3 -1
- package/lib/graphql/schemas/index.js.map +1 -1
- package/lib/graphql/schemas/installed-extension.graphql +37 -7
- package/lib/graphql/schemas/installed-extension.graphql.js +1 -1
- package/lib/graphql/schemas/publisher-analytics.graphql +305 -0
- package/lib/graphql/schemas/publisher-analytics.graphql.js +1 -0
- package/lib/graphql/schemas/publisher-analytics.graphql.js.map +1 -0
- package/lib/graphql/schemas/publisher.graphql +584 -0
- package/lib/graphql/schemas/publisher.graphql.js +1 -0
- package/lib/graphql/schemas/publisher.graphql.js.map +1 -0
- package/lib/graphql/schemas/service.graphql +15 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.d.ts +20 -0
- package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.d.ts.map +1 -0
- package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.js +61 -0
- package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.js.map +1 -0
- package/lib/migrations/index.d.ts +2 -0
- package/lib/migrations/index.d.ts.map +1 -0
- package/lib/module.d.ts +1 -1
- package/lib/module.d.ts.map +1 -1
- package/lib/module.js +11 -26
- package/lib/module.js.map +1 -1
- package/lib/services/extension-gallery-repository.d.ts +17 -0
- package/lib/services/extension-gallery-repository.d.ts.map +1 -0
- package/lib/services/extension-gallery-repository.js +192 -0
- package/lib/services/extension-gallery-repository.js.map +1 -0
- package/lib/services/extension-gallery-service-new.d.ts +39 -0
- package/lib/services/extension-gallery-service-new.d.ts.map +1 -0
- package/lib/services/extension-gallery-service.d.ts +30 -0
- package/lib/services/extension-gallery-service.d.ts.map +1 -0
- package/lib/services/extension-gallery-service.js +334 -0
- package/lib/services/extension-gallery-service.js.map +1 -0
- package/lib/services/index.d.ts +4 -1
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/installed-extension-service-ext.d.ts +5 -2
- package/lib/services/installed-extension-service-ext.d.ts.map +1 -1
- package/lib/services/installed-extension-service-ext.js +364 -117
- package/lib/services/installed-extension-service-ext.js.map +1 -1
- package/lib/services/installed-extension-service.d.ts +30 -13
- package/lib/services/installed-extension-service.d.ts.map +1 -1
- package/lib/services/installed-extension-service.js +301 -68
- package/lib/services/installed-extension-service.js.map +1 -1
- package/lib/services/installed-extension-service.test.d.ts +0 -1
- package/lib/services/publisher-analytics-service.d.ts +128 -0
- package/lib/services/publisher-analytics-service.d.ts.map +1 -0
- package/lib/services/publisher-event-service.d.ts +48 -0
- package/lib/services/publisher-event-service.d.ts.map +1 -0
- package/lib/services/publisher-event-service.js +296 -0
- package/lib/services/publisher-event-service.js.map +1 -0
- package/lib/services/publisher-service-context.d.ts +1 -0
- package/lib/services/publisher-service-context.d.ts.map +1 -0
- package/lib/services/publisher-service.d.ts +62 -0
- package/lib/services/publisher-service.d.ts.map +1 -0
- package/lib/services/publisher-service.js +135 -0
- package/lib/services/publisher-service.js.map +1 -0
- package/lib/store/models/index.d.ts +1 -1
- package/lib/store/models/index.d.ts.map +1 -1
- package/lib/store/models/installed-extension-model.d.ts.map +1 -1
- package/lib/store/models/installed-extension-model.js +17 -45
- package/lib/store/models/installed-extension-model.js.map +1 -1
- package/lib/store/models/publisher-event-model.d.ts +11 -0
- package/lib/store/models/publisher-event-model.d.ts.map +1 -0
- package/lib/store/models/publisher-model.d.ts +5 -0
- package/lib/store/models/publisher-model.d.ts.map +1 -0
- package/lib/store/models/publisher-model.js +117 -0
- package/lib/store/models/publisher-model.js.map +1 -0
- package/lib/store/models/publisher-stats-model.d.ts +1 -0
- package/lib/store/models/publisher-stats-model.d.ts.map +1 -0
- package/lib/store/repositories/index.d.ts +1 -1
- package/lib/store/repositories/index.d.ts.map +1 -1
- package/lib/store/repositories/installed-extension-repository.d.ts +17 -11
- package/lib/store/repositories/installed-extension-repository.d.ts.map +1 -1
- package/lib/store/repositories/installed-extension-repository.js +123 -75
- package/lib/store/repositories/installed-extension-repository.js.map +1 -1
- package/lib/store/repositories/publisher-analytics-repository.d.ts +1 -0
- package/lib/store/repositories/publisher-analytics-repository.d.ts.map +1 -0
- package/lib/store/repositories/publisher-repository.d.ts +19 -0
- package/lib/store/repositories/publisher-repository.d.ts.map +1 -0
- package/lib/store/repositories/publisher-repository.js +87 -0
- package/lib/store/repositories/publisher-repository.js.map +1 -0
- package/lib/templates/constants/DB_COLL_NAMES.ts.template +1 -1
- package/lib/templates/constants/SERVER_TYPES.ts.template +8 -5
- package/lib/templates/repositories/ExtensionGalleryRepository.ts.template +44 -0
- package/lib/templates/repositories/InstalledExtensionRepository.ts.template +19 -14
- package/lib/templates/repositories/MarketplacePublisherRepository.ts.template +24 -0
- package/lib/templates/repositories/RegistryExtensionRepository.ts.template +2 -2
- package/lib/templates/services/ExtensionGalleryDataLoader.ts.template +2 -0
- package/lib/templates/services/ExtensionGalleryService.ts.template +79 -0
- package/lib/templates/services/InstalledExtensionService.ts.template +63 -32
- package/lib/templates/services/MarketplacePublisherService.ts.template +51 -0
- package/lib/templates/services/PublisherDataLoader.ts.template +3 -0
- package/lib/templates/services/PublisherEventService.ts.template +56 -0
- package/lib/templates/services/RegistryExtensionService.ts.template +46 -2
- package/lib/tests/extension-integration.test.d.ts +0 -1
- package/lib/tests/install-extension-graphql.test.d.ts +2 -0
- package/lib/tests/install-extension-graphql.test.d.ts.map +1 -0
- package/lib/utils/publisherValidation.d.ts +23 -0
- package/lib/utils/publisherValidation.d.ts.map +1 -0
- package/lib/utils/publisherValidation.js +144 -0
- package/lib/utils/publisherValidation.js.map +1 -0
- package/package.json +13 -9
- package/lib/constants/extension-events.d.ts +0 -136
- package/lib/constants/extension-events.d.ts.map +0 -1
- package/lib/dataloaders/registry-extension-data-loader.d.ts +0 -6
- package/lib/dataloaders/registry-extension-data-loader.d.ts.map +0 -1
- package/lib/dataloaders/registry-extension-data-loader.js +0 -6
- package/lib/dataloaders/registry-extension-data-loader.js.map +0 -1
- package/lib/graphql/schemas/service.graphql.js +0 -1
- package/lib/graphql/schemas/service.graphql.js.map +0 -1
- package/lib/services/extension-service.d.ts +0 -42
- package/lib/services/extension-service.d.ts.map +0 -1
- package/lib/services/extension-service.js +0 -60
- package/lib/services/extension-service.js.map +0 -1
- package/lib/store/models/registry-extension-model.d.ts +0 -5
- package/lib/store/models/registry-extension-model.d.ts.map +0 -1
- package/lib/store/models/registry-extension-model.js +0 -83
- package/lib/store/models/registry-extension-model.js.map +0 -1
- package/lib/store/repositories/registry-extension-repository.d.ts +0 -54
- package/lib/store/repositories/registry-extension-repository.d.ts.map +0 -1
- package/lib/store/repositories/registry-extension-repository.js +0 -137
- package/lib/store/repositories/registry-extension-repository.js.map +0 -1
- package/lib/templates/services/RegistryExtensionDataLoader.ts.template +0 -2
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
type GalleryPager {
|
|
2
|
+
page: Int
|
|
3
|
+
total: Int
|
|
4
|
+
pageSize: Int
|
|
5
|
+
firstPage: [GalleryExtension]
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
"""
|
|
9
|
+
Enhanced gallery statistics for marketplace analytics
|
|
10
|
+
"""
|
|
11
|
+
type GalleryStats {
|
|
12
|
+
totalExtensions: Int!
|
|
13
|
+
totalDownloads: Int!
|
|
14
|
+
averageRating: Float
|
|
15
|
+
topCategories: [String!]
|
|
16
|
+
recentlyUpdated: [GalleryExtension!]
|
|
17
|
+
mostPopular: [GalleryExtension!]
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
"""
|
|
21
|
+
Social media and external links for publishers
|
|
22
|
+
"""
|
|
23
|
+
type PublisherSocialLink {
|
|
24
|
+
platform: String! # "twitter", "github", "linkedin", etc.
|
|
25
|
+
url: String!
|
|
26
|
+
username: String
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
type GalleryExtensionAssets {
|
|
32
|
+
manifest: GalleryExtensionAsset
|
|
33
|
+
readme: GalleryExtensionAsset
|
|
34
|
+
changelog: GalleryExtensionAsset
|
|
35
|
+
download: GalleryExtensionAsset
|
|
36
|
+
icon: GalleryExtensionAsset
|
|
37
|
+
license: GalleryExtensionAsset
|
|
38
|
+
repository: GalleryExtensionAsset
|
|
39
|
+
coreTranslations: JSON
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
type GalleryExtensionResources {
|
|
44
|
+
manifest: String
|
|
45
|
+
readme: String
|
|
46
|
+
changelog: String
|
|
47
|
+
download: String
|
|
48
|
+
icon: String
|
|
49
|
+
license: String
|
|
50
|
+
repository: String
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
type GalleryExtensionAsset {
|
|
55
|
+
uri: String
|
|
56
|
+
fallbackUri: String
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
type GalleryExtensionProperties {
|
|
60
|
+
engine: String
|
|
61
|
+
dependencies: [String]
|
|
62
|
+
extensionPack: [String]
|
|
63
|
+
localizedLanguages: [String]
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
"""
|
|
67
|
+
Gallery extensions are an enhanced superset of registry extensions,
|
|
68
|
+
adding marketplace-specific fields for better user experience
|
|
69
|
+
|
|
70
|
+
Data Flow: RegistryExtension (Core) -> GalleryExtension (Enhanced)
|
|
71
|
+
- All RegistryExtension fields are inherited from the core extension module
|
|
72
|
+
- Additional marketplace fields are computed/cached
|
|
73
|
+
- Publishing operations update core RegistryExtension, which propagates to GalleryExtension
|
|
74
|
+
"""
|
|
75
|
+
type GalleryExtension {
|
|
76
|
+
"""Core registry extension data - inherited from core RegistryExtension"""
|
|
77
|
+
# All core RegistryExtension fields (defined in extension module)
|
|
78
|
+
id: String!
|
|
79
|
+
uuid: String!
|
|
80
|
+
name: String!
|
|
81
|
+
extensionSlug: String
|
|
82
|
+
version: String
|
|
83
|
+
status: ExtensionRegistryStatus
|
|
84
|
+
publisher: MarketplacePublisher
|
|
85
|
+
manifest: ExtensionManifest
|
|
86
|
+
updatedAt: DateTime
|
|
87
|
+
url: String
|
|
88
|
+
remoteURL: String
|
|
89
|
+
isLocal: Boolean
|
|
90
|
+
viewerCanAdminister: Boolean
|
|
91
|
+
releases: [ExtensionRelease!]
|
|
92
|
+
installed: Boolean
|
|
93
|
+
|
|
94
|
+
"""Gallery-specific enhancements for marketplace display"""
|
|
95
|
+
# Visual presentation
|
|
96
|
+
displayName: String
|
|
97
|
+
description: String
|
|
98
|
+
icon: String
|
|
99
|
+
preview: Boolean
|
|
100
|
+
|
|
101
|
+
# Publisher info for display
|
|
102
|
+
publisherId: String
|
|
103
|
+
|
|
104
|
+
# Marketplace metadata (computed/cached from usage data)
|
|
105
|
+
installCount: Int
|
|
106
|
+
rating: Float
|
|
107
|
+
ratingCount: Float
|
|
108
|
+
date: String
|
|
109
|
+
downloadCount: Int
|
|
110
|
+
weeklyDownloads: Int
|
|
111
|
+
|
|
112
|
+
# Rich assets for marketplace presentation
|
|
113
|
+
assets: GalleryExtensionAssets
|
|
114
|
+
resources: GalleryExtensionResources
|
|
115
|
+
properties: GalleryExtensionProperties
|
|
116
|
+
|
|
117
|
+
# Extension identification (compatibility)
|
|
118
|
+
identifier: ExtensionIdentifier
|
|
119
|
+
|
|
120
|
+
# Marketplace-specific fields
|
|
121
|
+
categories: [String!]
|
|
122
|
+
tags: [String!]
|
|
123
|
+
featured: Boolean
|
|
124
|
+
|
|
125
|
+
"""Reference back to the underlying core registry extension"""
|
|
126
|
+
coreExtension: RegistryExtension
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
input GalleryFilter {
|
|
130
|
+
value: String
|
|
131
|
+
filterType: String
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
input GalleryQueryInput {
|
|
135
|
+
text: String
|
|
136
|
+
ids: [String]
|
|
137
|
+
names: [String]
|
|
138
|
+
pageSize: Int
|
|
139
|
+
sortBy: Int
|
|
140
|
+
sortOrder: Int
|
|
141
|
+
source: String
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
extend type Query {
|
|
146
|
+
"""
|
|
147
|
+
Get gallery extensions with marketplace-specific enhancements
|
|
148
|
+
This extends RegistryExtension data with marketplace fields
|
|
149
|
+
"""
|
|
150
|
+
gallery(query: GalleryQueryInput): GalleryPager
|
|
151
|
+
|
|
152
|
+
"""
|
|
153
|
+
Get a single gallery extension with full marketplace data
|
|
154
|
+
"""
|
|
155
|
+
galleryExtension(extensionSlug: String!): GalleryExtension
|
|
156
|
+
|
|
157
|
+
"""
|
|
158
|
+
Get gallery statistics and featured content
|
|
159
|
+
"""
|
|
160
|
+
galleryStats: GalleryStats
|
|
161
|
+
|
|
162
|
+
"""
|
|
163
|
+
Get gallery extensions by category
|
|
164
|
+
"""
|
|
165
|
+
galleryByCategory(category: String!, first: Int, after: String): GalleryPager
|
|
166
|
+
|
|
167
|
+
"""
|
|
168
|
+
Get trending/featured extensions
|
|
169
|
+
"""
|
|
170
|
+
galleryFeatured(limit: Int = 10): [GalleryExtension!]
|
|
171
|
+
|
|
172
|
+
"""
|
|
173
|
+
Search gallery with advanced filters
|
|
174
|
+
"""
|
|
175
|
+
gallerySearch(
|
|
176
|
+
text: String
|
|
177
|
+
category: String
|
|
178
|
+
sortBy: GallerySortBy
|
|
179
|
+
sortOrder: SortOrder
|
|
180
|
+
first: Int
|
|
181
|
+
after: String
|
|
182
|
+
): GalleryPager
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
enum GallerySortBy {
|
|
186
|
+
NAME
|
|
187
|
+
INSTALL_COUNT
|
|
188
|
+
RATING
|
|
189
|
+
UPDATED_DATE
|
|
190
|
+
PUBLISHED_DATE
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
enum SortOrder {
|
|
194
|
+
ASC
|
|
195
|
+
DESC
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
extend type Mutation {
|
|
199
|
+
"""
|
|
200
|
+
Install extension from gallery (marketplace action)
|
|
201
|
+
"""
|
|
202
|
+
installExtensionFromGallery(extensionSlug: String!): GalleryInstallResult!
|
|
203
|
+
|
|
204
|
+
"""
|
|
205
|
+
Remove/uninstall extension (marketplace action)
|
|
206
|
+
"""
|
|
207
|
+
removeExtension(id: String!): Boolean
|
|
208
|
+
|
|
209
|
+
"""
|
|
210
|
+
Install extension from VSIX file
|
|
211
|
+
"""
|
|
212
|
+
install(vsix: String!): ExtensionIdentifier
|
|
213
|
+
|
|
214
|
+
"""
|
|
215
|
+
Rate an extension in the gallery
|
|
216
|
+
"""
|
|
217
|
+
rateExtension(extensionSlug: String!, rating: Float!, review: String): GalleryRatingResult!
|
|
218
|
+
|
|
219
|
+
"""
|
|
220
|
+
Update gallery metadata for an extension (publisher action)
|
|
221
|
+
This syncs with the underlying RegistryExtension
|
|
222
|
+
"""
|
|
223
|
+
updateGalleryExtension(input: GalleryExtensionUpdateInput!): GalleryExtension!
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
type GalleryInstallResult {
|
|
227
|
+
success: Boolean!
|
|
228
|
+
extension: GalleryExtension
|
|
229
|
+
message: String
|
|
230
|
+
error: String
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
type GalleryRatingResult {
|
|
234
|
+
success: Boolean!
|
|
235
|
+
newRating: Float
|
|
236
|
+
newRatingCount: Int
|
|
237
|
+
message: String
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
input GalleryExtensionUpdateInput {
|
|
241
|
+
extensionSlug: String!
|
|
242
|
+
displayName: String
|
|
243
|
+
description: String
|
|
244
|
+
icon: String
|
|
245
|
+
tags: [String!]
|
|
246
|
+
category: String
|
|
247
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var gallerySchema = "type GalleryPager {\n page: Int\n total: Int\n pageSize: Int\n firstPage: [GalleryExtension]\n}\n\n\"\"\"\nEnhanced gallery statistics for marketplace analytics\n\"\"\"\ntype GalleryStats {\n totalExtensions: Int!\n totalDownloads: Int!\n averageRating: Float\n topCategories: [String!]\n recentlyUpdated: [GalleryExtension!]\n mostPopular: [GalleryExtension!]\n}\n\n\"\"\"\nSocial media and external links for publishers\n\"\"\"\ntype PublisherSocialLink {\n platform: String! # \"twitter\", \"github\", \"linkedin\", etc.\n url: String!\n username: String\n}\n\n\n\ntype GalleryExtensionAssets {\n manifest: GalleryExtensionAsset\n readme: GalleryExtensionAsset\n changelog: GalleryExtensionAsset\n download: GalleryExtensionAsset\n icon: GalleryExtensionAsset\n license: GalleryExtensionAsset\n repository: GalleryExtensionAsset\n coreTranslations: JSON\n\n}\n\ntype GalleryExtensionResources {\n manifest: String\n readme: String\n changelog: String\n download: String\n icon: String\n license: String\n repository: String\n\n}\n\ntype GalleryExtensionAsset {\n uri: String\n fallbackUri: String\n}\n\ntype GalleryExtensionProperties {\n engine: String\n dependencies: [String]\n extensionPack: [String]\n localizedLanguages: [String]\n}\n\n\"\"\"\nGallery extensions are an enhanced superset of registry extensions,\nadding marketplace-specific fields for better user experience\n\nData Flow: RegistryExtension (Core) -> GalleryExtension (Enhanced)\n- All RegistryExtension fields are inherited from the core extension module\n- Additional marketplace fields are computed/cached\n- Publishing operations update core RegistryExtension, which propagates to GalleryExtension\n\"\"\"\ntype GalleryExtension {\n \"\"\"Core registry extension data - inherited from core RegistryExtension\"\"\"\n # All core RegistryExtension fields (defined in extension module)\n id: String!\n uuid: String!\n name: String!\n extensionSlug: String\n version: String\n status: ExtensionRegistryStatus\n publisher: MarketplacePublisher\n manifest: ExtensionManifest\n updatedAt: DateTime\n url: String\n remoteURL: String\n isLocal: Boolean\n viewerCanAdminister: Boolean\n releases: [ExtensionRelease!]\n installed: Boolean\n \n \"\"\"Gallery-specific enhancements for marketplace display\"\"\"\n # Visual presentation\n displayName: String\n description: String\n icon: String\n preview: Boolean\n \n # Publisher info for display\n publisherId: String\n \n # Marketplace metadata (computed/cached from usage data)\n installCount: Int\n rating: Float\n ratingCount: Float\n date: String\n downloadCount: Int\n weeklyDownloads: Int\n \n # Rich assets for marketplace presentation\n assets: GalleryExtensionAssets\n resources: GalleryExtensionResources\n properties: GalleryExtensionProperties\n \n # Extension identification (compatibility)\n identifier: ExtensionIdentifier\n \n # Marketplace-specific fields\n categories: [String!]\n tags: [String!]\n featured: Boolean\n \n \"\"\"Reference back to the underlying core registry extension\"\"\"\n coreExtension: RegistryExtension\n}\n\ninput GalleryFilter {\n value: String\n filterType: String\n}\n\ninput GalleryQueryInput {\n text: String\n ids: [String]\n names: [String]\n pageSize: Int\n sortBy: Int\n sortOrder: Int\n source: String\n}\n\n\nextend type Query {\n \"\"\"\n Get gallery extensions with marketplace-specific enhancements\n This extends RegistryExtension data with marketplace fields\n \"\"\"\n gallery(query: GalleryQueryInput): GalleryPager\n \n \"\"\"\n Get a single gallery extension with full marketplace data\n \"\"\"\n galleryExtension(extensionSlug: String!): GalleryExtension\n \n \"\"\"\n Get gallery statistics and featured content\n \"\"\"\n galleryStats: GalleryStats\n \n \"\"\"\n Get gallery extensions by category\n \"\"\"\n galleryByCategory(category: String!, first: Int, after: String): GalleryPager\n \n \"\"\"\n Get trending/featured extensions\n \"\"\"\n galleryFeatured(limit: Int = 10): [GalleryExtension!]\n \n \"\"\"\n Search gallery with advanced filters\n \"\"\"\n gallerySearch(\n text: String\n category: String\n sortBy: GallerySortBy\n sortOrder: SortOrder\n first: Int\n after: String\n ): GalleryPager\n}\n\nenum GallerySortBy {\n NAME\n INSTALL_COUNT\n RATING\n UPDATED_DATE\n PUBLISHED_DATE\n}\n\nenum SortOrder {\n ASC\n DESC\n}\n\nextend type Mutation {\n \"\"\"\n Install extension from gallery (marketplace action)\n \"\"\"\n installExtensionFromGallery(extensionSlug: String!): GalleryInstallResult!\n \n \"\"\"\n Remove/uninstall extension (marketplace action) \n \"\"\"\n removeExtension(id: String!): Boolean\n \n \"\"\"\n Install extension from VSIX file\n \"\"\"\n install(vsix: String!): ExtensionIdentifier\n \n \"\"\"\n Rate an extension in the gallery\n \"\"\"\n rateExtension(extensionSlug: String!, rating: Float!, review: String): GalleryRatingResult!\n \n \"\"\"\n Update gallery metadata for an extension (publisher action)\n This syncs with the underlying RegistryExtension\n \"\"\"\n updateGalleryExtension(input: GalleryExtensionUpdateInput!): GalleryExtension!\n}\n\ntype GalleryInstallResult {\n success: Boolean!\n extension: GalleryExtension\n message: String\n error: String\n}\n\ntype GalleryRatingResult {\n success: Boolean!\n newRating: Float\n newRatingCount: Int\n message: String\n}\n\ninput GalleryExtensionUpdateInput {\n extensionSlug: String!\n displayName: String\n description: String\n icon: String\n tags: [String!]\n category: String\n}\n";export{gallerySchema as default};//# sourceMappingURL=gallery-schema.graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gallery-schema.graphql.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphql/schemas/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphql/schemas/index.ts"],"names":[],"mappings":"AASA,QAAA,MAAM,MAAM,QASA,CAAC;AACb,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -1 +1,3 @@
|
|
|
1
|
-
import extensionRegistrySchema from'./extension-registry.graphql.js';import installedExtensionSchema from'./installed-extension.graphql.js';import
|
|
1
|
+
import extensionRegistrySchema from'./extension-registry.graphql.js';import installedExtensionSchema from'./installed-extension.graphql.js';import publisherSchema from'./publisher.graphql.js';import publisherAnalyticsSchema from'./publisher-analytics.graphql.js';import formTemplatesSchema from'./form-templates.graphql.js';import gallerySchema from'./gallery-schema.graphql.js';import extensionPricingSchema from'./extension-pricing.graphql.js';const schema = [extensionRegistrySchema, installedExtensionSchema, publisherSchema, publisherAnalyticsSchema,
|
|
2
|
+
// serviceSchema,
|
|
3
|
+
formTemplatesSchema, gallerySchema, extensionPricingSchema].join('\n');export{schema};//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -107,8 +107,8 @@ Main installed extension type
|
|
|
107
107
|
"""
|
|
108
108
|
type InstalledExtension implements Node @entity {
|
|
109
109
|
id: ID! @id
|
|
110
|
-
|
|
111
|
-
extension: RegistryExtension @column(overrideType: "ObjectId")
|
|
110
|
+
organization: Organization @column(overrideType: "ObjectId")
|
|
111
|
+
extension: RegistryExtension! @column(overrideType: "ObjectId")
|
|
112
112
|
installedVersion: String! @column
|
|
113
113
|
status: InstalledExtensionStatus! @column
|
|
114
114
|
lifecycle: ExtensionLifecycle! @embedded
|
|
@@ -123,6 +123,14 @@ type InstalledExtension implements Node @entity {
|
|
|
123
123
|
dependencies: [String!] @column
|
|
124
124
|
dependents: [String!] @column
|
|
125
125
|
auditLog: [ExtensionAuditEntry!] @embedded
|
|
126
|
+
"""The source database collection this installed extension references"""
|
|
127
|
+
sourceCollection: String @column
|
|
128
|
+
"""The ObjectId of the specific document in the source collection"""
|
|
129
|
+
sourceDocumentId: String @column
|
|
130
|
+
"""Additional metadata for the installed extension"""
|
|
131
|
+
metadata: JSON @column
|
|
132
|
+
"""The actual document from the source collection (resolved via DataLoader, returns null if not found or no reference)"""
|
|
133
|
+
sourceDocument: JSON
|
|
126
134
|
}
|
|
127
135
|
|
|
128
136
|
"""
|
|
@@ -184,8 +192,15 @@ Input for installing an extension
|
|
|
184
192
|
input InstallExtensionInput {
|
|
185
193
|
extensionSlug: String!
|
|
186
194
|
version: String!
|
|
195
|
+
orgName: String
|
|
187
196
|
policies: ExtensionPoliciesInput
|
|
188
197
|
settings: ExtensionSettingsInput
|
|
198
|
+
"""The source database collection this extension references"""
|
|
199
|
+
sourceCollection: String
|
|
200
|
+
"""The ObjectId of the specific document in the source collection"""
|
|
201
|
+
sourceDocumentId: String
|
|
202
|
+
"""Additional metadata for the installation"""
|
|
203
|
+
metadata: JSON
|
|
189
204
|
}
|
|
190
205
|
|
|
191
206
|
"""
|
|
@@ -234,11 +249,21 @@ type ExtensionSyncResponse {
|
|
|
234
249
|
message: String!
|
|
235
250
|
}
|
|
236
251
|
|
|
252
|
+
"""
|
|
253
|
+
Response type for orphaned extension cleanup
|
|
254
|
+
"""
|
|
255
|
+
type OrphanedExtensionCleanupResponse {
|
|
256
|
+
success: Boolean!
|
|
257
|
+
message: String!
|
|
258
|
+
removed: [String!]!
|
|
259
|
+
warnings: [String!]!
|
|
260
|
+
}
|
|
261
|
+
|
|
237
262
|
extend type Query {
|
|
238
263
|
"""
|
|
239
264
|
Get all installed extensions for the current tenant
|
|
240
265
|
"""
|
|
241
|
-
installedExtensions(enabled: Boolean): [InstalledExtension!]!
|
|
266
|
+
installedExtensions(enabled: Boolean, orgName: String): [InstalledExtension!]!
|
|
242
267
|
|
|
243
268
|
"""
|
|
244
269
|
Get a specific installed extension
|
|
@@ -265,22 +290,22 @@ extend type Mutation {
|
|
|
265
290
|
"""
|
|
266
291
|
Uninstall an extension
|
|
267
292
|
"""
|
|
268
|
-
uninstallExtension(extensionSlug: String
|
|
293
|
+
uninstallExtension(extensionSlug: String!, orgName: String): ExtensionMutationResponse!
|
|
269
294
|
|
|
270
295
|
"""
|
|
271
296
|
Enable or disable an extension
|
|
272
297
|
"""
|
|
273
|
-
toggleExtension(extensionSlug: String!, enabled: Boolean
|
|
298
|
+
toggleExtension(extensionSlug: String!, enabled: Boolean!, orgName: String): ExtensionMutationResponse!
|
|
274
299
|
|
|
275
300
|
"""
|
|
276
301
|
Update extension settings
|
|
277
302
|
"""
|
|
278
|
-
updateExtensionSettings(extensionSlug: String!, settings: JSON
|
|
303
|
+
updateExtensionSettings(extensionSlug: String!, settings: JSON!, orgName: String): ExtensionMutationResponse!
|
|
279
304
|
|
|
280
305
|
"""
|
|
281
306
|
Update an extension to a newer version
|
|
282
307
|
"""
|
|
283
|
-
updateExtensionVersion(extensionSlug: String!, version: String
|
|
308
|
+
updateExtensionVersion(extensionSlug: String!, version: String!, orgName: String): ExtensionMutationResponse!
|
|
284
309
|
|
|
285
310
|
"""
|
|
286
311
|
Sync installed extensions with registry
|
|
@@ -291,4 +316,9 @@ extend type Mutation {
|
|
|
291
316
|
Clean up deprecated or removed extensions
|
|
292
317
|
"""
|
|
293
318
|
cleanupExtensions(dryRun: Boolean): ExtensionCleanupResponse!
|
|
319
|
+
|
|
320
|
+
"""
|
|
321
|
+
Clean up orphaned extensions that exist in installed_extensions but not in system_extension registry
|
|
322
|
+
"""
|
|
323
|
+
cleanupOrphanedExtensions(dryRun: Boolean, orgName: String): OrphanedExtensionCleanupResponse!
|
|
294
324
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var installedExtensionSchema = "\"\"\"\nInstalled extension status enumeration\n\"\"\"\nenum InstalledExtensionStatus {\n installed\n deprecated_installed\n suspended\n orphaned\n force_disabled\n}\n\n\"\"\"\nRegistry status cached from extensionRegistry\n\"\"\"\nenum ExtensionRegistryStatus {\n active\n deprecated\n suspended\n removed\n emergency_removed\n}\n\n\"\"\"\nRuntime activation state\n\"\"\"\nenum ExtensionActivationState {\n enabled\n disabled\n disabled_by_user\n disabled_by_admin\n disabled_by_policy\n}\n\n\"\"\"\nExtension lifecycle management information\n\"\"\"\ntype ExtensionLifecycle @entity(embedded: true) {\n registryStatus: ExtensionRegistryStatus! @column\n isOrphaned: Boolean! @column\n deprecationWarningShown: Boolean! @column\n autoUpdateBlocked: Boolean! @column\n lastRegistryCheck: String! @column\n}\n\n\"\"\"\nAdmin policies for extension behavior\n\"\"\"\ntype ExtensionPolicies @entity(embedded: true) {\n allowOrphanedExecution: Boolean! @column\n requireSecurityUpdates: Boolean! @column\n autoRemoveDeprecated: Boolean! @column\n deprecationGracePeriod: Int! @column\n}\n\n\"\"\"\nExtension settings for user preferences and system state\n\"\"\"\ntype ExtensionSettings @entity(embedded: true) {\n userEnabled: Boolean! @column\n systemEnabled: Boolean! @column\n effectiveEnabled: Boolean! @column\n userConfig: JSON @column\n systemConfig: JSON @column\n}\n\n\"\"\"\nRuntime activation error information\n\"\"\"\ntype ExtensionActivationError @entity(embedded: true) {\n message: String! @column\n code: String! @column\n timestamp: String! @column\n}\n\n\"\"\"\nPerformance metrics\n\"\"\"\ntype ExtensionMetrics @entity(embedded: true) {\n activationTime: Float! @column\n memoryUsage: Float! @column\n lastMeasured: String! @column\n}\n\n\"\"\"\nRuntime information about extension execution\n\"\"\"\ntype ExtensionRuntime @entity(embedded: true) {\n activationState: ExtensionActivationState! @column\n lastActivated: DateTime @column(overrideType: \"Date\")\n lastDeactivated: DateTime @column(overrideType: \"Date\")\n activationError: ExtensionActivationError @embedded\n metrics: ExtensionMetrics @embedded\n}\n\n\"\"\"\nAudit log entry for extension actions\n\"\"\"\ntype ExtensionAuditEntry @entity(embedded: true) {\n action: String! @column\n timestamp: DateTime! @column(overrideType: \"Date\")\n user: UserAccount! @column(overrideType: \"ObjectId\")\n details: JSON @column\n}\n\n\"\"\"\nMain installed extension type\n\"\"\"\ntype InstalledExtension implements Node @entity {\n id: ID! @id\n
|
|
1
|
+
var installedExtensionSchema = "\"\"\"\nInstalled extension status enumeration\n\"\"\"\nenum InstalledExtensionStatus {\n installed\n deprecated_installed\n suspended\n orphaned\n force_disabled\n}\n\n\"\"\"\nRegistry status cached from extensionRegistry\n\"\"\"\nenum ExtensionRegistryStatus {\n active\n deprecated\n suspended\n removed\n emergency_removed\n}\n\n\"\"\"\nRuntime activation state\n\"\"\"\nenum ExtensionActivationState {\n enabled\n disabled\n disabled_by_user\n disabled_by_admin\n disabled_by_policy\n}\n\n\"\"\"\nExtension lifecycle management information\n\"\"\"\ntype ExtensionLifecycle @entity(embedded: true) {\n registryStatus: ExtensionRegistryStatus! @column\n isOrphaned: Boolean! @column\n deprecationWarningShown: Boolean! @column\n autoUpdateBlocked: Boolean! @column\n lastRegistryCheck: String! @column\n}\n\n\"\"\"\nAdmin policies for extension behavior\n\"\"\"\ntype ExtensionPolicies @entity(embedded: true) {\n allowOrphanedExecution: Boolean! @column\n requireSecurityUpdates: Boolean! @column\n autoRemoveDeprecated: Boolean! @column\n deprecationGracePeriod: Int! @column\n}\n\n\"\"\"\nExtension settings for user preferences and system state\n\"\"\"\ntype ExtensionSettings @entity(embedded: true) {\n userEnabled: Boolean! @column\n systemEnabled: Boolean! @column\n effectiveEnabled: Boolean! @column\n userConfig: JSON @column\n systemConfig: JSON @column\n}\n\n\"\"\"\nRuntime activation error information\n\"\"\"\ntype ExtensionActivationError @entity(embedded: true) {\n message: String! @column\n code: String! @column\n timestamp: String! @column\n}\n\n\"\"\"\nPerformance metrics\n\"\"\"\ntype ExtensionMetrics @entity(embedded: true) {\n activationTime: Float! @column\n memoryUsage: Float! @column\n lastMeasured: String! @column\n}\n\n\"\"\"\nRuntime information about extension execution\n\"\"\"\ntype ExtensionRuntime @entity(embedded: true) {\n activationState: ExtensionActivationState! @column\n lastActivated: DateTime @column(overrideType: \"Date\")\n lastDeactivated: DateTime @column(overrideType: \"Date\")\n activationError: ExtensionActivationError @embedded\n metrics: ExtensionMetrics @embedded\n}\n\n\"\"\"\nAudit log entry for extension actions\n\"\"\"\ntype ExtensionAuditEntry @entity(embedded: true) {\n action: String! @column\n timestamp: DateTime! @column(overrideType: \"Date\")\n user: UserAccount! @column(overrideType: \"ObjectId\")\n details: JSON @column\n}\n\n\"\"\"\nMain installed extension type\n\"\"\"\ntype InstalledExtension implements Node @entity {\n id: ID! @id\n organization: Organization @column(overrideType: \"ObjectId\")\n extension: RegistryExtension! @column(overrideType: \"ObjectId\")\n installedVersion: String! @column\n status: InstalledExtensionStatus! @column\n lifecycle: ExtensionLifecycle! @embedded\n policies: ExtensionPolicies! @embedded\n settings: ExtensionSettings! @embedded\n runtime: ExtensionRuntime! @embedded\n installedAt: DateTime! @column(overrideType: \"Date\")\n installedBy: UserAccount! @column(overrideType: \"ObjectId\")\n lastUpdated: DateTime @column(overrideType: \"Date\")\n lastUpdatedBy: UserAccount @column(overrideType: \"ObjectId\")\n availableVersion: String @column\n dependencies: [String!] @column\n dependents: [String!] @column\n auditLog: [ExtensionAuditEntry!] @embedded\n \"\"\"The source database collection this installed extension references\"\"\"\n sourceCollection: String @column\n \"\"\"The ObjectId of the specific document in the source collection\"\"\"\n sourceDocumentId: String @column\n \"\"\"Additional metadata for the installed extension\"\"\"\n metadata: JSON @column\n \"\"\"The actual document from the source collection (resolved via DataLoader, returns null if not found or no reference)\"\"\"\n sourceDocument: JSON\n}\n\n\"\"\"\nRegistry information for display\n\"\"\"\ntype ExtensionRegistryInfo {\n displayName: String!\n description: String!\n publisher: String!\n latestVersion: String!\n tags: [String!]!\n categories: [String!]!\n deprecation: JSON\n suspension: JSON\n}\n\n\"\"\"\nNotification action\n\"\"\"\ntype NotificationAction {\n label: String!\n action: String!\n url: String\n extensionSlug: String\n}\n\n\"\"\"\nExtension notification\n\"\"\"\ntype ExtensionNotification {\n type: String!\n severity: String!\n message: String!\n actions: [NotificationAction!]\n}\n\n\"\"\"\nExtension update information\n\"\"\"\ntype ExtensionUpdate {\n extensionSlug: String!\n currentVersion: String!\n availableVersion: String!\n isSecurityUpdate: Boolean!\n}\n\n\"\"\"\nExtension cleanup result\n\"\"\"\ntype ExtensionCleanupResult {\n removed: [String!]!\n deprecated: [String!]!\n warnings: [String!]!\n}\n\n\"\"\"\nInput for installing an extension\n\"\"\"\ninput InstallExtensionInput {\n extensionSlug: String!\n version: String!\n orgName: String\n policies: ExtensionPoliciesInput\n settings: ExtensionSettingsInput\n \"\"\"The source database collection this extension references\"\"\"\n sourceCollection: String\n \"\"\"The ObjectId of the specific document in the source collection\"\"\"\n sourceDocumentId: String\n \"\"\"Additional metadata for the installation\"\"\"\n metadata: JSON\n}\n\n\"\"\"\nInput for extension policies\n\"\"\"\ninput ExtensionPoliciesInput {\n allowOrphanedExecution: Boolean\n requireSecurityUpdates: Boolean\n autoRemoveDeprecated: Boolean\n deprecationGracePeriod: Int\n}\n\n\"\"\"\nInput for extension settings\n\"\"\"\ninput ExtensionSettingsInput {\n userEnabled: Boolean\n systemEnabled: Boolean\n userConfig: JSON\n systemConfig: JSON\n}\n\n\"\"\"\nResponse type for extension mutations\n\"\"\"\ntype ExtensionMutationResponse {\n success: Boolean!\n extension: InstalledExtension\n message: String!\n}\n\n\"\"\"\nResponse type for cleanup operations\n\"\"\"\ntype ExtensionCleanupResponse {\n success: Boolean!\n result: ExtensionCleanupResult\n message: String!\n}\n\n\"\"\"\nResponse type for sync operations\n\"\"\"\ntype ExtensionSyncResponse {\n success: Boolean!\n message: String!\n}\n\n\"\"\"\nResponse type for orphaned extension cleanup\n\"\"\"\ntype OrphanedExtensionCleanupResponse {\n success: Boolean!\n message: String!\n removed: [String!]!\n warnings: [String!]!\n}\n\nextend type Query {\n \"\"\"\n Get all installed extensions for the current tenant\n \"\"\"\n installedExtensions(enabled: Boolean, orgName: String): [InstalledExtension!]!\n\n \"\"\"\n Get a specific installed extension\n \"\"\"\n installedExtension(extensionSlug: String!): InstalledExtension\n\n \"\"\"\n Get installed extensions that need attention\n \"\"\"\n extensionsNeedingAttention: [InstalledExtension!]!\n\n \"\"\"\n Check for available updates\n \"\"\"\n extensionUpdates(extensionSlug: String): [ExtensionUpdate!]!\n}\n\nextend type Mutation {\n \"\"\"\n Install an extension from the registry\n \"\"\"\n installExtension(input: InstallExtensionInput!): ExtensionMutationResponse!\n\n \"\"\"\n Uninstall an extension\n \"\"\"\n uninstallExtension(extensionSlug: String!, orgName: String): ExtensionMutationResponse!\n\n \"\"\"\n Enable or disable an extension\n \"\"\"\n toggleExtension(extensionSlug: String!, enabled: Boolean!, orgName: String): ExtensionMutationResponse!\n\n \"\"\"\n Update extension settings\n \"\"\"\n updateExtensionSettings(extensionSlug: String!, settings: JSON!, orgName: String): ExtensionMutationResponse!\n\n \"\"\"\n Update an extension to a newer version\n \"\"\"\n updateExtensionVersion(extensionSlug: String!, version: String!, orgName: String): ExtensionMutationResponse!\n\n \"\"\"\n Sync installed extensions with registry\n \"\"\"\n syncExtensionsWithRegistry: ExtensionSyncResponse!\n\n \"\"\"\n Clean up deprecated or removed extensions\n \"\"\"\n cleanupExtensions(dryRun: Boolean): ExtensionCleanupResponse!\n \n \"\"\"\n Clean up orphaned extensions that exist in installed_extensions but not in system_extension registry\n \"\"\"\n cleanupOrphanedExtensions(dryRun: Boolean, orgName: String): OrphanedExtensionCleanupResponse!\n}\n";export{installedExtensionSchema as default};//# sourceMappingURL=installed-extension.graphql.js.map
|