@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.
Files changed (175) hide show
  1. package/lib/containers/module.d.ts +4 -4
  2. package/lib/containers/module.d.ts.map +1 -1
  3. package/lib/containers/module.js +12 -7
  4. package/lib/containers/module.js.map +1 -1
  5. package/lib/dataloaders/index.d.ts +1 -1
  6. package/lib/dataloaders/index.d.ts.map +1 -1
  7. package/lib/dataloaders/publisher-data-loader.d.ts +6 -0
  8. package/lib/dataloaders/publisher-data-loader.d.ts.map +1 -0
  9. package/lib/demo/test-graphql-examples.d.ts +73 -0
  10. package/lib/demo/test-graphql-examples.d.ts.map +1 -0
  11. package/lib/graphql/resolvers/form-templates-resolver.d.ts +220 -0
  12. package/lib/graphql/resolvers/form-templates-resolver.d.ts.map +1 -0
  13. package/lib/graphql/resolvers/form-templates-resolver.js +170 -0
  14. package/lib/graphql/resolvers/form-templates-resolver.js.map +1 -0
  15. package/lib/graphql/resolvers/gallery-resolver.d.ts +15 -0
  16. package/lib/graphql/resolvers/gallery-resolver.d.ts.map +1 -0
  17. package/lib/graphql/resolvers/gallery-resolver.js +35 -0
  18. package/lib/graphql/resolvers/gallery-resolver.js.map +1 -0
  19. package/lib/graphql/resolvers/index.d.ts +247 -1
  20. package/lib/graphql/resolvers/index.d.ts.map +1 -1
  21. package/lib/graphql/resolvers/index.js +1 -1
  22. package/lib/graphql/resolvers/installed-extension-resolver.d.ts.map +1 -1
  23. package/lib/graphql/resolvers/installed-extension-resolver.js +161 -35
  24. package/lib/graphql/resolvers/installed-extension-resolver.js.map +1 -1
  25. package/lib/graphql/resolvers/marketplace-form-resolver.d.ts +13 -0
  26. package/lib/graphql/resolvers/marketplace-form-resolver.d.ts.map +1 -0
  27. package/lib/graphql/resolvers/marketplace-form-resolver.js +90 -0
  28. package/lib/graphql/resolvers/marketplace-form-resolver.js.map +1 -0
  29. package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts +14 -0
  30. package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts.map +1 -0
  31. package/lib/graphql/resolvers/publisher-analytics-resolver.js +221 -0
  32. package/lib/graphql/resolvers/publisher-analytics-resolver.js.map +1 -0
  33. package/lib/graphql/resolvers/publisher-resolver.d.ts +5 -0
  34. package/lib/graphql/resolvers/publisher-resolver.d.ts.map +1 -0
  35. package/lib/graphql/resolvers/publisher-resolver.js +183 -0
  36. package/lib/graphql/resolvers/publisher-resolver.js.map +1 -0
  37. package/lib/graphql/resolvers/registry-extension-resolver.d.ts.map +1 -1
  38. package/lib/graphql/resolvers/registry-extension-resolver.js +34 -167
  39. package/lib/graphql/resolvers/registry-extension-resolver.js.map +1 -1
  40. package/lib/graphql/schemas/extension-pricing.graphql +546 -0
  41. package/lib/graphql/schemas/extension-pricing.graphql.js +1 -0
  42. package/lib/graphql/schemas/extension-pricing.graphql.js.map +1 -0
  43. package/lib/graphql/schemas/extension-registry.graphql +91 -58
  44. package/lib/graphql/schemas/extension-registry.graphql.js +1 -1
  45. package/lib/graphql/schemas/form-templates.graphql +269 -0
  46. package/lib/graphql/schemas/form-templates.graphql.js +1 -0
  47. package/lib/graphql/schemas/form-templates.graphql.js.map +1 -0
  48. package/lib/graphql/schemas/gallery-schema.graphql +247 -0
  49. package/lib/graphql/schemas/gallery-schema.graphql.js +1 -0
  50. package/lib/graphql/schemas/gallery-schema.graphql.js.map +1 -0
  51. package/lib/graphql/schemas/index.d.ts.map +1 -1
  52. package/lib/graphql/schemas/index.js +3 -1
  53. package/lib/graphql/schemas/index.js.map +1 -1
  54. package/lib/graphql/schemas/installed-extension.graphql +37 -7
  55. package/lib/graphql/schemas/installed-extension.graphql.js +1 -1
  56. package/lib/graphql/schemas/publisher-analytics.graphql +305 -0
  57. package/lib/graphql/schemas/publisher-analytics.graphql.js +1 -0
  58. package/lib/graphql/schemas/publisher-analytics.graphql.js.map +1 -0
  59. package/lib/graphql/schemas/publisher.graphql +584 -0
  60. package/lib/graphql/schemas/publisher.graphql.js +1 -0
  61. package/lib/graphql/schemas/publisher.graphql.js.map +1 -0
  62. package/lib/graphql/schemas/service.graphql +15 -0
  63. package/lib/index.d.ts +1 -1
  64. package/lib/index.js +1 -1
  65. package/lib/index.js.map +1 -1
  66. package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.d.ts +20 -0
  67. package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.d.ts.map +1 -0
  68. package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.js +61 -0
  69. package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.js.map +1 -0
  70. package/lib/migrations/index.d.ts +2 -0
  71. package/lib/migrations/index.d.ts.map +1 -0
  72. package/lib/module.d.ts +1 -1
  73. package/lib/module.d.ts.map +1 -1
  74. package/lib/module.js +11 -26
  75. package/lib/module.js.map +1 -1
  76. package/lib/services/extension-gallery-repository.d.ts +17 -0
  77. package/lib/services/extension-gallery-repository.d.ts.map +1 -0
  78. package/lib/services/extension-gallery-repository.js +192 -0
  79. package/lib/services/extension-gallery-repository.js.map +1 -0
  80. package/lib/services/extension-gallery-service-new.d.ts +39 -0
  81. package/lib/services/extension-gallery-service-new.d.ts.map +1 -0
  82. package/lib/services/extension-gallery-service.d.ts +30 -0
  83. package/lib/services/extension-gallery-service.d.ts.map +1 -0
  84. package/lib/services/extension-gallery-service.js +334 -0
  85. package/lib/services/extension-gallery-service.js.map +1 -0
  86. package/lib/services/index.d.ts +4 -1
  87. package/lib/services/index.d.ts.map +1 -1
  88. package/lib/services/installed-extension-service-ext.d.ts +5 -2
  89. package/lib/services/installed-extension-service-ext.d.ts.map +1 -1
  90. package/lib/services/installed-extension-service-ext.js +364 -117
  91. package/lib/services/installed-extension-service-ext.js.map +1 -1
  92. package/lib/services/installed-extension-service.d.ts +30 -13
  93. package/lib/services/installed-extension-service.d.ts.map +1 -1
  94. package/lib/services/installed-extension-service.js +301 -68
  95. package/lib/services/installed-extension-service.js.map +1 -1
  96. package/lib/services/installed-extension-service.test.d.ts +0 -1
  97. package/lib/services/publisher-analytics-service.d.ts +128 -0
  98. package/lib/services/publisher-analytics-service.d.ts.map +1 -0
  99. package/lib/services/publisher-event-service.d.ts +48 -0
  100. package/lib/services/publisher-event-service.d.ts.map +1 -0
  101. package/lib/services/publisher-event-service.js +296 -0
  102. package/lib/services/publisher-event-service.js.map +1 -0
  103. package/lib/services/publisher-service-context.d.ts +1 -0
  104. package/lib/services/publisher-service-context.d.ts.map +1 -0
  105. package/lib/services/publisher-service.d.ts +62 -0
  106. package/lib/services/publisher-service.d.ts.map +1 -0
  107. package/lib/services/publisher-service.js +135 -0
  108. package/lib/services/publisher-service.js.map +1 -0
  109. package/lib/store/models/index.d.ts +1 -1
  110. package/lib/store/models/index.d.ts.map +1 -1
  111. package/lib/store/models/installed-extension-model.d.ts.map +1 -1
  112. package/lib/store/models/installed-extension-model.js +17 -45
  113. package/lib/store/models/installed-extension-model.js.map +1 -1
  114. package/lib/store/models/publisher-event-model.d.ts +11 -0
  115. package/lib/store/models/publisher-event-model.d.ts.map +1 -0
  116. package/lib/store/models/publisher-model.d.ts +5 -0
  117. package/lib/store/models/publisher-model.d.ts.map +1 -0
  118. package/lib/store/models/publisher-model.js +117 -0
  119. package/lib/store/models/publisher-model.js.map +1 -0
  120. package/lib/store/models/publisher-stats-model.d.ts +1 -0
  121. package/lib/store/models/publisher-stats-model.d.ts.map +1 -0
  122. package/lib/store/repositories/index.d.ts +1 -1
  123. package/lib/store/repositories/index.d.ts.map +1 -1
  124. package/lib/store/repositories/installed-extension-repository.d.ts +17 -11
  125. package/lib/store/repositories/installed-extension-repository.d.ts.map +1 -1
  126. package/lib/store/repositories/installed-extension-repository.js +123 -75
  127. package/lib/store/repositories/installed-extension-repository.js.map +1 -1
  128. package/lib/store/repositories/publisher-analytics-repository.d.ts +1 -0
  129. package/lib/store/repositories/publisher-analytics-repository.d.ts.map +1 -0
  130. package/lib/store/repositories/publisher-repository.d.ts +19 -0
  131. package/lib/store/repositories/publisher-repository.d.ts.map +1 -0
  132. package/lib/store/repositories/publisher-repository.js +87 -0
  133. package/lib/store/repositories/publisher-repository.js.map +1 -0
  134. package/lib/templates/constants/DB_COLL_NAMES.ts.template +1 -1
  135. package/lib/templates/constants/SERVER_TYPES.ts.template +8 -5
  136. package/lib/templates/repositories/ExtensionGalleryRepository.ts.template +44 -0
  137. package/lib/templates/repositories/InstalledExtensionRepository.ts.template +19 -14
  138. package/lib/templates/repositories/MarketplacePublisherRepository.ts.template +24 -0
  139. package/lib/templates/repositories/RegistryExtensionRepository.ts.template +2 -2
  140. package/lib/templates/services/ExtensionGalleryDataLoader.ts.template +2 -0
  141. package/lib/templates/services/ExtensionGalleryService.ts.template +79 -0
  142. package/lib/templates/services/InstalledExtensionService.ts.template +63 -32
  143. package/lib/templates/services/MarketplacePublisherService.ts.template +51 -0
  144. package/lib/templates/services/PublisherDataLoader.ts.template +3 -0
  145. package/lib/templates/services/PublisherEventService.ts.template +56 -0
  146. package/lib/templates/services/RegistryExtensionService.ts.template +46 -2
  147. package/lib/tests/extension-integration.test.d.ts +0 -1
  148. package/lib/tests/install-extension-graphql.test.d.ts +2 -0
  149. package/lib/tests/install-extension-graphql.test.d.ts.map +1 -0
  150. package/lib/utils/publisherValidation.d.ts +23 -0
  151. package/lib/utils/publisherValidation.d.ts.map +1 -0
  152. package/lib/utils/publisherValidation.js +144 -0
  153. package/lib/utils/publisherValidation.js.map +1 -0
  154. package/package.json +13 -9
  155. package/lib/constants/extension-events.d.ts +0 -136
  156. package/lib/constants/extension-events.d.ts.map +0 -1
  157. package/lib/dataloaders/registry-extension-data-loader.d.ts +0 -6
  158. package/lib/dataloaders/registry-extension-data-loader.d.ts.map +0 -1
  159. package/lib/dataloaders/registry-extension-data-loader.js +0 -6
  160. package/lib/dataloaders/registry-extension-data-loader.js.map +0 -1
  161. package/lib/graphql/schemas/service.graphql.js +0 -1
  162. package/lib/graphql/schemas/service.graphql.js.map +0 -1
  163. package/lib/services/extension-service.d.ts +0 -42
  164. package/lib/services/extension-service.d.ts.map +0 -1
  165. package/lib/services/extension-service.js +0 -60
  166. package/lib/services/extension-service.js.map +0 -1
  167. package/lib/store/models/registry-extension-model.d.ts +0 -5
  168. package/lib/store/models/registry-extension-model.d.ts.map +0 -1
  169. package/lib/store/models/registry-extension-model.js +0 -83
  170. package/lib/store/models/registry-extension-model.js.map +0 -1
  171. package/lib/store/repositories/registry-extension-repository.d.ts +0 -54
  172. package/lib/store/repositories/registry-extension-repository.d.ts.map +0 -1
  173. package/lib/store/repositories/registry-extension-repository.js +0 -137
  174. package/lib/store/repositories/registry-extension-repository.js.map +0 -1
  175. 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":"AAIA,QAAA,MAAM,MAAM,QAAgF,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,CAAC"}
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 serviceSchema from'./service.graphql.js';const schema = [extensionRegistrySchema, installedExtensionSchema, serviceSchema].join('\n');export{schema};//# sourceMappingURL=index.js.map
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
- tenantId: String! @column
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!): ExtensionMutationResponse!
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!): ExtensionMutationResponse!
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!): ExtensionMutationResponse!
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!): ExtensionMutationResponse!
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 tenantId: String! @column\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}\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 policies: ExtensionPoliciesInput\n settings: ExtensionSettingsInput\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\nextend type Query {\n \"\"\"\n Get all installed extensions for the current tenant\n \"\"\"\n installedExtensions(enabled: Boolean): [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!): ExtensionMutationResponse!\n\n \"\"\"\n Enable or disable an extension\n \"\"\"\n toggleExtension(extensionSlug: String!, enabled: Boolean!): ExtensionMutationResponse!\n\n \"\"\"\n Update extension settings\n \"\"\"\n updateExtensionSettings(extensionSlug: String!, settings: JSON!): ExtensionMutationResponse!\n\n \"\"\"\n Update an extension to a newer version\n \"\"\"\n updateExtensionVersion(extensionSlug: String!, version: 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";export{installedExtensionSchema as default};//# sourceMappingURL=installed-extension.graphql.js.map
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