@xapps-platform/backend-kit 0.1.1

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 (142) hide show
  1. package/README.md +196 -0
  2. package/dist/backend/modes/gateway-managed/payment.d.ts +23 -0
  3. package/dist/backend/modes/gateway-managed/payment.d.ts.map +1 -0
  4. package/dist/backend/modes/gateway-managed/payment.js +49 -0
  5. package/dist/backend/modes/gateway-managed/payment.js.map +7 -0
  6. package/dist/backend/modes/gateway-managed/paymentSession.d.ts +4 -0
  7. package/dist/backend/modes/gateway-managed/paymentSession.d.ts.map +1 -0
  8. package/dist/backend/modes/gateway-managed/paymentSession.js +16 -0
  9. package/dist/backend/modes/gateway-managed/paymentSession.js.map +7 -0
  10. package/dist/backend/modes/gateway-managed/policy.d.ts +68 -0
  11. package/dist/backend/modes/gateway-managed/policy.d.ts.map +1 -0
  12. package/dist/backend/modes/gateway-managed/policy.js +53 -0
  13. package/dist/backend/modes/gateway-managed/policy.js.map +7 -0
  14. package/dist/backend/modes/gateway-managed/policyContext.d.ts +5 -0
  15. package/dist/backend/modes/gateway-managed/policyContext.d.ts.map +1 -0
  16. package/dist/backend/modes/gateway-managed/policyContext.js +22 -0
  17. package/dist/backend/modes/gateway-managed/policyContext.js.map +7 -0
  18. package/dist/backend/modes/index.d.ts +72 -0
  19. package/dist/backend/modes/index.d.ts.map +1 -0
  20. package/dist/backend/modes/index.js +159 -0
  21. package/dist/backend/modes/index.js.map +7 -0
  22. package/dist/backend/modes/owner-managed/payment.d.ts +34 -0
  23. package/dist/backend/modes/owner-managed/payment.d.ts.map +1 -0
  24. package/dist/backend/modes/owner-managed/payment.js +75 -0
  25. package/dist/backend/modes/owner-managed/payment.js.map +7 -0
  26. package/dist/backend/modes/owner-managed/paymentAssets.d.ts +4 -0
  27. package/dist/backend/modes/owner-managed/paymentAssets.d.ts.map +1 -0
  28. package/dist/backend/modes/owner-managed/paymentAssets.js +11 -0
  29. package/dist/backend/modes/owner-managed/paymentAssets.js.map +7 -0
  30. package/dist/backend/modes/owner-managed/paymentPageApi.d.ts +4 -0
  31. package/dist/backend/modes/owner-managed/paymentPageApi.d.ts.map +1 -0
  32. package/dist/backend/modes/owner-managed/paymentPageApi.js +11 -0
  33. package/dist/backend/modes/owner-managed/paymentPageApi.js.map +7 -0
  34. package/dist/backend/modes/owner-managed/paymentSession.d.ts +4 -0
  35. package/dist/backend/modes/owner-managed/paymentSession.d.ts.map +1 -0
  36. package/dist/backend/modes/owner-managed/paymentSession.js +18 -0
  37. package/dist/backend/modes/owner-managed/paymentSession.js.map +7 -0
  38. package/dist/backend/modes/owner-managed/policy.d.ts +68 -0
  39. package/dist/backend/modes/owner-managed/policy.d.ts.map +1 -0
  40. package/dist/backend/modes/owner-managed/policy.js +53 -0
  41. package/dist/backend/modes/owner-managed/policy.js.map +7 -0
  42. package/dist/backend/modes/owner-managed/policyContext.d.ts +5 -0
  43. package/dist/backend/modes/owner-managed/policyContext.d.ts.map +1 -0
  44. package/dist/backend/modes/owner-managed/policyContext.js +26 -0
  45. package/dist/backend/modes/owner-managed/policyContext.js.map +7 -0
  46. package/dist/backend/modes/publisher-delegated/payment.d.ts +23 -0
  47. package/dist/backend/modes/publisher-delegated/payment.d.ts.map +1 -0
  48. package/dist/backend/modes/publisher-delegated/payment.js +50 -0
  49. package/dist/backend/modes/publisher-delegated/payment.js.map +7 -0
  50. package/dist/backend/modes/publisher-delegated/paymentSession.d.ts +4 -0
  51. package/dist/backend/modes/publisher-delegated/paymentSession.d.ts.map +1 -0
  52. package/dist/backend/modes/publisher-delegated/paymentSession.js +16 -0
  53. package/dist/backend/modes/publisher-delegated/paymentSession.js.map +7 -0
  54. package/dist/backend/modes/publisher-delegated/policy.d.ts +68 -0
  55. package/dist/backend/modes/publisher-delegated/policy.d.ts.map +1 -0
  56. package/dist/backend/modes/publisher-delegated/policy.js +53 -0
  57. package/dist/backend/modes/publisher-delegated/policy.js.map +7 -0
  58. package/dist/backend/modes/publisher-delegated/policyContext.d.ts +5 -0
  59. package/dist/backend/modes/publisher-delegated/policyContext.d.ts.map +1 -0
  60. package/dist/backend/modes/publisher-delegated/policyContext.js +22 -0
  61. package/dist/backend/modes/publisher-delegated/policyContext.js.map +7 -0
  62. package/dist/backend/modes/tenant-delegated/payment.d.ts +23 -0
  63. package/dist/backend/modes/tenant-delegated/payment.d.ts.map +1 -0
  64. package/dist/backend/modes/tenant-delegated/payment.js +50 -0
  65. package/dist/backend/modes/tenant-delegated/payment.js.map +7 -0
  66. package/dist/backend/modes/tenant-delegated/paymentSession.d.ts +4 -0
  67. package/dist/backend/modes/tenant-delegated/paymentSession.d.ts.map +1 -0
  68. package/dist/backend/modes/tenant-delegated/paymentSession.js +16 -0
  69. package/dist/backend/modes/tenant-delegated/paymentSession.js.map +7 -0
  70. package/dist/backend/modes/tenant-delegated/policy.d.ts +68 -0
  71. package/dist/backend/modes/tenant-delegated/policy.d.ts.map +1 -0
  72. package/dist/backend/modes/tenant-delegated/policy.js +53 -0
  73. package/dist/backend/modes/tenant-delegated/policy.js.map +7 -0
  74. package/dist/backend/modes/tenant-delegated/policyContext.d.ts +5 -0
  75. package/dist/backend/modes/tenant-delegated/policyContext.d.ts.map +1 -0
  76. package/dist/backend/modes/tenant-delegated/policyContext.js +22 -0
  77. package/dist/backend/modes/tenant-delegated/policyContext.js.map +7 -0
  78. package/dist/backend/modules.d.ts +33 -0
  79. package/dist/backend/modules.d.ts.map +1 -0
  80. package/dist/backend/modules.js +100 -0
  81. package/dist/backend/modules.js.map +7 -0
  82. package/dist/backend/options.d.ts +78 -0
  83. package/dist/backend/options.d.ts.map +1 -0
  84. package/dist/backend/options.js +153 -0
  85. package/dist/backend/options.js.map +7 -0
  86. package/dist/backend/paymentRuntime.d.ts +31 -0
  87. package/dist/backend/paymentRuntime.d.ts.map +1 -0
  88. package/dist/backend/paymentRuntime.js +231 -0
  89. package/dist/backend/paymentRuntime.js.map +7 -0
  90. package/dist/backend/policies/common.d.ts +102 -0
  91. package/dist/backend/policies/common.d.ts.map +1 -0
  92. package/dist/backend/policies/common.js +226 -0
  93. package/dist/backend/policies/common.js.map +7 -0
  94. package/dist/backend/routes/gateway/guard.d.ts +7 -0
  95. package/dist/backend/routes/gateway/guard.d.ts.map +1 -0
  96. package/dist/backend/routes/gateway/guard.js +89 -0
  97. package/dist/backend/routes/gateway/guard.js.map +7 -0
  98. package/dist/backend/routes/gateway/hostApi.d.ts +8 -0
  99. package/dist/backend/routes/gateway/hostApi.d.ts.map +1 -0
  100. package/dist/backend/routes/gateway/hostApi.js +45 -0
  101. package/dist/backend/routes/gateway/hostApi.js.map +7 -0
  102. package/dist/backend/routes/gateway/hostApiBridge.d.ts +5 -0
  103. package/dist/backend/routes/gateway/hostApiBridge.d.ts.map +1 -0
  104. package/dist/backend/routes/gateway/hostApiBridge.js +61 -0
  105. package/dist/backend/routes/gateway/hostApiBridge.js.map +7 -0
  106. package/dist/backend/routes/gateway/hostApiCore.d.ts +5 -0
  107. package/dist/backend/routes/gateway/hostApiCore.d.ts.map +1 -0
  108. package/dist/backend/routes/gateway/hostApiCore.js +95 -0
  109. package/dist/backend/routes/gateway/hostApiCore.js.map +7 -0
  110. package/dist/backend/routes/gateway/hostApiLifecycle.d.ts +5 -0
  111. package/dist/backend/routes/gateway/hostApiLifecycle.d.ts.map +1 -0
  112. package/dist/backend/routes/gateway/hostApiLifecycle.js +80 -0
  113. package/dist/backend/routes/gateway/hostApiLifecycle.js.map +7 -0
  114. package/dist/backend/routes/gateway/hostContractBoundary.d.ts +25 -0
  115. package/dist/backend/routes/gateway/hostContractBoundary.d.ts.map +1 -0
  116. package/dist/backend/routes/gateway/hostContractBoundary.js +43 -0
  117. package/dist/backend/routes/gateway/hostContractBoundary.js.map +7 -0
  118. package/dist/backend/routes/gateway/payment.d.ts +4 -0
  119. package/dist/backend/routes/gateway/payment.d.ts.map +1 -0
  120. package/dist/backend/routes/gateway/payment.js +10 -0
  121. package/dist/backend/routes/gateway/payment.js.map +7 -0
  122. package/dist/backend/routes/gateway/shared.d.ts +36 -0
  123. package/dist/backend/routes/gateway/shared.d.ts.map +1 -0
  124. package/dist/backend/routes/gateway/shared.js +208 -0
  125. package/dist/backend/routes/gateway/shared.js.map +7 -0
  126. package/dist/backend/routes/gateway/subjectProfiles.d.ts +2 -0
  127. package/dist/backend/routes/gateway/subjectProfiles.d.ts.map +1 -0
  128. package/dist/backend/routes/gateway/subjectProfiles.js +150 -0
  129. package/dist/backend/routes/gateway/subjectProfiles.js.map +7 -0
  130. package/dist/backend/routes/health.d.ts +2 -0
  131. package/dist/backend/routes/health.d.ts.map +1 -0
  132. package/dist/backend/routes/health.js +20 -0
  133. package/dist/backend/routes/health.js.map +7 -0
  134. package/dist/backend/routes/reference.d.ts +2 -0
  135. package/dist/backend/routes/reference.d.ts.map +1 -0
  136. package/dist/backend/routes/reference.js +414 -0
  137. package/dist/backend/routes/reference.js.map +7 -0
  138. package/dist/index.d.ts +10 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +81 -0
  141. package/dist/index.js.map +7 -0
  142. package/package.json +42 -0
