@adminide-stack/marketplace-module-server 12.0.4-alpha.44 → 12.0.4-alpha.441

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 (185) hide show
  1. package/Readme.md +321 -0
  2. package/lib/containers/module.d.ts +8 -0
  3. package/lib/containers/module.d.ts.map +1 -1
  4. package/lib/containers/module.js +15 -5
  5. package/lib/containers/module.js.map +1 -1
  6. package/lib/dataloaders/index.d.ts +1 -0
  7. package/lib/dataloaders/index.d.ts.map +1 -0
  8. package/lib/demo/test-graphql-examples.d.ts +73 -0
  9. package/lib/demo/test-graphql-examples.d.ts.map +1 -0
  10. package/lib/graphql/resolvers/form-templates-resolver.d.ts +220 -0
  11. package/lib/graphql/resolvers/form-templates-resolver.d.ts.map +1 -0
  12. package/lib/graphql/resolvers/form-templates-resolver.js +170 -0
  13. package/lib/graphql/resolvers/form-templates-resolver.js.map +1 -0
  14. package/lib/graphql/resolvers/gallery-resolver.d.ts +15 -0
  15. package/lib/graphql/resolvers/gallery-resolver.d.ts.map +1 -0
  16. package/lib/graphql/resolvers/gallery-resolver.js +35 -0
  17. package/lib/graphql/resolvers/gallery-resolver.js.map +1 -0
  18. package/lib/graphql/resolvers/index.d.ts +247 -1
  19. package/lib/graphql/resolvers/index.d.ts.map +1 -1
  20. package/lib/graphql/resolvers/index.js +1 -0
  21. package/lib/graphql/resolvers/index.js.map +1 -0
  22. package/lib/graphql/resolvers/installed-extension-resolver.d.ts +5 -0
  23. package/lib/graphql/resolvers/installed-extension-resolver.d.ts.map +1 -0
  24. package/lib/graphql/resolvers/installed-extension-resolver.js +309 -0
  25. package/lib/graphql/resolvers/installed-extension-resolver.js.map +1 -0
  26. package/lib/graphql/resolvers/marketplace-form-resolver.d.ts +13 -0
  27. package/lib/graphql/resolvers/marketplace-form-resolver.d.ts.map +1 -0
  28. package/lib/graphql/resolvers/marketplace-form-resolver.js +90 -0
  29. package/lib/graphql/resolvers/marketplace-form-resolver.js.map +1 -0
  30. package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts +14 -0
  31. package/lib/graphql/resolvers/publisher-analytics-resolver.d.ts.map +1 -0
  32. package/lib/graphql/resolvers/publisher-analytics-resolver.js +221 -0
  33. package/lib/graphql/resolvers/publisher-analytics-resolver.js.map +1 -0
  34. package/lib/graphql/resolvers/publisher-resolver.d.ts +5 -0
  35. package/lib/graphql/resolvers/publisher-resolver.d.ts.map +1 -0
  36. package/lib/graphql/resolvers/publisher-resolver.js +176 -0
  37. package/lib/graphql/resolvers/publisher-resolver.js.map +1 -0
  38. package/lib/graphql/resolvers/registry-extension-resolver.d.ts +5 -0
  39. package/lib/graphql/resolvers/registry-extension-resolver.d.ts.map +1 -0
  40. package/lib/graphql/resolvers/registry-extension-resolver.js +46 -0
  41. package/lib/graphql/resolvers/registry-extension-resolver.js.map +1 -0
  42. package/lib/graphql/schemas/extension-pricing.graphql +546 -0
  43. package/lib/graphql/schemas/extension-pricing.graphql.js +1 -0
  44. package/lib/graphql/schemas/extension-pricing.graphql.js.map +1 -0
  45. package/lib/graphql/schemas/extension-registry.graphql +107 -0
  46. package/lib/graphql/schemas/extension-registry.graphql.js +1 -0
  47. package/lib/graphql/schemas/extension-registry.graphql.js.map +1 -0
  48. package/lib/graphql/schemas/form-templates.graphql +269 -0
  49. package/lib/graphql/schemas/form-templates.graphql.js +1 -0
  50. package/lib/graphql/schemas/form-templates.graphql.js.map +1 -0
  51. package/lib/graphql/schemas/gallery-schema.graphql +247 -0
  52. package/lib/graphql/schemas/gallery-schema.graphql.js +1 -0
  53. package/lib/graphql/schemas/gallery-schema.graphql.js.map +1 -0
  54. package/lib/graphql/schemas/index.d.ts.map +1 -1
  55. package/lib/graphql/schemas/index.js +3 -4
  56. package/lib/graphql/schemas/index.js.map +1 -1
  57. package/lib/graphql/schemas/installed-extension.graphql +324 -0
  58. package/lib/graphql/schemas/installed-extension.graphql.js +1 -0
  59. package/lib/graphql/schemas/installed-extension.graphql.js.map +1 -0
  60. package/lib/graphql/schemas/publisher-analytics.graphql +305 -0
  61. package/lib/graphql/schemas/publisher-analytics.graphql.js +1 -0
  62. package/lib/graphql/schemas/publisher-analytics.graphql.js.map +1 -0
  63. package/lib/graphql/schemas/publisher.graphql +376 -0
  64. package/lib/graphql/schemas/publisher.graphql.js +1 -0
  65. package/lib/graphql/schemas/publisher.graphql.js.map +1 -0
  66. package/lib/graphql/schemas/service.graphql +196 -0
  67. package/lib/index.d.ts +3 -1
  68. package/lib/index.d.ts.map +1 -1
  69. package/lib/index.js +1 -1
  70. package/lib/index.js.map +1 -1
  71. package/lib/module.d.ts +1 -1
  72. package/lib/module.d.ts.map +1 -1
  73. package/lib/module.js +10 -23
  74. package/lib/module.js.map +1 -1
  75. package/lib/plugins/extension-moleculer-service.d.ts +86 -0
  76. package/lib/plugins/extension-moleculer-service.d.ts.map +1 -0
  77. package/lib/plugins/index.d.ts +2 -0
  78. package/lib/plugins/index.d.ts.map +1 -0
  79. package/lib/services/extension-gallery-repository.d.ts +17 -0
  80. package/lib/services/extension-gallery-repository.d.ts.map +1 -0
  81. package/lib/services/extension-gallery-repository.js +192 -0
  82. package/lib/services/extension-gallery-repository.js.map +1 -0
  83. package/lib/services/extension-gallery-service-new.d.ts +39 -0
  84. package/lib/services/extension-gallery-service-new.d.ts.map +1 -0
  85. package/lib/services/extension-gallery-service.d.ts +30 -0
  86. package/lib/services/extension-gallery-service.d.ts.map +1 -0
  87. package/lib/services/extension-gallery-service.js +311 -0
  88. package/lib/services/extension-gallery-service.js.map +1 -0
  89. package/lib/services/index.d.ts +6 -1
  90. package/lib/services/index.d.ts.map +1 -1
  91. package/lib/services/installed-extension-service-ext.d.ts +16 -0
  92. package/lib/services/installed-extension-service-ext.d.ts.map +1 -0
  93. package/lib/services/installed-extension-service-ext.js +518 -0
  94. package/lib/services/installed-extension-service-ext.js.map +1 -0
  95. package/lib/services/installed-extension-service.d.ts +105 -0
  96. package/lib/services/installed-extension-service.d.ts.map +1 -0
  97. package/lib/services/installed-extension-service.js +600 -0
  98. package/lib/services/installed-extension-service.js.map +1 -0
  99. package/lib/services/installed-extension-service.test.d.ts +1 -0
  100. package/lib/services/installed-extension-service.test.d.ts.map +1 -0
  101. package/lib/services/publisher-analytics-service.d.ts +128 -0
  102. package/lib/services/publisher-analytics-service.d.ts.map +1 -0
  103. package/lib/services/publisher-event-service.d.ts +48 -0
  104. package/lib/services/publisher-event-service.d.ts.map +1 -0
  105. package/lib/services/publisher-event-service.js +296 -0
  106. package/lib/services/publisher-event-service.js.map +1 -0
  107. package/lib/services/publisher-service-context.d.ts +1 -0
  108. package/lib/services/publisher-service-context.d.ts.map +1 -0
  109. package/lib/services/publisher-service.d.ts +60 -0
  110. package/lib/services/publisher-service.d.ts.map +1 -0
  111. package/lib/services/publisher-service.js +134 -0
  112. package/lib/services/publisher-service.js.map +1 -0
  113. package/lib/store/index.d.ts +1 -1
  114. package/lib/store/index.d.ts.map +1 -1
  115. package/lib/store/models/index.d.ts +2 -1
  116. package/lib/store/models/index.d.ts.map +1 -1
  117. package/lib/store/models/installed-extension-model.d.ts +4 -0
  118. package/lib/store/models/installed-extension-model.d.ts.map +1 -0
  119. package/lib/store/models/installed-extension-model.js +269 -0
  120. package/lib/store/models/installed-extension-model.js.map +1 -0
  121. package/lib/store/models/publisher-event-model.d.ts +11 -0
  122. package/lib/store/models/publisher-event-model.d.ts.map +1 -0
  123. package/lib/store/models/publisher-model.d.ts +5 -0
  124. package/lib/store/models/publisher-model.d.ts.map +1 -0
  125. package/lib/store/models/publisher-model.js +103 -0
  126. package/lib/store/models/publisher-model.js.map +1 -0
  127. package/lib/store/models/publisher-stats-model.d.ts +1 -0
  128. package/lib/store/models/publisher-stats-model.d.ts.map +1 -0
  129. package/lib/store/repositories/index.d.ts +3 -0
  130. package/lib/store/repositories/index.d.ts.map +1 -0
  131. package/lib/store/repositories/installed-extension-repository.d.ts +73 -0
  132. package/lib/store/repositories/installed-extension-repository.d.ts.map +1 -0
  133. package/lib/store/repositories/installed-extension-repository.js +442 -0
  134. package/lib/store/repositories/installed-extension-repository.js.map +1 -0
  135. package/lib/store/repositories/publisher-analytics-repository.d.ts +1 -0
  136. package/lib/store/repositories/publisher-analytics-repository.d.ts.map +1 -0
  137. package/lib/store/repositories/publisher-repository.d.ts +19 -0
  138. package/lib/store/repositories/publisher-repository.d.ts.map +1 -0
  139. package/lib/store/repositories/publisher-repository.js +87 -0
  140. package/lib/store/repositories/publisher-repository.js.map +1 -0
  141. package/lib/templates/constants/DB_COLL_NAMES.ts.template +5 -0
  142. package/lib/templates/constants/SERVER_TYPES.ts.template +10 -4
  143. package/lib/templates/repositories/ExtensionGalleryRepository.ts.template +44 -0
  144. package/lib/templates/repositories/InstalledExtensionRepository.ts.template +94 -0
  145. package/lib/templates/repositories/MarketplacePublisherRepository.ts.template +24 -0
  146. package/lib/templates/repositories/RegistryExtensionRepository.ts.template +10 -15
  147. package/lib/templates/services/ExtensionGalleryDataLoader.ts.template +2 -0
  148. package/lib/templates/services/ExtensionGalleryService.ts.template +79 -0
  149. package/lib/templates/services/InstalledExtensionDataLoader.ts.template +2 -0
  150. package/lib/templates/services/InstalledExtensionService.ts.template +193 -0
  151. package/lib/templates/services/MarketplacePublisherService.ts.template +49 -0
  152. package/lib/templates/services/PublisherEventService.ts.template +56 -0
  153. package/lib/templates/services/RegistryExtensionService.ts.template +62 -18
  154. package/lib/tests/extension-integration.test.d.ts +1 -0
  155. package/lib/tests/extension-integration.test.d.ts.map +1 -0
  156. package/lib/tests/install-extension-graphql.test.d.ts +2 -0
  157. package/lib/tests/install-extension-graphql.test.d.ts.map +1 -0
  158. package/lib/tests/test-extension-services.d.ts +1 -0
  159. package/lib/tests/test-extension-services.d.ts.map +1 -0
  160. package/lib/utils/publisherValidation.d.ts +23 -0
  161. package/lib/utils/publisherValidation.d.ts.map +1 -0
  162. package/lib/utils/publisherValidation.js +144 -0
  163. package/lib/utils/publisherValidation.js.map +1 -0
  164. package/package.json +15 -7
  165. package/lib/graphql/resolvers/resolvers.d.ts +0 -2
  166. package/lib/graphql/resolvers/resolvers.d.ts.map +0 -1
  167. package/lib/graphql/resolvers/resolvers.js +0 -167
  168. package/lib/graphql/resolvers/resolvers.js.map +0 -1
  169. package/lib/graphql/schemas/extension.graphql +0 -57
  170. package/lib/graphql/schemas/extension.graphql.js +0 -1
  171. package/lib/graphql/schemas/extension.graphql.js.map +0 -1
  172. package/lib/services/extension-service.d.ts +0 -54
  173. package/lib/services/extension-service.d.ts.map +0 -1
  174. package/lib/services/extension-service.js +0 -42
  175. package/lib/services/extension-service.js.map +0 -1
  176. package/lib/store/models/registry-extension-model.d.ts +0 -10
  177. package/lib/store/models/registry-extension-model.d.ts.map +0 -1
  178. package/lib/store/models/registry-extension-model.js +0 -62
  179. package/lib/store/models/registry-extension-model.js.map +0 -1
  180. package/lib/store/repository/index.d.ts +0 -2
  181. package/lib/store/repository/index.d.ts.map +0 -1
  182. package/lib/store/repository/registry-extension-repository.d.ts +0 -31
  183. package/lib/store/repository/registry-extension-repository.d.ts.map +0 -1
  184. package/lib/store/repository/registry-extension-repository.js +0 -135
  185. package/lib/store/repository/registry-extension-repository.js.map +0 -1
