@softr/sdk 0.0.11 → 0.0.13

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 (47) hide show
  1. package/dist/assertions.js +68 -0
  2. package/dist/auth/config.js +27 -0
  3. package/dist/auth/context.d.ts +18 -0
  4. package/dist/auth/isomorphic.d.ts +73 -0
  5. package/dist/auth/isomorphic.js +113 -0
  6. package/dist/auth/methods/password.d.ts +22 -0
  7. package/dist/auth/methods/password.js +51 -0
  8. package/dist/auth/methods/signup.d.ts +37 -0
  9. package/dist/auth/methods/signup.js +89 -0
  10. package/dist/auth/methods/utils.d.ts +15 -0
  11. package/dist/auth/methods/utils.js +13 -0
  12. package/dist/auth/permissions.d.ts +17 -0
  13. package/dist/auth/permissions.js +13 -0
  14. package/dist/auth/platform.js +138 -0
  15. package/dist/auth/server.d.ts +17 -0
  16. package/dist/auth/server.js +17 -0
  17. package/dist/auth/session.js +167 -0
  18. package/dist/{user-D23hwTsf.d.ts → auth/user.d.ts} +1 -1
  19. package/dist/client/timezone.d.ts +4 -0
  20. package/dist/client/timezone.js +11 -0
  21. package/dist/client.d.ts +1 -4
  22. package/dist/client.js +1 -9
  23. package/dist/cookies.js +47 -0
  24. package/dist/core/datasource.d.ts +21 -0
  25. package/dist/core/datasource.js +196 -0
  26. package/dist/core/integration.d.ts +7 -0
  27. package/dist/core/integration.js +32 -0
  28. package/dist/core/query.d.ts +354 -0
  29. package/dist/core/query.js +528 -0
  30. package/dist/core/workflow.d.ts +7 -0
  31. package/dist/core/workflow.js +19 -0
  32. package/dist/index.d.ts +8 -685
  33. package/dist/index.js +4 -1019
  34. package/dist/routes/discover.d.ts +9 -0
  35. package/dist/routes/discover.js +198 -0
  36. package/dist/routes/manifest.d.ts +17 -0
  37. package/dist/routes/manifest.js +148 -0
  38. package/dist/routes/mem-fs.js +71 -0
  39. package/dist/routes/visibility.d.ts +142 -0
  40. package/dist/routes/visibility.js +125 -0
  41. package/dist/server.d.ts +5 -84
  42. package/dist/server.js +5 -194
  43. package/dist/types.d.ts +105 -0
  44. package/dist/vite.d.ts +1 -21
  45. package/dist/vite.js +2 -405
  46. package/package.json +4 -4
  47. package/dist/session-GUEI96C8.js +0 -360
