@somewhere-cloud/sdk 0.0.0-stage → 0.13.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 (149) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +191 -2
  3. package/dist/cjs/auth/client.js +1059 -0
  4. package/dist/cjs/auth/client.js.map +1 -0
  5. package/dist/cjs/auth/continuation.js +27 -0
  6. package/dist/cjs/auth/continuation.js.map +1 -0
  7. package/dist/cjs/auth/index.js +21 -0
  8. package/dist/cjs/auth/index.js.map +1 -0
  9. package/dist/cjs/auth/react.js +295 -0
  10. package/dist/cjs/auth/react.js.map +1 -0
  11. package/dist/cjs/auth/server.js +368 -0
  12. package/dist/cjs/auth/server.js.map +1 -0
  13. package/dist/cjs/client.js +392 -0
  14. package/dist/cjs/client.js.map +1 -0
  15. package/dist/cjs/errors.js +16 -0
  16. package/dist/cjs/errors.js.map +1 -0
  17. package/dist/cjs/index.cjs +215 -0
  18. package/dist/cjs/index.js.map +1 -0
  19. package/dist/cjs/package.json +1 -0
  20. package/dist/cjs/query-cache.js +91 -0
  21. package/dist/cjs/query-cache.js.map +1 -0
  22. package/dist/cjs/resources/auth.js +875 -0
  23. package/dist/cjs/resources/auth.js.map +1 -0
  24. package/dist/cjs/resources/calls.js +42 -0
  25. package/dist/cjs/resources/calls.js.map +1 -0
  26. package/dist/cjs/resources/chat.js +82 -0
  27. package/dist/cjs/resources/chat.js.map +1 -0
  28. package/dist/cjs/resources/db.js +124 -0
  29. package/dist/cjs/resources/db.js.map +1 -0
  30. package/dist/cjs/resources/emails.js +39 -0
  31. package/dist/cjs/resources/emails.js.map +1 -0
  32. package/dist/cjs/resources/fs.js +141 -0
  33. package/dist/cjs/resources/fs.js.map +1 -0
  34. package/dist/cjs/resources/functions.js +145 -0
  35. package/dist/cjs/resources/functions.js.map +1 -0
  36. package/dist/cjs/resources/inbox.js +76 -0
  37. package/dist/cjs/resources/inbox.js.map +1 -0
  38. package/dist/cjs/resources/payments.js +68 -0
  39. package/dist/cjs/resources/payments.js.map +1 -0
  40. package/dist/cjs/resources/postgrest.js +391 -0
  41. package/dist/cjs/resources/postgrest.js.map +1 -0
  42. package/dist/cjs/resources/projects.js +71 -0
  43. package/dist/cjs/resources/projects.js.map +1 -0
  44. package/dist/cjs/resources/storage.js +191 -0
  45. package/dist/cjs/resources/storage.js.map +1 -0
  46. package/dist/cjs/resources/tasks.js +99 -0
  47. package/dist/cjs/resources/tasks.js.map +1 -0
  48. package/dist/cjs/resources/video.js +50 -0
  49. package/dist/cjs/resources/video.js.map +1 -0
  50. package/dist/cjs/types.js +3 -0
  51. package/dist/cjs/types.js.map +1 -0
  52. package/dist/esm/auth/client.js +1054 -0
  53. package/dist/esm/auth/client.js.map +1 -0
  54. package/dist/esm/auth/continuation.js +22 -0
  55. package/dist/esm/auth/continuation.js.map +1 -0
  56. package/dist/esm/auth/index.js +5 -0
  57. package/dist/esm/auth/index.js.map +1 -0
  58. package/dist/esm/auth/react.js +279 -0
  59. package/dist/esm/auth/react.js.map +1 -0
  60. package/dist/esm/auth/server.js +365 -0
  61. package/dist/esm/auth/server.js.map +1 -0
  62. package/dist/esm/client.js +388 -0
  63. package/dist/esm/client.js.map +1 -0
  64. package/dist/esm/errors.js +12 -0
  65. package/dist/esm/errors.js.map +1 -0
  66. package/dist/esm/index.js +188 -0
  67. package/dist/esm/index.js.map +1 -0
  68. package/dist/esm/package.json +1 -0
  69. package/dist/esm/query-cache.js +87 -0
  70. package/dist/esm/query-cache.js.map +1 -0
  71. package/dist/esm/resources/auth.js +871 -0
  72. package/dist/esm/resources/auth.js.map +1 -0
  73. package/dist/esm/resources/calls.js +38 -0
  74. package/dist/esm/resources/calls.js.map +1 -0
  75. package/dist/esm/resources/chat.js +77 -0
  76. package/dist/esm/resources/chat.js.map +1 -0
  77. package/dist/esm/resources/db.js +120 -0
  78. package/dist/esm/resources/db.js.map +1 -0
  79. package/dist/esm/resources/emails.js +35 -0
  80. package/dist/esm/resources/emails.js.map +1 -0
  81. package/dist/esm/resources/fs.js +137 -0
  82. package/dist/esm/resources/fs.js.map +1 -0
  83. package/dist/esm/resources/functions.js +141 -0
  84. package/dist/esm/resources/functions.js.map +1 -0
  85. package/dist/esm/resources/inbox.js +70 -0
  86. package/dist/esm/resources/inbox.js.map +1 -0
  87. package/dist/esm/resources/payments.js +64 -0
  88. package/dist/esm/resources/payments.js.map +1 -0
  89. package/dist/esm/resources/postgrest.js +386 -0
  90. package/dist/esm/resources/postgrest.js.map +1 -0
  91. package/dist/esm/resources/projects.js +67 -0
  92. package/dist/esm/resources/projects.js.map +1 -0
  93. package/dist/esm/resources/storage.js +186 -0
  94. package/dist/esm/resources/storage.js.map +1 -0
  95. package/dist/esm/resources/tasks.js +95 -0
  96. package/dist/esm/resources/tasks.js.map +1 -0
  97. package/dist/esm/resources/video.js +46 -0
  98. package/dist/esm/resources/video.js.map +1 -0
  99. package/dist/esm/types.js +2 -0
  100. package/dist/esm/types.js.map +1 -0
  101. package/dist/types/auth/client.d.ts +272 -0
  102. package/dist/types/auth/client.d.ts.map +1 -0
  103. package/dist/types/auth/continuation.d.ts +10 -0
  104. package/dist/types/auth/continuation.d.ts.map +1 -0
  105. package/dist/types/auth/index.d.ts +2 -0
  106. package/dist/types/auth/index.d.ts.map +1 -0
  107. package/dist/types/auth/react.d.ts +140 -0
  108. package/dist/types/auth/react.d.ts.map +1 -0
  109. package/dist/types/auth/server.d.ts +124 -0
  110. package/dist/types/auth/server.d.ts.map +1 -0
  111. package/dist/types/client.d.ts +128 -0
  112. package/dist/types/client.d.ts.map +1 -0
  113. package/dist/types/errors.d.ts +17 -0
  114. package/dist/types/errors.d.ts.map +1 -0
  115. package/dist/types/index.d.ts +145 -0
  116. package/dist/types/index.d.ts.map +1 -0
  117. package/dist/types/query-cache.d.ts +59 -0
  118. package/dist/types/query-cache.d.ts.map +1 -0
  119. package/dist/types/resources/auth.d.ts +188 -0
  120. package/dist/types/resources/auth.d.ts.map +1 -0
  121. package/dist/types/resources/calls.d.ts +27 -0
  122. package/dist/types/resources/calls.d.ts.map +1 -0
  123. package/dist/types/resources/chat.d.ts +24 -0
  124. package/dist/types/resources/chat.d.ts.map +1 -0
  125. package/dist/types/resources/db.d.ts +81 -0
  126. package/dist/types/resources/db.d.ts.map +1 -0
  127. package/dist/types/resources/emails.d.ts +20 -0
  128. package/dist/types/resources/emails.d.ts.map +1 -0
  129. package/dist/types/resources/fs.d.ts +68 -0
  130. package/dist/types/resources/fs.d.ts.map +1 -0
  131. package/dist/types/resources/functions.d.ts +30 -0
  132. package/dist/types/resources/functions.d.ts.map +1 -0
  133. package/dist/types/resources/inbox.d.ts +52 -0
  134. package/dist/types/resources/inbox.d.ts.map +1 -0
  135. package/dist/types/resources/payments.d.ts +31 -0
  136. package/dist/types/resources/payments.d.ts.map +1 -0
  137. package/dist/types/resources/postgrest.d.ts +121 -0
  138. package/dist/types/resources/postgrest.d.ts.map +1 -0
  139. package/dist/types/resources/projects.d.ts +79 -0
  140. package/dist/types/resources/projects.d.ts.map +1 -0
  141. package/dist/types/resources/storage.d.ts +63 -0
  142. package/dist/types/resources/storage.d.ts.map +1 -0
  143. package/dist/types/resources/tasks.d.ts +87 -0
  144. package/dist/types/resources/tasks.d.ts.map +1 -0
  145. package/dist/types/resources/video.d.ts +30 -0
  146. package/dist/types/resources/video.d.ts.map +1 -0
  147. package/dist/types/types.d.ts +379 -0
  148. package/dist/types/types.d.ts.map +1 -0
  149. package/package.json +86 -4
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FunctionsClient = void 0;
4
+ const errors_js_1 = require("../errors.js");
5
+ /**
6
+ * Application-function invocation client.
7
+ *
8
+ * const { data, error } = await sw.functions.invoke('checkout', {
9
+ * body: { plan: 'pro' },
10
+ * })
11
+ *
12
+ * `invoke(name)` calls `POST {projectUrl}/api/{name}` — the project's own
13
+ * deployed function (an `api/{name}` file). `data` is the function's parsed
14
+ * JSON response (or text); `error` is set on any non-2xx status or network
15
+ * failure, using the established `{ data, error }` envelope.
16
+ *
17
+ * The function host is the app URL you passed to `createClient(appUrl, key)`
18
+ * or as `functionsUrl`. It is never derived from `projectId`: a project id
19
+ * can be a slug that is unique only to its owner, and the same text can be
20
+ * another customer's subdomain, so a derived host could receive your
21
+ * credentials. Without an app URL `invoke` returns `NO_FUNCTION_HOST` before
22
+ * any request. In a project folder the CLI records the platform-reported URL
23
+ * as `app_url` in `.somewhere.json`, and `somewhere status --json` prints it.
24
+ */
25
+ class FunctionsClient {
26
+ constructor(client) {
27
+ this.client = client;
28
+ }
29
+ async invoke(name, options = {}) {
30
+ const base = this.resolveBase();
31
+ if (!base) {
32
+ return errored('NO_FUNCTION_HOST', "functions.invoke needs your app's URL, and a project id is not one. " +
33
+ 'Build the client with createClient(appUrl, key) or pass { functionsUrl }. ' +
34
+ 'In a project folder, app_url in .somewhere.json (or `somewhere status --json`) is the platform-reported URL.', 400);
35
+ }
36
+ const fn = name.replace(/^\/+/, '').replace(/^api\//, '');
37
+ if (!fn) {
38
+ return errored('VALIDATION_ERROR', 'functions.invoke requires a function name.', 400);
39
+ }
40
+ const url = `${base}/api/${fn}`;
41
+ const method = options.method ?? 'POST';
42
+ // Cookie-mode sessions (browser default): the httpOnly cookie carries
43
+ // the user's identity, so send credentials and OMIT Authorization —
44
+ // sw.auth.fromRequest prefers a Bearer header, and the static
45
+ // construction key would shadow the signed-in cookie user. An active
46
+ // header session (or explicit header mode) keeps the 0.5.x transport.
47
+ const cookieMode = this.client.authMode === 'cookie' && !this.client.hasSession;
48
+ const headers = {
49
+ Accept: 'application/json',
50
+ ...(cookieMode ? {} : { Authorization: this.client.sessionOrInitialBearer }),
51
+ ...(options.headers ?? {}),
52
+ };
53
+ let body;
54
+ if (options.body !== undefined && method !== 'GET') {
55
+ if (isBinary(options.body)) {
56
+ body = options.body;
57
+ }
58
+ else if (typeof options.body === 'string') {
59
+ body = options.body;
60
+ headers['Content-Type'] ?? (headers['Content-Type'] = 'text/plain;charset=UTF-8');
61
+ }
62
+ else {
63
+ body = JSON.stringify(options.body);
64
+ headers['Content-Type'] ?? (headers['Content-Type'] = 'application/json');
65
+ }
66
+ }
67
+ let res;
68
+ try {
69
+ res = await this.client.rawFetch(url, {
70
+ method,
71
+ headers,
72
+ body,
73
+ ...(cookieMode ? { credentials: 'include' } : {}),
74
+ });
75
+ }
76
+ catch (err) {
77
+ return errored('NETWORK_ERROR', err instanceof Error ? err.message : `Network error reaching ${url}.`, 0, true);
78
+ }
79
+ const parsed = await readBody(res);
80
+ if (!res.ok) {
81
+ const b = parsed;
82
+ // An unknown or committed write must not be repeated just because the
83
+ // response is 5xx. Keep explicit refusals ahead of any retry:true hint.
84
+ const unsafeToRetry = b?.retry === false || b?.retryable === false
85
+ || b?.outcome === 'unknown' || b?.outcome === 'committed'
86
+ || b?.write_committed === true || b?.prior_write_committed === true;
87
+ const retry = unsafeToRetry ? false
88
+ : typeof b?.retry === 'boolean' ? b.retry : res.status >= 500;
89
+ const retryAfterMs = b?.retry_after_ms;
90
+ return {
91
+ data: null,
92
+ error: new errors_js_1.SomewhereError({
93
+ code: b?.error ?? `FUNCTION_HTTP_${res.status}`,
94
+ message: b?.message ?? `Function '${fn}' returned ${res.status}.`,
95
+ statusCode: res.status,
96
+ retry,
97
+ retryAfterMs: typeof retryAfterMs === 'number' && Number.isSafeInteger(retryAfterMs) && retryAfterMs >= 0
98
+ ? retryAfterMs : null,
99
+ body: parsed,
100
+ }),
101
+ status: res.status,
102
+ };
103
+ }
104
+ return { data: parsed, error: null, status: res.status };
105
+ }
106
+ /** The caller-supplied app URL, or null. Never derived from projectId. */
107
+ resolveBase() {
108
+ return this.client.functionsUrl ?? null;
109
+ }
110
+ }
111
+ exports.FunctionsClient = FunctionsClient;
112
+ function errored(code, message, statusCode, retry = false) {
113
+ return {
114
+ data: null,
115
+ error: new errors_js_1.SomewhereError({ code, message, statusCode, retry, retryAfterMs: null }),
116
+ status: statusCode,
117
+ };
118
+ }
119
+ function isBinary(body) {
120
+ if (typeof FormData !== 'undefined' && body instanceof FormData)
121
+ return true;
122
+ if (typeof Blob !== 'undefined' && body instanceof Blob)
123
+ return true;
124
+ if (typeof ArrayBuffer !== 'undefined' && body instanceof ArrayBuffer)
125
+ return true;
126
+ if (ArrayBuffer.isView(body))
127
+ return true;
128
+ return false;
129
+ }
130
+ async function readBody(res) {
131
+ const text = await res.text().catch(() => '');
132
+ if (!text)
133
+ return null;
134
+ const ct = res.headers.get('content-type') ?? '';
135
+ if (ct.includes('application/json')) {
136
+ try {
137
+ return JSON.parse(text);
138
+ }
139
+ catch {
140
+ return text;
141
+ }
142
+ }
143
+ return text;
144
+ }
145
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/resources/functions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InboxClient = exports.InboxMessagesClient = exports.InboxAddressesClient = void 0;
4
+ /**
5
+ * Inbound email — the receive side of `sw.emails.send(...)`.
6
+ * Each project can mint addresses on the platform's inbox subdomain,
7
+ * and incoming mail is persisted with subject + text preview + raw MIME.
8
+ *
9
+ * // Create an inbox address (e.g. orders@inbox.somewhere.tech).
10
+ * await sw.inbox.addresses.create({ local: 'orders', label: 'Orders' })
11
+ *
12
+ * // List recent messages.
13
+ * const { data } = await sw.inbox.messages.list({ limit: 20 })
14
+ *
15
+ * // Fetch the full message + a path for the raw .eml.
16
+ * const msg = await sw.inbox.messages.get('msg-id')
17
+ *
18
+ * // Raw MIME bytes (forwarding, archival, parsing).
19
+ * const raw = await sw.inbox.messages.getRaw('msg-id')
20
+ */
21
+ class InboxAddressesClient {
22
+ constructor(client) {
23
+ this.client = client;
24
+ }
25
+ async create(input) {
26
+ const project_id = this.client.requireProjectId(input.projectId, 'inbox.addresses.create');
27
+ return this.client.safeCall('POST', '/inbox/addresses', {
28
+ auth: 'developer',
29
+ body: { project_id, local: input.local, label: input.label },
30
+ });
31
+ }
32
+ async list(opts = {}) {
33
+ const project_id = this.client.requireProjectId(opts.projectId, 'inbox.addresses.list');
34
+ return this.client.safeCall('GET', '/inbox/addresses', {
35
+ auth: 'developer',
36
+ query: { project_id },
37
+ });
38
+ }
39
+ async delete(id) {
40
+ return this.client.safeCall('DELETE', `/inbox/addresses/${encodeURIComponent(id)}`, { auth: 'developer' });
41
+ }
42
+ }
43
+ exports.InboxAddressesClient = InboxAddressesClient;
44
+ class InboxMessagesClient {
45
+ constructor(client) {
46
+ this.client = client;
47
+ }
48
+ async list(opts = {}) {
49
+ const project_id = this.client.requireProjectId(opts.projectId, 'inbox.messages.list');
50
+ return this.client.safeCall('GET', '/inbox', {
51
+ auth: 'developer',
52
+ query: { project_id, address_id: opts.addressId, limit: opts.limit },
53
+ });
54
+ }
55
+ async get(id) {
56
+ return this.client.safeCall('GET', `/inbox/${encodeURIComponent(id)}`, {
57
+ auth: 'developer',
58
+ });
59
+ }
60
+ /** Raw MIME bytes (`.eml`) and content type. */
61
+ async getRaw(id) {
62
+ return this.client.getBytes(`/inbox/${encodeURIComponent(id)}/raw`, undefined, 'developer');
63
+ }
64
+ async delete(id) {
65
+ return this.client.safeCall('DELETE', `/inbox/${encodeURIComponent(id)}`, { auth: 'developer' });
66
+ }
67
+ }
68
+ exports.InboxMessagesClient = InboxMessagesClient;
69
+ class InboxClient {
70
+ constructor(client) {
71
+ this.addresses = new InboxAddressesClient(client);
72
+ this.messages = new InboxMessagesClient(client);
73
+ }
74
+ }
75
+ exports.InboxClient = InboxClient;
76
+ //# sourceMappingURL=inbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/resources/inbox.ts"],"names":[],"mappings":";;;AAWA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,oBAAoB;IAC/B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,KAAK,CAAC,MAAM,CAAC,KAAgC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAC3F,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAe,MAAM,EAAE,kBAAkB,EAAE;YACpE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAA+B,EAAE;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAA2B,KAAK,EAAE,kBAAkB,EAAE;YAC/E,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,EAAE,UAAU,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CACzB,QAAQ,EACR,oBAAoB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAC5C,EAAE,IAAI,EAAE,WAAW,EAAE,CACtB,CAAC;IACJ,CAAC;CACF;AA1BD,oDA0BC;AAED,MAAa,mBAAmB;IAC9B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,KAAK,CAAC,IAAI,CAAC,OAAyB,EAAE;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAA2B,KAAK,EAAE,QAAQ,EAAE;YACrE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;SACrE,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAqB,KAAK,EAAE,UAAU,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;YACzF,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;IACL,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CACzB,QAAQ,EACR,UAAU,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAClC,EAAE,IAAI,EAAE,WAAW,EAAE,CACtB,CAAC;IACJ,CAAC;CACF;AA7BD,kDA6BC;AAED,MAAa,WAAW;IAItB,YAAY,MAAc;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;CACF;AARD,kCAQC"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PaymentsClient = void 0;
4
+ /**
5
+ * Stripe-Connect-style payments. The platform is the Stripe platform
6
+ * account; each project gets its own connected account. somewhere.tech
7
+ * takes zero platform fee — every charge settles 100% to the developer's
8
+ * connected account. The developer never holds a Stripe key — they call:
9
+ *
10
+ * await sw.payments.onboard({ return_url, refresh_url })
11
+ * // → redirect end-user to result.onboarding_url
12
+ *
13
+ * const status = await sw.payments.status()
14
+ * if (!status.data?.charges_enabled) ...
15
+ *
16
+ * await sw.payments.checkout({
17
+ * line_items: [{ amount: 4999, currency: 'usd', name: 'Pro' }],
18
+ * success_url, cancel_url,
19
+ * })
20
+ * // → redirect end-user to result.url
21
+ */
22
+ class PaymentsClient {
23
+ constructor(client) {
24
+ this.client = client;
25
+ }
26
+ async onboard(input = {}) {
27
+ const project_id = this.client.requireProjectId(input.projectId, 'payments.onboard');
28
+ return this.client.safeCall('POST', '/payments/onboard', {
29
+ auth: 'developer',
30
+ body: {
31
+ project_id,
32
+ return_url: input.return_url,
33
+ refresh_url: input.refresh_url,
34
+ },
35
+ });
36
+ }
37
+ async status(opts = {}) {
38
+ const project_id = this.client.requireProjectId(opts.projectId, 'payments.status');
39
+ return this.client.safeCall('GET', '/payments/status', {
40
+ auth: 'developer',
41
+ query: { project_id, refresh: opts.refresh ? '1' : undefined },
42
+ });
43
+ }
44
+ async checkout(input) {
45
+ const project_id = this.client.requireProjectId(input.projectId, 'payments.checkout');
46
+ return this.client.safeCall('POST', '/payments/checkout', {
47
+ auth: 'developer',
48
+ body: {
49
+ project_id,
50
+ line_items: input.line_items,
51
+ mode: input.mode,
52
+ success_url: input.success_url,
53
+ cancel_url: input.cancel_url,
54
+ customer_email: input.customer_email,
55
+ metadata: input.metadata,
56
+ },
57
+ });
58
+ }
59
+ async dashboardLink(opts = {}) {
60
+ const project_id = this.client.requireProjectId(opts.projectId, 'payments.dashboardLink');
61
+ return this.client.safeCall('GET', '/payments/dashboard-link', {
62
+ auth: 'developer',
63
+ query: { project_id },
64
+ });
65
+ }
66
+ }
67
+ exports.PaymentsClient = PaymentsClient;
68
+ //# sourceMappingURL=payments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../../src/resources/payments.ts"],"names":[],"mappings":";;;AAYA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,cAAc;IACzB,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,QAAgC,EAAE;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAA0B,MAAM,EAAE,mBAAmB,EAAE;YAChF,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE;gBACJ,UAAU;gBACV,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA8B,EAAE;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAyB,KAAK,EAAE,kBAAkB,EAAE;YAC7E,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAA8B;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAA2B,MAAM,EAAE,oBAAoB,EAAE;YAClF,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE;gBACJ,UAAU;gBACV,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA+B,EAAE;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAgC,KAAK,EAAE,0BAA0B,EAAE;YAC5F,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,EAAE,UAAU,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;CACF;AA9CD,wCA8CC"}