package/README.md ADDED
@@ -0,0 +1,196 @@
1
+ # @xapps-platform/backend-kit
2
+
3
+ Modular Node backend kit for the current Xapps backend contract.
4
+
5
+ Current public surface:
6
+
7
+ - backend composition for the shipped integrator contract
8
+
9
+ Direction:
10
+
11
+ - Node and PHP variants should converge on the same backend contract
12
+ - actor differences should live in adapters, rights/scope, config, and data access
13
+ - not in duplicated platform backend logic
14
+
15
+ This package sits above:
16
+
17
+ - `@xapps-platform/server-sdk`
18
+
19
+ Use it when you want a working backend with default routes, default modes, and
20
+ override seams, while keeping the later shared tenant/publisher direction
21
+ open. The current shipped reference consumers are still tenant backends, but
22
+ the package direction is actor-agnostic where possible.
23
+
24
+ This is now a real package, not a placeholder or extraction stub. Keep the
25
+ public entry surface stable and split internal package code behind it.
26
+
27
+ Current package shape:
28
+
29
+ - TypeScript source in `src/*`
30
+ - ESM Node outputs in `dist/*`
31
+ - public package exports stay stable while internal modules remain split
32
+
33
+ ## Start Here
34
+
35
+ Consumer rule:
36
+
37
+ - import `@xapps-platform/backend-kit`
38
+ - import package entry surfaces such as `@xapps-platform/backend-kit/backend/...`
39
+ - do not consume raw `src/...` files directly from apps
40
+
41
+ ## What It Gives You
42
+
43
+ The current package surface provides:
44
+
45
+ - backend-kit option normalization
46
+ - backend-kit composition
47
+ - default route surface
48
+ - default mode tree
49
+ - payment runtime assembly
50
+ - host-proxy service assembly
51
+ - subject-profile sourcing hooks
52
+
53
+ Internal package structure is intentionally modular:
54
+
55
+ - `src/index.ts`
56
+ thin public facade
57
+ - `src/backend/options.ts`
58
+ option normalization and config shaping
59
+ - `src/backend/paymentRuntime.ts`
60
+ payment runtime assembly and payment-page API helpers
61
+ - `src/backend/modules.ts`
62
+ backend module composition
63
+ - `src/backend/modes/*`
64
+ explicit default mode tree
65
+ - `src/backend/routes/*`
66
+ explicit default route tree
67
+
68
+ Current route surface includes:
69
+
70
+ - health
71
+ - reference
72
+ - host core
73
+ - lifecycle
74
+ - bridge
75
+ - payment
76
+ - guard
77
+ - subject profiles
78
+
79
+ For hosted-integrator mode, the host API surface can also enforce explicit
80
+ frontend-origin allowlists through `host.allowedOrigins`. Leave it empty for
81
+ same-origin consumers; set it when the browser host runs on another domain and
82
+ must call the tenant backend cross-origin. In practice that allowlist covers
83
+ the browser-facing host API surface, including:
84
+
85
+ - `/api/host-config`
86
+ - `/api/resolve-subject`
87
+ - `/api/create-catalog-session`
88
+ - `/api/create-widget-session`
89
+ - lifecycle routes under `/api/install*`
90
+ - bridge routes under `/api/bridge/*`
91
+
92
+ For the secure long-term hosted-integrator path, use a short-lived bootstrap
93
+ token instead of trusting browser subject input:
94
+
95
+ - integrator backend calls `POST /api/host-bootstrap`
96
+ - tenant backend authenticates with `X-API-Key`
97
+ - tenant backend resolves the subject through the gateway/host proxy
98
+ - tenant backend returns a short-lived `bootstrapToken`
99
+ - browser host sends that token in `X-Xapps-Host-Bootstrap`
100
+
101
+ In the current design, the tenant backend signs that bootstrap token locally.
102
+ The gateway participates in subject resolution, but does not issue the browser
103
+ bootstrap token itself.
104
+
105
+ That token should be treated as temporary bootstrap state. After expiry, the
106
+ frontend should re-run bootstrap instead of trying to continue on stored
107
+ `subjectId` alone.
108
+
109
+ Recommended host config for that mode:
110
+
111
+ - `host.allowedOrigins`
112
+ - `host.bootstrap.apiKeys`
113
+ - `host.bootstrap.signingSecret`
114
+ - optional `host.bootstrap.ttlSeconds`
115
+
116
+ Current default mode tree includes:
117
+
118
+ - `gateway_managed`
119
+ - `tenant_delegated`
120
+ - `publisher_delegated`
121
+ - `owner_managed`
122
+
123
+ For `owner_managed`, the packaged default can run tenant-owned or
124
+ publisher-owned. Use `payments.ownerIssuer` when the backend should default the
125
+ owner-managed lane to `publisher` instead of `tenant` when the guard config
126
+ does not narrow the issuer explicitly.
127
+
128
+ If the owner-managed payment page redirects back to an integrator frontend on a
129
+ different domain, include that frontend origin in the payment return URL
130
+ allowlist as well.
131
+
132
+ ## What Should Stay Local
133
+
134
+ A consuming app should still keep these local when they are actor-specific:
135
+
136
+ - startup and env/config mapping
137
+ - branding and host pages/assets
138
+ - actor-specific subject-profile catalogs or resolver hooks
139
+ - explicit mode or route overrides
140
+
141
+ ## Recommended Consumer Structure
142
+
143
+ Start small and keep local ownership obvious.
144
+
145
+ ```text
146
+ tenant-backend/
147
+ server.js
148
+ lib/
149
+ config.js
150
+ appSurfaceModule.js
151
+ subjectProfiles/defaultProfiles.js
152
+ routes/
153
+ host.js
154
+ host/
155
+ pages.js
156
+ shared.js
157
+ modes/
158
+ index.js
159
+ */README.md
160
+ public/
161
+ branding-assets...
162
+ ```
163
+
164
+ Recommended override order:
165
+
166
+ 1. backend-kit options
167
+ 2. local branding/assets and subject-profile data
168
+ 3. injected services or resolver hooks
169
+ 4. explicit route or mode overrides
170
+
171
+ Do not copy package default route implementations into the app just to mirror
172
+ the package layout.
173
+
174
+ ## When To Drop Lower
175
+
176
+ Use `@xapps-platform/server-sdk` directly only when the consumer needs a lower-level
177
+ seam that the backend kit intentionally does not own.
178
+
179
+ ## Rule
180
+
181
+ Do not add route-level wrapper aliases here.
182
+
183
+ Keep the public surface:
184
+
185
+ - module oriented
186
+ - config driven
187
+ - hook based
188
+
189
+ Keep internals:
190
+
191
+ - explicit
192
+ - modular
193
+ - safe to refactor behind the stable entry surface
194
+
195
+ Node and PHP should keep the same backend behavior in the end. Differences
196
+ should be runtime-adapter concerns, not separate platform feature lines.
@@ -0,0 +1,23 @@
1
+ export declare const paymentMode = "gateway_managed";
2
+ export declare const paymentModeLabel = "Gateway managed";
3
+ export declare const paymentModeDescription = "Gateway owns hosted checkout and provider execution. Tenant mainly consumes the lane.";
4
+ export declare const paymentSessionModel: {
5
+ uses_gateway_payment_session: boolean;
6
+ tenant_owns_payment_page: boolean;
7
+ tenant_owns_payment_session_endpoints: boolean;
8
+ tenant_calls_gateway_payment_session_api_directly: boolean;
9
+ tenant_session_reference: string;
10
+ };
11
+ export declare const requiredSettings: string[];
12
+ export declare const paymentResponsibilities: string[];
13
+ export declare const paymentEndpoints: any[];
14
+ export declare const referenceEndpointGroup: {
15
+ key: string;
16
+ label: string;
17
+ when_to_use: string;
18
+ endpoints: any[];
19
+ notes: string[];
20
+ };
21
+ export declare function buildPaymentUrl(input: any, runtime?: {}): Promise<string>;
22
+ export declare function registerRoutes(): Promise<void>;
23
+ //# sourceMappingURL=payment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../../../src/backend/modes/gateway-managed/payment.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAClD,eAAO,MAAM,sBAAsB,0FACsD,CAAC;AAC1F,eAAO,MAAM,mBAAmB;;;;;;CAM/B,CAAC;AACF,eAAO,MAAM,gBAAgB,UAG5B,CAAC;AACF,eAAO,MAAM,uBAAuB,UAInC,CAAC;AACF,eAAO,MAAM,gBAAgB,OAAK,CAAC;AAEnC,eAAO,MAAM,sBAAsB;;;;;;CAUlC,CAAC;AAEF,wBAAsB,eAAe,CAAC,KAAK,KAAA,EAAE,OAAO,KAAK,mBAExD;AAED,wBAAsB,cAAc,kBAAK"}
@@ -0,0 +1,49 @@
1
+ import { buildPaymentUrl as buildGatewayManagedPaymentUrl } from "./paymentSession.js";
2
+ const paymentMode = "gateway_managed";
3
+ const paymentModeLabel = "Gateway managed";
4
+ const paymentModeDescription = "Gateway owns hosted checkout and provider execution. Tenant mainly consumes the lane.";
5
+ const paymentSessionModel = {
6
+ uses_gateway_payment_session: true,
7
+ tenant_owns_payment_page: false,
8
+ tenant_owns_payment_session_endpoints: false,
9
+ tenant_calls_gateway_payment_session_api_directly: false,
10
+ tenant_session_reference: "gateway-hosted session only"
11
+ };
12
+ const requiredSettings = [
13
+ "XCONECT_GUARD_INGEST_API_KEY",
14
+ "XCONECT_TENANT_PAYMENT_RETURN_SECRET or XCONECT_TENANT_PAYMENT_RETURN_SECRET_REF"
15
+ ];
16
+ const paymentResponsibilities = [
17
+ "keep gateway-managed payment lane configured",
18
+ "do not implement a tenant payment page for this mode",
19
+ "reuse gateway-hosted checkout returned by the platform"
20
+ ];
21
+ const paymentEndpoints = [];
22
+ const referenceEndpointGroup = {
23
+ key: "gateway_managed_payment_reference",
24
+ label: "Gateway-managed payment reference",
25
+ when_to_use: "Use this when the tenant keeps the first-lane managed payment flow and the gateway owns checkout orchestration.",
26
+ endpoints: [],
27
+ notes: [
28
+ "Existing xapps use the gateway-hosted payment page for this mode.",
29
+ "The tenant backend participates through guard execution and tenant configuration, not through a tenant payment page."
30
+ ]
31
+ };
32
+ async function buildPaymentUrl(input, runtime = {}) {
33
+ return buildGatewayManagedPaymentUrl(input, runtime);
34
+ }
35
+ async function registerRoutes() {
36
+ }
37
+ export {
38
+ buildPaymentUrl,
39
+ paymentEndpoints,
40
+ paymentMode,
41
+ paymentModeDescription,
42
+ paymentModeLabel,
43
+ paymentResponsibilities,
44
+ paymentSessionModel,
45
+ referenceEndpointGroup,
46
+ registerRoutes,
47
+ requiredSettings
48
+ };
49
+ //# sourceMappingURL=payment.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/backend/modes/gateway-managed/payment.ts"],
4
+ "sourcesContent": ["// @ts-nocheck\nimport { buildPaymentUrl as buildGatewayManagedPaymentUrl } from \"./paymentSession.js\";\n\nexport const paymentMode = \"gateway_managed\";\nexport const paymentModeLabel = \"Gateway managed\";\nexport const paymentModeDescription =\n \"Gateway owns hosted checkout and provider execution. Tenant mainly consumes the lane.\";\nexport const paymentSessionModel = {\n uses_gateway_payment_session: true,\n tenant_owns_payment_page: false,\n tenant_owns_payment_session_endpoints: false,\n tenant_calls_gateway_payment_session_api_directly: false,\n tenant_session_reference: \"gateway-hosted session only\",\n};\nexport const requiredSettings = [\n \"XCONECT_GUARD_INGEST_API_KEY\",\n \"XCONECT_TENANT_PAYMENT_RETURN_SECRET or XCONECT_TENANT_PAYMENT_RETURN_SECRET_REF\",\n];\nexport const paymentResponsibilities = [\n \"keep gateway-managed payment lane configured\",\n \"do not implement a tenant payment page for this mode\",\n \"reuse gateway-hosted checkout returned by the platform\",\n];\nexport const paymentEndpoints = [];\n\nexport const referenceEndpointGroup = {\n key: \"gateway_managed_payment_reference\",\n label: \"Gateway-managed payment reference\",\n when_to_use:\n \"Use this when the tenant keeps the first-lane managed payment flow and the gateway owns checkout orchestration.\",\n endpoints: [],\n notes: [\n \"Existing xapps use the gateway-hosted payment page for this mode.\",\n \"The tenant backend participates through guard execution and tenant configuration, not through a tenant payment page.\",\n ],\n};\n\nexport async function buildPaymentUrl(input, runtime = {}) {\n return buildGatewayManagedPaymentUrl(input, runtime);\n}\n\nexport async function registerRoutes() {}\n"],
5
+ "mappings": "AACA,SAAS,mBAAmB,qCAAqC;AAE1D,MAAM,cAAc;AACpB,MAAM,mBAAmB;AACzB,MAAM,yBACX;AACK,MAAM,sBAAsB;AAAA,EACjC,8BAA8B;AAAA,EAC9B,0BAA0B;AAAA,EAC1B,uCAAuC;AAAA,EACvC,mDAAmD;AAAA,EACnD,0BAA0B;AAC5B;AACO,MAAM,mBAAmB;AAAA,EAC9B;AAAA,EACA;AACF;AACO,MAAM,0BAA0B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AACF;AACO,MAAM,mBAAmB,CAAC;AAE1B,MAAM,yBAAyB;AAAA,EACpC,KAAK;AAAA,EACL,OAAO;AAAA,EACP,aACE;AAAA,EACF,WAAW,CAAC;AAAA,EACZ,OAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAsB,gBAAgB,OAAO,UAAU,CAAC,GAAG;AACzD,SAAO,8BAA8B,OAAO,OAAO;AACrD;AAEA,eAAsB,iBAAiB;AAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,4 @@
1
+ import { extractHostedPaymentSessionId } from "../../../index.js";
2
+ export declare function buildPaymentUrl(input: any, runtime?: {}): Promise<string>;
3
+ export { extractHostedPaymentSessionId };
4
+ //# sourceMappingURL=paymentSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paymentSession.d.ts","sourceRoot":"","sources":["../../../../src/backend/modes/gateway-managed/paymentSession.ts"],"names":[],"mappings":"AACA,OAAO,EAAoC,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEpG,wBAAsB,eAAe,CAAC,KAAK,KAAA,EAAE,OAAO,KAAK,mBASxD;AAED,OAAO,EAAE,6BAA6B,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { buildModeHostedGatewayPaymentUrl, extractHostedPaymentSessionId } from "../../../index.js";
2
+ async function buildPaymentUrl(input, runtime = {}) {
3
+ return buildModeHostedGatewayPaymentUrl(
4
+ input,
5
+ {
6
+ fallbackIssuer: "gateway",
7
+ storedIssuer: "gateway"
8
+ },
9
+ runtime
10
+ );
11
+ }
12
+ export {
13
+ buildPaymentUrl,
14
+ extractHostedPaymentSessionId
15
+ };
16
+ //# sourceMappingURL=paymentSession.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/backend/modes/gateway-managed/paymentSession.ts"],
4
+ "sourcesContent": ["// @ts-nocheck\nimport { buildModeHostedGatewayPaymentUrl, extractHostedPaymentSessionId } from \"../../../index.js\";\n\nexport async function buildPaymentUrl(input, runtime = {}) {\n return buildModeHostedGatewayPaymentUrl(\n input,\n {\n fallbackIssuer: \"gateway\",\n storedIssuer: \"gateway\",\n },\n runtime,\n );\n}\n\nexport { extractHostedPaymentSessionId };\n"],
5
+ "mappings": "AACA,SAAS,kCAAkC,qCAAqC;AAEhF,eAAsB,gBAAgB,OAAO,UAAU,CAAC,GAAG;AACzD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,68 @@
1
+ export declare const policyResponsibilities: string[];
2
+ export declare const policyEndpoints: {
3
+ method: string;
4
+ path: string;
5
+ purpose: string;
6
+ }[];
7
+ export declare function buildBlockedResult(input: any, runtime?: {}): Promise<{
8
+ allowed: boolean;
9
+ reason: any;
10
+ message: any;
11
+ action: import("@xapps/server-sdk").PaymentGuardAction;
12
+ details: {
13
+ verification_failure?: any;
14
+ uiRequired: boolean;
15
+ orchestration: {
16
+ reference_mode?: any;
17
+ mode: string;
18
+ surface: string;
19
+ status: string;
20
+ payment_session_id: any;
21
+ payment_mode: any;
22
+ };
23
+ payment_status: any;
24
+ expected_amount: any;
25
+ expected_currency: any;
26
+ };
27
+ }>;
28
+ export declare function resolvePolicyResult(input: any, runtime?: {}): Promise<{
29
+ allowed: boolean;
30
+ reason: string;
31
+ message: string;
32
+ details: {
33
+ reference_mode?: any;
34
+ payment_status: any;
35
+ orchestrationApproved: any;
36
+ gatewayPaymentVerified: any;
37
+ paidByGatewayHint: boolean;
38
+ paidByPlainStatusFallback: boolean;
39
+ paidByVerifiedEvidence: any;
40
+ verified_contract: any;
41
+ payment_mode: any;
42
+ };
43
+ } | {
44
+ allowed: boolean;
45
+ reason: any;
46
+ message: any;
47
+ action: import("@xapps/server-sdk").PaymentGuardAction;
48
+ details: {
49
+ verification_failure?: any;
50
+ uiRequired: boolean;
51
+ orchestration: {
52
+ reference_mode?: any;
53
+ mode: string;
54
+ surface: string;
55
+ status: string;
56
+ payment_session_id: any;
57
+ payment_mode: any;
58
+ };
59
+ payment_status: any;
60
+ expected_amount: any;
61
+ expected_currency: any;
62
+ };
63
+ }>;
64
+ export declare function resolvePolicyRequest(payloadInput: any, { log, paymentRuntime }: {
65
+ log: any;
66
+ paymentRuntime?: {};
67
+ }): Promise<any>;
68
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../src/backend/modes/gateway-managed/policy.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,sBAAsB,UAGlC,CAAC;AACF,eAAO,MAAM,eAAe;;;;GAM3B,CAAC;AAMF,wBAAsB,kBAAkB,CAAC,KAAK,KAAA,EAAE,OAAO,KAAK;;;;;;;;;;;;;;;;;;;;GAM3D;AAED,wBAAsB,mBAAmB,CAAC,KAAK,KAAA,EAAE,OAAO,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAK5D;AAED,wBAAsB,oBAAoB,CAAC,YAAY,KAAA,EAAE,EAAE,GAAG,EAAE,cAAmB,EAAE;;;CAAA,gBASpF"}
@@ -0,0 +1,53 @@
1
+ import { resolveAllowedIssuers, resolveExpectedPaymentIssuer } from "./policyContext.js";
2
+ import {
3
+ buildPaymentPolicyAllowedResult,
4
+ buildPaymentPolicyBlockedResult,
5
+ resolvePolicyRequestCommon
6
+ } from "../../policies/common.js";
7
+ import { extractHostedPaymentSessionId } from "./paymentSession.js";
8
+ import { buildPaymentUrl, paymentMode } from "./payment.js";
9
+ const policyResponsibilities = [
10
+ "verify signed payment evidence for the gateway-managed lane",
11
+ "block and return the gateway-hosted payment action when evidence is missing"
12
+ ];
13
+ const policyEndpoints = [
14
+ {
15
+ method: "POST",
16
+ path: "/xapps/requests",
17
+ purpose: "Runs the tenant payment policy for gateway-managed xapps."
18
+ }
19
+ ];
20
+ function buildAllowedResult(input) {
21
+ return buildPaymentPolicyAllowedResult(input, { paymentMode });
22
+ }
23
+ async function buildBlockedResult(input, runtime = {}) {
24
+ return buildPaymentPolicyBlockedResult(input, {
25
+ buildPaymentUrl: (payload) => buildPaymentUrl(payload, runtime),
26
+ extractHostedPaymentSessionId,
27
+ modeMeta: { paymentMode }
28
+ });
29
+ }
30
+ async function resolvePolicyResult(input, runtime = {}) {
31
+ if (input.paidByVerifiedEvidence && !input.verificationFailure) {
32
+ return buildAllowedResult(input);
33
+ }
34
+ return buildBlockedResult(input, runtime);
35
+ }
36
+ async function resolvePolicyRequest(payloadInput, { log, paymentRuntime = {} }) {
37
+ return resolvePolicyRequestCommon({
38
+ payloadInput,
39
+ log,
40
+ resolveAllowedIssuers,
41
+ resolveExpectedPaymentIssuer,
42
+ resolveModeResult: resolvePolicyResult,
43
+ paymentRuntime
44
+ });
45
+ }
46
+ export {
47
+ buildBlockedResult,
48
+ policyEndpoints,
49
+ policyResponsibilities,
50
+ resolvePolicyRequest,
51
+ resolvePolicyResult
52
+ };
53
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/backend/modes/gateway-managed/policy.ts"],
4
+ "sourcesContent": ["// @ts-nocheck\nimport { resolveAllowedIssuers, resolveExpectedPaymentIssuer } from \"./policyContext.js\";\nimport {\n buildPaymentPolicyAllowedResult,\n buildPaymentPolicyBlockedResult,\n resolvePolicyRequestCommon,\n} from \"../../policies/common.js\";\nimport { extractHostedPaymentSessionId } from \"./paymentSession.js\";\nimport { buildPaymentUrl, paymentMode } from \"./payment.js\";\n\nexport const policyResponsibilities = [\n \"verify signed payment evidence for the gateway-managed lane\",\n \"block and return the gateway-hosted payment action when evidence is missing\",\n];\nexport const policyEndpoints = [\n {\n method: \"POST\",\n path: \"/xapps/requests\",\n purpose: \"Runs the tenant payment policy for gateway-managed xapps.\",\n },\n];\n\nfunction buildAllowedResult(input) {\n return buildPaymentPolicyAllowedResult(input, { paymentMode });\n}\n\nexport async function buildBlockedResult(input, runtime = {}) {\n return buildPaymentPolicyBlockedResult(input, {\n buildPaymentUrl: (payload) => buildPaymentUrl(payload, runtime),\n extractHostedPaymentSessionId,\n modeMeta: { paymentMode },\n });\n}\n\nexport async function resolvePolicyResult(input, runtime = {}) {\n if (input.paidByVerifiedEvidence && !input.verificationFailure) {\n return buildAllowedResult(input);\n }\n return buildBlockedResult(input, runtime);\n}\n\nexport async function resolvePolicyRequest(payloadInput, { log, paymentRuntime = {} }) {\n return resolvePolicyRequestCommon({\n payloadInput,\n log,\n resolveAllowedIssuers,\n resolveExpectedPaymentIssuer,\n resolveModeResult: resolvePolicyResult,\n paymentRuntime,\n });\n}\n"],
5
+ "mappings": "AACA,SAAS,uBAAuB,oCAAoC;AACpE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,qCAAqC;AAC9C,SAAS,iBAAiB,mBAAmB;AAEtC,MAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AACF;AACO,MAAM,kBAAkB;AAAA,EAC7B;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAEA,SAAS,mBAAmB,OAAO;AACjC,SAAO,gCAAgC,OAAO,EAAE,YAAY,CAAC;AAC/D;AAEA,eAAsB,mBAAmB,OAAO,UAAU,CAAC,GAAG;AAC5D,SAAO,gCAAgC,OAAO;AAAA,IAC5C,iBAAiB,CAAC,YAAY,gBAAgB,SAAS,OAAO;AAAA,IAC9D;AAAA,IACA,UAAU,EAAE,YAAY;AAAA,EAC1B,CAAC;AACH;AAEA,eAAsB,oBAAoB,OAAO,UAAU,CAAC,GAAG;AAC7D,MAAI,MAAM,0BAA0B,CAAC,MAAM,qBAAqB;AAC9D,WAAO,mBAAmB,KAAK;AAAA,EACjC;AACA,SAAO,mBAAmB,OAAO,OAAO;AAC1C;AAEA,eAAsB,qBAAqB,cAAc,EAAE,KAAK,iBAAiB,CAAC,EAAE,GAAG;AACrF,SAAO,2BAA2B;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,EACF,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,5 @@
1
+ import { buildPaymentAction, hasUpstreamPaymentVerified, resolveMergedContext, resolvePriceAmount } from "../../policies/common.js";
2
+ export { buildPaymentAction, hasUpstreamPaymentVerified, resolveMergedContext, resolvePriceAmount };
3
+ export declare function resolveExpectedPaymentIssuer(): string;
4
+ export declare function resolveAllowedIssuers(guardConfig: any): string[];
5
+ //# sourceMappingURL=policyContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policyContext.d.ts","sourceRoot":"","sources":["../../../../src/backend/modes/gateway-managed/policyContext.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAE1B,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAC;AAEpG,wBAAgB,4BAA4B,WAE3C;AAED,wBAAgB,qBAAqB,CAAC,WAAW,KAAA,YAEhD"}
@@ -0,0 +1,22 @@
1
+ import {
2
+ buildPaymentAction,
3
+ hasUpstreamPaymentVerified,
4
+ normalizeAllowedIssuers,
5
+ resolveMergedContext,
6
+ resolvePriceAmount
7
+ } from "../../policies/common.js";
8
+ function resolveExpectedPaymentIssuer() {
9
+ return "gateway";
10
+ }
11
+ function resolveAllowedIssuers(guardConfig) {
12
+ return normalizeAllowedIssuers(guardConfig, "gateway");
13
+ }
14
+ export {
15
+ buildPaymentAction,
16
+ hasUpstreamPaymentVerified,
17
+ resolveAllowedIssuers,
18
+ resolveExpectedPaymentIssuer,
19
+ resolveMergedContext,
20
+ resolvePriceAmount
21
+ };
22
+ //# sourceMappingURL=policyContext.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/backend/modes/gateway-managed/policyContext.ts"],
4
+ "sourcesContent": ["// @ts-nocheck\nimport {\n buildPaymentAction,\n hasUpstreamPaymentVerified,\n normalizeAllowedIssuers,\n resolveMergedContext,\n resolvePriceAmount,\n} from \"../../policies/common.js\";\n\nexport { buildPaymentAction, hasUpstreamPaymentVerified, resolveMergedContext, resolvePriceAmount };\n\nexport function resolveExpectedPaymentIssuer() {\n return \"gateway\";\n}\n\nexport function resolveAllowedIssuers(guardConfig) {\n return normalizeAllowedIssuers(guardConfig, \"gateway\");\n}\n"],
5
+ "mappings": "AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIA,SAAS,+BAA+B;AAC7C,SAAO;AACT;AAEO,SAAS,sBAAsB,aAAa;AACjD,SAAO,wBAAwB,aAAa,SAAS;AACvD;",
6
+ "names": []
7
+ }
@@ -0,0 +1,72 @@
1
+ export declare const ALL_BACKEND_MODE_KEYS: readonly string[];
2
+ export declare function normalizeEnabledBackendModes(enabledModes: any): any[];
3
+ export declare function getBackendModeHandlers(enabledModes: any): any;
4
+ export declare function getBackendModeEndpointGroups(enabledModes: any): ({
5
+ key: string;
6
+ label: string;
7
+ when_to_use: string;
8
+ endpoints: any[];
9
+ notes: string[];
10
+ } | {
11
+ key: string;
12
+ label: string;
13
+ when_to_use: string;
14
+ endpoints: {
15
+ method: string;
16
+ path: string;
17
+ purpose: string;
18
+ }[];
19
+ })[];
20
+ export declare function getBackendModeReferenceDetails(enabledModes: any): ({
21
+ key: string;
22
+ label: string;
23
+ description: string;
24
+ payment_session_model: {
25
+ uses_gateway_payment_session: boolean;
26
+ tenant_owns_payment_page: boolean;
27
+ tenant_owns_payment_session_endpoints: boolean;
28
+ tenant_calls_gateway_payment_session_api_directly: boolean;
29
+ tenant_session_reference: string;
30
+ };
31
+ required_settings: string[];
32
+ payment_responsibilities: string[];
33
+ payment_endpoints: any[];
34
+ policy_responsibilities: string[];
35
+ policy_endpoints: {
36
+ method: string;
37
+ path: string;
38
+ purpose: string;
39
+ }[];
40
+ guide_path: string;
41
+ reference_key?: undefined;
42
+ } | {
43
+ key: string;
44
+ reference_key: string;
45
+ label: string;
46
+ description: string;
47
+ payment_session_model: {
48
+ uses_gateway_payment_session: boolean;
49
+ tenant_owns_payment_page: boolean;
50
+ tenant_owns_payment_session_endpoints: boolean;
51
+ tenant_calls_gateway_payment_session_api_directly: boolean;
52
+ tenant_session_reference: string;
53
+ };
54
+ required_settings: string[];
55
+ payment_responsibilities: string[];
56
+ payment_endpoints: {
57
+ method: string;
58
+ path: string;
59
+ purpose: string;
60
+ }[];
61
+ policy_responsibilities: string[];
62
+ policy_endpoints: {
63
+ method: string;
64
+ path: string;
65
+ purpose: string;
66
+ }[];
67
+ guide_path: string;
68
+ })[];
69
+ export declare function resolveBackendPaymentPolicy(payloadInput: any, { log, enabledModes, paymentRuntime }?: {
70
+ paymentRuntime?: {};
71
+ }): Promise<any>;
72
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backend/modes/index.ts"],"names":[],"mappings":"AAwFA,eAAO,MAAM,qBAAqB,mBAAoD,CAAC;AAUvF,wBAAgB,4BAA4B,CAAC,YAAY,KAAA,SAYxD;AAED,wBAAgB,sBAAsB,CAAC,YAAY,KAAA,OAGlD;AAED,wBAAgB,4BAA4B,CAAC,YAAY,KAAA;;;;;;;;;;;;;;;KAWxD;AAED,wBAAgB,8BAA8B,CAAC,YAAY,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAG1D;AAeD,wBAAsB,2BAA2B,CAC/C,YAAY,KAAA,EACZ,EAAE,GAAG,EAAE,YAAY,EAAE,cAAmB,EAAE;;CAAK,gBAqBhD"}