@adminide-stack/marketplace-module-server 12.0.4-alpha.4 → 12.0.4-alpha.402

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +289 -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 +309 -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 +485 -0
  94. package/lib/services/installed-extension-service-ext.js.map +1 -0
  95. package/lib/services/installed-extension-service.d.ts +96 -0
  96. package/lib/services/installed-extension-service.d.ts.map +1 -0
  97. package/lib/services/installed-extension-service.js +521 -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 +181 -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,176 @@
1
+ import {PublisherOrderBy}from'common/server';const publisherResolver = (pubsub, logger) => ({
2
+ Query: {
3
+ async publisherStats(root, args, {
4
+ marketplacePublisherService
5
+ }) {
6
+ if (logger) {
7
+ logger.debug('publisherStats query with args [%j]', args);
8
+ }
9
+ const stats = await marketplacePublisherService.getPublisherStats(args.publisherId);
10
+ // Cast service result to GraphQL interface - field resolvers will handle computed fields
11
+ return stats;
12
+ },
13
+ async publishers(root, args, {
14
+ marketplacePublisherService
15
+ }) {
16
+ if (logger) {
17
+ logger.debug('publishers query with args [%j]', args);
18
+ }
19
+ const {
20
+ first = 20,
21
+ skip = 0,
22
+ search,
23
+ orderBy = PublisherOrderBy.CreatedDesc
24
+ } = args;
25
+ // Note: verified filtering not implemented yet in service layer
26
+ // Convert GraphQL orderBy enum to service format
27
+ const serviceOrderBy = orderBy === PublisherOrderBy.CreatedDesc ? 'createdAt' : 'createdAt';
28
+ const serviceOrderDirection = orderBy === PublisherOrderBy.CreatedDesc ? 'DESC' : 'ASC';
29
+ try {
30
+ const result = await marketplacePublisherService.findPublishers(search, serviceOrderBy, serviceOrderDirection, first, skip);
31
+ return {
32
+ nodes: result.publishers,
33
+ totalCount: result.totalCount,
34
+ hasNextPage: skip + first < result.totalCount,
35
+ hasPreviousPage: skip > 0
36
+ };
37
+ } catch (error) {
38
+ if (logger) {
39
+ logger.error('publishers query error: %s', error.message);
40
+ }
41
+ // Return empty result instead of null to satisfy non-nullable schema
42
+ return {
43
+ nodes: [],
44
+ totalCount: 0,
45
+ hasNextPage: false,
46
+ hasPreviousPage: false
47
+ };
48
+ }
49
+ },
50
+ async publisher(root, args, {
51
+ marketplacePublisherService
52
+ }) {
53
+ if (logger) {
54
+ logger.debug('publisher query with args [%j]', args);
55
+ }
56
+ try {
57
+ const publisher = await marketplacePublisherService.findByPublisherName(args.name);
58
+ return publisher;
59
+ } catch (error) {
60
+ if (logger) {
61
+ logger.error('publisher query error: %s', error.message);
62
+ }
63
+ return null;
64
+ }
65
+ }
66
+ },
67
+ Mutation: {
68
+ async createPublisherMutation(root, args, {
69
+ marketplacePublisherService
70
+ }) {
71
+ if (logger) {
72
+ logger.debug('createPublisherMutation with args [%j]', args);
73
+ }
74
+ try {
75
+ const publisher = await marketplacePublisherService.createPublisher(args.input);
76
+ return {
77
+ publisher: publisher,
78
+ success: true,
79
+ error: null
80
+ };
81
+ } catch (error) {
82
+ if (logger) {
83
+ logger.error('createPublisherMutation error: %s', error.message);
84
+ }
85
+ return {
86
+ publisher: null,
87
+ success: false,
88
+ error: error.message
89
+ };
90
+ }
91
+ },
92
+ async updatePublisherMutation(root, args, {
93
+ marketplacePublisherService
94
+ }) {
95
+ if (logger) {
96
+ logger.debug('updatePublisherMutation with args [%j]', args);
97
+ }
98
+ try {
99
+ const publisher = await marketplacePublisherService.updatePublisher(args.id, args.input);
100
+ return {
101
+ publisher: publisher ? publisher : null,
102
+ success: true,
103
+ error: null
104
+ };
105
+ } catch (error) {
106
+ if (logger) {
107
+ logger.error('updatePublisherMutation error: %s', error.message);
108
+ }
109
+ return {
110
+ publisher: null,
111
+ success: false,
112
+ error: error.message
113
+ };
114
+ }
115
+ },
116
+ async verifyPublisherMutation(root, args, {
117
+ marketplacePublisherService
118
+ }) {
119
+ if (logger) {
120
+ logger.debug('verifyPublisherMutation with args [%j]', args);
121
+ }
122
+ try {
123
+ const publisher = await marketplacePublisherService.verifyPublisher(args.id);
124
+ return {
125
+ publisher: publisher ? publisher : null,
126
+ success: true,
127
+ error: null
128
+ };
129
+ } catch (error) {
130
+ if (logger) {
131
+ logger.error('verifyPublisherMutation error: %s', error.message);
132
+ }
133
+ return {
134
+ publisher: null,
135
+ success: false,
136
+ error: error.message
137
+ };
138
+ }
139
+ }
140
+ },
141
+ ExtensionRegistry: {
142
+ // Publisher-related queries are now in root Query section
143
+ },
144
+ MarketplacePublisher: {
145
+ extensionCount: root => root.extensionCount || 0,
146
+ totalDownloads: root => root.totalDownloads || 0,
147
+ viewerCanManage: () => false,
148
+ // TODO: Implement proper authorization logic
149
+ // Analytics computed from time series collection
150
+ async stats(root, args, {
151
+ publisherEventService
152
+ }) {
153
+ if (logger) {
154
+ logger.debug('Computing publisher stats for publisherId [%s]', root.id);
155
+ }
156
+ return publisherEventService.getPublisherStats(root.id);
157
+ },
158
+ async analytics(root, args, {
159
+ publisherEventService
160
+ }) {
161
+ if (logger) {
162
+ logger.debug('Computing publisher analytics for publisherId [%s], period [%s - %s]', root.id, args.startDate, args.endDate);
163
+ }
164
+ return publisherEventService.getPublisherAnalytics(root.id, new Date(args.startDate), new Date(args.endDate), args.granularity);
165
+ },
166
+ async trends(root, args, {
167
+ publisherEventService
168
+ }) {
169
+ if (logger) {
170
+ logger.debug('Computing publisher trends for publisherId [%s], days [%d]', root.id, args.days);
171
+ }
172
+ const result = await publisherEventService.getPublisherTrends(root.id, args.days);
173
+ return result;
174
+ }
175
+ }
176
+ });export{publisherResolver};//# sourceMappingURL=publisher-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher-resolver.js","sources":["../../../src/graphql/resolvers/publisher-resolver.ts"],"sourcesContent":[null],"names":[],"mappings":"6CACS,MAAA,mCAAoC,MAAA;AAC7C,EAAA,KAAO,EACH;AAOJ,IAAA,MAAA,cAAa,CAAA,IAAA,EAAA,IAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,5 @@
1
+ import { PubSub } from 'graphql-subscriptions';
2
+ import { CdmLogger } from '@cdm-logger/core';
3
+ import { IResolvers } from 'common/server';
4
+ export declare const resolver: (pubsub: PubSub, logger?: CdmLogger.ILogger) => IResolvers;
5
+ //# sourceMappingURL=registry-extension-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-extension-resolver.d.ts","sourceRoot":"","sources":["../../../src/graphql/resolvers/registry-extension-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAsB,UAAU,EAAE,MAAM,eAAe,CAAC;AAE/D,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,SAAS,SAAS,CAAC,OAAO,KAAG,UAsDpE,CAAC"}
@@ -0,0 +1,46 @@
1
+ const resolver = (pubsub, logger) => ({
2
+ RegistryExtension: {
3
+ // Resolve manifest from the current release
4
+ manifest: root => {
5
+ if (!root.releases || root.releases.length === 0) {
6
+ return null;
7
+ }
8
+ // Find the current release that matches the extension's version
9
+ const currentRelease = root.releases.find(release => release.version === root.version);
10
+ if (!currentRelease || !currentRelease.manifest) {
11
+ return null;
12
+ }
13
+ try {
14
+ // Parse the manifest from the release (stored as JSON string)
15
+ const parsedManifest = typeof currentRelease.manifest === 'string' ? JSON.parse(currentRelease.manifest) : currentRelease.manifest;
16
+ return {
17
+ ...parsedManifest,
18
+ raw: currentRelease.manifest // Keep the original raw JSON for backwards compatibility
19
+ };
20
+ } catch (error) {
21
+ logger?.warn('Failed to parse extension manifest for', root.extensionSlug, ':', error);
22
+ // Fallback to raw string format for backwards compatibility
23
+ return {
24
+ raw: currentRelease.manifest
25
+ };
26
+ }
27
+ },
28
+ // Resolve releases
29
+ releases: root => root.releases || [],
30
+ // Resolve the current version directly from the extension
31
+ version: root => root.version || null,
32
+ // Resolve publisher
33
+ publisher: (root, args, ctx) => {
34
+ if (!root.publisher) {
35
+ return null;
36
+ }
37
+ // For now, return a basic publisher object - this should be replaced with proper dataloader
38
+ return {
39
+ id: String(root.publisher),
40
+ name: 'Publisher Name',
41
+ // This should come from the actual publisher data
42
+ __typename: 'RegistryPublisher'
43
+ };
44
+ }
45
+ }
46
+ });export{resolver};//# sourceMappingURL=registry-extension-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-extension-resolver.js","sources":["../../../src/graphql/resolvers/registry-extension-resolver.ts"],"sourcesContent":[null],"names":[],"mappings":"AAES,MAAA,QAAQ;AACjB,EAAA,iBAAkB,EAAE;AACpB;AAEA,IAAA,QAAA,EAAA,IAAO,IAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}