@shdan/submesh 0.1.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 (230) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -0
  3. package/dist/contracts.d.ts +191 -0
  4. package/dist/contracts.d.ts.map +1 -0
  5. package/dist/contracts.js +2 -0
  6. package/dist/contracts.js.map +1 -0
  7. package/dist/drizzle/catalog-mapping-repository.d.ts +280 -0
  8. package/dist/drizzle/catalog-mapping-repository.d.ts.map +1 -0
  9. package/dist/drizzle/catalog-mapping-repository.js +62 -0
  10. package/dist/drizzle/catalog-mapping-repository.js.map +1 -0
  11. package/dist/drizzle/ensure-schema.d.ts +3 -0
  12. package/dist/drizzle/ensure-schema.d.ts.map +1 -0
  13. package/dist/drizzle/ensure-schema.js +100 -0
  14. package/dist/drizzle/ensure-schema.js.map +1 -0
  15. package/dist/drizzle/inbound-event-repository.d.ts +960 -0
  16. package/dist/drizzle/inbound-event-repository.d.ts.map +1 -0
  17. package/dist/drizzle/inbound-event-repository.js +148 -0
  18. package/dist/drizzle/inbound-event-repository.js.map +1 -0
  19. package/dist/drizzle/index.d.ts +40 -0
  20. package/dist/drizzle/index.d.ts.map +1 -0
  21. package/dist/drizzle/index.js +57 -0
  22. package/dist/drizzle/index.js.map +1 -0
  23. package/dist/drizzle/migrate.d.ts +11 -0
  24. package/dist/drizzle/migrate.d.ts.map +1 -0
  25. package/dist/drizzle/migrate.js +22 -0
  26. package/dist/drizzle/migrate.js.map +1 -0
  27. package/dist/drizzle/plan-repository.d.ts +497 -0
  28. package/dist/drizzle/plan-repository.d.ts.map +1 -0
  29. package/dist/drizzle/plan-repository.js +70 -0
  30. package/dist/drizzle/plan-repository.js.map +1 -0
  31. package/dist/drizzle/plugin-installation-repository.d.ts +26 -0
  32. package/dist/drizzle/plugin-installation-repository.d.ts.map +1 -0
  33. package/dist/drizzle/plugin-installation-repository.js +71 -0
  34. package/dist/drizzle/plugin-installation-repository.js.map +1 -0
  35. package/dist/drizzle/repository-set.d.ts +4 -0
  36. package/dist/drizzle/repository-set.d.ts.map +1 -0
  37. package/dist/drizzle/repository-set.js +19 -0
  38. package/dist/drizzle/repository-set.js.map +1 -0
  39. package/dist/drizzle/schema.d.ts +2370 -0
  40. package/dist/drizzle/schema.d.ts.map +1 -0
  41. package/dist/drizzle/schema.js +103 -0
  42. package/dist/drizzle/schema.js.map +1 -0
  43. package/dist/drizzle/subject-repository.d.ts +295 -0
  44. package/dist/drizzle/subject-repository.d.ts.map +1 -0
  45. package/dist/drizzle/subject-repository.js +76 -0
  46. package/dist/drizzle/subject-repository.js.map +1 -0
  47. package/dist/drizzle/subscription-repository.d.ts +60 -0
  48. package/dist/drizzle/subscription-repository.d.ts.map +1 -0
  49. package/dist/drizzle/subscription-repository.js +128 -0
  50. package/dist/drizzle/subscription-repository.js.map +1 -0
  51. package/dist/drizzle/summary-repository.d.ts +9 -0
  52. package/dist/drizzle/summary-repository.d.ts.map +1 -0
  53. package/dist/drizzle/summary-repository.js +25 -0
  54. package/dist/drizzle/summary-repository.js.map +1 -0
  55. package/dist/drizzle/types.d.ts +4 -0
  56. package/dist/drizzle/types.d.ts.map +1 -0
  57. package/dist/drizzle/types.js +2 -0
  58. package/dist/drizzle/types.js.map +1 -0
  59. package/dist/errors.d.ts +10 -0
  60. package/dist/errors.d.ts.map +1 -0
  61. package/dist/errors.js +13 -0
  62. package/dist/errors.js.map +1 -0
  63. package/dist/hooks.d.ts +24 -0
  64. package/dist/hooks.d.ts.map +1 -0
  65. package/dist/hooks.js +2 -0
  66. package/dist/hooks.js.map +1 -0
  67. package/dist/index.d.ts +11 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +9 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/logger.d.ts +16 -0
  72. package/dist/logger.d.ts.map +1 -0
  73. package/dist/logger.js +8 -0
  74. package/dist/logger.js.map +1 -0
  75. package/dist/plugins/builtin-plugins.d.ts +3 -0
  76. package/dist/plugins/builtin-plugins.d.ts.map +1 -0
  77. package/dist/plugins/builtin-plugins.js +7 -0
  78. package/dist/plugins/builtin-plugins.js.map +1 -0
  79. package/dist/plugins/hash-payload.d.ts +2 -0
  80. package/dist/plugins/hash-payload.d.ts.map +1 -0
  81. package/dist/plugins/hash-payload.js +5 -0
  82. package/dist/plugins/hash-payload.js.map +1 -0
  83. package/dist/plugins/manual.d.ts +12 -0
  84. package/dist/plugins/manual.d.ts.map +1 -0
  85. package/dist/plugins/manual.js +87 -0
  86. package/dist/plugins/manual.js.map +1 -0
  87. package/dist/plugins/plan-provisioning.d.ts +18 -0
  88. package/dist/plugins/plan-provisioning.d.ts.map +1 -0
  89. package/dist/plugins/plan-provisioning.js +159 -0
  90. package/dist/plugins/plan-provisioning.js.map +1 -0
  91. package/dist/plugins/plugin-registry.d.ts +9 -0
  92. package/dist/plugins/plugin-registry.d.ts.map +1 -0
  93. package/dist/plugins/plugin-registry.js +18 -0
  94. package/dist/plugins/plugin-registry.js.map +1 -0
  95. package/dist/providers/apple/plugin/app-store-plan-sync.d.ts +4 -0
  96. package/dist/providers/apple/plugin/app-store-plan-sync.d.ts.map +1 -0
  97. package/dist/providers/apple/plugin/app-store-plan-sync.js +85 -0
  98. package/dist/providers/apple/plugin/app-store-plan-sync.js.map +1 -0
  99. package/dist/providers/apple/plugin/app-store.d.ts +20 -0
  100. package/dist/providers/apple/plugin/app-store.d.ts.map +1 -0
  101. package/dist/providers/apple/plugin/app-store.js +397 -0
  102. package/dist/providers/apple/plugin/app-store.js.map +1 -0
  103. package/dist/providers/apple/security/app-store-verification.d.ts +4 -0
  104. package/dist/providers/apple/security/app-store-verification.d.ts.map +1 -0
  105. package/dist/providers/apple/security/app-store-verification.js +100 -0
  106. package/dist/providers/apple/security/app-store-verification.js.map +1 -0
  107. package/dist/providers/apple/services/app-store-subscription-verification-service.d.ts +3 -0
  108. package/dist/providers/apple/services/app-store-subscription-verification-service.d.ts.map +1 -0
  109. package/dist/providers/apple/services/app-store-subscription-verification-service.js +155 -0
  110. package/dist/providers/apple/services/app-store-subscription-verification-service.js.map +1 -0
  111. package/dist/providers/google/plugin/play-plan-sync.d.ts +4 -0
  112. package/dist/providers/google/plugin/play-plan-sync.d.ts.map +1 -0
  113. package/dist/providers/google/plugin/play-plan-sync.js +270 -0
  114. package/dist/providers/google/plugin/play-plan-sync.js.map +1 -0
  115. package/dist/providers/google/plugin/play.d.ts +20 -0
  116. package/dist/providers/google/plugin/play.d.ts.map +1 -0
  117. package/dist/providers/google/plugin/play.js +460 -0
  118. package/dist/providers/google/plugin/play.js.map +1 -0
  119. package/dist/providers/google/security/oauth.d.ts +10 -0
  120. package/dist/providers/google/security/oauth.d.ts.map +1 -0
  121. package/dist/providers/google/security/oauth.js +116 -0
  122. package/dist/providers/google/security/oauth.js.map +1 -0
  123. package/dist/providers/google/security/pubsub-verification.d.ts +3 -0
  124. package/dist/providers/google/security/pubsub-verification.d.ts.map +1 -0
  125. package/dist/providers/google/security/pubsub-verification.js +229 -0
  126. package/dist/providers/google/security/pubsub-verification.js.map +1 -0
  127. package/dist/providers/google/services/play-subscription-verification-service.d.ts +3 -0
  128. package/dist/providers/google/services/play-subscription-verification-service.d.ts.map +1 -0
  129. package/dist/providers/google/services/play-subscription-verification-service.js +96 -0
  130. package/dist/providers/google/services/play-subscription-verification-service.js.map +1 -0
  131. package/dist/repositories/catalog-mapping-repository.d.ts +9 -0
  132. package/dist/repositories/catalog-mapping-repository.d.ts.map +1 -0
  133. package/dist/repositories/catalog-mapping-repository.js +2 -0
  134. package/dist/repositories/catalog-mapping-repository.js.map +1 -0
  135. package/dist/repositories/inbound-event-repository.d.ts +23 -0
  136. package/dist/repositories/inbound-event-repository.d.ts.map +1 -0
  137. package/dist/repositories/inbound-event-repository.js +2 -0
  138. package/dist/repositories/inbound-event-repository.js.map +1 -0
  139. package/dist/repositories/index.d.ts +30 -0
  140. package/dist/repositories/index.d.ts.map +1 -0
  141. package/dist/repositories/index.js +2 -0
  142. package/dist/repositories/index.js.map +1 -0
  143. package/dist/repositories/plan-repository.d.ts +10 -0
  144. package/dist/repositories/plan-repository.d.ts.map +1 -0
  145. package/dist/repositories/plan-repository.js +2 -0
  146. package/dist/repositories/plan-repository.js.map +1 -0
  147. package/dist/repositories/plugin-installation-repository.d.ts +13 -0
  148. package/dist/repositories/plugin-installation-repository.d.ts.map +1 -0
  149. package/dist/repositories/plugin-installation-repository.js +2 -0
  150. package/dist/repositories/plugin-installation-repository.js.map +1 -0
  151. package/dist/repositories/subject-repository.d.ts +10 -0
  152. package/dist/repositories/subject-repository.d.ts.map +1 -0
  153. package/dist/repositories/subject-repository.js +2 -0
  154. package/dist/repositories/subject-repository.js.map +1 -0
  155. package/dist/repositories/subscription-repository.d.ts +24 -0
  156. package/dist/repositories/subscription-repository.d.ts.map +1 -0
  157. package/dist/repositories/subscription-repository.js +2 -0
  158. package/dist/repositories/subscription-repository.js.map +1 -0
  159. package/dist/security/jwt.d.ts +22 -0
  160. package/dist/security/jwt.d.ts.map +1 -0
  161. package/dist/security/jwt.js +132 -0
  162. package/dist/security/jwt.js.map +1 -0
  163. package/dist/security/plugin-webhook-verification.d.ts +3 -0
  164. package/dist/security/plugin-webhook-verification.d.ts.map +1 -0
  165. package/dist/security/plugin-webhook-verification.js +44 -0
  166. package/dist/security/plugin-webhook-verification.js.map +1 -0
  167. package/dist/security/relay-signature.d.ts +12 -0
  168. package/dist/security/relay-signature.d.ts.map +1 -0
  169. package/dist/security/relay-signature.js +39 -0
  170. package/dist/security/relay-signature.js.map +1 -0
  171. package/dist/services/canonical-subscription-service.d.ts +4 -0
  172. package/dist/services/canonical-subscription-service.d.ts.map +1 -0
  173. package/dist/services/canonical-subscription-service.js +20 -0
  174. package/dist/services/canonical-subscription-service.js.map +1 -0
  175. package/dist/services/managed-subscription-service.d.ts +5 -0
  176. package/dist/services/managed-subscription-service.d.ts.map +1 -0
  177. package/dist/services/managed-subscription-service.js +24 -0
  178. package/dist/services/managed-subscription-service.js.map +1 -0
  179. package/dist/services/plan-provisioning-service.d.ts +5 -0
  180. package/dist/services/plan-provisioning-service.d.ts.map +1 -0
  181. package/dist/services/plan-provisioning-service.js +100 -0
  182. package/dist/services/plan-provisioning-service.js.map +1 -0
  183. package/dist/services/plan-resolution.d.ts +4 -0
  184. package/dist/services/plan-resolution.d.ts.map +1 -0
  185. package/dist/services/plan-resolution.js +33 -0
  186. package/dist/services/plan-resolution.js.map +1 -0
  187. package/dist/services/plugin-installation-service.d.ts +6 -0
  188. package/dist/services/plugin-installation-service.d.ts.map +1 -0
  189. package/dist/services/plugin-installation-service.js +19 -0
  190. package/dist/services/plugin-installation-service.js.map +1 -0
  191. package/dist/services/provider-subscription-sync-service.d.ts +4 -0
  192. package/dist/services/provider-subscription-sync-service.d.ts.map +1 -0
  193. package/dist/services/provider-subscription-sync-service.js +13 -0
  194. package/dist/services/provider-subscription-sync-service.js.map +1 -0
  195. package/dist/services/subject-resolution.d.ts +4 -0
  196. package/dist/services/subject-resolution.d.ts.map +1 -0
  197. package/dist/services/subject-resolution.js +48 -0
  198. package/dist/services/subject-resolution.js.map +1 -0
  199. package/dist/services/webhook-ingestion-service.d.ts +14 -0
  200. package/dist/services/webhook-ingestion-service.d.ts.map +1 -0
  201. package/dist/services/webhook-ingestion-service.js +149 -0
  202. package/dist/services/webhook-ingestion-service.js.map +1 -0
  203. package/dist/submesh.d.ts +265 -0
  204. package/dist/submesh.d.ts.map +1 -0
  205. package/dist/submesh.js +602 -0
  206. package/dist/submesh.js.map +1 -0
  207. package/dist/utils/canonical.d.ts +7 -0
  208. package/dist/utils/canonical.d.ts.map +1 -0
  209. package/dist/utils/canonical.js +8 -0
  210. package/dist/utils/canonical.js.map +1 -0
  211. package/dist/utils/parse.d.ts +42 -0
  212. package/dist/utils/parse.d.ts.map +1 -0
  213. package/dist/utils/parse.js +74 -0
  214. package/dist/utils/parse.js.map +1 -0
  215. package/dist/utils/records.d.ts +2 -0
  216. package/dist/utils/records.d.ts.map +1 -0
  217. package/dist/utils/records.js +7 -0
  218. package/dist/utils/records.js.map +1 -0
  219. package/dist/utils/time.d.ts +2 -0
  220. package/dist/utils/time.d.ts.map +1 -0
  221. package/dist/utils/time.js +4 -0
  222. package/dist/utils/time.js.map +1 -0
  223. package/dist/utils/validation.d.ts +10 -0
  224. package/dist/utils/validation.d.ts.map +1 -0
  225. package/dist/utils/validation.js +19 -0
  226. package/dist/utils/validation.js.map +1 -0
  227. package/drizzle/0000_cute_the_order.sql +94 -0
  228. package/drizzle/meta/0000_snapshot.json +559 -0
  229. package/drizzle/meta/_journal.json +13 -0
  230. package/package.json +54 -0
