@adminide-stack/marketplace-module-server 12.0.4-alpha.92 → 12.0.4-alpha.95
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/Readme.md +321 -0
- package/lib/constants/extension-events.d.ts +136 -0
- package/lib/constants/extension-events.d.ts.map +1 -0
- package/lib/containers/module.d.ts +8 -0
- package/lib/containers/module.d.ts.map +1 -1
- package/lib/containers/module.js +9 -3
- package/lib/containers/module.js.map +1 -1
- package/lib/dataloaders/index.d.ts +2 -0
- package/lib/dataloaders/index.d.ts.map +1 -0
- package/lib/dataloaders/registry-extension-data-loader.d.ts +6 -0
- package/lib/dataloaders/registry-extension-data-loader.d.ts.map +1 -0
- package/lib/dataloaders/registry-extension-data-loader.js +6 -0
- package/lib/dataloaders/registry-extension-data-loader.js.map +1 -0
- package/lib/graphql/resolvers/index.d.ts +1 -1
- package/lib/graphql/resolvers/index.d.ts.map +1 -1
- package/lib/graphql/resolvers/index.js +1 -0
- package/lib/graphql/resolvers/index.js.map +1 -0
- package/lib/graphql/resolvers/installed-extension-resolver.d.ts +5 -0
- package/lib/graphql/resolvers/installed-extension-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/installed-extension-resolver.js +183 -0
- package/lib/graphql/resolvers/installed-extension-resolver.js.map +1 -0
- package/lib/graphql/resolvers/registry-extension-resolver.d.ts +5 -0
- package/lib/graphql/resolvers/registry-extension-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/{resolvers.js → registry-extension-resolver.js} +59 -47
- package/lib/graphql/resolvers/registry-extension-resolver.js.map +1 -0
- package/lib/graphql/schemas/extension-registry.graphql +74 -0
- package/lib/graphql/schemas/extension-registry.graphql.js +1 -0
- package/lib/graphql/schemas/extension-registry.graphql.js.map +1 -0
- package/lib/graphql/schemas/index.d.ts.map +1 -1
- package/lib/graphql/schemas/index.js +1 -4
- package/lib/graphql/schemas/index.js.map +1 -1
- package/lib/graphql/schemas/installed-extension.graphql +294 -0
- package/lib/graphql/schemas/installed-extension.graphql.js +1 -0
- package/lib/graphql/schemas/installed-extension.graphql.js.map +1 -0
- package/lib/graphql/schemas/service.graphql +181 -0
- package/lib/graphql/schemas/service.graphql.js +1 -0
- package/lib/graphql/schemas/service.graphql.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/module.d.ts.map +1 -1
- package/lib/module.js +6 -4
- package/lib/module.js.map +1 -1
- package/lib/plugins/extension-moleculer-service.d.ts +86 -0
- package/lib/plugins/extension-moleculer-service.d.ts.map +1 -0
- package/lib/plugins/index.d.ts +2 -0
- package/lib/plugins/index.d.ts.map +1 -0
- package/lib/services/extension-service.d.ts +35 -47
- package/lib/services/extension-service.d.ts.map +1 -1
- package/lib/services/extension-service.js +33 -15
- package/lib/services/extension-service.js.map +1 -1
- package/lib/services/index.d.ts +2 -0
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/installed-extension-service-ext.d.ts +13 -0
- package/lib/services/installed-extension-service-ext.d.ts.map +1 -0
- package/lib/services/installed-extension-service-ext.js +271 -0
- package/lib/services/installed-extension-service-ext.js.map +1 -0
- package/lib/services/installed-extension-service.d.ts +93 -0
- package/lib/services/installed-extension-service.d.ts.map +1 -0
- package/lib/services/installed-extension-service.js +400 -0
- package/lib/services/installed-extension-service.js.map +1 -0
- package/lib/services/installed-extension-service.test.d.ts +2 -0
- package/lib/services/installed-extension-service.test.d.ts.map +1 -0
- package/lib/store/index.d.ts +1 -1
- package/lib/store/index.d.ts.map +1 -1
- package/lib/store/models/index.d.ts +1 -0
- package/lib/store/models/index.d.ts.map +1 -1
- package/lib/store/models/installed-extension-model.d.ts +4 -0
- package/lib/store/models/installed-extension-model.d.ts.map +1 -0
- package/lib/store/models/installed-extension-model.js +297 -0
- package/lib/store/models/installed-extension-model.js.map +1 -0
- package/lib/store/models/registry-extension-model.d.ts +2 -7
- package/lib/store/models/registry-extension-model.d.ts.map +1 -1
- package/lib/store/models/registry-extension-model.js +40 -19
- package/lib/store/models/registry-extension-model.js.map +1 -1
- package/lib/store/repositories/index.d.ts +3 -0
- package/lib/store/repositories/index.d.ts.map +1 -0
- package/lib/store/repositories/installed-extension-repository.d.ts +71 -0
- package/lib/store/repositories/installed-extension-repository.d.ts.map +1 -0
- package/lib/store/repositories/installed-extension-repository.js +414 -0
- package/lib/store/repositories/installed-extension-repository.js.map +1 -0
- package/lib/store/repositories/registry-extension-repository.d.ts +54 -0
- package/lib/store/repositories/registry-extension-repository.d.ts.map +1 -0
- package/lib/store/{repository → repositories}/registry-extension-repository.js +44 -42
- package/lib/store/repositories/registry-extension-repository.js.map +1 -0
- package/lib/templates/constants/DB_COLL_NAMES.ts.template +5 -0
- package/lib/templates/constants/SERVER_TYPES.ts.template +3 -0
- package/lib/templates/repositories/InstalledExtensionRepository.ts.template +94 -0
- package/lib/templates/repositories/RegistryExtensionRepository.ts.template +10 -15
- package/lib/templates/services/InstalledExtensionDataLoader.ts.template +2 -0
- package/lib/templates/services/InstalledExtensionService.ts.template +168 -0
- package/lib/templates/services/RegistryExtensionDataLoader.ts.template +2 -0
- package/lib/templates/services/RegistryExtensionService.ts.template +10 -10
- package/lib/tests/extension-integration.test.d.ts +2 -0
- package/lib/tests/extension-integration.test.d.ts.map +1 -0
- package/lib/tests/test-extension-services.d.ts +1 -0
- package/lib/tests/test-extension-services.d.ts.map +1 -0
- package/package.json +12 -7
- package/lib/graphql/resolvers/resolvers.d.ts +0 -2
- package/lib/graphql/resolvers/resolvers.d.ts.map +0 -1
- package/lib/graphql/resolvers/resolvers.js.map +0 -1
- package/lib/graphql/schemas/extension.graphql +0 -57
- package/lib/graphql/schemas/extension.graphql.js +0 -1
- package/lib/graphql/schemas/extension.graphql.js.map +0 -1
- package/lib/store/repository/index.d.ts +0 -2
- package/lib/store/repository/index.d.ts.map +0 -1
- package/lib/store/repository/registry-extension-repository.d.ts +0 -31
- package/lib/store/repository/registry-extension-repository.d.ts.map +0 -1
- package/lib/store/repository/registry-extension-repository.js.map +0 -1
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Installed extension status enumeration
|
|
3
|
+
"""
|
|
4
|
+
enum InstalledExtensionStatus {
|
|
5
|
+
installed
|
|
6
|
+
deprecated_installed
|
|
7
|
+
suspended
|
|
8
|
+
orphaned
|
|
9
|
+
force_disabled
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
"""
|
|
13
|
+
Registry status cached from extensionRegistry
|
|
14
|
+
"""
|
|
15
|
+
enum ExtensionRegistryStatus {
|
|
16
|
+
active
|
|
17
|
+
deprecated
|
|
18
|
+
suspended
|
|
19
|
+
removed
|
|
20
|
+
emergency_removed
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
"""
|
|
24
|
+
Runtime activation state
|
|
25
|
+
"""
|
|
26
|
+
enum ExtensionActivationState {
|
|
27
|
+
enabled
|
|
28
|
+
disabled
|
|
29
|
+
disabled_by_user
|
|
30
|
+
disabled_by_admin
|
|
31
|
+
disabled_by_policy
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
"""
|
|
35
|
+
Extension lifecycle management information
|
|
36
|
+
"""
|
|
37
|
+
type ExtensionLifecycle @entity(embedded: true) {
|
|
38
|
+
registryStatus: ExtensionRegistryStatus! @column
|
|
39
|
+
isOrphaned: Boolean! @column
|
|
40
|
+
deprecationWarningShown: Boolean! @column
|
|
41
|
+
autoUpdateBlocked: Boolean! @column
|
|
42
|
+
lastRegistryCheck: String! @column
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
"""
|
|
46
|
+
Admin policies for extension behavior
|
|
47
|
+
"""
|
|
48
|
+
type ExtensionPolicies @entity(embedded: true) {
|
|
49
|
+
allowOrphanedExecution: Boolean! @column
|
|
50
|
+
requireSecurityUpdates: Boolean! @column
|
|
51
|
+
autoRemoveDeprecated: Boolean! @column
|
|
52
|
+
deprecationGracePeriod: Int! @column
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
"""
|
|
56
|
+
Extension settings for user preferences and system state
|
|
57
|
+
"""
|
|
58
|
+
type ExtensionSettings @entity(embedded: true) {
|
|
59
|
+
userEnabled: Boolean! @column
|
|
60
|
+
systemEnabled: Boolean! @column
|
|
61
|
+
effectiveEnabled: Boolean! @column
|
|
62
|
+
userConfig: JSON @column
|
|
63
|
+
systemConfig: JSON @column
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
"""
|
|
67
|
+
Runtime activation error information
|
|
68
|
+
"""
|
|
69
|
+
type ExtensionActivationError @entity(embedded: true) {
|
|
70
|
+
message: String! @column
|
|
71
|
+
code: String! @column
|
|
72
|
+
timestamp: String! @column
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
"""
|
|
76
|
+
Performance metrics
|
|
77
|
+
"""
|
|
78
|
+
type ExtensionMetrics @entity(embedded: true) {
|
|
79
|
+
activationTime: Float! @column
|
|
80
|
+
memoryUsage: Float! @column
|
|
81
|
+
lastMeasured: String! @column
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
"""
|
|
85
|
+
Runtime information about extension execution
|
|
86
|
+
"""
|
|
87
|
+
type ExtensionRuntime @entity(embedded: true) {
|
|
88
|
+
activationState: ExtensionActivationState! @column
|
|
89
|
+
lastActivated: DateTime @column(overrideType: "Date")
|
|
90
|
+
lastDeactivated: DateTime @column(overrideType: "Date")
|
|
91
|
+
activationError: ExtensionActivationError @embedded
|
|
92
|
+
metrics: ExtensionMetrics @embedded
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
"""
|
|
96
|
+
Audit log entry for extension actions
|
|
97
|
+
"""
|
|
98
|
+
type ExtensionAuditEntry @entity(embedded: true) {
|
|
99
|
+
action: String! @column
|
|
100
|
+
timestamp: DateTime! @column(overrideType: "Date")
|
|
101
|
+
user: UserAccount! @column(overrideType: "ObjectId")
|
|
102
|
+
details: JSON @column
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
"""
|
|
106
|
+
Main installed extension type
|
|
107
|
+
"""
|
|
108
|
+
type InstalledExtension implements Node @entity {
|
|
109
|
+
id: ID! @id
|
|
110
|
+
tenantId: String! @column
|
|
111
|
+
extension: RegistryExtension @column(overrideType: "ObjectId")
|
|
112
|
+
installedVersion: String! @column
|
|
113
|
+
status: InstalledExtensionStatus! @column
|
|
114
|
+
lifecycle: ExtensionLifecycle! @embedded
|
|
115
|
+
policies: ExtensionPolicies! @embedded
|
|
116
|
+
settings: ExtensionSettings! @embedded
|
|
117
|
+
runtime: ExtensionRuntime! @embedded
|
|
118
|
+
installedAt: DateTime! @column(overrideType: "Date")
|
|
119
|
+
installedBy: UserAccount! @column(overrideType: "ObjectId")
|
|
120
|
+
lastUpdated: DateTime @column(overrideType: "Date")
|
|
121
|
+
lastUpdatedBy: UserAccount @column(overrideType: "ObjectId")
|
|
122
|
+
availableVersion: String @column
|
|
123
|
+
dependencies: [String!] @column
|
|
124
|
+
dependents: [String!] @column
|
|
125
|
+
auditLog: [ExtensionAuditEntry!] @embedded
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
"""
|
|
129
|
+
Registry information for display
|
|
130
|
+
"""
|
|
131
|
+
type ExtensionRegistryInfo {
|
|
132
|
+
displayName: String!
|
|
133
|
+
description: String!
|
|
134
|
+
publisher: String!
|
|
135
|
+
latestVersion: String!
|
|
136
|
+
tags: [String!]!
|
|
137
|
+
categories: [String!]!
|
|
138
|
+
deprecation: JSON
|
|
139
|
+
suspension: JSON
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
"""
|
|
143
|
+
Notification action
|
|
144
|
+
"""
|
|
145
|
+
type NotificationAction {
|
|
146
|
+
label: String!
|
|
147
|
+
action: String!
|
|
148
|
+
url: String
|
|
149
|
+
extensionSlug: String
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
"""
|
|
153
|
+
Extension notification
|
|
154
|
+
"""
|
|
155
|
+
type ExtensionNotification {
|
|
156
|
+
type: String!
|
|
157
|
+
severity: String!
|
|
158
|
+
message: String!
|
|
159
|
+
actions: [NotificationAction!]
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
"""
|
|
163
|
+
Extension update information
|
|
164
|
+
"""
|
|
165
|
+
type ExtensionUpdate {
|
|
166
|
+
extensionSlug: String!
|
|
167
|
+
currentVersion: String!
|
|
168
|
+
availableVersion: String!
|
|
169
|
+
isSecurityUpdate: Boolean!
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
"""
|
|
173
|
+
Extension cleanup result
|
|
174
|
+
"""
|
|
175
|
+
type ExtensionCleanupResult {
|
|
176
|
+
removed: [String!]!
|
|
177
|
+
deprecated: [String!]!
|
|
178
|
+
warnings: [String!]!
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
"""
|
|
182
|
+
Input for installing an extension
|
|
183
|
+
"""
|
|
184
|
+
input InstallExtensionInput {
|
|
185
|
+
extensionSlug: String!
|
|
186
|
+
version: String!
|
|
187
|
+
policies: ExtensionPoliciesInput
|
|
188
|
+
settings: ExtensionSettingsInput
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
"""
|
|
192
|
+
Input for extension policies
|
|
193
|
+
"""
|
|
194
|
+
input ExtensionPoliciesInput {
|
|
195
|
+
allowOrphanedExecution: Boolean
|
|
196
|
+
requireSecurityUpdates: Boolean
|
|
197
|
+
autoRemoveDeprecated: Boolean
|
|
198
|
+
deprecationGracePeriod: Int
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
"""
|
|
202
|
+
Input for extension settings
|
|
203
|
+
"""
|
|
204
|
+
input ExtensionSettingsInput {
|
|
205
|
+
userEnabled: Boolean
|
|
206
|
+
systemEnabled: Boolean
|
|
207
|
+
userConfig: JSON
|
|
208
|
+
systemConfig: JSON
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
"""
|
|
212
|
+
Response type for extension mutations
|
|
213
|
+
"""
|
|
214
|
+
type ExtensionMutationResponse {
|
|
215
|
+
success: Boolean!
|
|
216
|
+
extension: InstalledExtension
|
|
217
|
+
message: String!
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
"""
|
|
221
|
+
Response type for cleanup operations
|
|
222
|
+
"""
|
|
223
|
+
type ExtensionCleanupResponse {
|
|
224
|
+
success: Boolean!
|
|
225
|
+
result: ExtensionCleanupResult
|
|
226
|
+
message: String!
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
"""
|
|
230
|
+
Response type for sync operations
|
|
231
|
+
"""
|
|
232
|
+
type ExtensionSyncResponse {
|
|
233
|
+
success: Boolean!
|
|
234
|
+
message: String!
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
extend type Query {
|
|
238
|
+
"""
|
|
239
|
+
Get all installed extensions for the current tenant
|
|
240
|
+
"""
|
|
241
|
+
installedExtensions(enabled: Boolean): [InstalledExtension!]!
|
|
242
|
+
|
|
243
|
+
"""
|
|
244
|
+
Get a specific installed extension
|
|
245
|
+
"""
|
|
246
|
+
installedExtension(extensionSlug: String!): InstalledExtension
|
|
247
|
+
|
|
248
|
+
"""
|
|
249
|
+
Get installed extensions that need attention
|
|
250
|
+
"""
|
|
251
|
+
extensionsNeedingAttention: [InstalledExtension!]!
|
|
252
|
+
|
|
253
|
+
"""
|
|
254
|
+
Check for available updates
|
|
255
|
+
"""
|
|
256
|
+
extensionUpdates(extensionSlug: String): [ExtensionUpdate!]!
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
extend type Mutation {
|
|
260
|
+
"""
|
|
261
|
+
Install an extension from the registry
|
|
262
|
+
"""
|
|
263
|
+
installExtension(input: InstallExtensionInput!): ExtensionMutationResponse!
|
|
264
|
+
|
|
265
|
+
"""
|
|
266
|
+
Uninstall an extension
|
|
267
|
+
"""
|
|
268
|
+
uninstallExtension(extensionSlug: String!): ExtensionMutationResponse!
|
|
269
|
+
|
|
270
|
+
"""
|
|
271
|
+
Enable or disable an extension
|
|
272
|
+
"""
|
|
273
|
+
toggleExtension(extensionSlug: String!, enabled: Boolean!): ExtensionMutationResponse!
|
|
274
|
+
|
|
275
|
+
"""
|
|
276
|
+
Update extension settings
|
|
277
|
+
"""
|
|
278
|
+
updateExtensionSettings(extensionSlug: String!, settings: JSON!): ExtensionMutationResponse!
|
|
279
|
+
|
|
280
|
+
"""
|
|
281
|
+
Update an extension to a newer version
|
|
282
|
+
"""
|
|
283
|
+
updateExtensionVersion(extensionSlug: String!, version: String!): ExtensionMutationResponse!
|
|
284
|
+
|
|
285
|
+
"""
|
|
286
|
+
Sync installed extensions with registry
|
|
287
|
+
"""
|
|
288
|
+
syncExtensionsWithRegistry: ExtensionSyncResponse!
|
|
289
|
+
|
|
290
|
+
"""
|
|
291
|
+
Clean up deprecated or removed extensions
|
|
292
|
+
"""
|
|
293
|
+
cleanupExtensions(dryRun: Boolean): ExtensionCleanupResponse!
|
|
294
|
+
}
|
|
@@ -0,0 +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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installed-extension.graphql.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
|
|
2
|
+
extend enum MoleculerServiceName {
|
|
3
|
+
ExtensionService
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
enum ExtensionServiceAction {
|
|
7
|
+
OnExtensionInstalled
|
|
8
|
+
OnExtensionUninstalled
|
|
9
|
+
OnExtensionEnabled
|
|
10
|
+
OnExtensionDisabled
|
|
11
|
+
OnExtensionUpdated
|
|
12
|
+
OnExtensionVersionUpdated
|
|
13
|
+
OnExtensionConfigurationUpdated
|
|
14
|
+
OnExtensionSyncCompleted
|
|
15
|
+
OnExtensionCleanupCompleted
|
|
16
|
+
OnExtensionStatusChanged
|
|
17
|
+
OnExtensionActivationFailed
|
|
18
|
+
OnExtensionDeprecated
|
|
19
|
+
OnExtensionOrphaned
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
# Extension Event Types for codegen
|
|
23
|
+
|
|
24
|
+
"""
|
|
25
|
+
Event fired when an extension is installed
|
|
26
|
+
"""
|
|
27
|
+
type ExtensionInstalledEvent {
|
|
28
|
+
extensionSlug: String!
|
|
29
|
+
tenantId: String!
|
|
30
|
+
installedBy: String!
|
|
31
|
+
installedVersion: String!
|
|
32
|
+
registryRef: String!
|
|
33
|
+
installedAt: String!
|
|
34
|
+
policies: JSON
|
|
35
|
+
settings: JSON
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
"""
|
|
39
|
+
Event fired when an extension is uninstalled
|
|
40
|
+
"""
|
|
41
|
+
type ExtensionUninstalledEvent {
|
|
42
|
+
extensionSlug: String!
|
|
43
|
+
tenantId: String!
|
|
44
|
+
uninstalledBy: String!
|
|
45
|
+
uninstalledAt: String!
|
|
46
|
+
wasEnabled: Boolean!
|
|
47
|
+
dependencies: [String!]
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
"""
|
|
51
|
+
Event fired when an extension is enabled
|
|
52
|
+
"""
|
|
53
|
+
type ExtensionEnabledEvent {
|
|
54
|
+
extensionSlug: String!
|
|
55
|
+
tenantId: String!
|
|
56
|
+
enabledBy: String!
|
|
57
|
+
enabledAt: String!
|
|
58
|
+
previousState: String!
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
"""
|
|
62
|
+
Event fired when an extension is disabled
|
|
63
|
+
"""
|
|
64
|
+
type ExtensionDisabledEvent {
|
|
65
|
+
extensionSlug: String!
|
|
66
|
+
tenantId: String!
|
|
67
|
+
disabledBy: String!
|
|
68
|
+
disabledAt: String!
|
|
69
|
+
reason: String! # 'user', 'admin', 'policy', 'system'
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
"""
|
|
73
|
+
Event fired when an extension is updated
|
|
74
|
+
"""
|
|
75
|
+
type ExtensionUpdatedEvent {
|
|
76
|
+
extensionSlug: String!
|
|
77
|
+
tenantId: String!
|
|
78
|
+
updatedBy: String!
|
|
79
|
+
updatedAt: String!
|
|
80
|
+
changes: JSON! # { status?, settings?, policies?, runtime? }
|
|
81
|
+
previousVersion: String
|
|
82
|
+
newVersion: String
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
"""
|
|
86
|
+
Event fired when an extension version is updated
|
|
87
|
+
"""
|
|
88
|
+
type ExtensionVersionUpdatedEvent {
|
|
89
|
+
extensionSlug: String!
|
|
90
|
+
tenantId: String!
|
|
91
|
+
updatedBy: String!
|
|
92
|
+
fromVersion: String!
|
|
93
|
+
toVersion: String!
|
|
94
|
+
updatedAt: String!
|
|
95
|
+
isSecurityUpdate: Boolean!
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
"""
|
|
99
|
+
Event fired when extension configuration is updated
|
|
100
|
+
"""
|
|
101
|
+
type ExtensionConfigurationUpdatedEvent {
|
|
102
|
+
tenantId: String!
|
|
103
|
+
extensionSlug: String!
|
|
104
|
+
updatedBy: String!
|
|
105
|
+
updatedAt: String!
|
|
106
|
+
configType: String! # 'user' or 'system'
|
|
107
|
+
previousConfig: JSON
|
|
108
|
+
newConfig: JSON!
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
"""
|
|
112
|
+
Event fired when extension sync with registry is completed
|
|
113
|
+
"""
|
|
114
|
+
type ExtensionSyncCompletedEvent {
|
|
115
|
+
tenantId: String!
|
|
116
|
+
syncedAt: String!
|
|
117
|
+
extensionsChecked: Int!
|
|
118
|
+
extensionsUpdated: Int!
|
|
119
|
+
extensionsOrphaned: Int!
|
|
120
|
+
errors: [String!]
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
"""
|
|
124
|
+
Event fired when extension cleanup is completed
|
|
125
|
+
"""
|
|
126
|
+
type ExtensionCleanupCompletedEvent {
|
|
127
|
+
tenantId: String!
|
|
128
|
+
cleanedAt: String!
|
|
129
|
+
extensionsRemoved: [String!]!
|
|
130
|
+
extensionsDeprecated: [String!]!
|
|
131
|
+
warnings: [String!]
|
|
132
|
+
dryRun: Boolean!
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
"""
|
|
136
|
+
Event fired when extension status changes
|
|
137
|
+
"""
|
|
138
|
+
type ExtensionStatusChangedEvent {
|
|
139
|
+
tenantId: String!
|
|
140
|
+
extensionSlug: String!
|
|
141
|
+
previousStatus: String!
|
|
142
|
+
newStatus: String!
|
|
143
|
+
changedBy: String
|
|
144
|
+
changedAt: String!
|
|
145
|
+
reason: String
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
"""
|
|
149
|
+
Event fired when extension activation fails
|
|
150
|
+
"""
|
|
151
|
+
type ExtensionActivationFailedEvent {
|
|
152
|
+
tenantId: String!
|
|
153
|
+
extensionSlug: String!
|
|
154
|
+
failedAt: String!
|
|
155
|
+
error: JSON! # { message, code, stack }
|
|
156
|
+
attemptCount: Int!
|
|
157
|
+
willRetry: Boolean!
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
"""
|
|
161
|
+
Event fired when an extension is deprecated
|
|
162
|
+
"""
|
|
163
|
+
type ExtensionDeprecatedEvent {
|
|
164
|
+
tenantId: String!
|
|
165
|
+
extensionSlug: String!
|
|
166
|
+
deprecatedAt: String!
|
|
167
|
+
deprecationInfo: JSON! # { reason, alternative, gracePeriod }
|
|
168
|
+
affectedInstallations: Int!
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
"""
|
|
172
|
+
Event fired when an extension becomes orphaned (removed from registry)
|
|
173
|
+
"""
|
|
174
|
+
type ExtensionOrphanedEvent {
|
|
175
|
+
tenantId: String!
|
|
176
|
+
extensionSlug: String!
|
|
177
|
+
orphanedAt: String!
|
|
178
|
+
lastKnownVersion: String!
|
|
179
|
+
removalReason: String
|
|
180
|
+
policyAction: String! # 'keep', 'disable', 'remove'
|
|
181
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var serviceSchema = "\nextend enum MoleculerServiceName {\n ExtensionService\n}\n\nenum ExtensionServiceAction {\n OnExtensionInstalled\n OnExtensionUninstalled\n OnExtensionEnabled\n OnExtensionDisabled\n OnExtensionUpdated\n OnExtensionVersionUpdated\n OnExtensionConfigurationUpdated\n OnExtensionSyncCompleted\n OnExtensionCleanupCompleted\n OnExtensionStatusChanged\n OnExtensionActivationFailed\n OnExtensionDeprecated\n OnExtensionOrphaned\n}\n\n# Extension Event Types for codegen\n\n\"\"\"\nEvent fired when an extension is installed\n\"\"\"\ntype ExtensionInstalledEvent {\n extensionSlug: String!\n tenantId: String!\n installedBy: String!\n installedVersion: String!\n registryRef: String!\n installedAt: String!\n policies: JSON\n settings: JSON\n}\n\n\"\"\"\nEvent fired when an extension is uninstalled\n\"\"\"\ntype ExtensionUninstalledEvent {\n extensionSlug: String!\n tenantId: String!\n uninstalledBy: String!\n uninstalledAt: String!\n wasEnabled: Boolean!\n dependencies: [String!]\n}\n\n\"\"\"\nEvent fired when an extension is enabled\n\"\"\"\ntype ExtensionEnabledEvent {\n extensionSlug: String!\n tenantId: String!\n enabledBy: String!\n enabledAt: String!\n previousState: String!\n}\n\n\"\"\"\nEvent fired when an extension is disabled\n\"\"\"\ntype ExtensionDisabledEvent {\n extensionSlug: String!\n tenantId: String!\n disabledBy: String!\n disabledAt: String!\n reason: String! # 'user', 'admin', 'policy', 'system'\n}\n\n\"\"\"\nEvent fired when an extension is updated\n\"\"\"\ntype ExtensionUpdatedEvent {\n extensionSlug: String!\n tenantId: String!\n updatedBy: String!\n updatedAt: String!\n changes: JSON! # { status?, settings?, policies?, runtime? }\n previousVersion: String\n newVersion: String\n}\n\n\"\"\"\nEvent fired when an extension version is updated\n\"\"\"\ntype ExtensionVersionUpdatedEvent {\n extensionSlug: String!\n tenantId: String!\n updatedBy: String!\n fromVersion: String!\n toVersion: String!\n updatedAt: String!\n isSecurityUpdate: Boolean!\n}\n\n\"\"\"\nEvent fired when extension configuration is updated\n\"\"\"\ntype ExtensionConfigurationUpdatedEvent {\n tenantId: String!\n extensionSlug: String!\n updatedBy: String!\n updatedAt: String!\n configType: String! # 'user' or 'system'\n previousConfig: JSON\n newConfig: JSON!\n}\n\n\"\"\"\nEvent fired when extension sync with registry is completed\n\"\"\"\ntype ExtensionSyncCompletedEvent {\n tenantId: String!\n syncedAt: String!\n extensionsChecked: Int!\n extensionsUpdated: Int!\n extensionsOrphaned: Int!\n errors: [String!]\n}\n\n\"\"\"\nEvent fired when extension cleanup is completed\n\"\"\"\ntype ExtensionCleanupCompletedEvent {\n tenantId: String!\n cleanedAt: String!\n extensionsRemoved: [String!]!\n extensionsDeprecated: [String!]!\n warnings: [String!]\n dryRun: Boolean!\n}\n\n\"\"\"\nEvent fired when extension status changes\n\"\"\"\ntype ExtensionStatusChangedEvent {\n tenantId: String!\n extensionSlug: String!\n previousStatus: String!\n newStatus: String!\n changedBy: String\n changedAt: String!\n reason: String\n}\n\n\"\"\"\nEvent fired when extension activation fails\n\"\"\"\ntype ExtensionActivationFailedEvent {\n tenantId: String!\n extensionSlug: String!\n failedAt: String!\n error: JSON! # { message, code, stack }\n attemptCount: Int!\n willRetry: Boolean!\n}\n\n\"\"\"\nEvent fired when an extension is deprecated\n\"\"\"\ntype ExtensionDeprecatedEvent {\n tenantId: String!\n extensionSlug: String!\n deprecatedAt: String!\n deprecationInfo: JSON! # { reason, alternative, gracePeriod }\n affectedInstallations: Int!\n}\n\n\"\"\"\nEvent fired when an extension becomes orphaned (removed from registry)\n\"\"\"\ntype ExtensionOrphanedEvent {\n tenantId: String!\n extensionSlug: String!\n orphanedAt: String!\n lastKnownVersion: String!\n removalReason: String\n policyAction: String! # 'keep', 'disable', 'remove'\n}";export{serviceSchema as default};//# sourceMappingURL=service.graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.graphql.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { Feature } from '@common-stack/server-core';
|
|
2
2
|
declare const _default: Feature<import("@common-stack/server-core").ConfigurationScope, any>;
|
|
3
3
|
export default _default;
|
|
4
|
+
export * from './services';
|
|
5
|
+
export * from './store';
|
|
4
6
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;;AAGpD,wBAAmC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;;AAGpD,wBAAmC;AAEnC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {Feature}from'@common-stack/server-core';import module from'./module.js';var index = new Feature(module);export{index as default};//# sourceMappingURL=index.js.map
|
|
1
|
+
import {Feature}from'@common-stack/server-core';import module from'./module.js';export{RegistryExtensionService}from'./services/extension-service.js';export{InstalledExtensionService}from'./services/installed-extension-service.js';export{InstalledExtensionServiceExt}from'./services/installed-extension-service-ext.js';export{RegistryExtensionModelFunc}from'./store/models/registry-extension-model.js';export{InstalledExtensionModelFunc}from'./store/models/installed-extension-model.js';export{RegistryExtensionRepository}from'./store/repositories/registry-extension-repository.js';export{InstalledExtensionRepository}from'./store/repositories/installed-extension-repository.js';var index = new Feature(module);export{index as default};//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":"uqBAGA,YAAmC,IAAA,OAAA,CAAA,MAAA,CAAA"}
|
package/lib/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;;AAiBpD,wBAuBG"}
|
package/lib/module.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import {find,get}from'lodash-es';import {Feature}from'@common-stack/server-core';import {SERVER_TYPES}from'common/server';import {
|
|
1
|
+
import {find,get}from'lodash-es';import {Feature}from'@common-stack/server-core';import {SERVER_TYPES}from'common/server';import {resolvers}from'./graphql/resolvers/index.js';import {schema}from'./graphql/schemas/index.js';import {extensionModule}from'./containers/module.js';const extensionServiceGen = container => {
|
|
2
2
|
container.get('Environment');
|
|
3
3
|
return {
|
|
4
|
-
registryExtensionService: container.get(SERVER_TYPES.IRegistryExtensionService)
|
|
4
|
+
registryExtensionService: container.get(SERVER_TYPES.IRegistryExtensionService),
|
|
5
|
+
installedExtensionService: container.get(SERVER_TYPES.IInstalledExtensionService),
|
|
6
|
+
registryExtensionDataLoader: container.get(SERVER_TYPES.IRegistryExtensionDataLoader)
|
|
5
7
|
};
|
|
6
8
|
};
|
|
7
9
|
var module = new Feature({
|
|
8
10
|
schema,
|
|
9
|
-
createResolversFunc:
|
|
11
|
+
createResolversFunc: resolvers,
|
|
10
12
|
createContainerFunc: [extensionModule],
|
|
11
13
|
createServiceFunc: extensionServiceGen,
|
|
12
14
|
middleware: [app => {
|
|
13
|
-
app.get('/_registry/:accountName/:extension/:version?', (req, res
|
|
15
|
+
app.get('/_registry/:accountName/:extension/:version?', (req, res) => {
|
|
14
16
|
// TODO: Add validation of all params exist or not.
|
|
15
17
|
// for example, if `extension` is missing we should throw some valid error.
|
|
16
18
|
req.services.registryExtensionService.findExtension(`${req.params.accountName}/${req.params.extension}`, req.params.version).then(data => {
|
package/lib/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Service, ServiceBroker } from 'moleculer';
|
|
2
|
+
import { Container } from 'inversify';
|
|
3
|
+
/**
|
|
4
|
+
* Extension Moleculer Service Plugin
|
|
5
|
+
* Handles incoming Moleculer broadcasts for extension events and manages
|
|
6
|
+
* configuration registry for contributions and extensions
|
|
7
|
+
*/
|
|
8
|
+
export declare class ExtensionMoleculerService extends Service {
|
|
9
|
+
private container;
|
|
10
|
+
constructor(broker: ServiceBroker, { container }: {
|
|
11
|
+
container: Container;
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* Register extension contributions to configuration registry
|
|
15
|
+
*/
|
|
16
|
+
private registerExtensionContributions;
|
|
17
|
+
/**
|
|
18
|
+
* Unregister extension contributions from configuration registry
|
|
19
|
+
*/
|
|
20
|
+
private unregisterExtensionContributions;
|
|
21
|
+
/**
|
|
22
|
+
* Activate extension contributions
|
|
23
|
+
*/
|
|
24
|
+
private activateExtensionContributions;
|
|
25
|
+
/**
|
|
26
|
+
* Deactivate extension contributions
|
|
27
|
+
*/
|
|
28
|
+
private deactivateExtensionContributions;
|
|
29
|
+
/**
|
|
30
|
+
* Update contribution state in registry
|
|
31
|
+
*/
|
|
32
|
+
private updateContributionState;
|
|
33
|
+
/**
|
|
34
|
+
* Update extension configuration in registry
|
|
35
|
+
*/
|
|
36
|
+
private updateExtensionConfiguration;
|
|
37
|
+
/**
|
|
38
|
+
* Refresh contribution configuration
|
|
39
|
+
*/
|
|
40
|
+
private refreshContributionConfiguration;
|
|
41
|
+
/**
|
|
42
|
+
* Refresh extension contributions for new version
|
|
43
|
+
*/
|
|
44
|
+
private refreshExtensionContributions;
|
|
45
|
+
/**
|
|
46
|
+
* Update contribution version in registry
|
|
47
|
+
*/
|
|
48
|
+
private updateContributionVersion;
|
|
49
|
+
/**
|
|
50
|
+
* Handle orphaned extensions
|
|
51
|
+
*/
|
|
52
|
+
private handleOrphanedExtensions;
|
|
53
|
+
/**
|
|
54
|
+
* Handle deprecated extensions
|
|
55
|
+
*/
|
|
56
|
+
private handleDeprecatedExtensions;
|
|
57
|
+
/**
|
|
58
|
+
* Clean up contribution registry entries
|
|
59
|
+
*/
|
|
60
|
+
private cleanupContributionRegistry;
|
|
61
|
+
/**
|
|
62
|
+
* Mark contributions as failed
|
|
63
|
+
*/
|
|
64
|
+
private markContributionsAsFailed;
|
|
65
|
+
/**
|
|
66
|
+
* Mark contributions as deprecated
|
|
67
|
+
*/
|
|
68
|
+
private markContributionsAsDeprecated;
|
|
69
|
+
/**
|
|
70
|
+
* Mark contributions as orphaned
|
|
71
|
+
*/
|
|
72
|
+
private markContributionsAsOrphaned;
|
|
73
|
+
/**
|
|
74
|
+
* Get extension configuration
|
|
75
|
+
*/
|
|
76
|
+
private getExtensionConfiguration;
|
|
77
|
+
/**
|
|
78
|
+
* Get extension contributions
|
|
79
|
+
*/
|
|
80
|
+
private getExtensionContributions;
|
|
81
|
+
/**
|
|
82
|
+
* Get all active contributions for tenant
|
|
83
|
+
*/
|
|
84
|
+
private getActiveContributions;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=extension-moleculer-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-moleculer-service.d.ts","sourceRoot":"","sources":["../../src/plugins/extension-moleculer-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAiBtC;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,OAAO;IAClD,OAAO,CAAC,SAAS,CAAY;gBAEjB,MAAM,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE;IA6Q1E;;OAEG;YACW,8BAA8B;IAc5C;;OAEG;YACW,gCAAgC;IAM9C;;OAEG;YACW,8BAA8B;IAM5C;;OAEG;YACW,gCAAgC;IAM9C;;OAEG;YACW,uBAAuB;IAMrC;;OAEG;YACW,4BAA4B;IAM1C;;OAEG;YACW,gCAAgC;IAM9C;;OAEG;YACW,6BAA6B;IAM3C;;OAEG;YACW,yBAAyB;IAMvC;;OAEG;YACW,wBAAwB;IAMtC;;OAEG;YACW,0BAA0B;IAMxC;;OAEG;YACW,2BAA2B;IAMzC;;OAEG;YACW,yBAAyB;IAMvC;;OAEG;YACW,6BAA6B;IAM3C;;OAEG;YACW,2BAA2B;IAMzC;;OAEG;YACW,yBAAyB;IAOvC;;OAEG;YACW,yBAAyB;IAOvC;;OAEG;YACW,sBAAsB;CAMvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
|