@adminide-stack/marketplace-module-server 12.0.4-alpha.95 → 13.0.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/containers/module.d.ts +4 -4
- package/lib/containers/module.d.ts.map +1 -1
- package/lib/containers/module.js +12 -7
- package/lib/containers/module.js.map +1 -1
- package/lib/dataloaders/index.d.ts +1 -1
- package/lib/dataloaders/index.d.ts.map +1 -1
- package/lib/dataloaders/publisher-data-loader.d.ts +6 -0
- package/lib/dataloaders/publisher-data-loader.d.ts.map +1 -0
- package/lib/demo/test-graphql-examples.d.ts +73 -0
- package/lib/demo/test-graphql-examples.d.ts.map +1 -0
- package/lib/graphql/resolvers/form-templates-resolver.d.ts +220 -0
- package/lib/graphql/resolvers/form-templates-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/form-templates-resolver.js +170 -0
- package/lib/graphql/resolvers/form-templates-resolver.js.map +1 -0
- package/lib/graphql/resolvers/gallery-resolver.d.ts +15 -0
- package/lib/graphql/resolvers/gallery-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/gallery-resolver.js +35 -0
- package/lib/graphql/resolvers/gallery-resolver.js.map +1 -0
- package/lib/graphql/resolvers/index.d.ts +247 -1
- package/lib/graphql/resolvers/index.d.ts.map +1 -1
- package/lib/graphql/resolvers/index.js +1 -1
- package/lib/graphql/resolvers/installed-extension-resolver.d.ts.map +1 -1
- package/lib/graphql/resolvers/installed-extension-resolver.js +161 -35
- package/lib/graphql/resolvers/installed-extension-resolver.js.map +1 -1
- package/lib/graphql/resolvers/marketplace-form-resolver.d.ts +13 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.js +90 -0
- package/lib/graphql/resolvers/marketplace-form-resolver.js.map +1 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts +14 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.js +221 -0
- package/lib/graphql/resolvers/publisher-analytics-resolver.js.map +1 -0
- package/lib/graphql/resolvers/publisher-resolver.d.ts +5 -0
- package/lib/graphql/resolvers/publisher-resolver.d.ts.map +1 -0
- package/lib/graphql/resolvers/publisher-resolver.js +183 -0
- package/lib/graphql/resolvers/publisher-resolver.js.map +1 -0
- package/lib/graphql/resolvers/registry-extension-resolver.d.ts.map +1 -1
- package/lib/graphql/resolvers/registry-extension-resolver.js +34 -167
- package/lib/graphql/resolvers/registry-extension-resolver.js.map +1 -1
- package/lib/graphql/schemas/extension-pricing.graphql +546 -0
- package/lib/graphql/schemas/extension-pricing.graphql.js +1 -0
- package/lib/graphql/schemas/extension-pricing.graphql.js.map +1 -0
- package/lib/graphql/schemas/extension-registry.graphql +91 -58
- package/lib/graphql/schemas/extension-registry.graphql.js +1 -1
- package/lib/graphql/schemas/form-templates.graphql +269 -0
- package/lib/graphql/schemas/form-templates.graphql.js +1 -0
- package/lib/graphql/schemas/form-templates.graphql.js.map +1 -0
- package/lib/graphql/schemas/gallery-schema.graphql +247 -0
- package/lib/graphql/schemas/gallery-schema.graphql.js +1 -0
- package/lib/graphql/schemas/gallery-schema.graphql.js.map +1 -0
- package/lib/graphql/schemas/index.d.ts.map +1 -1
- package/lib/graphql/schemas/index.js +3 -1
- package/lib/graphql/schemas/index.js.map +1 -1
- package/lib/graphql/schemas/installed-extension.graphql +37 -7
- package/lib/graphql/schemas/installed-extension.graphql.js +1 -1
- package/lib/graphql/schemas/publisher-analytics.graphql +305 -0
- package/lib/graphql/schemas/publisher-analytics.graphql.js +1 -0
- package/lib/graphql/schemas/publisher-analytics.graphql.js.map +1 -0
- package/lib/graphql/schemas/publisher.graphql +584 -0
- package/lib/graphql/schemas/publisher.graphql.js +1 -0
- package/lib/graphql/schemas/publisher.graphql.js.map +1 -0
- package/lib/graphql/schemas/service.graphql +15 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.d.ts +20 -0
- package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.d.ts.map +1 -0
- package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.js +61 -0
- package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.js.map +1 -0
- package/lib/migrations/index.d.ts +2 -0
- package/lib/migrations/index.d.ts.map +1 -0
- package/lib/module.d.ts +1 -1
- package/lib/module.d.ts.map +1 -1
- package/lib/module.js +11 -26
- package/lib/module.js.map +1 -1
- package/lib/services/extension-gallery-repository.d.ts +17 -0
- package/lib/services/extension-gallery-repository.d.ts.map +1 -0
- package/lib/services/extension-gallery-repository.js +192 -0
- package/lib/services/extension-gallery-repository.js.map +1 -0
- package/lib/services/extension-gallery-service-new.d.ts +39 -0
- package/lib/services/extension-gallery-service-new.d.ts.map +1 -0
- package/lib/services/extension-gallery-service.d.ts +30 -0
- package/lib/services/extension-gallery-service.d.ts.map +1 -0
- package/lib/services/extension-gallery-service.js +334 -0
- package/lib/services/extension-gallery-service.js.map +1 -0
- package/lib/services/index.d.ts +4 -1
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/installed-extension-service-ext.d.ts +5 -2
- package/lib/services/installed-extension-service-ext.d.ts.map +1 -1
- package/lib/services/installed-extension-service-ext.js +364 -117
- package/lib/services/installed-extension-service-ext.js.map +1 -1
- package/lib/services/installed-extension-service.d.ts +30 -13
- package/lib/services/installed-extension-service.d.ts.map +1 -1
- package/lib/services/installed-extension-service.js +301 -68
- package/lib/services/installed-extension-service.js.map +1 -1
- package/lib/services/installed-extension-service.test.d.ts +0 -1
- package/lib/services/publisher-analytics-service.d.ts +128 -0
- package/lib/services/publisher-analytics-service.d.ts.map +1 -0
- package/lib/services/publisher-event-service.d.ts +48 -0
- package/lib/services/publisher-event-service.d.ts.map +1 -0
- package/lib/services/publisher-event-service.js +296 -0
- package/lib/services/publisher-event-service.js.map +1 -0
- package/lib/services/publisher-service-context.d.ts +1 -0
- package/lib/services/publisher-service-context.d.ts.map +1 -0
- package/lib/services/publisher-service.d.ts +62 -0
- package/lib/services/publisher-service.d.ts.map +1 -0
- package/lib/services/publisher-service.js +135 -0
- package/lib/services/publisher-service.js.map +1 -0
- package/lib/store/models/index.d.ts +1 -1
- package/lib/store/models/index.d.ts.map +1 -1
- package/lib/store/models/installed-extension-model.d.ts.map +1 -1
- package/lib/store/models/installed-extension-model.js +17 -45
- package/lib/store/models/installed-extension-model.js.map +1 -1
- package/lib/store/models/publisher-event-model.d.ts +11 -0
- package/lib/store/models/publisher-event-model.d.ts.map +1 -0
- package/lib/store/models/publisher-model.d.ts +5 -0
- package/lib/store/models/publisher-model.d.ts.map +1 -0
- package/lib/store/models/publisher-model.js +117 -0
- package/lib/store/models/publisher-model.js.map +1 -0
- package/lib/store/models/publisher-stats-model.d.ts +1 -0
- package/lib/store/models/publisher-stats-model.d.ts.map +1 -0
- package/lib/store/repositories/index.d.ts +1 -1
- package/lib/store/repositories/index.d.ts.map +1 -1
- package/lib/store/repositories/installed-extension-repository.d.ts +17 -11
- package/lib/store/repositories/installed-extension-repository.d.ts.map +1 -1
- package/lib/store/repositories/installed-extension-repository.js +123 -75
- package/lib/store/repositories/installed-extension-repository.js.map +1 -1
- package/lib/store/repositories/publisher-analytics-repository.d.ts +1 -0
- package/lib/store/repositories/publisher-analytics-repository.d.ts.map +1 -0
- package/lib/store/repositories/publisher-repository.d.ts +19 -0
- package/lib/store/repositories/publisher-repository.d.ts.map +1 -0
- package/lib/store/repositories/publisher-repository.js +87 -0
- package/lib/store/repositories/publisher-repository.js.map +1 -0
- package/lib/templates/constants/DB_COLL_NAMES.ts.template +1 -1
- package/lib/templates/constants/SERVER_TYPES.ts.template +8 -5
- package/lib/templates/repositories/ExtensionGalleryRepository.ts.template +44 -0
- package/lib/templates/repositories/InstalledExtensionRepository.ts.template +19 -14
- package/lib/templates/repositories/MarketplacePublisherRepository.ts.template +24 -0
- package/lib/templates/repositories/RegistryExtensionRepository.ts.template +2 -2
- package/lib/templates/services/ExtensionGalleryDataLoader.ts.template +2 -0
- package/lib/templates/services/ExtensionGalleryService.ts.template +79 -0
- package/lib/templates/services/InstalledExtensionService.ts.template +63 -32
- package/lib/templates/services/MarketplacePublisherService.ts.template +51 -0
- package/lib/templates/services/PublisherDataLoader.ts.template +3 -0
- package/lib/templates/services/PublisherEventService.ts.template +56 -0
- package/lib/templates/services/RegistryExtensionService.ts.template +46 -2
- package/lib/tests/extension-integration.test.d.ts +0 -1
- package/lib/tests/install-extension-graphql.test.d.ts +2 -0
- package/lib/tests/install-extension-graphql.test.d.ts.map +1 -0
- package/lib/utils/publisherValidation.d.ts +23 -0
- package/lib/utils/publisherValidation.d.ts.map +1 -0
- package/lib/utils/publisherValidation.js +144 -0
- package/lib/utils/publisherValidation.js.map +1 -0
- package/package.json +13 -9
- package/lib/constants/extension-events.d.ts +0 -136
- package/lib/constants/extension-events.d.ts.map +0 -1
- package/lib/dataloaders/registry-extension-data-loader.d.ts +0 -6
- package/lib/dataloaders/registry-extension-data-loader.d.ts.map +0 -1
- package/lib/dataloaders/registry-extension-data-loader.js +0 -6
- package/lib/dataloaders/registry-extension-data-loader.js.map +0 -1
- package/lib/graphql/schemas/service.graphql.js +0 -1
- package/lib/graphql/schemas/service.graphql.js.map +0 -1
- package/lib/services/extension-service.d.ts +0 -42
- package/lib/services/extension-service.d.ts.map +0 -1
- package/lib/services/extension-service.js +0 -60
- package/lib/services/extension-service.js.map +0 -1
- package/lib/store/models/registry-extension-model.d.ts +0 -5
- package/lib/store/models/registry-extension-model.d.ts.map +0 -1
- package/lib/store/models/registry-extension-model.js +0 -83
- package/lib/store/models/registry-extension-model.js.map +0 -1
- package/lib/store/repositories/registry-extension-repository.d.ts +0 -54
- package/lib/store/repositories/registry-extension-repository.d.ts.map +0 -1
- package/lib/store/repositories/registry-extension-repository.js +0 -137
- package/lib/store/repositories/registry-extension-repository.js.map +0 -1
- package/lib/templates/services/RegistryExtensionDataLoader.ts.template +0 -2
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import {__decorate,__param,__metadata}from'tslib';import {injectable,inject}from'inversify';import'@cdm-logger/core';import {BaseService2}from'@common-stack/store-mongo';import {Emitter,DisposableCollection}from'@adminide-stack/core';import {SERVER_TYPES}from'common/server';import {validatePublisherData}from'../utils/publisherValidation.js';var MarketplacePublisherService_1;
|
|
2
|
+
let MarketplacePublisherService = MarketplacePublisherService_1 = class MarketplacePublisherService extends BaseService2 {
|
|
3
|
+
onPublisherCreated = new Emitter();
|
|
4
|
+
onPublisherUpdated = new Emitter();
|
|
5
|
+
onPublisherVerified = new Emitter();
|
|
6
|
+
toDispose = new DisposableCollection(this.onPublisherCreated, this.onPublisherUpdated, this.onPublisherVerified);
|
|
7
|
+
logger;
|
|
8
|
+
constructor(repository, logger) {
|
|
9
|
+
super(repository);
|
|
10
|
+
this.logger = logger.child({
|
|
11
|
+
className: MarketplacePublisherService_1.name
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
dispose() {
|
|
15
|
+
this.toDispose.dispose();
|
|
16
|
+
}
|
|
17
|
+
async findById(id) {
|
|
18
|
+
this.logger.trace('findById with id [%s]', id);
|
|
19
|
+
// Use inherited get method from BaseService
|
|
20
|
+
const result = await this.get(id);
|
|
21
|
+
this.logger.trace('findById result: %j', result);
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
async findByPublisherName(publisherName) {
|
|
25
|
+
this.logger.trace('findByPublisherName with publisherName [%s]', publisherName);
|
|
26
|
+
const result = await this.repository.findByPublisherName(publisherName);
|
|
27
|
+
return result ? result : null;
|
|
28
|
+
}
|
|
29
|
+
async findPublishers(search, orderBy = 'createdAt', orderDirection = 'DESC', first = 20, after = 0) {
|
|
30
|
+
this.logger.trace('findPublishers with search [%s], orderBy [%s], orderDirection [%s], first [%d], after [%d]', search, orderBy, orderDirection, first, after);
|
|
31
|
+
const result = await this.repository.findPublishers(search, orderBy, orderDirection, first, after);
|
|
32
|
+
return {
|
|
33
|
+
publishers: result.publishers,
|
|
34
|
+
totalCount: result.totalCount
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
async createPublisher(data) {
|
|
38
|
+
this.logger.trace('createPublisher with data [%j]', data);
|
|
39
|
+
// Validate publisher data
|
|
40
|
+
const validation = validatePublisherData({
|
|
41
|
+
publisherName: data.publisherName,
|
|
42
|
+
displayName: data.displayName,
|
|
43
|
+
email: data.email,
|
|
44
|
+
website: data.website,
|
|
45
|
+
description: data.description
|
|
46
|
+
});
|
|
47
|
+
if (!validation.valid) {
|
|
48
|
+
throw new Error(validation.error);
|
|
49
|
+
}
|
|
50
|
+
// Check if publisher name already exists
|
|
51
|
+
const existing = await this.repository.findByPublisherName(data.publisherName);
|
|
52
|
+
if (existing) {
|
|
53
|
+
throw new Error(`Publisher with name "${data.publisherName}" already exists`);
|
|
54
|
+
}
|
|
55
|
+
const publisherData = {
|
|
56
|
+
displayName: data.displayName,
|
|
57
|
+
name: data.publisherName.toLowerCase(),
|
|
58
|
+
description: data.description,
|
|
59
|
+
websiteUrl: data.website,
|
|
60
|
+
email: data.email,
|
|
61
|
+
tenant: data.tenant,
|
|
62
|
+
verified: false,
|
|
63
|
+
extensionCount: 0,
|
|
64
|
+
totalDownloads: 0
|
|
65
|
+
// Remove fields that don't exist in the model
|
|
66
|
+
// flags: [],
|
|
67
|
+
// isDomainVerified: false,
|
|
68
|
+
// totalInstalls: 0,
|
|
69
|
+
// averageRating: 0,
|
|
70
|
+
};
|
|
71
|
+
const publisher = await this.repository.create(publisherData);
|
|
72
|
+
this.onPublisherCreated.fire({
|
|
73
|
+
publisherId: publisher.id,
|
|
74
|
+
publisherName: publisher.name,
|
|
75
|
+
displayName: publisher.displayName,
|
|
76
|
+
createdAt: publisher.createdAt.toISOString()
|
|
77
|
+
});
|
|
78
|
+
return publisher;
|
|
79
|
+
}
|
|
80
|
+
async updatePublisher(publisherId, data) {
|
|
81
|
+
this.logger.trace('updatePublisher for publisher [%s] with data [%j]', publisherId, data);
|
|
82
|
+
const updateData = {
|
|
83
|
+
...data,
|
|
84
|
+
updatedAt: new Date()
|
|
85
|
+
};
|
|
86
|
+
const publisher = await this.update(publisherId, updateData);
|
|
87
|
+
if (publisher) {
|
|
88
|
+
this.onPublisherUpdated.fire({
|
|
89
|
+
publisherId: publisher.id,
|
|
90
|
+
changes: data,
|
|
91
|
+
updatedAt: publisher.updatedAt.toISOString()
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return publisher ? publisher : null;
|
|
95
|
+
}
|
|
96
|
+
async updatePublisherStats(publisherId, stats) {
|
|
97
|
+
this.logger.trace('updatePublisherStats for publisher [%s] with stats [%j]', publisherId, stats);
|
|
98
|
+
const result = await this.repository.updatePublisherStats(publisherId, stats);
|
|
99
|
+
return result ? result : null;
|
|
100
|
+
}
|
|
101
|
+
async verifyPublisher(publisherId) {
|
|
102
|
+
this.logger.trace('verifyPublisher with publisherId [%s]', publisherId);
|
|
103
|
+
const publisher = await this.update(publisherId, {
|
|
104
|
+
verified: true
|
|
105
|
+
});
|
|
106
|
+
if (publisher) {
|
|
107
|
+
this.onPublisherVerified.fire({
|
|
108
|
+
publisherId: publisher.id,
|
|
109
|
+
verifiedAt: publisher.updatedAt.toISOString()
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return publisher ? publisher : null;
|
|
113
|
+
}
|
|
114
|
+
async getPublisherStats(publisherId) {
|
|
115
|
+
this.logger.trace('getPublisherStats for publisher [%s]', publisherId);
|
|
116
|
+
const publisher = await this.findById(publisherId);
|
|
117
|
+
if (!publisher) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
// TODO: Implement proper logic to calculate averageRating, verifiedCount and topExtension
|
|
121
|
+
// For now, using placeholder values
|
|
122
|
+
return {
|
|
123
|
+
totalExtensions: publisher.extensionCount,
|
|
124
|
+
totalDownloads: publisher.totalDownloads,
|
|
125
|
+
totalInstallations: publisher.totalDownloads,
|
|
126
|
+
// Using totalDownloads as approximation
|
|
127
|
+
averageRating: 0,
|
|
128
|
+
// TODO: Calculate from actual extension ratings
|
|
129
|
+
verifiedCount: publisher.verified ? 1 : 0,
|
|
130
|
+
// Placeholder - should be calculated across all publishers
|
|
131
|
+
topExtension: null // TODO: Implement logic to find top extension
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
MarketplacePublisherService = MarketplacePublisherService_1 = __decorate([injectable(), __param(0, inject(SERVER_TYPES.IMarketplacePublisherRepository)), __param(1, inject('Logger')), __metadata("design:paramtypes", [Object, Object])], MarketplacePublisherService);export{MarketplacePublisherService};//# sourceMappingURL=publisher-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher-service.js","sources":["../../src/services/publisher-service.ts"],"sourcesContent":[null],"names":[],"mappings":"uVACA,IAAA;+BAoB2B,GAAA,6BAAA,GAAA,MAAA,2BAAA,SAAA,YAAA,CAAA;oBACR,GAAA,IAAM,OAAA,EAAA;AAChB,EAAA,kBAAA,GAAA,IAAA,OAAA,EAAA;qBAEK,GAAS,IAAA,OAAA,EAAA;sCACI,CAAA,IAAA,CAAA,kBAAA,EAAA,IAAA,CAAA,kBAAA,EAAA,IAAA,CAAA,mBAAA,CAAA;AACV,EAAA,MAAA;wBACE,EAAM,MAAA,EAAA;AAChB,IAAA,KAAA,CAAA,UAAA,CAAA;IAEL,IAAA,CAAA,MAAU,GAAA,MAAS,CAAA,KAAA,CAAA;8CACI,CAAA;;AAElB,EAAA;AAEL,EAAA,OAAA,GAAA;IAMA,IAAA,CAAA,SAAc,CAAoB,OAAA,EAAA;AAGwB,EAAA;AAOnD,EAAA,MAAA,QAAW,CAAA,EAAI,EAAA;AAIhB,IAAA,IAAA,CAAA,MAAW,CAAA,KAAE,CAAA,uBAAiB,EAAa,EAAA,CAAA;AAQpC;IAMA,MAAA,MAAA,GACT,MAAM,SAAS,EACf,CAAA;AAKA,IAAA,IAAA,CAAA,MAAA,CAAA,KAAY,CAAA,qBAAa,EAAA,MAAA,CAAA;WACzB,MAAA;;QAuBS,mBAAsB,CAAA,aAAA,EAAA;QAC/B,CAAA,MAAA,CAAA,KAAa,8CAAO,EAAA,aAAA,CAAA;UACpB,MAAA,GAAA,UAAqB,CAAC,UAAA,CAAA,mBAAA,CAAA,aAAA,CAAA;WACtB,MAAA,GAAY,MAAE,GAAO,IAAA;;QAErB,cAAc,CAAC,MAAA,EAAA,OAAA,GAAA,WAAA,EAAA,cAAA,GAAA,MAAA,EAAA,KAAA,GAAA,EAAA,EAAA,KAAA,GAAA,CAAA,EAAA;QACf,CAAA,MAAO,CAAA,KAAE,CAAA,4FAAO,EAAA,MAAA,EAAA,OAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,CAAA;UAChB,MAAO,GAAE,MAAO,IAAA,CAAA,UAAA,CAAA,cAAA,CAAA,MAAA,EAAA,OAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,CAAA;AACnB,IAAA;AAqDY,MAAA,UAAA,EAAA,MACT,CAAA,UAAa;gBAET,EAAA,MAAc,CAAA;;;QAGd,eAAY,CAAA,IAAO,EAAA;QACnB,CAAA,MAAO,CAAA,KAAE,CAAA,gCAAO,EAAA,IAAA,CAAA;;AAuBX,IAAA,MAAA,UAAA,GAAA,qBACU,CAAA;mBAEf,EAAA,IAAiB,CAAA,aAAO;iBACxB,EAAA,IAAc,CAAE,WAAO;WACvB,EAAA,IAAA,CAAA,KAAc;MACjB,OACF,EAAO,IAAC,CAAA,OAAA;AASE,MAAA,WAAA,EAAe,IAAC,CAAA;AAchB,KAAA,CAAA;QACT,CAAA,UAAA,CAAA,KAAiB;YACjB,IAAA,KAAA,CAAc,UAAS,CAAA,KAAA,CAAA;;;UAGvB,QAAA,GAAa,UAAS,CAAA,UAAA,CAAA,mBAAA,CAAA,IAAA,CAAA,aAAA,CAAA;QACtB,QAAA,EAAA;AACH,MAAA,MAAO,IAAC,KAAA,CAAA,CAAA,qBAAA,EAAA,IAAA,CAAA,aAAA,CAAA,gBAAA,CAAA,CAAA;AA0BZ,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installed-extension-model.d.ts","sourceRoot":"","sources":["../../../src/store/models/installed-extension-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,wBAAwB,EAQ3B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"installed-extension-model.d.ts","sourceRoot":"","sources":["../../../src/store/models/installed-extension-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,wBAAwB,EAQ3B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAqP9C,eAAO,MAAM,2BAA2B,GAAI,IAAI,UAAU,gQACe,CAAC"}
|
|
@@ -135,16 +135,16 @@ const AuditLogSchema = new Schema({
|
|
|
135
135
|
});
|
|
136
136
|
// Main installed extension schema
|
|
137
137
|
const InstalledExtensionSchema = new Schema({
|
|
138
|
-
|
|
139
|
-
type:
|
|
138
|
+
organization: {
|
|
139
|
+
type: Schema.Types.ObjectId,
|
|
140
|
+
ref: DB_COLL_NAMES.Organizations,
|
|
140
141
|
required: true,
|
|
141
142
|
index: true
|
|
142
143
|
},
|
|
143
144
|
extension: {
|
|
144
145
|
type: Schema.Types.ObjectId,
|
|
145
146
|
ref: DB_COLL_NAMES.ExtensionRegistries,
|
|
146
|
-
required: true
|
|
147
|
-
index: true
|
|
147
|
+
required: true
|
|
148
148
|
},
|
|
149
149
|
installedVersion: {
|
|
150
150
|
type: String,
|
|
@@ -154,8 +154,7 @@ const InstalledExtensionSchema = new Schema({
|
|
|
154
154
|
status: {
|
|
155
155
|
type: String,
|
|
156
156
|
enum: ['installed', 'deprecated-installed', 'suspended', 'orphaned', 'force-disabled'],
|
|
157
|
-
default: 'installed'
|
|
158
|
-
index: true
|
|
157
|
+
default: 'installed'
|
|
159
158
|
},
|
|
160
159
|
lifecycle: {
|
|
161
160
|
type: ExtensionLifecycleSchema,
|
|
@@ -205,6 +204,15 @@ const InstalledExtensionSchema = new Schema({
|
|
|
205
204
|
auditLog: {
|
|
206
205
|
type: [AuditLogSchema],
|
|
207
206
|
default: []
|
|
207
|
+
},
|
|
208
|
+
sourceCollection: {
|
|
209
|
+
type: String
|
|
210
|
+
},
|
|
211
|
+
sourceDocumentId: {
|
|
212
|
+
type: String
|
|
213
|
+
},
|
|
214
|
+
metadata: {
|
|
215
|
+
type: Schema.Types.Mixed
|
|
208
216
|
}
|
|
209
217
|
});
|
|
210
218
|
// Create virtual for id
|
|
@@ -213,17 +221,17 @@ InstalledExtensionSchema.virtual('id').get(function () {
|
|
|
213
221
|
});
|
|
214
222
|
// Create compound indexes for efficient queries
|
|
215
223
|
InstalledExtensionSchema.index({
|
|
216
|
-
|
|
224
|
+
organization: 1,
|
|
217
225
|
extension: 1
|
|
218
226
|
}, {
|
|
219
227
|
unique: true
|
|
220
228
|
});
|
|
221
229
|
InstalledExtensionSchema.index({
|
|
222
|
-
|
|
230
|
+
organization: 1,
|
|
223
231
|
status: 1
|
|
224
232
|
});
|
|
225
233
|
InstalledExtensionSchema.index({
|
|
226
|
-
|
|
234
|
+
organization: 1,
|
|
227
235
|
'settings.effectiveEnabled': 1
|
|
228
236
|
});
|
|
229
237
|
InstalledExtensionSchema.index({
|
|
@@ -245,24 +253,6 @@ InstalledExtensionSchema.set('toJSON', {
|
|
|
245
253
|
ret.id = ret._id.toString();
|
|
246
254
|
delete ret._id;
|
|
247
255
|
delete ret.__v;
|
|
248
|
-
if (ret.extension) {
|
|
249
|
-
ret.extension = ret.extension.toString();
|
|
250
|
-
}
|
|
251
|
-
if (ret.installedBy) {
|
|
252
|
-
ret.installedBy = ret.installedBy.toString();
|
|
253
|
-
}
|
|
254
|
-
if (ret.lastUpdatedBy) {
|
|
255
|
-
ret.lastUpdatedBy = ret.lastUpdatedBy.toString();
|
|
256
|
-
}
|
|
257
|
-
// Transform audit log ObjectIds to strings
|
|
258
|
-
if (ret.auditLog && Array.isArray(ret.auditLog)) {
|
|
259
|
-
ret.auditLog = ret.auditLog.map(entry => ({
|
|
260
|
-
...entry,
|
|
261
|
-
id: entry._id?.toString(),
|
|
262
|
-
_id: undefined,
|
|
263
|
-
user: entry.user?.toString()
|
|
264
|
-
}));
|
|
265
|
-
}
|
|
266
256
|
return ret;
|
|
267
257
|
}
|
|
268
258
|
});
|
|
@@ -273,24 +263,6 @@ InstalledExtensionSchema.set('toObject', {
|
|
|
273
263
|
ret.id = ret._id.toString();
|
|
274
264
|
delete ret._id;
|
|
275
265
|
delete ret.__v;
|
|
276
|
-
if (ret.extension) {
|
|
277
|
-
ret.extension = ret.extension.toString();
|
|
278
|
-
}
|
|
279
|
-
if (ret.installedBy) {
|
|
280
|
-
ret.installedBy = ret.installedBy.toString();
|
|
281
|
-
}
|
|
282
|
-
if (ret.lastUpdatedBy) {
|
|
283
|
-
ret.lastUpdatedBy = ret.lastUpdatedBy.toString();
|
|
284
|
-
}
|
|
285
|
-
// Transform audit log ObjectIds to strings
|
|
286
|
-
if (ret.auditLog && Array.isArray(ret.auditLog)) {
|
|
287
|
-
ret.auditLog = ret.auditLog.map(entry => ({
|
|
288
|
-
...entry,
|
|
289
|
-
id: entry._id?.toString(),
|
|
290
|
-
_id: undefined,
|
|
291
|
-
user: entry.user?.toString()
|
|
292
|
-
}));
|
|
293
|
-
}
|
|
294
266
|
return ret;
|
|
295
267
|
}
|
|
296
268
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installed-extension-model.js","sources":["../../../src/store/models/installed-extension-model.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"installed-extension-model.js","sources":["../../../src/store/models/installed-extension-model.ts"],"sourcesContent":[null],"names":[],"mappings":"wEAgQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as mongoose from 'mongoose';
|
|
2
|
+
export interface IMarketplacePublisherEventModel extends mongoose.Document {
|
|
3
|
+
publisherId: string;
|
|
4
|
+
extensionId?: string;
|
|
5
|
+
eventType: 'download' | 'install' | 'view' | 'rating';
|
|
6
|
+
value?: number;
|
|
7
|
+
metadata?: Record<string, any>;
|
|
8
|
+
timestamp: Date;
|
|
9
|
+
}
|
|
10
|
+
export declare const PublisherEventModelFunc: (db: mongoose.Connection) => mongoose.Model<IMarketplacePublisherEventModel, {}, {}, {}, any>;
|
|
11
|
+
//# sourceMappingURL=publisher-event-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher-event-model.d.ts","sourceRoot":"","sources":["../../../src/store/models/publisher-event-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,MAAM,WAAW,+BAAgC,SAAQ,QAAQ,CAAC,QAAQ;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,SAAS,EAAE,IAAI,CAAC;CACnB;AAoBD,eAAO,MAAM,uBAAuB,GAAI,IAAI,QAAQ,CAAC,UAAU,qEACsB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as mongoose from 'mongoose';
|
|
2
|
+
import { IMarketplacePublisherModel } from 'common/server';
|
|
3
|
+
export declare const PublisherSchema: mongoose.Schema<IMarketplacePublisherModel, mongoose.Model<IMarketplacePublisherModel, any, any, any, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IMarketplacePublisherModel>;
|
|
4
|
+
export declare const PublisherModelFunc: (db: mongoose.Connection) => mongoose.Model<IMarketplacePublisherModel, {}, {}, {}, any>;
|
|
5
|
+
//# sourceMappingURL=publisher-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher-model.d.ts","sourceRoot":"","sources":["../../../src/store/models/publisher-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAiB,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAI1E,eAAO,MAAM,eAAe,wLA8F3B,CAAC;AAkBF,eAAO,MAAM,kBAAkB,GAAI,IAAI,QAAQ,CAAC,UAAU,gEACmC,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import*as mongoose from'mongoose';import {DB_COLL_NAMES}from'common/server';import {v4}from'uuid';// Define the publisher model interface
|
|
2
|
+
const PublisherSchema = new mongoose.Schema({
|
|
3
|
+
publisherId: {
|
|
4
|
+
type: String,
|
|
5
|
+
required: true,
|
|
6
|
+
unique: true,
|
|
7
|
+
immutable: true,
|
|
8
|
+
default: () => v4()
|
|
9
|
+
},
|
|
10
|
+
displayName: {
|
|
11
|
+
type: String,
|
|
12
|
+
required: true,
|
|
13
|
+
trim: true
|
|
14
|
+
},
|
|
15
|
+
name: {
|
|
16
|
+
type: String,
|
|
17
|
+
required: true,
|
|
18
|
+
unique: true,
|
|
19
|
+
lowercase: true,
|
|
20
|
+
trim: true
|
|
21
|
+
},
|
|
22
|
+
description: String,
|
|
23
|
+
websiteUrl: String,
|
|
24
|
+
email: String,
|
|
25
|
+
// profileUrl: String,
|
|
26
|
+
// avatarUrl: String,
|
|
27
|
+
tenant: {
|
|
28
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
29
|
+
ref: DB_COLL_NAMES.UserTenants
|
|
30
|
+
},
|
|
31
|
+
verified: {
|
|
32
|
+
type: Boolean,
|
|
33
|
+
default: false
|
|
34
|
+
},
|
|
35
|
+
// flags: {
|
|
36
|
+
// type: [String],
|
|
37
|
+
// default: [],
|
|
38
|
+
// },
|
|
39
|
+
// domain: String,
|
|
40
|
+
// isDomainVerified: {
|
|
41
|
+
// type: Boolean,
|
|
42
|
+
// default: false,
|
|
43
|
+
// },
|
|
44
|
+
// Statistics fields
|
|
45
|
+
extensionCount: {
|
|
46
|
+
type: Number,
|
|
47
|
+
default: 0
|
|
48
|
+
},
|
|
49
|
+
totalDownloads: {
|
|
50
|
+
type: Number,
|
|
51
|
+
default: 0
|
|
52
|
+
},
|
|
53
|
+
// totalInstalls: {
|
|
54
|
+
// type: Number,
|
|
55
|
+
// default: 0,
|
|
56
|
+
// },
|
|
57
|
+
// averageRating: {
|
|
58
|
+
// type: Number,
|
|
59
|
+
// default: 0,
|
|
60
|
+
// min: 0,
|
|
61
|
+
// max: 5,
|
|
62
|
+
// },
|
|
63
|
+
// Metadata
|
|
64
|
+
createdAt: {
|
|
65
|
+
type: Date,
|
|
66
|
+
default: Date.now
|
|
67
|
+
},
|
|
68
|
+
updatedAt: {
|
|
69
|
+
type: Date,
|
|
70
|
+
default: Date.now
|
|
71
|
+
}
|
|
72
|
+
}, {
|
|
73
|
+
timestamps: true,
|
|
74
|
+
collection: DB_COLL_NAMES.MarketplacePublisher,
|
|
75
|
+
toJSON: {
|
|
76
|
+
virtuals: true,
|
|
77
|
+
transform(doc, ret) {
|
|
78
|
+
ret.id = ret._id;
|
|
79
|
+
delete ret._id;
|
|
80
|
+
delete ret.__v;
|
|
81
|
+
return ret;
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
toObject: {
|
|
85
|
+
virtuals: true,
|
|
86
|
+
transform(doc, ret) {
|
|
87
|
+
ret.id = ret._id;
|
|
88
|
+
delete ret._id;
|
|
89
|
+
delete ret.__v;
|
|
90
|
+
return ret;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
PublisherSchema.virtual('id').get(function () {
|
|
95
|
+
return this.publisherId;
|
|
96
|
+
});
|
|
97
|
+
// Indexes
|
|
98
|
+
PublisherSchema.index({
|
|
99
|
+
name: 1
|
|
100
|
+
}, {
|
|
101
|
+
unique: true
|
|
102
|
+
});
|
|
103
|
+
PublisherSchema.index({
|
|
104
|
+
displayName: 1
|
|
105
|
+
});
|
|
106
|
+
PublisherSchema.index({
|
|
107
|
+
verified: 1
|
|
108
|
+
});
|
|
109
|
+
PublisherSchema.index({
|
|
110
|
+
createdAt: -1
|
|
111
|
+
});
|
|
112
|
+
// Pre-save middleware to update the updatedAt field
|
|
113
|
+
PublisherSchema.pre('save', function (next) {
|
|
114
|
+
this.updatedAt = new Date();
|
|
115
|
+
next();
|
|
116
|
+
});
|
|
117
|
+
const PublisherModelFunc = db => db.model(DB_COLL_NAMES.MarketplacePublisher, PublisherSchema);export{PublisherModelFunc,PublisherSchema};//# sourceMappingURL=publisher-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher-model.js","sources":["../../../src/store/models/publisher-model.ts"],"sourcesContent":[null],"names":[],"mappings":"kGAqHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=publisher-stats-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher-stats-model.d.ts","sourceRoot":"","sources":["../../../src/store/models/publisher-stats-model.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC"}
|
|
@@ -4,7 +4,8 @@ import { BaseMongoRepository } from '@common-stack/store-mongo';
|
|
|
4
4
|
import * as mongoose from 'mongoose';
|
|
5
5
|
export declare class InstalledExtensionRepository extends BaseMongoRepository<IInstalledExtensionModel> implements IInstalledExtensionRepository {
|
|
6
6
|
constructor(db: mongoose.Connection, logger: CdmLogger.ILogger, options?: any);
|
|
7
|
-
|
|
7
|
+
findByOrgAndId(orgId: string, extensionSlug: string): Promise<AsDomainType<IInstalledExtensionModel> | null>;
|
|
8
|
+
findByOrgAndExtensionId(organizationId: string, extensionId: string): Promise<AsDomainType<IInstalledExtensionModel> | null>;
|
|
8
9
|
countExtensions(filter: IInstalledExtensionFilter): Promise<number>;
|
|
9
10
|
/**
|
|
10
11
|
* Create a new installed extension record
|
|
@@ -13,27 +14,32 @@ export declare class InstalledExtensionRepository extends BaseMongoRepository<II
|
|
|
13
14
|
/**
|
|
14
15
|
* Update an existing installed extension
|
|
15
16
|
*/
|
|
16
|
-
updateExtension(
|
|
17
|
+
updateExtension(orgId: string, extensionId: string, update: IUpdateInstalledExtensionInput): Promise<AsDomainType<IInstalledExtensionModel> | null>;
|
|
17
18
|
/**
|
|
18
|
-
* Find a specific installed extension
|
|
19
|
+
* Find a specific installed extension by organization and extension ObjectIds
|
|
19
20
|
*/
|
|
20
|
-
findOne(
|
|
21
|
+
findOne(orgId: string, extensionId: string): Promise<AsDomainType<IInstalledExtensionModel> | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Find all installed extensions for a specific extension ObjectId
|
|
24
|
+
*/
|
|
25
|
+
findByExtensionId(extensionId: string): Promise<AsDomainType<IInstalledExtensionModel>[]>;
|
|
21
26
|
/**
|
|
22
27
|
* Find installed extensions with optional filtering
|
|
28
|
+
* Uses BaseMongoRepository getAll with population to ensure proper _id to id transformation
|
|
23
29
|
*/
|
|
24
30
|
findExtensions(query: IInstalledExtensionFilter): Promise<AsDomainType<IInstalledExtensionModel>[]>;
|
|
25
31
|
/**
|
|
26
32
|
* Delete an installed extension
|
|
27
33
|
*/
|
|
28
|
-
deleteExtension(
|
|
34
|
+
deleteExtension(orgId: string, extensionId: string): Promise<boolean>;
|
|
29
35
|
/**
|
|
30
36
|
* Get installed extensions joined with registry information
|
|
31
37
|
*/
|
|
32
38
|
findWithRegistryInfo(query: IInstalledExtensionFilter): Promise<any[]>;
|
|
33
39
|
/**
|
|
34
|
-
* Check if extension exists for
|
|
40
|
+
* Check if extension exists for organization
|
|
35
41
|
*/
|
|
36
|
-
exists(
|
|
42
|
+
exists(extensionId: string, orgId?: string): Promise<boolean>;
|
|
37
43
|
/**
|
|
38
44
|
* Bulk update multiple extensions
|
|
39
45
|
*/
|
|
@@ -44,7 +50,7 @@ export declare class InstalledExtensionRepository extends BaseMongoRepository<II
|
|
|
44
50
|
getDependencyGraph(tenantId: string): Promise<{
|
|
45
51
|
extensions: AsDomainType<IInstalledExtensionModel>[];
|
|
46
52
|
dependencies: Array<{
|
|
47
|
-
|
|
53
|
+
extensionId: string;
|
|
48
54
|
dependsOn: string[];
|
|
49
55
|
dependents: string[];
|
|
50
56
|
}>;
|
|
@@ -52,7 +58,7 @@ export declare class InstalledExtensionRepository extends BaseMongoRepository<II
|
|
|
52
58
|
/**
|
|
53
59
|
* Count installed extensions matching query
|
|
54
60
|
*/
|
|
55
|
-
|
|
61
|
+
countByQuery(query: IInstalledExtensionFilter): Promise<number>;
|
|
56
62
|
/**
|
|
57
63
|
* Find extensions that need registry sync
|
|
58
64
|
*/
|
|
@@ -61,8 +67,8 @@ export declare class InstalledExtensionRepository extends BaseMongoRepository<II
|
|
|
61
67
|
* Update registry status for multiple extensions
|
|
62
68
|
*/
|
|
63
69
|
syncRegistryStatus(updates: Array<{
|
|
64
|
-
|
|
65
|
-
|
|
70
|
+
orgId: string;
|
|
71
|
+
extensionId: string;
|
|
66
72
|
registryStatus: string;
|
|
67
73
|
latestVersion?: string;
|
|
68
74
|
isOrphaned: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installed-extension-repository.d.ts","sourceRoot":"","sources":["../../../src/store/repositories/installed-extension-repository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EACH,wBAAwB,EACxB,8BAA8B,EAC9B,8BAA8B,EAC9B,yBAAyB,EACzB,6BAA6B,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"installed-extension-repository.d.ts","sourceRoot":"","sources":["../../../src/store/repositories/installed-extension-repository.ts"],"names":[],"mappings":"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"}
|