@adminide-stack/marketplace-module-server 12.0.4-alpha.4 → 12.0.4-alpha.402
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/containers/module.d.ts +8 -0
- package/lib/containers/module.d.ts.map +1 -1
- package/lib/containers/module.js +15 -5
- package/lib/containers/module.js.map +1 -1
- package/lib/dataloaders/index.d.ts +1 -0
- package/lib/dataloaders/index.d.ts.map +1 -0
- package/lib/demo/test-graphql-examples.d.ts +73 -0
- package/lib/demo/test-graphql-examples.d.ts.map +1 -0
- package/lib/graphql/resolvers/form-templates-resolver.d.ts +220 -0
- package/lib/graphql/resolvers/form-templates-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/form-templates-resolver.js +170 -0
- package/lib/graphql/resolvers/form-templates-resolver.js.map +1 -0
- package/lib/graphql/resolvers/gallery-resolver.d.ts +15 -0
- package/lib/graphql/resolvers/gallery-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/gallery-resolver.js +35 -0
- package/lib/graphql/resolvers/gallery-resolver.js.map +1 -0
- package/lib/graphql/resolvers/index.d.ts +247 -1
- package/lib/graphql/resolvers/index.d.ts.map +1 -1
- package/lib/graphql/resolvers/index.js +1 -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 +289 -0
- package/lib/graphql/resolvers/installed-extension-resolver.js.map +1 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.d.ts +13 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.js +90 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.js.map +1 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts +14 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.js +221 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.js.map +1 -0
- package/lib/graphql/resolvers/publisher-resolver.d.ts +5 -0
- package/lib/graphql/resolvers/publisher-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/publisher-resolver.js +176 -0
- package/lib/graphql/resolvers/publisher-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/registry-extension-resolver.js +46 -0
- package/lib/graphql/resolvers/registry-extension-resolver.js.map +1 -0
- package/lib/graphql/schemas/extension-pricing.graphql +546 -0
- package/lib/graphql/schemas/extension-pricing.graphql.js +1 -0
- package/lib/graphql/schemas/extension-pricing.graphql.js.map +1 -0
- package/lib/graphql/schemas/extension-registry.graphql +107 -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/form-templates.graphql +269 -0
- package/lib/graphql/schemas/form-templates.graphql.js +1 -0
- package/lib/graphql/schemas/form-templates.graphql.js.map +1 -0
- package/lib/graphql/schemas/gallery-schema.graphql +247 -0
- package/lib/graphql/schemas/gallery-schema.graphql.js +1 -0
- package/lib/graphql/schemas/gallery-schema.graphql.js.map +1 -0
- package/lib/graphql/schemas/index.d.ts.map +1 -1
- package/lib/graphql/schemas/index.js +3 -4
- package/lib/graphql/schemas/index.js.map +1 -1
- package/lib/graphql/schemas/installed-extension.graphql +309 -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/publisher-analytics.graphql +305 -0
- package/lib/graphql/schemas/publisher-analytics.graphql.js +1 -0
- package/lib/graphql/schemas/publisher-analytics.graphql.js.map +1 -0
- package/lib/graphql/schemas/publisher.graphql +376 -0
- package/lib/graphql/schemas/publisher.graphql.js +1 -0
- package/lib/graphql/schemas/publisher.graphql.js.map +1 -0
- package/lib/graphql/schemas/service.graphql +196 -0
- package/lib/index.d.ts +3 -1
- 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 +1 -1
- package/lib/module.d.ts.map +1 -1
- package/lib/module.js +10 -23
- 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-gallery-repository.d.ts +17 -0
- package/lib/services/extension-gallery-repository.d.ts.map +1 -0
- package/lib/services/extension-gallery-repository.js +192 -0
- package/lib/services/extension-gallery-repository.js.map +1 -0
- package/lib/services/extension-gallery-service-new.d.ts +39 -0
- package/lib/services/extension-gallery-service-new.d.ts.map +1 -0
- package/lib/services/extension-gallery-service.d.ts +30 -0
- package/lib/services/extension-gallery-service.d.ts.map +1 -0
- package/lib/services/extension-gallery-service.js +311 -0
- package/lib/services/extension-gallery-service.js.map +1 -0
- package/lib/services/index.d.ts +6 -1
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/installed-extension-service-ext.d.ts +16 -0
- package/lib/services/installed-extension-service-ext.d.ts.map +1 -0
- package/lib/services/installed-extension-service-ext.js +485 -0
- package/lib/services/installed-extension-service-ext.js.map +1 -0
- package/lib/services/installed-extension-service.d.ts +96 -0
- package/lib/services/installed-extension-service.d.ts.map +1 -0
- package/lib/services/installed-extension-service.js +521 -0
- package/lib/services/installed-extension-service.js.map +1 -0
- package/lib/services/installed-extension-service.test.d.ts +1 -0
- package/lib/services/installed-extension-service.test.d.ts.map +1 -0
- package/lib/services/publisher-analytics-service.d.ts +128 -0
- package/lib/services/publisher-analytics-service.d.ts.map +1 -0
- package/lib/services/publisher-event-service.d.ts +48 -0
- package/lib/services/publisher-event-service.d.ts.map +1 -0
- package/lib/services/publisher-event-service.js +296 -0
- package/lib/services/publisher-event-service.js.map +1 -0
- package/lib/services/publisher-service-context.d.ts +1 -0
- package/lib/services/publisher-service-context.d.ts.map +1 -0
- package/lib/services/publisher-service.d.ts +60 -0
- package/lib/services/publisher-service.d.ts.map +1 -0
- package/lib/services/publisher-service.js +134 -0
- package/lib/services/publisher-service.js.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 +2 -1
- 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 +269 -0
- package/lib/store/models/installed-extension-model.js.map +1 -0
- package/lib/store/models/publisher-event-model.d.ts +11 -0
- package/lib/store/models/publisher-event-model.d.ts.map +1 -0
- package/lib/store/models/publisher-model.d.ts +5 -0
- package/lib/store/models/publisher-model.d.ts.map +1 -0
- package/lib/store/models/publisher-model.js +103 -0
- package/lib/store/models/publisher-model.js.map +1 -0
- package/lib/store/models/publisher-stats-model.d.ts +1 -0
- package/lib/store/models/publisher-stats-model.d.ts.map +1 -0
- package/lib/store/repositories/index.d.ts +3 -0
- package/lib/store/repositories/index.d.ts.map +1 -0
- package/lib/store/repositories/installed-extension-repository.d.ts +73 -0
- package/lib/store/repositories/installed-extension-repository.d.ts.map +1 -0
- package/lib/store/repositories/installed-extension-repository.js +442 -0
- package/lib/store/repositories/installed-extension-repository.js.map +1 -0
- package/lib/store/repositories/publisher-analytics-repository.d.ts +1 -0
- package/lib/store/repositories/publisher-analytics-repository.d.ts.map +1 -0
- package/lib/store/repositories/publisher-repository.d.ts +19 -0
- package/lib/store/repositories/publisher-repository.d.ts.map +1 -0
- package/lib/store/repositories/publisher-repository.js +87 -0
- package/lib/store/repositories/publisher-repository.js.map +1 -0
- package/lib/templates/constants/DB_COLL_NAMES.ts.template +5 -0
- package/lib/templates/constants/SERVER_TYPES.ts.template +10 -4
- package/lib/templates/repositories/ExtensionGalleryRepository.ts.template +44 -0
- package/lib/templates/repositories/InstalledExtensionRepository.ts.template +94 -0
- package/lib/templates/repositories/MarketplacePublisherRepository.ts.template +24 -0
- package/lib/templates/repositories/RegistryExtensionRepository.ts.template +10 -15
- package/lib/templates/services/ExtensionGalleryDataLoader.ts.template +2 -0
- package/lib/templates/services/ExtensionGalleryService.ts.template +79 -0
- package/lib/templates/services/InstalledExtensionDataLoader.ts.template +2 -0
- package/lib/templates/services/InstalledExtensionService.ts.template +181 -0
- package/lib/templates/services/MarketplacePublisherService.ts.template +49 -0
- package/lib/templates/services/PublisherEventService.ts.template +56 -0
- package/lib/templates/services/RegistryExtensionService.ts.template +62 -18
- package/lib/tests/extension-integration.test.d.ts +1 -0
- package/lib/tests/extension-integration.test.d.ts.map +1 -0
- package/lib/tests/install-extension-graphql.test.d.ts +2 -0
- package/lib/tests/install-extension-graphql.test.d.ts.map +1 -0
- package/lib/tests/test-extension-services.d.ts +1 -0
- package/lib/tests/test-extension-services.d.ts.map +1 -0
- package/lib/utils/publisherValidation.d.ts +23 -0
- package/lib/utils/publisherValidation.d.ts.map +1 -0
- package/lib/utils/publisherValidation.js +144 -0
- package/lib/utils/publisherValidation.js.map +1 -0
- package/package.json +15 -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 +0 -167
- 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/services/extension-service.d.ts +0 -54
- package/lib/services/extension-service.d.ts.map +0 -1
- package/lib/services/extension-service.js +0 -42
- package/lib/services/extension-service.js.map +0 -1
- package/lib/store/models/registry-extension-model.d.ts +0 -10
- package/lib/store/models/registry-extension-model.d.ts.map +0 -1
- package/lib/store/models/registry-extension-model.js +0 -62
- package/lib/store/models/registry-extension-model.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 +0 -135
- package/lib/store/repository/registry-extension-repository.js.map +0 -1
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
const resolver = (pubsub, logger) => ({
|
|
2
|
+
InstalledExtension: {
|
|
3
|
+
organization: (root, args, context, info) => {
|
|
4
|
+
const {
|
|
5
|
+
organizationDataLoader
|
|
6
|
+
} = context;
|
|
7
|
+
// The organization field from the model contains an ObjectId reference
|
|
8
|
+
if (!root.organization) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
// Convert ObjectId to string for the dataloader
|
|
12
|
+
const organizationId = String(root.organization);
|
|
13
|
+
return organizationDataLoader.load(organizationId);
|
|
14
|
+
},
|
|
15
|
+
extension: (root, args, {
|
|
16
|
+
registryExtensionDataLoader
|
|
17
|
+
}) => {
|
|
18
|
+
// The extension field contains an ObjectId reference
|
|
19
|
+
if (!root.extension) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
// Convert ObjectId to string for the dataloader
|
|
23
|
+
const extensionId = String(root.extension);
|
|
24
|
+
return registryExtensionDataLoader.load(extensionId);
|
|
25
|
+
},
|
|
26
|
+
sourceDocument: async (root, _args, ctx) => {
|
|
27
|
+
if (!root.sourceCollection || !root.sourceDocumentId) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
return await ctx.extensionSourceDocumentDataLoader.load(root.sourceCollection, root.sourceDocumentId);
|
|
32
|
+
} catch (error) {
|
|
33
|
+
if (logger) {
|
|
34
|
+
logger.error('Error loading source document for InstalledExtension:', error);
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
Query: {
|
|
41
|
+
/**
|
|
42
|
+
* Get all installed extensions for the current user/organization
|
|
43
|
+
*/
|
|
44
|
+
async installedExtensions(root, {
|
|
45
|
+
enabled,
|
|
46
|
+
orgName
|
|
47
|
+
}, {
|
|
48
|
+
userContext,
|
|
49
|
+
installedExtensionService,
|
|
50
|
+
slugService
|
|
51
|
+
}) {
|
|
52
|
+
const query = {};
|
|
53
|
+
// Map orgName to orgId using slugService for filtering
|
|
54
|
+
if (orgName) {
|
|
55
|
+
const orgId = await slugService.resolveOrganizationSlug(orgName);
|
|
56
|
+
if (orgId) {
|
|
57
|
+
query.orgId = orgId;
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
query.orgId = userContext.organization?.id;
|
|
61
|
+
}
|
|
62
|
+
if (enabled !== undefined) {
|
|
63
|
+
query['settings.effectiveEnabled'] = enabled;
|
|
64
|
+
}
|
|
65
|
+
const results = await installedExtensionService.getInstalledExtensions(query);
|
|
66
|
+
return results;
|
|
67
|
+
},
|
|
68
|
+
/**
|
|
69
|
+
* Get a specific installed extension
|
|
70
|
+
*/
|
|
71
|
+
async installedExtension(root, args, {
|
|
72
|
+
userContext,
|
|
73
|
+
installedExtensionService,
|
|
74
|
+
slugService
|
|
75
|
+
}) {
|
|
76
|
+
let orgId;
|
|
77
|
+
if (args.orgName) {
|
|
78
|
+
orgId = await slugService.resolveOrganizationSlug(args.orgName);
|
|
79
|
+
}
|
|
80
|
+
const result = await installedExtensionService.getInstalledExtension(orgId, args.extensionSlug);
|
|
81
|
+
return result;
|
|
82
|
+
},
|
|
83
|
+
/**
|
|
84
|
+
* Get installed extensions that need attention (updates, deprecated, etc.)
|
|
85
|
+
*/
|
|
86
|
+
async extensionsNeedingAttention(root, args, {
|
|
87
|
+
userContext,
|
|
88
|
+
installedExtensionService,
|
|
89
|
+
slugService
|
|
90
|
+
}) {
|
|
91
|
+
let orgId;
|
|
92
|
+
if (args.orgName) {
|
|
93
|
+
orgId = await slugService.resolveOrganizationSlug(args.orgName);
|
|
94
|
+
}
|
|
95
|
+
const result = await installedExtensionService.getExtensionsNeedingAttention(orgId);
|
|
96
|
+
return result;
|
|
97
|
+
},
|
|
98
|
+
/**
|
|
99
|
+
* Check for available updates
|
|
100
|
+
*/
|
|
101
|
+
async extensionUpdates(root, args, {
|
|
102
|
+
userContext,
|
|
103
|
+
installedExtensionService,
|
|
104
|
+
slugService
|
|
105
|
+
}) {
|
|
106
|
+
let orgId;
|
|
107
|
+
if (args.orgName) {
|
|
108
|
+
orgId = await slugService.resolveOrganizationSlug(args.orgName);
|
|
109
|
+
}
|
|
110
|
+
return installedExtensionService.checkForUpdates(orgId, args.extensionSlug);
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
Mutation: {
|
|
114
|
+
/**
|
|
115
|
+
* Install an extension from the registry
|
|
116
|
+
*/
|
|
117
|
+
async installExtension(root, args, {
|
|
118
|
+
userContext,
|
|
119
|
+
installedExtensionService,
|
|
120
|
+
registryExtensionService,
|
|
121
|
+
slugService
|
|
122
|
+
}) {
|
|
123
|
+
try {
|
|
124
|
+
// Map orgName to orgId using slugService if provided
|
|
125
|
+
let orgId;
|
|
126
|
+
if (args.input.orgName) {
|
|
127
|
+
orgId = await slugService.resolveOrganizationSlug(args.input.orgName);
|
|
128
|
+
if (!orgId) {
|
|
129
|
+
return {
|
|
130
|
+
success: false,
|
|
131
|
+
extension: null,
|
|
132
|
+
message: `Organization '${args.input.orgName}' not found`
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const installData = {
|
|
137
|
+
...args.input,
|
|
138
|
+
accountId: userContext.accountId,
|
|
139
|
+
orgId,
|
|
140
|
+
// This will be the mapped orgId from orgName
|
|
141
|
+
version: args.input.version,
|
|
142
|
+
// Ensure version is passed through
|
|
143
|
+
installedVersion: args.input.version,
|
|
144
|
+
installedBy: userContext.accountId
|
|
145
|
+
};
|
|
146
|
+
console.log('GraphQL Resolver - Install Data:', JSON.stringify(installData, null, 2));
|
|
147
|
+
console.log('Original args.input:', JSON.stringify(args.input, null, 2));
|
|
148
|
+
const installedExtension = await installedExtensionService.installExtension(installData, userContext.tenantId);
|
|
149
|
+
return {
|
|
150
|
+
success: true,
|
|
151
|
+
extension: installedExtension,
|
|
152
|
+
message: `Extension ${args.input.extensionSlug} installed successfully`
|
|
153
|
+
};
|
|
154
|
+
} catch (error) {
|
|
155
|
+
return {
|
|
156
|
+
success: false,
|
|
157
|
+
extension: null,
|
|
158
|
+
message: error.message || `Failed to install extension ${args.input.extensionSlug}`
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
/**
|
|
163
|
+
* Uninstall an extension
|
|
164
|
+
*/
|
|
165
|
+
async uninstallExtension(root, args, {
|
|
166
|
+
userContext,
|
|
167
|
+
installedExtensionService,
|
|
168
|
+
registryExtensionService,
|
|
169
|
+
slugService
|
|
170
|
+
}) {
|
|
171
|
+
try {
|
|
172
|
+
let orgId;
|
|
173
|
+
if (args.orgName) {
|
|
174
|
+
orgId = await slugService.resolveOrganizationSlug(args.orgName);
|
|
175
|
+
}
|
|
176
|
+
const success = await installedExtensionService.uninstallExtension(orgId, args.extensionSlug, userContext.accountId, userContext.tenantId);
|
|
177
|
+
if (success) {
|
|
178
|
+
// Update the registry extension as uninstalled
|
|
179
|
+
await registryExtensionService.updateExtension(args.extensionSlug, {
|
|
180
|
+
installed: false
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
success,
|
|
185
|
+
message: success ? `Extension ${args.extensionSlug} uninstalled successfully` : `Failed to uninstall extension ${args.extensionSlug}`
|
|
186
|
+
};
|
|
187
|
+
} catch (error) {
|
|
188
|
+
return {
|
|
189
|
+
success: false,
|
|
190
|
+
message: error.message || `Failed to uninstall extension ${args.extensionSlug}`
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
/**
|
|
195
|
+
* Enable or disable an extension
|
|
196
|
+
*/
|
|
197
|
+
async toggleExtension(root, args, {
|
|
198
|
+
userContext,
|
|
199
|
+
installedExtensionService,
|
|
200
|
+
slugService
|
|
201
|
+
}) {
|
|
202
|
+
let orgId;
|
|
203
|
+
if (args.orgName) {
|
|
204
|
+
orgId = await slugService.resolveOrganizationSlug(args.orgName);
|
|
205
|
+
}
|
|
206
|
+
const extension = await installedExtensionService.toggleExtension(orgId, args.extensionSlug, args.enabled, userContext.accountId, userContext.tenantId);
|
|
207
|
+
return {
|
|
208
|
+
success: true,
|
|
209
|
+
extension: extension,
|
|
210
|
+
message: `Extension ${args.extensionSlug} ${args.enabled ? 'enabled' : 'disabled'} successfully`
|
|
211
|
+
};
|
|
212
|
+
},
|
|
213
|
+
/**
|
|
214
|
+
* Update extension settings
|
|
215
|
+
*/
|
|
216
|
+
async updateExtensionSettings(root, args, {
|
|
217
|
+
userContext,
|
|
218
|
+
installedExtensionService,
|
|
219
|
+
slugService
|
|
220
|
+
}) {
|
|
221
|
+
let orgId;
|
|
222
|
+
if (args.orgName) {
|
|
223
|
+
orgId = await slugService.resolveOrganizationSlug(args.orgName);
|
|
224
|
+
}
|
|
225
|
+
const extension = await installedExtensionService.updateExtensionSettings(orgId, args.extensionSlug, args.settings, userContext.accountId, userContext.tenantId);
|
|
226
|
+
return {
|
|
227
|
+
success: true,
|
|
228
|
+
extension: extension,
|
|
229
|
+
message: `Extension ${args.extensionSlug} settings updated successfully`
|
|
230
|
+
};
|
|
231
|
+
},
|
|
232
|
+
/**
|
|
233
|
+
* Update an extension to a newer version
|
|
234
|
+
*/
|
|
235
|
+
async updateExtensionVersion(root, args, {
|
|
236
|
+
userContext,
|
|
237
|
+
installedExtensionService,
|
|
238
|
+
slugService
|
|
239
|
+
}) {
|
|
240
|
+
let orgId;
|
|
241
|
+
if (args.orgName) {
|
|
242
|
+
orgId = await slugService.resolveOrganizationSlug(args.orgName);
|
|
243
|
+
}
|
|
244
|
+
const extension = await installedExtensionService.updateExtensionVersion(orgId, args.extensionSlug, args.version, userContext.accountId, userContext.tenantId);
|
|
245
|
+
return {
|
|
246
|
+
success: true,
|
|
247
|
+
extension: extension,
|
|
248
|
+
message: `Extension ${args.extensionSlug} updated to version ${args.version} successfully`
|
|
249
|
+
};
|
|
250
|
+
},
|
|
251
|
+
/**
|
|
252
|
+
* Sync installed extensions with registry
|
|
253
|
+
*/
|
|
254
|
+
async syncExtensionsWithRegistry(root, args, {
|
|
255
|
+
userContext,
|
|
256
|
+
installedExtensionService,
|
|
257
|
+
slugService
|
|
258
|
+
}) {
|
|
259
|
+
let orgId;
|
|
260
|
+
if (args.orgName) {
|
|
261
|
+
orgId = await slugService.resolveOrganizationSlug(args.orgName);
|
|
262
|
+
}
|
|
263
|
+
await installedExtensionService.syncWithRegistry(orgId, userContext.tenantId);
|
|
264
|
+
return {
|
|
265
|
+
success: true,
|
|
266
|
+
message: 'Extensions synced with registry successfully'
|
|
267
|
+
};
|
|
268
|
+
},
|
|
269
|
+
/**
|
|
270
|
+
* Clean up deprecated or removed extensions
|
|
271
|
+
*/
|
|
272
|
+
async cleanupExtensions(root, args, {
|
|
273
|
+
userContext,
|
|
274
|
+
installedExtensionService,
|
|
275
|
+
slugService
|
|
276
|
+
}) {
|
|
277
|
+
let orgId;
|
|
278
|
+
if (args.orgName) {
|
|
279
|
+
orgId = await slugService.resolveOrganizationSlug(args.orgName);
|
|
280
|
+
}
|
|
281
|
+
const result = await installedExtensionService.cleanupExtensions(orgId, userContext.tenantId, args.dryRun || false);
|
|
282
|
+
return {
|
|
283
|
+
success: true,
|
|
284
|
+
result,
|
|
285
|
+
message: args.dryRun ? 'Cleanup preview completed' : `Cleanup completed: ${result.removed.length} removed, ${result.deprecated.length} deprecated`
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
});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,YAA8B,EAAA,CAAU,IAA0C,EAAA,mBAAsB,KAAA;AAExG,MAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PubSub } from 'graphql-subscriptions';
|
|
2
|
+
import { CdmLogger } from '@cdm-logger/core';
|
|
3
|
+
import { IResolvers } from 'common/server';
|
|
4
|
+
/**
|
|
5
|
+
* Marketplace Form Submission Resolver
|
|
6
|
+
*
|
|
7
|
+
* Handles enhanced marketplace features for extension management:
|
|
8
|
+
* - Form submission processing
|
|
9
|
+
* - Extension validation
|
|
10
|
+
* - Enhanced extension publishing
|
|
11
|
+
*/
|
|
12
|
+
export declare const marketplaceFormResolver: (pubsub: PubSub, logger?: CdmLogger.ILogger) => IResolvers;
|
|
13
|
+
//# sourceMappingURL=marketplace-form-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace-form-resolver.d.ts","sourceRoot":"","sources":["../../../src/graphql/resolvers/marketplace-form-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAsB,MAAM,eAAe,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,MAAM,EAAE,SAAS,SAAS,CAAC,OAAO,KAAG,UA+HnF,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace Form Submission Resolver
|
|
3
|
+
*
|
|
4
|
+
* Handles enhanced marketplace features for extension management:
|
|
5
|
+
* - Form submission processing
|
|
6
|
+
* - Extension validation
|
|
7
|
+
* - Enhanced extension publishing
|
|
8
|
+
*/
|
|
9
|
+
const marketplaceFormResolver = (pubsub, logger) => ({
|
|
10
|
+
Mutation: {
|
|
11
|
+
/**
|
|
12
|
+
* Process marketplace form submissions
|
|
13
|
+
* Supports different submission types: extension-publish, extension-validate, extension-update
|
|
14
|
+
*/
|
|
15
|
+
async marketplaceFormSubmission(root, args, ctx) {
|
|
16
|
+
if (logger) {
|
|
17
|
+
logger.debug('marketplaceFormSubmission args [%j]', args);
|
|
18
|
+
}
|
|
19
|
+
const result = await ctx.registryExtensionService.formSubmission({
|
|
20
|
+
extensionSlug: args.input.extensionSlug,
|
|
21
|
+
formData: args.input.formData,
|
|
22
|
+
submissionType: args.input.submissionType,
|
|
23
|
+
metadata: args.input.metadata
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
success: result.success,
|
|
27
|
+
message: result.message,
|
|
28
|
+
errors: result.errors || [],
|
|
29
|
+
submissionId: result.submissionId,
|
|
30
|
+
data: result.data
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
/**
|
|
34
|
+
* Validate extension before publishing
|
|
35
|
+
* Checks manifest structure, version format, and extension conflicts
|
|
36
|
+
*/
|
|
37
|
+
async marketplaceValidateExtension(root, args, ctx) {
|
|
38
|
+
if (logger) {
|
|
39
|
+
logger.debug('marketplaceValidateExtension args [%j]', args);
|
|
40
|
+
}
|
|
41
|
+
const result = await ctx.registryExtensionService.validateExtension({
|
|
42
|
+
manifest: args.input.manifest,
|
|
43
|
+
bundle: args.input.bundle,
|
|
44
|
+
sourceMap: args.input.sourceMap,
|
|
45
|
+
extensionSlug: args.input.extensionSlug,
|
|
46
|
+
version: args.input.version
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
isValid: result.isValid,
|
|
50
|
+
errors: result.errors.map(e => ({
|
|
51
|
+
field: e.field,
|
|
52
|
+
message: e.message,
|
|
53
|
+
code: e.code
|
|
54
|
+
})),
|
|
55
|
+
warnings: result.warnings.map(w => ({
|
|
56
|
+
field: w.field,
|
|
57
|
+
message: w.message,
|
|
58
|
+
code: w.code
|
|
59
|
+
})),
|
|
60
|
+
metadata: result.metadata
|
|
61
|
+
};
|
|
62
|
+
},
|
|
63
|
+
/**
|
|
64
|
+
* Enhanced extension publishing with validation and pre-release support
|
|
65
|
+
* Includes force publishing and comprehensive error handling
|
|
66
|
+
*/
|
|
67
|
+
async marketplacePublishExtension(root, args, ctx) {
|
|
68
|
+
if (logger) {
|
|
69
|
+
logger.debug('marketplacePublishExtension args [%j]', args);
|
|
70
|
+
}
|
|
71
|
+
const result = await ctx.registryExtensionService.publishExtensionEnhanced({
|
|
72
|
+
extensionSlug: args.input.extensionSlug,
|
|
73
|
+
manifest: args.input.manifest,
|
|
74
|
+
bundle: args.input.bundle,
|
|
75
|
+
sourceMap: args.input.sourceMap,
|
|
76
|
+
version: args.input.version,
|
|
77
|
+
releaseNotes: args.input.releaseNotes,
|
|
78
|
+
force: args.input.force,
|
|
79
|
+
preRelease: args.input.preRelease
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
success: result.success,
|
|
83
|
+
extension: result.extension ? result.extension : null,
|
|
84
|
+
message: result.message,
|
|
85
|
+
errors: result.errors || [],
|
|
86
|
+
releaseId: result.releaseId
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});export{marketplaceFormResolver};//# sourceMappingURL=marketplace-form-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace-form-resolver.js","sources":["../../../src/graphql/resolvers/marketplace-form-resolver.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AAEA;;;;;;;AAOG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PubSub } from 'graphql-subscriptions';
|
|
2
|
+
import { CdmLogger } from '@cdm-logger/core';
|
|
3
|
+
import { IResolvers } from 'common/server';
|
|
4
|
+
/**
|
|
5
|
+
* Publisher Analytics Resolver
|
|
6
|
+
*
|
|
7
|
+
* Handles comprehensive analytics and insights for extension publishers:
|
|
8
|
+
* - Publisher analytics and metrics
|
|
9
|
+
* - Revenue analytics
|
|
10
|
+
* - Analytics event tracking
|
|
11
|
+
* - Real-time analytics subscriptions
|
|
12
|
+
*/
|
|
13
|
+
export declare const publisherAnalyticsResolver: (pubsub: PubSub, logger?: CdmLogger.ILogger) => IResolvers;
|
|
14
|
+
//# sourceMappingURL=publisher-analytics-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher-analytics-resolver.d.ts","sourceRoot":"","sources":["../../../src/graphql/resolvers/publisher-analytics-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,GAAI,QAAQ,MAAM,EAAE,SAAS,SAAS,CAAC,OAAO,KAAG,UAwQ3E,CAAC"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Publisher Analytics Resolver
|
|
3
|
+
*
|
|
4
|
+
* Handles comprehensive analytics and insights for extension publishers:
|
|
5
|
+
* - Publisher analytics and metrics
|
|
6
|
+
* - Revenue analytics
|
|
7
|
+
* - Analytics event tracking
|
|
8
|
+
* - Real-time analytics subscriptions
|
|
9
|
+
*/
|
|
10
|
+
const publisherAnalyticsResolver = (pubsub, logger) => ({
|
|
11
|
+
Query: {
|
|
12
|
+
/**
|
|
13
|
+
* Get comprehensive analytics for a publisher
|
|
14
|
+
*/
|
|
15
|
+
publisherAnalytics: async (root, args,
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
17
|
+
ctx) => {
|
|
18
|
+
if (logger) {
|
|
19
|
+
logger.debug('publisherAnalytics args [%j]', args);
|
|
20
|
+
}
|
|
21
|
+
// Mock analytics data for now - in real implementation, this would use the analytics service
|
|
22
|
+
const mockAnalytics = {
|
|
23
|
+
publisherId: args.input.publisherId,
|
|
24
|
+
totalExtensions: Math.floor(Math.random() * 50) + 5,
|
|
25
|
+
totalDownloads: Math.floor(Math.random() * 100000) + 10000,
|
|
26
|
+
totalInstallations: Math.floor(Math.random() * 50000) + 5000,
|
|
27
|
+
averageRating: 4.2 + Math.random() * 0.8,
|
|
28
|
+
period: args.input.period,
|
|
29
|
+
extensions: [{
|
|
30
|
+
extensionSlug: 'sample-extension-1',
|
|
31
|
+
name: 'Sample Extension 1',
|
|
32
|
+
version: '1.0.0',
|
|
33
|
+
downloads: Math.floor(Math.random() * 10000),
|
|
34
|
+
installations: Math.floor(Math.random() * 5000),
|
|
35
|
+
rating: 4.0 + Math.random() * 1.0,
|
|
36
|
+
reviewCount: Math.floor(Math.random() * 100),
|
|
37
|
+
revenue: args.input.includeRevenue ? Math.random() * 1000 : null,
|
|
38
|
+
lastUpdated: new Date().toISOString(),
|
|
39
|
+
versionMetrics: [{
|
|
40
|
+
version: '1.0.0',
|
|
41
|
+
downloads: Math.floor(Math.random() * 1000),
|
|
42
|
+
installations: Math.floor(Math.random() * 500),
|
|
43
|
+
releasedAt: new Date().toISOString(),
|
|
44
|
+
adoptionRate: Math.random() * 100
|
|
45
|
+
}]
|
|
46
|
+
}],
|
|
47
|
+
downloadTrend: Array.from({
|
|
48
|
+
length: 30
|
|
49
|
+
}, (_, i) => ({
|
|
50
|
+
timestamp: new Date(Date.now() - i * 24 * 60 * 60 * 1000).toISOString(),
|
|
51
|
+
value: Math.floor(Math.random() * 1000),
|
|
52
|
+
secondaryValue: Math.floor(Math.random() * 100)
|
|
53
|
+
})),
|
|
54
|
+
installationTrend: Array.from({
|
|
55
|
+
length: 30
|
|
56
|
+
}, (_, i) => ({
|
|
57
|
+
timestamp: new Date(Date.now() - i * 24 * 60 * 60 * 1000).toISOString(),
|
|
58
|
+
value: Math.floor(Math.random() * 500),
|
|
59
|
+
secondaryValue: Math.floor(Math.random() * 50)
|
|
60
|
+
})),
|
|
61
|
+
popularRegions: args.input.includeRegions ? [{
|
|
62
|
+
region: 'US',
|
|
63
|
+
regionName: 'United States',
|
|
64
|
+
downloads: Math.floor(Math.random() * 10000),
|
|
65
|
+
installations: Math.floor(Math.random() * 5000),
|
|
66
|
+
percentage: Math.random() * 20
|
|
67
|
+
}, {
|
|
68
|
+
region: 'UK',
|
|
69
|
+
regionName: 'United Kingdom',
|
|
70
|
+
downloads: Math.floor(Math.random() * 8000),
|
|
71
|
+
installations: Math.floor(Math.random() * 4000),
|
|
72
|
+
percentage: Math.random() * 15
|
|
73
|
+
}] : []
|
|
74
|
+
};
|
|
75
|
+
return mockAnalytics;
|
|
76
|
+
},
|
|
77
|
+
/**
|
|
78
|
+
* Get revenue analytics for a publisher
|
|
79
|
+
*/
|
|
80
|
+
publisherRevenueAnalytics: async (root, args,
|
|
81
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
82
|
+
ctx) => {
|
|
83
|
+
if (logger) {
|
|
84
|
+
logger.debug('publisherRevenueAnalytics args [%j]', args);
|
|
85
|
+
}
|
|
86
|
+
const mockRevenue = {
|
|
87
|
+
publisherId: args.input.publisherId,
|
|
88
|
+
totalRevenue: Math.random() * 10000,
|
|
89
|
+
currency: args.input.currency || 'USD',
|
|
90
|
+
extensionRevenue: [{
|
|
91
|
+
extensionSlug: 'sample-extension-1',
|
|
92
|
+
name: 'Sample Extension 1',
|
|
93
|
+
revenue: Math.random() * 500,
|
|
94
|
+
paidInstallations: Math.floor(Math.random() * 100),
|
|
95
|
+
arpu: Math.random() * 10
|
|
96
|
+
}],
|
|
97
|
+
revenueTrend: Array.from({
|
|
98
|
+
length: 30
|
|
99
|
+
}, (_, i) => ({
|
|
100
|
+
timestamp: new Date(Date.now() - i * 24 * 60 * 60 * 1000).toISOString(),
|
|
101
|
+
revenue: Math.random() * 100,
|
|
102
|
+
transactions: Math.floor(Math.random() * 20)
|
|
103
|
+
})),
|
|
104
|
+
topEarningExtensions: [{
|
|
105
|
+
extensionSlug: 'sample-extension-1',
|
|
106
|
+
name: 'Sample Extension 1',
|
|
107
|
+
revenue: Math.random() * 500,
|
|
108
|
+
paidInstallations: Math.floor(Math.random() * 100),
|
|
109
|
+
arpu: Math.random() * 10
|
|
110
|
+
}]
|
|
111
|
+
};
|
|
112
|
+
return mockRevenue;
|
|
113
|
+
},
|
|
114
|
+
/**
|
|
115
|
+
* Get recent analytics events
|
|
116
|
+
*/
|
|
117
|
+
recentAnalyticsEvents: async (root, args,
|
|
118
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
119
|
+
ctx) => {
|
|
120
|
+
if (logger) {
|
|
121
|
+
logger.debug('recentAnalyticsEvents args [%j]', args);
|
|
122
|
+
}
|
|
123
|
+
const limit = args.limit || 50;
|
|
124
|
+
const eventTypes = ['download', 'install', 'uninstall', 'update', 'view'];
|
|
125
|
+
const regions = ['US', 'UK', 'DE', 'FR', 'JP'];
|
|
126
|
+
const mockEvents = Array.from({
|
|
127
|
+
length: Math.min(limit, 20)
|
|
128
|
+
}, () => ({
|
|
129
|
+
eventType: eventTypes[Math.floor(Math.random() * eventTypes.length)],
|
|
130
|
+
extensionSlug: `ext-${Math.floor(Math.random() * 10)}`,
|
|
131
|
+
publisherId: args.publisherId,
|
|
132
|
+
timestamp: new Date(Date.now() - Math.random() * 86400000).toISOString(),
|
|
133
|
+
metadata: JSON.stringify({
|
|
134
|
+
source: 'marketplace',
|
|
135
|
+
userAgent: 'VS Code'
|
|
136
|
+
}),
|
|
137
|
+
region: regions[Math.floor(Math.random() * regions.length)],
|
|
138
|
+
version: `1.${Math.floor(Math.random() * 10)}.${Math.floor(Math.random() * 10)}`
|
|
139
|
+
}));
|
|
140
|
+
return mockEvents.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
Mutation: {
|
|
144
|
+
/**
|
|
145
|
+
* Track an analytics event
|
|
146
|
+
*/
|
|
147
|
+
trackAnalyticsEvent: async (root, args,
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
149
|
+
ctx) => {
|
|
150
|
+
if (logger) {
|
|
151
|
+
logger.debug('trackAnalyticsEvent args [%j]', args);
|
|
152
|
+
}
|
|
153
|
+
const eventId = `evt_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
154
|
+
// Create analytics event for real-time subscriptions
|
|
155
|
+
const analyticsEvent = {
|
|
156
|
+
eventType: args.input.eventType,
|
|
157
|
+
extensionSlug: args.input.extensionSlug,
|
|
158
|
+
publisherId: 'publisher-id',
|
|
159
|
+
// Would be resolved from extension
|
|
160
|
+
timestamp: new Date().toISOString(),
|
|
161
|
+
metadata: args.input.metadata,
|
|
162
|
+
region: args.input.region,
|
|
163
|
+
version: args.input.version
|
|
164
|
+
};
|
|
165
|
+
// Emit to subscriptions
|
|
166
|
+
pubsub.publish('ANALYTICS_EVENT', {
|
|
167
|
+
analyticsEvents: analyticsEvent
|
|
168
|
+
});
|
|
169
|
+
if (args.input.eventType === 'download') {
|
|
170
|
+
pubsub.publish('DOWNLOAD_EVENT', {
|
|
171
|
+
downloadEvents: analyticsEvent
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
if (args.input.eventType === 'install') {
|
|
175
|
+
pubsub.publish('INSTALLATION_EVENT', {
|
|
176
|
+
installationEvents: analyticsEvent
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
success: true,
|
|
181
|
+
message: `Analytics event '${args.input.eventType}' tracked successfully`,
|
|
182
|
+
eventId
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
Subscription: {
|
|
187
|
+
/**
|
|
188
|
+
* Subscribe to real-time analytics events
|
|
189
|
+
*/
|
|
190
|
+
analyticsEvents: {
|
|
191
|
+
subscribe: (root, args) => {
|
|
192
|
+
if (logger) {
|
|
193
|
+
logger.debug('analyticsEvents subscription for publisher [%s]', args.publisherId);
|
|
194
|
+
}
|
|
195
|
+
return pubsub.asyncIterator('ANALYTICS_EVENT');
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
/**
|
|
199
|
+
* Subscribe to download events
|
|
200
|
+
*/
|
|
201
|
+
downloadEvents: {
|
|
202
|
+
subscribe: (root, args) => {
|
|
203
|
+
if (logger) {
|
|
204
|
+
logger.debug('downloadEvents subscription for publisher [%s]', args.publisherId);
|
|
205
|
+
}
|
|
206
|
+
return pubsub.asyncIterator('DOWNLOAD_EVENT');
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
/**
|
|
210
|
+
* Subscribe to installation events
|
|
211
|
+
*/
|
|
212
|
+
installationEvents: {
|
|
213
|
+
subscribe: (root, args) => {
|
|
214
|
+
if (logger) {
|
|
215
|
+
logger.debug('installationEvents subscription for publisher [%s]', args.publisherId);
|
|
216
|
+
}
|
|
217
|
+
return pubsub.asyncIterator('INSTALLATION_EVENT');
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
});export{publisherAnalyticsResolver};//# sourceMappingURL=publisher-analytics-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher-analytics-resolver.js","sources":["../../../src/graphql/resolvers/publisher-analytics-resolver.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AAEA;;;;;;;;AAQG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -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 publisherResolver: (pubsub: PubSub, logger?: CdmLogger.ILogger) => IResolvers;
|
|
5
|
+
//# sourceMappingURL=publisher-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher-resolver.d.ts","sourceRoot":"","sources":["../../../src/graphql/resolvers/publisher-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACH,UAAU,EAKb,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,SAAS,SAAS,CAAC,OAAO,KAAG,UA6N7E,CAAC"}
|