@@ -0,0 +1,32 @@
1
+ import { readSessionToken } from "../auth/session.js";
2
+
3
+ //#region src/core/integration.ts
4
+ const BASE_URL = () => (import.meta.env.VITE_SOFTR_BASE_URL ?? "").replace(/\/$/, "");
5
+ async function integrationFetch(integrationId, input, init) {
6
+ const req = new Request(input, init);
7
+ if (req.signal.aborted) throw req.signal.reason ?? new DOMException("The operation was aborted.", "AbortError");
8
+ const reqHeaders = {};
9
+ new Headers(req.headers).forEach((value, key) => {
10
+ reqHeaders[key] = value;
11
+ });
12
+ const payload = {
13
+ method: req.method,
14
+ url: req.url,
15
+ headers: reqHeaders
16
+ };
17
+ const method = req.method.toUpperCase();
18
+ if (method !== "GET" && method !== "HEAD" && req.body !== null) payload.body = await req.clone().text();
19
+ return fetch(`${BASE_URL()}/api/integrations/${integrationId}/proxy`, {
20
+ method: "POST",
21
+ headers: {
22
+ "Content-Type": "application/json",
23
+ "Authorization": `Bearer ${readSessionToken()}`
24
+ },
25
+ body: JSON.stringify(payload),
26
+ signal: req.signal
27
+ });
28
+ }
29
+ const integration = { fetch: integrationFetch };
30
+
31
+ //#endregion
32
+ export { integration };
@@ -0,0 +1,354 @@
1
+ //#region src/core/query.d.ts
2
+
3
+ type LogicalOperator = "AND" | "OR";
4
+ type FilterOperator = "IS" | "IS_NOT" | "EQUAL" | "NOT_EQUAL" | "IS_EMPTY" | "IS_NOT_EMPTY" | "IS_ONE_OF" | "IS_NONE_OF" | "HAS_ALL_OF" | "HAS_ONE_OF" | "HAS_NONE_OF" | "CONTAINS" | "INLINE_CONTAINS" | "GT" | "LT" | "GTE" | "LTE" | "BETWEEN" | "IS_NOT_BETWEEN" | "DOES_NOT_CONTAINS" | "STARTS_WITH" | "ENDS_WITH";
5
+ type ConditionFieldType = "TEXT" | "BOOLEAN" | "NUMERIC" | "ARRAY" | "DATE";
6
+ interface Filter {
7
+ subject: string;
8
+ operator: FilterOperator;
9
+ value?: unknown;
10
+ type: ConditionFieldType;
11
+ }
12
+ type ConstructableFilter = Filter & {
13
+ [INTERNAL_KIND]: "FILTER";
14
+ };
15
+ type ConstructableFilterGroup = {
16
+ logicalOperator: LogicalOperator;
17
+ filters: Array<ConstructableFilter | ConstructableFilterGroup>;
18
+ [INTERNAL_KIND]: "LOGICAL_GROUP";
19
+ };
20
+ interface SortingOptionItem {
21
+ sortingField: string;
22
+ sortType: "ASC" | "DESC";
23
+ }
24
+ type ConstructableOrderBy = SortingOptionItem & {
25
+ [INTERNAL_KIND]: "ORDER_BY";
26
+ };
27
+ type AnyConstructable = ConstructableFilter | ConstructableFilterGroup;
28
+ declare const INTERNAL_KIND: unique symbol;
29
+ /**
30
+ * Query builder for filter queries. This exist to alleviate the (LLM?) mental overhead. API filter schema is a bit
31
+ * verbose and confusing, even when dealing with very basic queries. So to fall into the pit of success, aim here
32
+ * is to simplify filtering as much as possible.
33
+ *
34
+ * @example
35
+ * single filter
36
+ * ```tsx
37
+ * const query = q.text("title").contains("hello");
38
+ *
39
+ * const json = buildFilterCriteria(query);
40
+ * // result
41
+ * {
42
+ * "filterCriteria": {
43
+ * "filterConditionGroup": {
44
+ * "logicalOperator": "AND"
45
+ * "filterGroups": [{
46
+ * "logicalOperator": "AND",
47
+ * "filters": [{
48
+ * "subject": "title",
49
+ * "type": "TEXT",
50
+ * "operator": "CONTAINS",
51
+ * "value": "hello"
52
+ * }],
53
+ * }]
54
+ * }
55
+ * }
56
+ * }
57
+ *
58
+ * ```
59
+ *
60
+ * @example
61
+ * combining multiple filters
62
+ * ```tsx
63
+ * const query = q.and(
64
+ * q.text("title").contains("hello"),
65
+ * q.number("views").is(100),
66
+ * q.or(
67
+ * q.text("author").is("John"),
68
+ * q.boolean("isPublished").is(true)
69
+ * )
70
+ * );
71
+ * ```
72
+ */
73
+ declare const q: {
74
+ select<T extends Record<string, string>>(mapping: T): T;
75
+ and(...filters: AnyConstructable[]): ConstructableFilterGroup;
76
+ or(...filters: AnyConstructable[]): ConstructableFilterGroup;
77
+ text(subject: string): {
78
+ is(value: string): {
79
+ operator: "IS";
80
+ value: string;
81
+ subject: string;
82
+ type: "TEXT";
83
+ [INTERNAL_KIND]: "FILTER";
84
+ };
85
+ isNot(value: string): {
86
+ operator: "IS_NOT";
87
+ value: string;
88
+ subject: string;
89
+ type: "TEXT";
90
+ [INTERNAL_KIND]: "FILTER";
91
+ };
92
+ contains(value: string): {
93
+ operator: "CONTAINS";
94
+ value: string;
95
+ subject: string;
96
+ type: "TEXT";
97
+ [INTERNAL_KIND]: "FILTER";
98
+ };
99
+ isOneOf(value: string[]): {
100
+ operator: "IS_ONE_OF";
101
+ value: string[];
102
+ subject: string;
103
+ type: "TEXT";
104
+ [INTERNAL_KIND]: "FILTER";
105
+ };
106
+ isNoneOf(value: string[]): {
107
+ operator: "IS_NONE_OF";
108
+ value: string[];
109
+ subject: string;
110
+ type: "TEXT";
111
+ [INTERNAL_KIND]: "FILTER";
112
+ };
113
+ startsWith(value: string): {
114
+ operator: "STARTS_WITH";
115
+ value: string;
116
+ subject: string;
117
+ type: "TEXT";
118
+ [INTERNAL_KIND]: "FILTER";
119
+ };
120
+ endsWith(value: string): {
121
+ operator: "ENDS_WITH";
122
+ value: string;
123
+ subject: string;
124
+ type: "TEXT";
125
+ [INTERNAL_KIND]: "FILTER";
126
+ };
127
+ hasAllOf(value: string[]): {
128
+ operator: "HAS_ALL_OF";
129
+ value: string[];
130
+ subject: string;
131
+ type: "TEXT";
132
+ [INTERNAL_KIND]: "FILTER";
133
+ };
134
+ isEmpty(): {
135
+ operator: "IS_EMPTY";
136
+ subject: string;
137
+ type: "TEXT";
138
+ [INTERNAL_KIND]: "FILTER";
139
+ };
140
+ isNotEmpty(): {
141
+ operator: "IS_NOT_EMPTY";
142
+ subject: string;
143
+ type: "TEXT";
144
+ [INTERNAL_KIND]: "FILTER";
145
+ };
146
+ };
147
+ boolean(subject: string): {
148
+ is(value: boolean): {
149
+ operator: "IS";
150
+ value: boolean;
151
+ subject: string;
152
+ type: "BOOLEAN";
153
+ [INTERNAL_KIND]: "FILTER";
154
+ };
155
+ isNot(value: boolean): {
156
+ operator: "IS_NOT";
157
+ value: boolean;
158
+ subject: string;
159
+ type: "BOOLEAN";
160
+ [INTERNAL_KIND]: "FILTER";
161
+ };
162
+ isEmpty(): {
163
+ operator: "IS_EMPTY";
164
+ subject: string;
165
+ type: "BOOLEAN";
166
+ [INTERNAL_KIND]: "FILTER";
167
+ };
168
+ isNotEmpty(): {
169
+ operator: "IS_NOT_EMPTY";
170
+ subject: string;
171
+ type: "BOOLEAN";
172
+ [INTERNAL_KIND]: "FILTER";
173
+ };
174
+ };
175
+ number(subject: string): {
176
+ is(value: number): {
177
+ operator: "IS";
178
+ value: string;
179
+ subject: string;
180
+ type: "NUMERIC";
181
+ [INTERNAL_KIND]: "FILTER";
182
+ };
183
+ isNot(value: number): {
184
+ operator: "IS_NOT";
185
+ value: string;
186
+ subject: string;
187
+ type: "NUMERIC";
188
+ [INTERNAL_KIND]: "FILTER";
189
+ };
190
+ gt(value: number): {
191
+ operator: "GT";
192
+ value: string;
193
+ subject: string;
194
+ type: "NUMERIC";
195
+ [INTERNAL_KIND]: "FILTER";
196
+ };
197
+ gte(value: number): {
198
+ operator: "GTE";
199
+ value: string;
200
+ subject: string;
201
+ type: "NUMERIC";
202
+ [INTERNAL_KIND]: "FILTER";
203
+ };
204
+ lt(value: number): {
205
+ operator: "LT";
206
+ value: string;
207
+ subject: string;
208
+ type: "NUMERIC";
209
+ [INTERNAL_KIND]: "FILTER";
210
+ };
211
+ lte(value: number): {
212
+ operator: "LTE";
213
+ value: string;
214
+ subject: string;
215
+ type: "NUMERIC";
216
+ [INTERNAL_KIND]: "FILTER";
217
+ };
218
+ between(start: number, end: number): {
219
+ operator: "BETWEEN";
220
+ value: string[];
221
+ subject: string;
222
+ type: "NUMERIC";
223
+ [INTERNAL_KIND]: "FILTER";
224
+ };
225
+ isEmpty(): {
226
+ operator: "IS_EMPTY";
227
+ subject: string;
228
+ type: "NUMERIC";
229
+ [INTERNAL_KIND]: "FILTER";
230
+ };
231
+ isNotEmpty(): {
232
+ operator: "IS_NOT_EMPTY";
233
+ subject: string;
234
+ type: "NUMERIC";
235
+ [INTERNAL_KIND]: "FILTER";
236
+ };
237
+ };
238
+ array(subject: string): {
239
+ is(value: string[]): {
240
+ operator: "IS";
241
+ value: string[];
242
+ subject: string;
243
+ type: "ARRAY";
244
+ [INTERNAL_KIND]: "FILTER";
245
+ };
246
+ isOneOf(value: string[]): {
247
+ operator: "IS_ONE_OF";
248
+ value: string[];
249
+ subject: string;
250
+ type: "ARRAY";
251
+ [INTERNAL_KIND]: "FILTER";
252
+ };
253
+ isNoneOf(value: string[]): {
254
+ operator: "IS_NONE_OF";
255
+ value: string[];
256
+ subject: string;
257
+ type: "ARRAY";
258
+ [INTERNAL_KIND]: "FILTER";
259
+ };
260
+ hasAllOf(value: string[]): {
261
+ operator: "HAS_ALL_OF";
262
+ value: string[];
263
+ subject: string;
264
+ type: "ARRAY";
265
+ [INTERNAL_KIND]: "FILTER";
266
+ };
267
+ isEmpty(): {
268
+ operator: "IS_EMPTY";
269
+ subject: string;
270
+ type: "ARRAY";
271
+ [INTERNAL_KIND]: "FILTER";
272
+ };
273
+ isNotEmpty(): {
274
+ operator: "IS_NOT_EMPTY";
275
+ subject: string;
276
+ type: "ARRAY";
277
+ [INTERNAL_KIND]: "FILTER";
278
+ };
279
+ };
280
+ date(subject: string): {
281
+ is(value: string): {
282
+ operator: "IS";
283
+ value: string;
284
+ subject: string;
285
+ type: "DATE";
286
+ [INTERNAL_KIND]: "FILTER";
287
+ };
288
+ isNot(value: string): {
289
+ operator: "IS_NOT";
290
+ value: string;
291
+ subject: string;
292
+ type: "DATE";
293
+ [INTERNAL_KIND]: "FILTER";
294
+ };
295
+ gt(value: string): {
296
+ operator: "GT";
297
+ value: string;
298
+ subject: string;
299
+ type: "DATE";
300
+ [INTERNAL_KIND]: "FILTER";
301
+ };
302
+ gte(value: string): {
303
+ operator: "GTE";
304
+ value: string;
305
+ subject: string;
306
+ type: "DATE";
307
+ [INTERNAL_KIND]: "FILTER";
308
+ };
309
+ lt(value: string): {
310
+ operator: "LT";
311
+ value: string;
312
+ subject: string;
313
+ type: "DATE";
314
+ [INTERNAL_KIND]: "FILTER";
315
+ };
316
+ lte(value: string): {
317
+ operator: "LTE";
318
+ value: string;
319
+ subject: string;
320
+ type: "DATE";
321
+ [INTERNAL_KIND]: "FILTER";
322
+ };
323
+ between(start: string, end: string): {
324
+ operator: "BETWEEN";
325
+ value: string[];
326
+ subject: string;
327
+ type: "DATE";
328
+ [INTERNAL_KIND]: "FILTER";
329
+ };
330
+ isNotBetween(start: string, end: string): {
331
+ operator: "IS_NOT_BETWEEN";
332
+ value: string[];
333
+ subject: string;
334
+ type: "DATE";
335
+ [INTERNAL_KIND]: "FILTER";
336
+ };
337
+ isEmpty(): {
338
+ operator: "IS_EMPTY";
339
+ subject: string;
340
+ type: "DATE";
341
+ [INTERNAL_KIND]: "FILTER";
342
+ };
343
+ isNotEmpty(): {
344
+ operator: "IS_NOT_EMPTY";
345
+ subject: string;
346
+ type: "DATE";
347
+ [INTERNAL_KIND]: "FILTER";
348
+ };
349
+ };
350
+ asc(subject: string): ConstructableOrderBy;
351
+ desc(subject: string): ConstructableOrderBy;
352
+ };
353
+ //#endregion
354
+ export { AnyConstructable, ConstructableOrderBy, q };