@adminide-stack/marketplace-module-server 12.0.4-alpha.95 → 13.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/lib/containers/module.d.ts +4 -4
  2. package/lib/containers/module.d.ts.map +1 -1
  3. package/lib/containers/module.js +12 -7
  4. package/lib/containers/module.js.map +1 -1
  5. package/lib/dataloaders/index.d.ts +1 -1
  6. package/lib/dataloaders/index.d.ts.map +1 -1
  7. package/lib/dataloaders/publisher-data-loader.d.ts +6 -0
  8. package/lib/dataloaders/publisher-data-loader.d.ts.map +1 -0
  9. package/lib/demo/test-graphql-examples.d.ts +73 -0
  10. package/lib/demo/test-graphql-examples.d.ts.map +1 -0
  11. package/lib/graphql/resolvers/form-templates-resolver.d.ts +220 -0
  12. package/lib/graphql/resolvers/form-templates-resolver.d.ts.map +1 -0
  13. package/lib/graphql/resolvers/form-templates-resolver.js +170 -0
  14. package/lib/graphql/resolvers/form-templates-resolver.js.map +1 -0
  15. package/lib/graphql/resolvers/gallery-resolver.d.ts +15 -0
  16. package/lib/graphql/resolvers/gallery-resolver.d.ts.map +1 -0
  17. package/lib/graphql/resolvers/gallery-resolver.js +35 -0
  18. package/lib/graphql/resolvers/gallery-resolver.js.map +1 -0
  19. package/lib/graphql/resolvers/index.d.ts +247 -1
  20. package/lib/graphql/resolvers/index.d.ts.map +1 -1
  21. package/lib/graphql/resolvers/index.js +1 -1
  22. package/lib/graphql/resolvers/installed-extension-resolver.d.ts.map +1 -1
  23. package/lib/graphql/resolvers/installed-extension-resolver.js +161 -35
  24. package/lib/graphql/resolvers/installed-extension-resolver.js.map +1 -1
  25. package/lib/graphql/resolvers/marketplace-form-resolver.d.ts +13 -0
  26. package/lib/graphql/resolvers/marketplace-form-resolver.d.ts.map +1 -0
  27. package/lib/graphql/resolvers/marketplace-form-resolver.js +90 -0
  28. package/lib/graphql/resolvers/marketplace-form-resolver.js.map +1 -0
  29. package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts +14 -0
  30. package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts.map +1 -0
  31. package/lib/graphql/resolvers/publisher-analytics-resolver.js +221 -0
  32. package/lib/graphql/resolvers/publisher-analytics-resolver.js.map +1 -0
  33. package/lib/graphql/resolvers/publisher-resolver.d.ts +5 -0
  34. package/lib/graphql/resolvers/publisher-resolver.d.ts.map +1 -0
  35. package/lib/graphql/resolvers/publisher-resolver.js +183 -0
  36. package/lib/graphql/resolvers/publisher-resolver.js.map +1 -0
  37. package/lib/graphql/resolvers/registry-extension-resolver.d.ts.map +1 -1
  38. package/lib/graphql/resolvers/registry-extension-resolver.js +34 -167
  39. package/lib/graphql/resolvers/registry-extension-resolver.js.map +1 -1
  40. package/lib/graphql/schemas/extension-pricing.graphql +546 -0
  41. package/lib/graphql/schemas/extension-pricing.graphql.js +1 -0
  42. package/lib/graphql/schemas/extension-pricing.graphql.js.map +1 -0
  43. package/lib/graphql/schemas/extension-registry.graphql +91 -58
  44. package/lib/graphql/schemas/extension-registry.graphql.js +1 -1
  45. package/lib/graphql/schemas/form-templates.graphql +269 -0
  46. package/lib/graphql/schemas/form-templates.graphql.js +1 -0
  47. package/lib/graphql/schemas/form-templates.graphql.js.map +1 -0
  48. package/lib/graphql/schemas/gallery-schema.graphql +247 -0
  49. package/lib/graphql/schemas/gallery-schema.graphql.js +1 -0
  50. package/lib/graphql/schemas/gallery-schema.graphql.js.map +1 -0
  51. package/lib/graphql/schemas/index.d.ts.map +1 -1
  52. package/lib/graphql/schemas/index.js +3 -1
  53. package/lib/graphql/schemas/index.js.map +1 -1
  54. package/lib/graphql/schemas/installed-extension.graphql +37 -7
  55. package/lib/graphql/schemas/installed-extension.graphql.js +1 -1
  56. package/lib/graphql/schemas/publisher-analytics.graphql +305 -0
  57. package/lib/graphql/schemas/publisher-analytics.graphql.js +1 -0
  58. package/lib/graphql/schemas/publisher-analytics.graphql.js.map +1 -0
  59. package/lib/graphql/schemas/publisher.graphql +584 -0
  60. package/lib/graphql/schemas/publisher.graphql.js +1 -0
  61. package/lib/graphql/schemas/publisher.graphql.js.map +1 -0
  62. package/lib/graphql/schemas/service.graphql +15 -0
  63. package/lib/index.d.ts +1 -1
  64. package/lib/index.js +1 -1
  65. package/lib/index.js.map +1 -1
  66. package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.d.ts +20 -0
  67. package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.d.ts.map +1 -0
  68. package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.js +61 -0
  69. package/lib/migrations/dbMigrations/DropOldPublisherIndexMigration.js.map +1 -0
  70. package/lib/migrations/index.d.ts +2 -0
  71. package/lib/migrations/index.d.ts.map +1 -0
  72. package/lib/module.d.ts +1 -1
  73. package/lib/module.d.ts.map +1 -1
  74. package/lib/module.js +11 -26
  75. package/lib/module.js.map +1 -1
  76. package/lib/services/extension-gallery-repository.d.ts +17 -0
  77. package/lib/services/extension-gallery-repository.d.ts.map +1 -0
  78. package/lib/services/extension-gallery-repository.js +192 -0
  79. package/lib/services/extension-gallery-repository.js.map +1 -0
  80. package/lib/services/extension-gallery-service-new.d.ts +39 -0
  81. package/lib/services/extension-gallery-service-new.d.ts.map +1 -0
  82. package/lib/services/extension-gallery-service.d.ts +30 -0
  83. package/lib/services/extension-gallery-service.d.ts.map +1 -0
  84. package/lib/services/extension-gallery-service.js +334 -0
  85. package/lib/services/extension-gallery-service.js.map +1 -0
  86. package/lib/services/index.d.ts +4 -1
  87. package/lib/services/index.d.ts.map +1 -1
  88. package/lib/services/installed-extension-service-ext.d.ts +5 -2
  89. package/lib/services/installed-extension-service-ext.d.ts.map +1 -1
  90. package/lib/services/installed-extension-service-ext.js +364 -117
  91. package/lib/services/installed-extension-service-ext.js.map +1 -1
  92. package/lib/services/installed-extension-service.d.ts +30 -13
  93. package/lib/services/installed-extension-service.d.ts.map +1 -1
  94. package/lib/services/installed-extension-service.js +301 -68
  95. package/lib/services/installed-extension-service.js.map +1 -1
  96. package/lib/services/installed-extension-service.test.d.ts +0 -1
  97. package/lib/services/publisher-analytics-service.d.ts +128 -0
  98. package/lib/services/publisher-analytics-service.d.ts.map +1 -0
  99. package/lib/services/publisher-event-service.d.ts +48 -0
  100. package/lib/services/publisher-event-service.d.ts.map +1 -0
  101. package/lib/services/publisher-event-service.js +296 -0
  102. package/lib/services/publisher-event-service.js.map +1 -0
  103. package/lib/services/publisher-service-context.d.ts +1 -0
  104. package/lib/services/publisher-service-context.d.ts.map +1 -0
  105. package/lib/services/publisher-service.d.ts +62 -0
  106. package/lib/services/publisher-service.d.ts.map +1 -0
  107. package/lib/services/publisher-service.js +135 -0
  108. package/lib/services/publisher-service.js.map +1 -0
  109. package/lib/store/models/index.d.ts +1 -1
  110. package/lib/store/models/index.d.ts.map +1 -1
  111. package/lib/store/models/installed-extension-model.d.ts.map +1 -1
  112. package/lib/store/models/installed-extension-model.js +17 -45
  113. package/lib/store/models/installed-extension-model.js.map +1 -1
  114. package/lib/store/models/publisher-event-model.d.ts +11 -0
  115. package/lib/store/models/publisher-event-model.d.ts.map +1 -0
  116. package/lib/store/models/publisher-model.d.ts +5 -0
  117. package/lib/store/models/publisher-model.d.ts.map +1 -0
  118. package/lib/store/models/publisher-model.js +117 -0
  119. package/lib/store/models/publisher-model.js.map +1 -0
  120. package/lib/store/models/publisher-stats-model.d.ts +1 -0
  121. package/lib/store/models/publisher-stats-model.d.ts.map +1 -0
  122. package/lib/store/repositories/index.d.ts +1 -1
  123. package/lib/store/repositories/index.d.ts.map +1 -1
  124. package/lib/store/repositories/installed-extension-repository.d.ts +17 -11
  125. package/lib/store/repositories/installed-extension-repository.d.ts.map +1 -1
  126. package/lib/store/repositories/installed-extension-repository.js +123 -75
  127. package/lib/store/repositories/installed-extension-repository.js.map +1 -1
  128. package/lib/store/repositories/publisher-analytics-repository.d.ts +1 -0
  129. package/lib/store/repositories/publisher-analytics-repository.d.ts.map +1 -0
  130. package/lib/store/repositories/publisher-repository.d.ts +19 -0
  131. package/lib/store/repositories/publisher-repository.d.ts.map +1 -0
  132. package/lib/store/repositories/publisher-repository.js +87 -0
  133. package/lib/store/repositories/publisher-repository.js.map +1 -0
  134. package/lib/templates/constants/DB_COLL_NAMES.ts.template +1 -1
  135. package/lib/templates/constants/SERVER_TYPES.ts.template +8 -5
  136. package/lib/templates/repositories/ExtensionGalleryRepository.ts.template +44 -0
  137. package/lib/templates/repositories/InstalledExtensionRepository.ts.template +19 -14
  138. package/lib/templates/repositories/MarketplacePublisherRepository.ts.template +24 -0
  139. package/lib/templates/repositories/RegistryExtensionRepository.ts.template +2 -2
  140. package/lib/templates/services/ExtensionGalleryDataLoader.ts.template +2 -0
  141. package/lib/templates/services/ExtensionGalleryService.ts.template +79 -0
  142. package/lib/templates/services/InstalledExtensionService.ts.template +63 -32
  143. package/lib/templates/services/MarketplacePublisherService.ts.template +51 -0
  144. package/lib/templates/services/PublisherDataLoader.ts.template +3 -0
  145. package/lib/templates/services/PublisherEventService.ts.template +56 -0
  146. package/lib/templates/services/RegistryExtensionService.ts.template +46 -2
  147. package/lib/tests/extension-integration.test.d.ts +0 -1
  148. package/lib/tests/install-extension-graphql.test.d.ts +2 -0
  149. package/lib/tests/install-extension-graphql.test.d.ts.map +1 -0
  150. package/lib/utils/publisherValidation.d.ts +23 -0
  151. package/lib/utils/publisherValidation.d.ts.map +1 -0
  152. package/lib/utils/publisherValidation.js +144 -0
  153. package/lib/utils/publisherValidation.js.map +1 -0
  154. package/package.json +13 -9
  155. package/lib/constants/extension-events.d.ts +0 -136
  156. package/lib/constants/extension-events.d.ts.map +0 -1
  157. package/lib/dataloaders/registry-extension-data-loader.d.ts +0 -6
  158. package/lib/dataloaders/registry-extension-data-loader.d.ts.map +0 -1
  159. package/lib/dataloaders/registry-extension-data-loader.js +0 -6
  160. package/lib/dataloaders/registry-extension-data-loader.js.map +0 -1
  161. package/lib/graphql/schemas/service.graphql.js +0 -1
  162. package/lib/graphql/schemas/service.graphql.js.map +0 -1
  163. package/lib/services/extension-service.d.ts +0 -42
  164. package/lib/services/extension-service.d.ts.map +0 -1
  165. package/lib/services/extension-service.js +0 -60
  166. package/lib/services/extension-service.js.map +0 -1
  167. package/lib/store/models/registry-extension-model.d.ts +0 -5
  168. package/lib/store/models/registry-extension-model.d.ts.map +0 -1
  169. package/lib/store/models/registry-extension-model.js +0 -83
  170. package/lib/store/models/registry-extension-model.js.map +0 -1
  171. package/lib/store/repositories/registry-extension-repository.d.ts +0 -54
  172. package/lib/store/repositories/registry-extension-repository.d.ts.map +0 -1
  173. package/lib/store/repositories/registry-extension-repository.js +0 -137
  174. package/lib/store/repositories/registry-extension-repository.js.map +0 -1
  175. package/lib/templates/services/RegistryExtensionDataLoader.ts.template +0 -2