@@ -0,0 +1,159 @@
1
+ function asObject(value) {
2
+ return value && typeof value === "object" && !Array.isArray(value)
3
+ ? value
4
+ : {};
5
+ }
6
+ function getString(value) {
7
+ return typeof value === "string" && value.length > 0 ? value : undefined;
8
+ }
9
+ function getBoolean(value) {
10
+ return typeof value === "boolean" ? value : undefined;
11
+ }
12
+ function buildRelayHeaders(planSync, providerMetadata) {
13
+ const headerName = getString(planSync.authHeaderName) ??
14
+ getString(providerMetadata.authHeaderName) ??
15
+ "authorization";
16
+ const authToken = getString(providerMetadata.authToken) ?? getString(planSync.authToken);
17
+ const headers = {
18
+ "content-type": "application/json",
19
+ };
20
+ if (authToken) {
21
+ headers[headerName] =
22
+ headerName.toLowerCase() === "authorization" && !authToken.startsWith("Bearer ")
23
+ ? `Bearer ${authToken}`
24
+ : authToken;
25
+ }
26
+ return headers;
27
+ }
28
+ export function getPluginPlanMetadata(metadata, pluginKey, aliases = []) {
29
+ const source = asObject(metadata);
30
+ const grouped = {
31
+ ...asObject(source.providers),
32
+ ...asObject(source.providerConfig),
33
+ ...asObject(source.storeProviders),
34
+ };
35
+ const directMatch = grouped[pluginKey];
36
+ if (directMatch && typeof directMatch === "object" && !Array.isArray(directMatch)) {
37
+ return directMatch;
38
+ }
39
+ for (const alias of aliases) {
40
+ const groupedAlias = grouped[alias];
41
+ if (groupedAlias &&
42
+ typeof groupedAlias === "object" &&
43
+ !Array.isArray(groupedAlias)) {
44
+ return groupedAlias;
45
+ }
46
+ }
47
+ const topLevelKeys = [pluginKey, ...aliases];
48
+ for (const key of topLevelKeys) {
49
+ const candidate = source[key];
50
+ if (candidate && typeof candidate === "object" && !Array.isArray(candidate)) {
51
+ return candidate;
52
+ }
53
+ }
54
+ return {};
55
+ }
56
+ export function shouldProvisionPlan(installationConfig, providerMetadata) {
57
+ const planSync = asObject(installationConfig.planSync);
58
+ if (getBoolean(planSync.enabled) !== true) {
59
+ return false;
60
+ }
61
+ if (getBoolean(providerMetadata.enabled) === false) {
62
+ return false;
63
+ }
64
+ return (getBoolean(providerMetadata.enabled) === true ||
65
+ getBoolean(planSync.autoProvisionAllPlans) === true);
66
+ }
67
+ export function normalizeProductId(value, fallback = "plan", maxLength = 100) {
68
+ const normalized = value
69
+ .toLowerCase()
70
+ .replace(/[^a-z0-9._-]+/g, "_")
71
+ .replace(/^[^a-z0-9]+/, "")
72
+ .replace(/_+/g, "_")
73
+ .replace(/\.+/g, ".")
74
+ .replace(/^-+/, "")
75
+ .replace(/_+$/, "")
76
+ .slice(0, maxLength);
77
+ return normalized.length > 0 ? normalized : fallback;
78
+ }
79
+ export async function relayProvisionPlan(input) {
80
+ const planSync = asObject(input.installationConfig.planSync);
81
+ const endpointUrl = getString(input.providerMetadata.endpointUrl) ?? getString(planSync.endpointUrl);
82
+ if (!endpointUrl) {
83
+ throw new Error(`Plan provisioning for ${input.pluginKey} requires planSync.endpointUrl.`);
84
+ }
85
+ const headers = buildRelayHeaders(planSync, input.providerMetadata);
86
+ const response = await fetch(endpointUrl, {
87
+ method: "POST",
88
+ headers,
89
+ body: JSON.stringify({
90
+ provider: input.pluginKey,
91
+ plan: input.plan,
92
+ providerConfig: input.providerMetadata,
93
+ installationConfig: planSync,
94
+ }),
95
+ });
96
+ if (!response.ok) {
97
+ throw new Error(`Plan provisioning endpoint for ${input.pluginKey} returned ${response.status}.`);
98
+ }
99
+ const body = asObject(await response.json());
100
+ const mappings = Array.isArray(body.mappings)
101
+ ? body.mappings
102
+ .filter((entry) => Boolean(entry) && typeof entry === "object" && !Array.isArray(entry))
103
+ .map((entry) => {
104
+ const externalProductId = getString(entry.externalProductId);
105
+ if (!externalProductId) {
106
+ throw new Error(`Plan provisioning endpoint for ${input.pluginKey} returned a mapping without externalProductId.`);
107
+ }
108
+ return {
109
+ externalProductId,
110
+ metadata: asObject(entry.metadata),
111
+ };
112
+ })
113
+ : [];
114
+ const singleExternalProductId = getString(body.externalProductId);
115
+ if (mappings.length === 0 && singleExternalProductId) {
116
+ mappings.push({
117
+ externalProductId: singleExternalProductId,
118
+ metadata: asObject(body.mappingMetadata),
119
+ });
120
+ }
121
+ if (mappings.length === 0) {
122
+ throw new Error(`Plan provisioning endpoint for ${input.pluginKey} did not return any external product IDs.`);
123
+ }
124
+ return {
125
+ mappings,
126
+ metadata: asObject(body.metadata),
127
+ };
128
+ }
129
+ export async function relayDeprovisionPlan(input) {
130
+ const planSync = asObject(input.installationConfig.planSync);
131
+ const endpointUrl = getString(input.providerMetadata.deprovisionEndpointUrl) ??
132
+ getString(planSync.deprovisionEndpointUrl) ??
133
+ getString(input.providerMetadata.endpointUrl) ??
134
+ getString(planSync.endpointUrl);
135
+ if (!endpointUrl) {
136
+ return;
137
+ }
138
+ const method = (getString(input.providerMetadata.deprovisionHttpMethod) ??
139
+ getString(planSync.deprovisionHttpMethod) ??
140
+ "POST").toUpperCase();
141
+ const headers = buildRelayHeaders(planSync, input.providerMetadata);
142
+ const response = await fetch(endpointUrl, {
143
+ method,
144
+ headers,
145
+ body: JSON.stringify({
146
+ action: "deprovision",
147
+ provider: input.pluginKey,
148
+ plan: input.plan,
149
+ providerConfig: input.providerMetadata,
150
+ installationConfig: planSync,
151
+ result: input.result,
152
+ provisionResult: input.result,
153
+ }),
154
+ });
155
+ if (!response.ok && response.status !== 404) {
156
+ throw new Error(`Plan deprovisioning endpoint for ${input.pluginKey} returned ${response.status}.`);
157
+ }
158
+ }
159
+ //# sourceMappingURL=plan-provisioning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-provisioning.js","sourceRoot":"","sources":["../../src/plugins/plan-provisioning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { PluginInstallation, SubscriptionPlugin } from "@shdan/submesh-core";
2
+ import type { PluginListItem } from "../contracts.js";
3
+ export declare class PluginRegistry {
4
+ private readonly plugins;
5
+ register(plugin: SubscriptionPlugin): void;
6
+ get(pluginKey: string): SubscriptionPlugin | undefined;
7
+ list(installations: PluginInstallation[]): PluginListItem[];
8
+ }
9
+ //# sourceMappingURL=plugin-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../../src/plugins/plugin-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAElF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IAEjE,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAI1C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAItD,IAAI,CAAC,aAAa,EAAE,kBAAkB,EAAE,GAAG,cAAc,EAAE;CAU5D"}
@@ -0,0 +1,18 @@
1
+ export class PluginRegistry {
2
+ plugins = new Map();
3
+ register(plugin) {
4
+ this.plugins.set(plugin.key, plugin);
5
+ }
6
+ get(pluginKey) {
7
+ return this.plugins.get(pluginKey);
8
+ }
9
+ list(installations) {
10
+ return [...this.plugins.values()]
11
+ .sort((left, right) => left.key.localeCompare(right.key))
12
+ .map((plugin) => ({
13
+ plugin,
14
+ installation: installations.find((installation) => installation.pluginKey === plugin.key),
15
+ }));
16
+ }
17
+ }
18
+ //# sourceMappingURL=plugin-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-registry.js","sourceRoot":"","sources":["../../src/plugins/plugin-registry.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,cAAc;IACR,OAAO,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEjE,QAAQ,CAAC,MAA0B;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,aAAmC;QACtC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;aAC9B,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACxD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAChB,MAAM;YACN,YAAY,EAAE,aAAa,CAAC,IAAI,CAC9B,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,KAAK,MAAM,CAAC,GAAG,CACxD;SACF,CAAC,CAAC,CAAC;IACR,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import type { PlanProvisioningInput, PluginPlanProvisionResult } from "@shdan/submesh-core";
2
+ export declare function provisionAppleAppStorePlan(plan: PlanProvisioningInput, config: Record<string, unknown>): Promise<PluginPlanProvisionResult>;
3
+ export declare function deprovisionAppleAppStorePlan(plan: PlanProvisioningInput, config: Record<string, unknown>, result: PluginPlanProvisionResult): Promise<void>;
4
+ //# sourceMappingURL=app-store-plan-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-store-plan-sync.d.ts","sourceRoot":"","sources":["../../../../src/providers/apple/plugin/app-store-plan-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AA6C7B,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CA4CpC;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -0,0 +1,85 @@
1
+ import { getPluginPlanMetadata, relayDeprovisionPlan, relayProvisionPlan, shouldProvisionPlan, } from "../../../plugins/plan-provisioning.js";
2
+ function asObject(value) {
3
+ return value && typeof value === "object" && !Array.isArray(value)
4
+ ? value
5
+ : {};
6
+ }
7
+ function getString(value) {
8
+ return typeof value === "string" && value.length > 0 ? value : undefined;
9
+ }
10
+ function withRelayStrategy(result) {
11
+ return {
12
+ mappings: result.mappings.map((mapping) => {
13
+ const metadata = asObject(mapping.metadata);
14
+ return {
15
+ ...mapping,
16
+ metadata: {
17
+ ...metadata,
18
+ strategy: getString(metadata.strategy) ?? "relay-http",
19
+ },
20
+ };
21
+ }),
22
+ metadata: {
23
+ ...asObject(result.metadata),
24
+ strategy: getString(asObject(result.metadata).strategy) ?? "relay-http",
25
+ },
26
+ };
27
+ }
28
+ function shouldRelayDeprovision(result) {
29
+ return result.mappings.some((mapping) => {
30
+ const strategy = getString(asObject(mapping.metadata).strategy);
31
+ return strategy === "relay-http";
32
+ });
33
+ }
34
+ export async function provisionAppleAppStorePlan(plan, config) {
35
+ const providerMetadata = getPluginPlanMetadata(plan.metadata, "apple-app-store", [
36
+ "appleAppStore",
37
+ "appStore",
38
+ ]);
39
+ if (!shouldProvisionPlan(config, providerMetadata)) {
40
+ return { mappings: [] };
41
+ }
42
+ const endpointUrl = getString(providerMetadata.endpointUrl) ??
43
+ getString(config.planSync?.endpointUrl);
44
+ if (endpointUrl) {
45
+ return withRelayStrategy(await relayProvisionPlan({
46
+ pluginKey: "apple-app-store",
47
+ plan,
48
+ installationConfig: config,
49
+ providerMetadata,
50
+ }));
51
+ }
52
+ const externalProductId = getString(providerMetadata.externalProductId);
53
+ if (externalProductId) {
54
+ return {
55
+ mappings: [
56
+ {
57
+ externalProductId,
58
+ metadata: {
59
+ strategy: "mapping-only",
60
+ },
61
+ },
62
+ ],
63
+ metadata: {
64
+ strategy: "mapping-only",
65
+ },
66
+ };
67
+ }
68
+ throw new Error("Apple App Store plan provisioning requires either metadata.providers['apple-app-store'].externalProductId or planSync.endpointUrl.");
69
+ }
70
+ export async function deprovisionAppleAppStorePlan(plan, config, result) {
71
+ if (!shouldRelayDeprovision(result)) {
72
+ return;
73
+ }
74
+ await relayDeprovisionPlan({
75
+ pluginKey: "apple-app-store",
76
+ plan,
77
+ installationConfig: config,
78
+ providerMetadata: getPluginPlanMetadata(plan.metadata, "apple-app-store", [
79
+ "appleAppStore",
80
+ "appStore",
81
+ ]),
82
+ result,
83
+ });
84
+ }
85
+ //# sourceMappingURL=app-store-plan-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-store-plan-sync.js","sourceRoot":"","sources":["../../../../src/providers/apple/plugin/app-store-plan-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ParsedWebhookEvent } from "@shdan/submesh-core";
2
+ import type { AppleAppStorePluginConfig } from "../../../contracts.js";
3
+ export declare const appleAppStorePlugin: {
4
+ key: string;
5
+ displayName: string;
6
+ description: string;
7
+ capabilities: string[];
8
+ provisionPlan(input: import("@shdan/submesh-core").PlanProvisioningInput, context: {
9
+ config: AppleAppStorePluginConfig;
10
+ }): Promise<import("@shdan/submesh-core").PluginPlanProvisionResult>;
11
+ deprovisionPlan(input: import("@shdan/submesh-core").PlanProvisioningInput, context: {
12
+ config: AppleAppStorePluginConfig;
13
+ result: import("@shdan/submesh-core").PluginPlanProvisionResult;
14
+ }): Promise<void>;
15
+ verifyWebhook(envelope: import("@shdan/submesh-core").PluginWebhookEnvelope, context: {
16
+ config: AppleAppStorePluginConfig;
17
+ }): Promise<import("@shdan/submesh-core").PluginWebhookVerification>;
18
+ parseWebhook(envelope: import("@shdan/submesh-core").PluginWebhookEnvelope): Promise<ParsedWebhookEvent>;
19
+ };
20
+ //# sourceMappingURL=app-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-store.d.ts","sourceRoot":"","sources":["../../../../src/providers/apple/plugin/app-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAkevE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;CA4ByB,CAAC"}