@adminide-stack/marketplace-module-server 12.0.4-alpha.91 → 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,183 @@
|
|
|
1
|
+
const resolver = (pubsub, logger) => ({
|
|
2
|
+
InstalledExtension: {
|
|
3
|
+
extension: (root, args, ctx) => {
|
|
4
|
+
// Check if extension exists and is not null/undefined before calling dataloader
|
|
5
|
+
if (!root.extension || root.extension === null || root.extension === undefined) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
const extensionSlug = String(root.extension); // Convert ObjectId to string
|
|
9
|
+
return ctx.registryExtensionDataLoader.load(extensionSlug);
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
Query: {
|
|
13
|
+
/**
|
|
14
|
+
* Get all installed extensions for the current tenant
|
|
15
|
+
*/
|
|
16
|
+
async installedExtensions(root, args, {
|
|
17
|
+
userContext,
|
|
18
|
+
installedExtensionService
|
|
19
|
+
}) {
|
|
20
|
+
const query = {
|
|
21
|
+
tenantId: userContext.tenantId
|
|
22
|
+
};
|
|
23
|
+
if (args.enabled !== undefined) {
|
|
24
|
+
query['settings.effectiveEnabled'] = args.enabled;
|
|
25
|
+
}
|
|
26
|
+
const results = await installedExtensionService.getInstalledExtensions(query);
|
|
27
|
+
return results;
|
|
28
|
+
},
|
|
29
|
+
/**
|
|
30
|
+
* Get a specific installed extension
|
|
31
|
+
*/
|
|
32
|
+
async installedExtension(root, args, {
|
|
33
|
+
userContext,
|
|
34
|
+
installedExtensionService
|
|
35
|
+
}) {
|
|
36
|
+
return installedExtensionService.getInstalledExtension(userContext.tenantId, args.extensionSlug);
|
|
37
|
+
},
|
|
38
|
+
/**
|
|
39
|
+
* Get installed extensions that need attention (updates, deprecated, etc.)
|
|
40
|
+
*/
|
|
41
|
+
async extensionsNeedingAttention(root, args, {
|
|
42
|
+
userContext,
|
|
43
|
+
installedExtensionService
|
|
44
|
+
}) {
|
|
45
|
+
return installedExtensionService.getExtensionsNeedingAttention(userContext.tenantId);
|
|
46
|
+
},
|
|
47
|
+
/**
|
|
48
|
+
* Check for available updates
|
|
49
|
+
*/
|
|
50
|
+
async extensionUpdates(root, args, {
|
|
51
|
+
userContext,
|
|
52
|
+
installedExtensionService
|
|
53
|
+
}) {
|
|
54
|
+
return installedExtensionService.checkForUpdates(userContext.tenantId, args.extensionSlug);
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
Mutation: {
|
|
58
|
+
/**
|
|
59
|
+
* Install an extension from the registry
|
|
60
|
+
*/
|
|
61
|
+
async installExtension(root, args, {
|
|
62
|
+
userContext,
|
|
63
|
+
installedExtensionService,
|
|
64
|
+
registryExtensionService
|
|
65
|
+
}) {
|
|
66
|
+
try {
|
|
67
|
+
const installedExtension = await installedExtensionService.installExtension({
|
|
68
|
+
...args.input,
|
|
69
|
+
tenantId: userContext.tenantId,
|
|
70
|
+
installedVersion: args.input.version,
|
|
71
|
+
installedBy: userContext.accountId
|
|
72
|
+
});
|
|
73
|
+
return {
|
|
74
|
+
success: true,
|
|
75
|
+
extension: installedExtension,
|
|
76
|
+
message: `Extension ${args.input.extensionSlug} installed successfully`
|
|
77
|
+
};
|
|
78
|
+
} catch (error) {
|
|
79
|
+
return {
|
|
80
|
+
success: false,
|
|
81
|
+
extension: null,
|
|
82
|
+
message: error.message || `Failed to install extension ${args.input.extensionSlug}`
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
/**
|
|
87
|
+
* Uninstall an extension
|
|
88
|
+
*/
|
|
89
|
+
async uninstallExtension(root, args, {
|
|
90
|
+
userContext,
|
|
91
|
+
installedExtensionService,
|
|
92
|
+
registryExtensionService
|
|
93
|
+
}) {
|
|
94
|
+
try {
|
|
95
|
+
const success = await installedExtensionService.uninstallExtension(userContext.tenantId, args.extensionSlug, userContext.accountId);
|
|
96
|
+
if (success) {
|
|
97
|
+
// Update the registry extension as uninstalled
|
|
98
|
+
await registryExtensionService.updateExtension(args.extensionSlug, {
|
|
99
|
+
installed: false
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
success,
|
|
104
|
+
message: success ? `Extension ${args.extensionSlug} uninstalled successfully` : `Failed to uninstall extension ${args.extensionSlug}`
|
|
105
|
+
};
|
|
106
|
+
} catch (error) {
|
|
107
|
+
return {
|
|
108
|
+
success: false,
|
|
109
|
+
message: error.message || `Failed to uninstall extension ${args.extensionSlug}`
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
/**
|
|
114
|
+
* Enable or disable an extension
|
|
115
|
+
*/
|
|
116
|
+
async toggleExtension(root, args, {
|
|
117
|
+
userContext,
|
|
118
|
+
installedExtensionService
|
|
119
|
+
}) {
|
|
120
|
+
const extension = await installedExtensionService.toggleExtension(userContext.tenantId, args.extensionSlug, args.enabled, userContext.accountId);
|
|
121
|
+
return {
|
|
122
|
+
success: true,
|
|
123
|
+
extension: extension,
|
|
124
|
+
message: `Extension ${args.extensionSlug} ${args.enabled ? 'enabled' : 'disabled'} successfully`
|
|
125
|
+
};
|
|
126
|
+
},
|
|
127
|
+
/**
|
|
128
|
+
* Update extension settings
|
|
129
|
+
*/
|
|
130
|
+
async updateExtensionSettings(root, args, {
|
|
131
|
+
userContext,
|
|
132
|
+
installedExtensionService
|
|
133
|
+
}) {
|
|
134
|
+
const extension = await installedExtensionService.updateExtensionSettings(userContext.tenantId, args.extensionSlug, args.settings, userContext.accountId);
|
|
135
|
+
return {
|
|
136
|
+
success: true,
|
|
137
|
+
extension: extension,
|
|
138
|
+
message: `Extension ${args.extensionSlug} settings updated successfully`
|
|
139
|
+
};
|
|
140
|
+
},
|
|
141
|
+
/**
|
|
142
|
+
* Update an extension to a newer version
|
|
143
|
+
*/
|
|
144
|
+
async updateExtensionVersion(root, args, {
|
|
145
|
+
userContext,
|
|
146
|
+
installedExtensionService
|
|
147
|
+
}) {
|
|
148
|
+
const extension = await installedExtensionService.updateExtensionVersion(userContext.tenantId, args.extensionSlug, args.version, userContext.accountId);
|
|
149
|
+
return {
|
|
150
|
+
success: true,
|
|
151
|
+
extension: extension,
|
|
152
|
+
message: `Extension ${args.extensionSlug} updated to version ${args.version} successfully`
|
|
153
|
+
};
|
|
154
|
+
},
|
|
155
|
+
/**
|
|
156
|
+
* Sync installed extensions with registry
|
|
157
|
+
*/
|
|
158
|
+
async syncExtensionsWithRegistry(root, args, {
|
|
159
|
+
userContext,
|
|
160
|
+
installedExtensionService
|
|
161
|
+
}) {
|
|
162
|
+
await installedExtensionService.syncWithRegistry(userContext.tenantId);
|
|
163
|
+
return {
|
|
164
|
+
success: true,
|
|
165
|
+
message: 'Extensions synced with registry successfully'
|
|
166
|
+
};
|
|
167
|
+
},
|
|
168
|
+
/**
|
|
169
|
+
* Clean up deprecated or removed extensions
|
|
170
|
+
*/
|
|
171
|
+
async cleanupExtensions(root, args, {
|
|
172
|
+
userContext,
|
|
173
|
+
installedExtensionService
|
|
174
|
+
}) {
|
|
175
|
+
const result = await installedExtensionService.cleanupExtensions(userContext.tenantId, args.dryRun || false);
|
|
176
|
+
return {
|
|
177
|
+
success: true,
|
|
178
|
+
result,
|
|
179
|
+
message: args.dryRun ? 'Cleanup preview completed' : `Cleanup completed: ${result.removed.length} removed, ${result.deprecated.length} deprecated`
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
});export{resolver};//# sourceMappingURL=installed-extension-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installed-extension-resolver.js","sources":["../../../src/graphql/resolvers/installed-extension-resolver.ts"],"sourcesContent":[null],"names":[],"mappings":"AAES,MAAA,QAAQ;AACjB,EAAA,kBAAoB,EAAA;AACpB,IAAA,SAA8B,EAAA,CAAA,IAAY,EAAA,IAAA;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { PubSub } from 'graphql-subscriptions';
|
|
2
|
+
import { CdmLogger } from '@cdm-logger/core';
|
|
3
|
+
import { IResolvers } from 'common/server';
|
|
4
|
+
export declare const resolver: (pubsub: PubSub, logger?: CdmLogger.ILogger) => IResolvers;
|
|
5
|
+
//# sourceMappingURL=registry-extension-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-extension-resolver.d.ts","sourceRoot":"","sources":["../../../src/graphql/resolvers/registry-extension-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAsB,UAAU,EAAE,MAAM,eAAe,CAAC;AAK/D,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,SAAS,SAAS,CAAC,OAAO,KAAG,UA+LpE,CAAC"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import*as url from'url'
|
|
1
|
+
import*as url from'url';/* eslint-disable no-unused-expressions */
|
|
2
|
+
const bundleUrlGenerator = (extensionSlug, version) => url.resolve(process.env.BACKEND_URL, `_registry/${extensionSlug}/${version}`);
|
|
2
3
|
const resolver = (pubsub, logger) => ({
|
|
3
4
|
Contributes: {
|
|
4
5
|
menus: root => {
|
|
5
6
|
let result;
|
|
6
7
|
// const manifest = JSON.parse(root.manifest);
|
|
7
8
|
// console.log('manifest======>', manifest);
|
|
8
|
-
const
|
|
9
|
+
const {
|
|
10
|
+
menus
|
|
11
|
+
} = root;
|
|
9
12
|
console.log('menus=========>', menus);
|
|
10
13
|
try {
|
|
11
14
|
result = {
|
|
12
|
-
commandPalette: menus
|
|
15
|
+
commandPalette: menus.commandPalette || [],
|
|
13
16
|
explorer: {
|
|
14
17
|
context: menus['explorer/context'] || []
|
|
15
18
|
},
|
|
@@ -44,7 +47,7 @@ const resolver = (pubsub, logger) => ({
|
|
|
44
47
|
context: menus['view/item/context'] || []
|
|
45
48
|
}
|
|
46
49
|
},
|
|
47
|
-
touchBar: menus
|
|
50
|
+
touchBar: menus.touchBar || []
|
|
48
51
|
};
|
|
49
52
|
} catch (err) {
|
|
50
53
|
console.log('err', err);
|
|
@@ -58,27 +61,45 @@ const resolver = (pubsub, logger) => ({
|
|
|
58
61
|
logger && logger.debug('args [%j]', args);
|
|
59
62
|
const nodes = await ctx.registryExtensionService.findExtensions(args.first, args.query, args.local, args.remote, args.prioritizeExtensionIDs);
|
|
60
63
|
return {
|
|
61
|
-
nodes
|
|
64
|
+
nodes: nodes,
|
|
65
|
+
pageInfo: {
|
|
66
|
+
hasNextPage: false,
|
|
67
|
+
hasPreviousPage: false
|
|
68
|
+
},
|
|
69
|
+
totalCount: nodes.length
|
|
62
70
|
};
|
|
63
71
|
},
|
|
64
72
|
async extension(root, args, ctx) {
|
|
65
|
-
return ctx.registryExtensionService.findExtension(args.
|
|
73
|
+
return ctx.registryExtensionService.findExtension(args.extensionSlug);
|
|
66
74
|
},
|
|
67
75
|
async releases(root, args, ctx) {
|
|
68
|
-
return ctx.registryExtensionService.extensionReleases(args.
|
|
76
|
+
return ctx.registryExtensionService.extensionReleases(args.extensionSlug);
|
|
69
77
|
},
|
|
70
|
-
async publishers(root, args, ctx) {
|
|
71
|
-
|
|
72
|
-
|
|
78
|
+
async publishers(root, args, ctx) {
|
|
79
|
+
return {
|
|
80
|
+
nodes: [],
|
|
81
|
+
pageInfo: {
|
|
82
|
+
hasNextPage: false,
|
|
83
|
+
hasPreviousPage: false
|
|
84
|
+
},
|
|
85
|
+
totalCount: 0
|
|
86
|
+
};
|
|
87
|
+
},
|
|
88
|
+
async viewerPublishers(root, args, ctx) {
|
|
89
|
+
return [];
|
|
90
|
+
},
|
|
91
|
+
async localExtensionIDPrefix(root, args, ctx) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
73
94
|
},
|
|
74
95
|
ExtensionRelease: {
|
|
75
|
-
bundleURL: root => bundleUrlGenerator(root.
|
|
96
|
+
bundleURL: root => bundleUrlGenerator(root.extensionSlug, root.version)
|
|
76
97
|
},
|
|
77
98
|
ExtensionManifest: {
|
|
78
99
|
bundleURL: ({
|
|
79
100
|
version,
|
|
80
|
-
|
|
81
|
-
}) => bundleUrlGenerator(
|
|
101
|
+
extensionSlug
|
|
102
|
+
}) => bundleUrlGenerator(extensionSlug, version)
|
|
82
103
|
},
|
|
83
104
|
RegistryExtension: {
|
|
84
105
|
manifest: root => {
|
|
@@ -86,14 +107,16 @@ const resolver = (pubsub, logger) => ({
|
|
|
86
107
|
// console.log('root=================>', JSON.parse(root.manifest));
|
|
87
108
|
try {
|
|
88
109
|
result = {
|
|
89
|
-
...
|
|
90
|
-
|
|
91
|
-
raw: root.manifest
|
|
110
|
+
...root.manifest,
|
|
111
|
+
extensionSlug: root.extensionSlug,
|
|
112
|
+
raw: JSON.stringify(root.manifest)
|
|
92
113
|
};
|
|
93
|
-
} catch (err) {
|
|
114
|
+
} catch (err) {
|
|
115
|
+
result = {};
|
|
116
|
+
}
|
|
94
117
|
return result;
|
|
95
118
|
},
|
|
96
|
-
url: root => bundleUrlGenerator(root.
|
|
119
|
+
url: root => bundleUrlGenerator(root.extensionSlug, root.version)
|
|
97
120
|
},
|
|
98
121
|
Query: {
|
|
99
122
|
// namespace for running all extension registry queries
|
|
@@ -103,7 +126,7 @@ const resolver = (pubsub, logger) => ({
|
|
|
103
126
|
/// DEPRECATED: Remove all fo the following resolvers as they moved to namespace ExtensionRegistry
|
|
104
127
|
async extensions(root, args, ctx) {
|
|
105
128
|
logger && logger.debug('args [%j]', args);
|
|
106
|
-
|
|
129
|
+
const nodes = await ctx.registryExtensionService.findExtensions(args.first, args.query, args.local, args.remote, args.prioritizeExtensionIDs);
|
|
107
130
|
// const res = { nodes: {...nodes, manifest: JSON.parse(nodes[0].manifest)} };
|
|
108
131
|
// console.log('nodes==>', nodes);
|
|
109
132
|
// nodes = nodes.map(el => {
|
|
@@ -114,54 +137,43 @@ const resolver = (pubsub, logger) => ({
|
|
|
114
137
|
// });
|
|
115
138
|
// console.log('nodes=======after>', nodes);
|
|
116
139
|
return {
|
|
117
|
-
nodes
|
|
140
|
+
nodes: nodes,
|
|
141
|
+
pageInfo: {
|
|
142
|
+
hasNextPage: false,
|
|
143
|
+
hasPreviousPage: false
|
|
144
|
+
},
|
|
145
|
+
totalCount: nodes.length
|
|
118
146
|
};
|
|
119
147
|
},
|
|
120
148
|
async extension(root, args, ctx) {
|
|
121
|
-
return ctx.registryExtensionService.findExtension(args.
|
|
149
|
+
return ctx.registryExtensionService.findExtension(args.extensionSlug);
|
|
122
150
|
},
|
|
123
151
|
async releases(root, args, ctx) {
|
|
124
|
-
return ctx.registryExtensionService.extensionReleases(args.
|
|
152
|
+
return ctx.registryExtensionService.extensionReleases(args.extensionSlug);
|
|
125
153
|
}
|
|
126
154
|
},
|
|
127
155
|
Mutation: {
|
|
128
156
|
async createExtension(root, args, ctx) {
|
|
129
157
|
const extension = await ctx.registryExtensionService.createExtension(args.publisher, args.name);
|
|
130
|
-
return
|
|
131
|
-
extension
|
|
132
|
-
};
|
|
158
|
+
return extension;
|
|
133
159
|
},
|
|
134
160
|
updateExtension(root, args, ctx) {
|
|
135
161
|
return ctx.registryExtensionService.updateExtensionName(args.extension, args.name);
|
|
136
162
|
},
|
|
137
|
-
deleteExtension(root, args, ctx) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
throw new Error(`Extension ${args.extensionID} not found`);
|
|
144
|
-
}
|
|
145
|
-
return ctx.registryExtensionService.updateExtension(args.extensionID, {
|
|
146
|
-
installed: true
|
|
147
|
-
});
|
|
148
|
-
},
|
|
149
|
-
async uninstallExtension(root, args, ctx) {
|
|
150
|
-
const extension = await ctx.registryExtensionService.findExtension(args.extensionID);
|
|
151
|
-
if (!extension) {
|
|
152
|
-
throw new Error(`Extension ${args.extensionID} not found`);
|
|
153
|
-
}
|
|
154
|
-
return ctx.registryExtensionService.updateExtension(args.extensionID, {
|
|
155
|
-
installed: false
|
|
156
|
-
});
|
|
163
|
+
async deleteExtension(root, args, ctx) {
|
|
164
|
+
const result = await ctx.registryExtensionService.deleteExtension(args.extension);
|
|
165
|
+
return {
|
|
166
|
+
success: !!result,
|
|
167
|
+
message: 'Extension deleted successfully'
|
|
168
|
+
};
|
|
157
169
|
},
|
|
158
170
|
async publishExtension(root, args, ctx) {
|
|
159
171
|
const extension = await ctx.registryExtensionService.publishExtension({
|
|
160
172
|
...args
|
|
161
173
|
});
|
|
162
174
|
return {
|
|
163
|
-
extension
|
|
175
|
+
extension: extension
|
|
164
176
|
};
|
|
165
177
|
}
|
|
166
178
|
}
|
|
167
|
-
});export{resolver};//# sourceMappingURL=
|
|
179
|
+
});export{resolver};//# sourceMappingURL=registry-extension-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-extension-resolver.js","sources":["../../../src/graphql/resolvers/registry-extension-resolver.ts"],"sourcesContent":[null],"names":[],"mappings":"wBAEA;AAEA,MAAA,kBAAyC,GAAM,gBAAgB,OAAA,KAAA,GAAA,CAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,WAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,CAAA;AAK/D,MAAA,QAAa,GAAA,CAAA,MAAY,EAAA,MAAA,MAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
|
|
2
|
+
type ExtensionRelease @entity(embedded: true) {
|
|
3
|
+
id: ID @id
|
|
4
|
+
bundle: String @column
|
|
5
|
+
bundleURL: String @column
|
|
6
|
+
version: String @column
|
|
7
|
+
manifest: String! @column
|
|
8
|
+
sourceMap: String @column
|
|
9
|
+
extensionSlug: String @column
|
|
10
|
+
creatorUserId: String @column
|
|
11
|
+
releaseVersion: String @column
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
enum ExtensionStatus {
|
|
15
|
+
"""The extension is active and available for use."""
|
|
16
|
+
ACTIVE
|
|
17
|
+
|
|
18
|
+
"""The extension is inactive and not available for use."""
|
|
19
|
+
INACTIVE
|
|
20
|
+
|
|
21
|
+
"""The extension is deprecated and should not be used."""
|
|
22
|
+
DEPRECATED
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
type RegistryExtension implements Node @entity {
|
|
26
|
+
"""The unique, opaque, permanent ID of the extension."""
|
|
27
|
+
id: ID! @id
|
|
28
|
+
|
|
29
|
+
"""The UUID of the extension. This identifies the extension externally (along with the origin). The UUID maps
|
|
30
|
+
1-t0-1 to RegistryExtension.id."""
|
|
31
|
+
uuid: String! @column
|
|
32
|
+
|
|
33
|
+
""" The publisher of the extension. If this extension is from a remote registry, the publisher may be null."""
|
|
34
|
+
publisher: RegistryPublisher
|
|
35
|
+
|
|
36
|
+
""" The qualified, unique name that refers to this extension, consisting of the registry name (if non-default),
|
|
37
|
+
publisher's name, and the extension's name, all joined by "/" (for example, "cdecode/my-extension-name")."""
|
|
38
|
+
extensionSlug: String @column
|
|
39
|
+
|
|
40
|
+
status: ExtensionStatus @column
|
|
41
|
+
|
|
42
|
+
"""The extension ID without the registry name."""
|
|
43
|
+
extensionIDWithoutRegistry: String @column
|
|
44
|
+
|
|
45
|
+
"""The name of the extension."""
|
|
46
|
+
name: String! @column
|
|
47
|
+
|
|
48
|
+
"""Latest Published version."""
|
|
49
|
+
version: String
|
|
50
|
+
|
|
51
|
+
"""The extension manifest."""
|
|
52
|
+
manifest: ExtensionManifest
|
|
53
|
+
|
|
54
|
+
"""The date when this extension was last updated on the registry."""
|
|
55
|
+
updatedAt: DateTime @column(overrideType: "Date")
|
|
56
|
+
|
|
57
|
+
"""The URL to the extension on this CDECode site."""
|
|
58
|
+
url: String @column
|
|
59
|
+
|
|
60
|
+
"""The URL to the extension on the extension registry where it lives."""
|
|
61
|
+
remoteURL: String @column
|
|
62
|
+
|
|
63
|
+
"""Whether the registry extension is published on this CDECode site."""
|
|
64
|
+
isLocal: Boolean @column
|
|
65
|
+
|
|
66
|
+
"""Whether the viewer has admin privileges on this registry extension."""
|
|
67
|
+
viewerCanAdminister: Boolean @column
|
|
68
|
+
|
|
69
|
+
"""Extension Releases."""
|
|
70
|
+
releases: [ExtensionRelease!] @embedded
|
|
71
|
+
|
|
72
|
+
"""Whether the extension is installed."""
|
|
73
|
+
installed: Boolean
|
|
74
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var extensionRegistrySchema = "\ntype ExtensionRelease @entity(embedded: true) {\n id: ID @id\n bundle: String @column\n bundleURL: String @column\n version: String @column\n manifest: String! @column\n sourceMap: String @column\n extensionSlug: String @column\n creatorUserId: String @column\n releaseVersion: String @column\n}\n\nenum ExtensionStatus {\n \"\"\"The extension is active and available for use.\"\"\"\n ACTIVE\n\n \"\"\"The extension is inactive and not available for use.\"\"\"\n INACTIVE\n\n \"\"\"The extension is deprecated and should not be used.\"\"\"\n DEPRECATED\n}\n\ntype RegistryExtension implements Node @entity {\n \"\"\"The unique, opaque, permanent ID of the extension.\"\"\"\n id: ID! @id\n\n \"\"\"The UUID of the extension. This identifies the extension externally (along with the origin). The UUID maps\n 1-t0-1 to RegistryExtension.id.\"\"\"\n uuid: String! @column\n\n \"\"\" The publisher of the extension. If this extension is from a remote registry, the publisher may be null.\"\"\"\n publisher: RegistryPublisher\n\n \"\"\" The qualified, unique name that refers to this extension, consisting of the registry name (if non-default),\n publisher's name, and the extension's name, all joined by \"/\" (for example, \"cdecode/my-extension-name\").\"\"\"\n extensionSlug: String @column\n\n status: ExtensionStatus @column\n\n \"\"\"The extension ID without the registry name.\"\"\"\n extensionIDWithoutRegistry: String @column\n\n \"\"\"The name of the extension.\"\"\"\n name: String! @column\n\n \"\"\"Latest Published version.\"\"\"\n version: String\n\n \"\"\"The extension manifest.\"\"\"\n manifest: ExtensionManifest\n\n \"\"\"The date when this extension was last updated on the registry.\"\"\"\n updatedAt: DateTime @column(overrideType: \"Date\")\n\n \"\"\"The URL to the extension on this CDECode site.\"\"\"\n url: String @column\n\n \"\"\"The URL to the extension on the extension registry where it lives.\"\"\"\n remoteURL: String @column\n\n \"\"\"Whether the registry extension is published on this CDECode site.\"\"\"\n isLocal: Boolean @column\n\n \"\"\"Whether the viewer has admin privileges on this registry extension.\"\"\"\n viewerCanAdminister: Boolean @column\n\n \"\"\"Extension Releases.\"\"\"\n releases: [ExtensionRelease!] @embedded\n\n \"\"\"Whether the extension is installed.\"\"\"\n installed: Boolean\n}\n";export{extensionRegistrySchema as default};//# sourceMappingURL=extension-registry.graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-registry.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":"AAIA,QAAA,MAAM,MAAM,QAAgF,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -1,4 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
const schema = [
|
|
3
|
-
// marketplaceSchema,
|
|
4
|
-
extensionSchema].join('\n');export{schema};//# sourceMappingURL=index.js.map
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|