@@ -0,0 +1,134 @@
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
+ verified: false,
62
+ extensionCount: 0,
63
+ totalDownloads: 0
64
+ // Remove fields that don't exist in the model
65
+ // flags: [],
66
+ // isDomainVerified: false,
67
+ // totalInstalls: 0,
68
+ // averageRating: 0,
69
+ };
70
+ const publisher = await this.repository.create(publisherData);
71
+ this.onPublisherCreated.fire({
72
+ publisherId: publisher.id,
73
+ publisherName: publisher.name,
74
+ displayName: publisher.displayName,
75
+ createdAt: publisher.createdAt.toISOString()
76
+ });
77
+ return publisher;
78
+ }
79
+ async updatePublisher(publisherId, data) {
80
+ this.logger.trace('updatePublisher for publisher [%s] with data [%j]', publisherId, data);
81
+ const updateData = {
82
+ ...data,
83
+ updatedAt: new Date()
84
+ };
85
+ const publisher = await this.update(publisherId, updateData);
86
+ if (publisher) {
87
+ this.onPublisherUpdated.fire({
88
+ publisherId: publisher.id,
89
+ changes: data,
90
+ updatedAt: publisher.updatedAt.toISOString()
91
+ });
92
+ }
93
+ return publisher ? publisher : null;
94
+ }
95
+ async updatePublisherStats(publisherId, stats) {
96
+ this.logger.trace('updatePublisherStats for publisher [%s] with stats [%j]', publisherId, stats);
97
+ const result = await this.repository.updatePublisherStats(publisherId, stats);
98
+ return result ? result : null;
99
+ }
100
+ async verifyPublisher(publisherId) {
101
+ this.logger.trace('verifyPublisher with publisherId [%s]', publisherId);
102
+ const publisher = await this.update(publisherId, {
103
+ verified: true
104
+ });
105
+ if (publisher) {
106
+ this.onPublisherVerified.fire({
107
+ publisherId: publisher.id,
108
+ verifiedAt: publisher.updatedAt.toISOString()
109
+ });
110
+ }
111
+ return publisher ? publisher : null;
112
+ }
113
+ async getPublisherStats(publisherId) {
114
+ this.logger.trace('getPublisherStats for publisher [%s]', publisherId);
115
+ const publisher = await this.findById(publisherId);
116
+ if (!publisher) {
117
+ return null;
118
+ }
119
+ // TODO: Implement proper logic to calculate averageRating, verifiedCount and topExtension
120
+ // For now, using placeholder values
121
+ return {
122
+ totalExtensions: publisher.extensionCount,
123
+ totalDownloads: publisher.totalDownloads,
124
+ totalInstallations: publisher.totalDownloads,
125
+ // Using totalDownloads as approximation
126
+ averageRating: 0,
127
+ // TODO: Calculate from actual extension ratings
128
+ verifiedCount: publisher.verified ? 1 : 0,
129
+ // Placeholder - should be calculated across all publishers
130
+ topExtension: null // TODO: Implement logic to find top extension
131
+ };
132
+ }
133
+ };
134
+ 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;AACnB,IAAA,YAAW,GAAA,MAAA,IAAa,CAAA,UAAA,CAAA,cAA0B,CAAC,MAAC,EAAA,OAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,CAAA;AAoDxC,IAAA,OAAA;gBAGL,EAAA,MAAc,CAAA,UAAO;gBACrB,EAAA,MAAc,CAAA;;;QAInB,eAAQ,CAAA,IAAY;AAqBV,IAAA,IAAA,CAAA,MAAA,CAAA,KAAA,CAAA,gCAEF,EAAA,IAAA,CAAA;;UAEH,UAAA,GAAc,qBAAS,CAAA;mBACvB,EAAa,IAAG,CAAA,aAAO;MAC1B,WACM,EAAA,IAAA,CAAA;AASE,MAAA,KAAA,EAAA,IAAA,CAAA,KAAgB;AAchB,MAAA,OAAA,EAAA,IAAA,CAAA,OAAkB;iBAC3B,EAAA,IAAe,CAAA;;QAEf,CAAA,UAAA,CAAA,KAAA,EAAkB;YAClB,IAAA,KAAa,CAAA,UAAS,CAAA,KAAA,CAAA;;;AAGzB,IAAA,cAAQ,GAAA,MAAA,IAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,IAAA,CAAA,aAAA,CAAA;AA0BZ,IAAA,IAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,3 +1,3 @@
1
1
  export * from './models';