@@ -0,0 +1,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,3 +1,3 @@
1
- export * from './registry-extension-model';
2
1
  export * from './installed-extension-model';
2
+ export * from './publisher-model';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,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;AAyR9C,eAAO,MAAM,2BAA2B,GAAI,IAAI,UAAU,gQACe,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
- tenantId: {
139
- type: String,
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
- tenantId: 1,
224
+ organization: 1,
217
225
  extension: 1
218
226
  }, {
219
227
  unique: true
220
228
  });
221
229
  InstalledExtensionSchema.index({
222
- tenantId: 1,
230
+ organization: 1,
223
231
  status: 1
224
232
  });
225
233
  InstalledExtensionSchema.index({
226
- tenantId: 1,
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":"wEAoSA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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,3 +1,3 @@
1
- export * from './registry-extension-repository';
2
1
  export * from './installed-extension-repository';
2
+ export * from './publisher-repository';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,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
- findByTenantAndId(tenantId: string, extensionSlug: string): Promise<AsDomainType<IInstalledExtensionModel> | null>;
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(tenantId: string, extensionSlug: string, update: IUpdateInstalledExtensionInput): Promise<AsDomainType<IInstalledExtensionModel> | null>;
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(tenantId: string, extensionSlug: string): Promise<AsDomainType<IInstalledExtensionModel> | null>;
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(tenantId: string, extensionSlug: string): Promise<boolean>;
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 tenant
40
+ * Check if extension exists for organization
35
41
  */
36
- exists(tenantId: string, extensionSlug: string): Promise<boolean>;
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
- extensionSlug: string;
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
- count(query: IInstalledExtensionFilter): Promise<number>;
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
- tenantId: string;
65
- extensionSlug: string;
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":"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"}
1
+ {"version":3,"file":"installed-extension-repository.d.ts","sourceRoot":"","sources":["../../../src/store/repositories/installed-extension-repository.ts"],"names":[],"mappings":"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"}