2
- export * from './repository';
2
+ export * from './repositories';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
@@ -1,2 +1,3 @@
1
- export * from './registry-extension-model';
1
+ export * from './installed-extension-model';
2
+ export * from './publisher-model';
2
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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { IInstalledExtensionModel } from 'common/server';
2
+ import { Connection, Schema } from 'mongoose';
3
+ export declare const InstalledExtensionModelFunc: (db: Connection) => import("mongoose").Model<IInstalledExtensionModel, {}, {}, {}, Schema<IInstalledExtensionModel, import("mongoose").Model<IInstalledExtensionModel, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, IInstalledExtensionModel>>;
4
+ //# sourceMappingURL=installed-extension-model.d.ts.map
@@ -0,0 +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;AAqP9C,eAAO,MAAM,2BAA2B,GAAI,IAAI,UAAU,gQACe,CAAC"}
@@ -0,0 +1,269 @@
1
+ import {DB_COLL_NAMES}from'common/server';import {Schema}from'mongoose';// Schema for extension lifecycle management
2
+ const ExtensionLifecycleSchema = new Schema({
3
+ registryStatus: {
4
+ type: String,
5
+ enum: ['active', 'deprecated', 'suspended', 'removed', 'emergency-removed'],
6
+ required: true,
7
+ default: 'active'
8
+ },
9
+ isOrphaned: {
10
+ type: Boolean,
11
+ default: false
12
+ },
13
+ deprecationWarningShown: {
14
+ type: Boolean,
15
+ default: false
16
+ },
17
+ autoUpdateBlocked: {
18
+ type: Boolean,
19
+ default: false
20
+ },
21
+ lastRegistryCheck: {
22
+ type: String,
23
+ default: () => new Date().toISOString()
24
+ }
25
+ });
26
+ // Schema for extension policies
27
+ const ExtensionPoliciesSchema = new Schema({
28
+ allowOrphanedExecution: {
29
+ type: Boolean,
30
+ default: false
31
+ },
32
+ requireSecurityUpdates: {
33
+ type: Boolean,
34
+ default: true
35
+ },
36
+ autoRemoveDeprecated: {
37
+ type: Boolean,
38
+ default: false
39
+ },
40
+ deprecationGracePeriod: {
41
+ type: Number,
42
+ default: 30 // days
43
+ }
44
+ });
45
+ // Schema for extension settings
46
+ const ExtensionSettingsSchema = new Schema({
47
+ userEnabled: {
48
+ type: Boolean,
49
+ default: true
50
+ },
51
+ systemEnabled: {
52
+ type: Boolean,
53
+ default: true
54
+ },
55
+ effectiveEnabled: {
56
+ type: Boolean,
57
+ default: true
58
+ },
59
+ userConfig: {
60
+ type: Schema.Types.Mixed,
61
+ default: () => ({})
62
+ },
63
+ systemConfig: {
64
+ type: Schema.Types.Mixed,
65
+ default: () => ({})
66
+ }
67
+ });
68
+ // Schema for activation error
69
+ const ActivationErrorSchema = new Schema({
70
+ message: {
71
+ type: String,
72
+ required: true
73
+ },
74
+ code: {
75
+ type: String,
76
+ required: true
77
+ },
78
+ timestamp: {
79
+ type: String,
80
+ required: true
81
+ }
82
+ });
83
+ // Schema for metrics
84
+ const MetricsSchema = new Schema({
85
+ activationTime: {
86
+ type: Number,
87
+ required: true
88
+ },
89
+ // milliseconds
90
+ memoryUsage: {
91
+ type: Number,
92
+ required: true
93
+ },
94
+ // bytes
95
+ lastMeasured: {
96
+ type: String,
97
+ required: true
98
+ }
99
+ });
100
+ // Schema for extension runtime information
101
+ const ExtensionRuntimeSchema = new Schema({
102
+ activationState: {
103
+ type: String,
104
+ enum: ['enabled', 'disabled', 'disabled-by-user', 'disabled-by-admin', 'disabled-by-policy'],
105
+ default: 'enabled'
106
+ },
107
+ lastActivated: {
108
+ type: Date
109
+ },
110
+ lastDeactivated: {
111
+ type: Date
112
+ },
113
+ activationError: ActivationErrorSchema,
114
+ metrics: MetricsSchema
115
+ });
116
+ // Schema for audit log entries
117
+ const AuditLogSchema = new Schema({
118
+ action: {
119
+ type: String,
120
+ enum: ['installed', 'updated', 'enabled', 'disabled', 'configured'],
121
+ required: true
122
+ },
123
+ timestamp: {
124
+ type: Date,
125
+ default: Date.now
126
+ },
127
+ user: {
128
+ type: Schema.Types.ObjectId,
129
+ ref: DB_COLL_NAMES.Accounts,
130
+ required: true
131
+ },
132
+ details: {
133
+ type: Schema.Types.Mixed
134
+ }
135
+ });
136
+ // Main installed extension schema
137
+ const InstalledExtensionSchema = new Schema({
138
+ organization: {
139
+ type: Schema.Types.ObjectId,
140
+ ref: DB_COLL_NAMES.Organizations,
141
+ required: true,
142
+ index: true
143
+ },
144
+ extension: {
145
+ type: Schema.Types.ObjectId,
146
+ ref: DB_COLL_NAMES.ExtensionRegistries,
147
+ required: true
148
+ },
149
+ installedVersion: {
150
+ type: String,
151
+ required: true,
152
+ index: true
153
+ },
154
+ status: {
155
+ type: String,
156
+ enum: ['installed', 'deprecated-installed', 'suspended', 'orphaned', 'force-disabled'],
157
+ default: 'installed'
158
+ },
159
+ lifecycle: {
160
+ type: ExtensionLifecycleSchema,
161
+ default: () => ({})
162
+ },
163
+ policies: {
164
+ type: ExtensionPoliciesSchema,
165
+ default: () => ({})
166
+ },
167
+ settings: {
168
+ type: ExtensionSettingsSchema,
169
+ default: () => ({})
170
+ },
171
+ runtime: {
172
+ type: ExtensionRuntimeSchema,
173
+ default: () => ({})
174
+ },
175
+ installedAt: {
176
+ type: Date,
177
+ default: Date.now,
178
+ index: true
179
+ },
180
+ installedBy: {
181
+ type: Schema.Types.ObjectId,
182
+ ref: DB_COLL_NAMES.Accounts,
183
+ required: true,
184
+ index: true
185
+ },
186
+ lastUpdated: {
187
+ type: Date
188
+ },
189
+ lastUpdatedBy: {
190
+ type: Schema.Types.ObjectId,
191
+ ref: DB_COLL_NAMES.Accounts
192
+ },
193
+ availableVersion: {
194
+ type: String
195
+ },
196
+ dependencies: {
197
+ type: [String],
198
+ default: []
199
+ },
200
+ dependents: {
201
+ type: [String],
202
+ default: []
203
+ },
204
+ auditLog: {
205
+ type: [AuditLogSchema],
206
+ default: []
207
+ },
208
+ sourceCollection: {
209
+ type: String
210
+ },
211
+ sourceDocumentId: {
212
+ type: String
213
+ },
214
+ metadata: {
215
+ type: Schema.Types.Mixed
216
+ }
217
+ });
218
+ // Create virtual for id
219
+ InstalledExtensionSchema.virtual('id').get(function () {
220
+ return this._id.toHexString();
221
+ });
222
+ // Create compound indexes for efficient queries
223
+ InstalledExtensionSchema.index({
224
+ organization: 1,
225
+ extension: 1
226
+ }, {
227
+ unique: true
228
+ });
229
+ InstalledExtensionSchema.index({
230
+ organization: 1,
231
+ status: 1
232
+ });
233
+ InstalledExtensionSchema.index({
234
+ organization: 1,
235
+ 'settings.effectiveEnabled': 1
236
+ });
237
+ InstalledExtensionSchema.index({
238
+ 'lifecycle.registryStatus': 1
239
+ });
240
+ InstalledExtensionSchema.index({
241
+ 'lifecycle.isOrphaned': 1
242
+ });
243
+ InstalledExtensionSchema.index({
244
+ installedAt: 1
245
+ });
246
+ InstalledExtensionSchema.index({
247
+ lastUpdated: 1
248
+ });
249
+ // Configure toJSON transformation
250
+ InstalledExtensionSchema.set('toJSON', {
251
+ virtuals: true,
252
+ transform: (doc, ret) => {
253
+ ret.id = ret._id.toString();
254
+ delete ret._id;
255
+ delete ret.__v;
256
+ return ret;
257
+ }
258
+ });
259
+ // Configure toObject transformation
260
+ InstalledExtensionSchema.set('toObject', {
261
+ virtuals: true,
262
+ transform: (doc, ret) => {
263
+ ret.id = ret._id.toString();
264
+ delete ret._id;
265
+ delete ret.__v;
266
+ return ret;
267
+ }
268
+ });
269
+ const InstalledExtensionModelFunc = db => db.model(DB_COLL_NAMES.InstalledExtensions, InstalledExtensionSchema);export{InstalledExtensionModelFunc};//# sourceMappingURL=installed-extension-model.js.map
@@ -0,0 +1 @@
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;AAG1E,eAAO,MAAM,eAAe,wLAmF3B,CAAC;AAcF,eAAO,MAAM,kBAAkB,GAAI,IAAI,QAAQ,CAAC,UAAU,gEACmC,CAAC"}
@@ -0,0 +1,103 @@
1
+ import*as mongoose from'mongoose';import {DB_COLL_NAMES}from'common/server';// Define the publisher model interface
2
+ const PublisherSchema = new mongoose.Schema({
3
+ displayName: {
4
+ type: String,
5
+ required: true,
6
+ trim: true
7
+ },
8
+ name: {
9
+ type: String,
10
+ required: true,
11
+ unique: true,
12
+ lowercase: true,
13
+ trim: true
14
+ },
15
+ description: String,
16
+ websiteUrl: String,
17
+ email: String,
18
+ // profileUrl: String,
19
+ // avatarUrl: String,
20
+ verified: {
21
+ type: Boolean,
22
+ default: false
23
+ },
24
+ // flags: {
25
+ // type: [String],
26
+ // default: [],
27
+ // },
28
+ // domain: String,
29
+ // isDomainVerified: {
30
+ // type: Boolean,
31
+ // default: false,
32
+ // },
33
+ // Statistics fields
34
+ extensionCount: {
35
+ type: Number,
36
+ default: 0
37
+ },
38
+ totalDownloads: {
39
+ type: Number,
40
+ default: 0
41
+ },
42
+ // totalInstalls: {
43
+ // type: Number,
44
+ // default: 0,
45
+ // },
46
+ // averageRating: {
47
+ // type: Number,
48
+ // default: 0,
49
+ // min: 0,
50
+ // max: 5,
51
+ // },
52
+ // Metadata
53
+ createdAt: {
54
+ type: Date,
55
+ default: Date.now
56
+ },
57
+ updatedAt: {
58
+ type: Date,
59
+ default: Date.now
60
+ }
61
+ }, {
62
+ timestamps: true,
63
+ collection: DB_COLL_NAMES.MarketplacePublisher,
64
+ toJSON: {
65
+ virtuals: true,
66
+ transform(doc, ret) {
67
+ ret.id = ret._id;
68
+ delete ret._id;
69
+ delete ret.__v;
70
+ return ret;
71
+ }
72
+ },
73
+ toObject: {
74
+ virtuals: true,
75
+ transform(doc, ret) {
76
+ ret.id = ret._id;
77
+ delete ret._id;
78
+ delete ret.__v;
79
+ return ret;
80
+ }
81
+ }
82
+ });
83
+ // Indexes
84
+ PublisherSchema.index({
85
+ publisherName: 1
86
+ }, {
87
+ unique: true
88
+ });
89
+ PublisherSchema.index({
90
+ displayName: 1
91
+ });
92
+ PublisherSchema.index({
93
+ verified: 1
94
+ });
95
+ PublisherSchema.index({
96
+ createdAt: -1
97
+ });
98
+ // Pre-save middleware to update the updatedAt field
99
+ PublisherSchema.pre('save', function (next) {
100
+ this.updatedAt = new Date();
101
+ next();
102
+ });
103
+ 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":"4EAIA;AAiGA,MAAA,8BAAmC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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":""}
@@ -0,0 +1,3 @@
1
+ export * from './installed-extension-repository';
2
+ export * from './publisher-repository';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,73 @@
1
+ import type { CdmLogger } from '@cdm-logger/core';
2
+ import { IInstalledExtensionModel, ICreateInstalledExtensionInput, IUpdateInstalledExtensionInput, IInstalledExtensionFilter, IInstalledExtensionRepository, AsDomainType } from 'common/server';
3
+ import { BaseMongoRepository } from '@common-stack/store-mongo';
4
+ import * as mongoose from 'mongoose';
5
+ export declare class InstalledExtensionRepository extends BaseMongoRepository<IInstalledExtensionModel> implements IInstalledExtensionRepository {
6
+ constructor(db: mongoose.Connection, logger: CdmLogger.ILogger, options?: any);
7
+ findByOrgAndId(orgId: string, extensionSlug: string): Promise<AsDomainType<IInstalledExtensionModel> | null>;
8
+ findByOrgAndExtensionId(organizationId: string, extensionId: string): Promise<AsDomainType<IInstalledExtensionModel> | null>;
9
+ countExtensions(filter: IInstalledExtensionFilter): Promise<number>;
10
+ /**
11
+ * Create a new installed extension record
12
+ */
13
+ createExtension(input: ICreateInstalledExtensionInput): Promise<AsDomainType<IInstalledExtensionModel>>;
14
+ /**
15
+ * Update an existing installed extension
16
+ */
17
+ updateExtension(orgId: string, extensionId: string, update: IUpdateInstalledExtensionInput): Promise<AsDomainType<IInstalledExtensionModel> | null>;
18
+ /**
19
+ * Find a specific installed extension by organization and extension ObjectIds
20
+ */
21
+ findOne(orgId: string, extensionId: string): Promise<AsDomainType<IInstalledExtensionModel> | null>;
22
+ /**
23
+ * Find installed extensions with optional filtering
24
+ * Uses BaseMongoRepository getAll with population to ensure proper _id to id transformation
25
+ */
26
+ findExtensions(query: IInstalledExtensionFilter): Promise<AsDomainType<IInstalledExtensionModel>[]>;
27
+ /**
28
+ * Delete an installed extension
29
+ */
30
+ deleteExtension(orgId: string, extensionId: string): Promise<boolean>;
31
+ /**
32
+ * Get installed extensions joined with registry information
33
+ */
34
+ findWithRegistryInfo(query: IInstalledExtensionFilter): Promise<any[]>;
35
+ /**
36
+ * Check if extension exists for organization
37
+ */
38
+ exists(extensionId: string, orgId?: string): Promise<boolean>;
39
+ /**
40
+ * Bulk update multiple extensions
41
+ */
42
+ bulkUpdateExtensions(tenantId: string, filter: Partial<IInstalledExtensionFilter>, update: Partial<IUpdateInstalledExtensionInput>): Promise<number>;
43
+ /**
44
+ * Get extension dependency graph for a tenant
45
+ */
46
+ getDependencyGraph(tenantId: string): Promise<{
47
+ extensions: AsDomainType<IInstalledExtensionModel>[];
48
+ dependencies: Array<{
49
+ extensionId: string;
50
+ dependsOn: string[];
51
+ dependents: string[];
52
+ }>;
53
+ }>;
54
+ /**
55
+ * Count installed extensions matching query
56
+ */
57
+ countByQuery(query: IInstalledExtensionFilter): Promise<number>;
58
+ /**
59
+ * Find extensions that need registry sync
60
+ */
61
+ findStaleExtensions(tenantId: string, maxAge: number): Promise<AsDomainType<IInstalledExtensionModel>[]>;
62
+ /**
63
+ * Update registry status for multiple extensions
64
+ */
65
+ syncRegistryStatus(updates: Array<{
66
+ orgId: string;
67
+ extensionId: string;
68
+ registryStatus: string;
69
+ latestVersion?: string;
70
+ isOrphaned: boolean;
71
+ }>): Promise<void>;
72
+ }
73
+ //# sourceMappingURL=installed-extension-repository.d.ts.map
@@ -0,0 +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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"}