@bitbitpress/client 1.0.2 → 1.1.0-alpha.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.
- package/README.md +160 -5
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +2 -4
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js.map +1 -1
- package/dist/examples/basic-usage.d.ts +1 -1
- package/dist/examples/basic-usage.d.ts.map +1 -1
- package/dist/examples/basic-usage.js +1 -1
- package/dist/examples/basic-usage.js.map +1 -1
- package/dist/generated/openapi.d.ts +166 -77
- package/dist/index.d.ts +9 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/react/index.d.ts +41 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +68 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/primitives.d.ts +54 -0
- package/dist/react/primitives.d.ts.map +1 -0
- package/dist/react/primitives.js +223 -0
- package/dist/react/primitives.js.map +1 -0
- package/dist/react-native-expo/index.d.ts +42 -0
- package/dist/react-native-expo/index.d.ts.map +1 -0
- package/dist/react-native-expo/index.js +78 -0
- package/dist/react-native-expo/index.js.map +1 -0
- package/dist/react-native-expo/primitives.d.ts +58 -0
- package/dist/react-native-expo/primitives.d.ts.map +1 -0
- package/dist/react-native-expo/primitives.js +218 -0
- package/dist/react-native-expo/primitives.js.map +1 -0
- package/dist/synthesisView/context.d.ts +18 -0
- package/dist/synthesisView/context.d.ts.map +1 -0
- package/dist/synthesisView/context.js +15 -0
- package/dist/synthesisView/context.js.map +1 -0
- package/dist/synthesisView/createComponentMap.d.ts +18 -0
- package/dist/synthesisView/createComponentMap.d.ts.map +1 -0
- package/dist/synthesisView/createComponentMap.js +40 -0
- package/dist/synthesisView/createComponentMap.js.map +1 -0
- package/dist/synthesisView/engine.d.ts +35 -0
- package/dist/synthesisView/engine.d.ts.map +1 -0
- package/dist/synthesisView/engine.js +113 -0
- package/dist/synthesisView/engine.js.map +1 -0
- package/dist/synthesisView/primitives.d.ts +180 -0
- package/dist/synthesisView/primitives.d.ts.map +1 -0
- package/dist/synthesisView/primitives.js +29 -0
- package/dist/synthesisView/primitives.js.map +1 -0
- package/dist/synthesisView/resolve.d.ts +17 -0
- package/dist/synthesisView/resolve.d.ts.map +1 -0
- package/dist/synthesisView/resolve.js +42 -0
- package/dist/synthesisView/resolve.js.map +1 -0
- package/dist/synthesisView/types.d.ts +72 -0
- package/dist/synthesisView/types.d.ts.map +1 -0
- package/dist/synthesisView/types.js +2 -0
- package/dist/synthesisView/types.js.map +1 -0
- package/dist/synthesisView/useSynthesisView.d.ts +13 -0
- package/dist/synthesisView/useSynthesisView.d.ts.map +1 -0
- package/dist/synthesisView/useSynthesisView.js +49 -0
- package/dist/synthesisView/useSynthesisView.js.map +1 -0
- package/dist/user/index.d.ts +38 -8
- package/dist/user/index.d.ts.map +1 -1
- package/dist/user/index.js +12 -4
- package/dist/user/index.js.map +1 -1
- package/dist/user/profile.d.ts +6 -5
- package/dist/user/profile.d.ts.map +1 -1
- package/dist/user/profile.js +6 -5
- package/dist/user/profile.js.map +1 -1
- package/dist/user/submissions.d.ts +24 -0
- package/dist/user/submissions.d.ts.map +1 -0
- package/dist/user/submissions.js +43 -0
- package/dist/user/submissions.js.map +1 -0
- package/dist/user/synthesize-batch-manager.d.ts +1 -1
- package/dist/user/synthesize-batch-manager.d.ts.map +1 -1
- package/dist/user/synthesize-batch-manager.js.map +1 -1
- package/dist/user/synthesize-view-batch-manager.d.ts +17 -0
- package/dist/user/synthesize-view-batch-manager.d.ts.map +1 -0
- package/dist/user/synthesize-view-batch-manager.js +52 -0
- package/dist/user/synthesize-view-batch-manager.js.map +1 -0
- package/dist/user/synthesize.d.ts.map +1 -1
- package/dist/user/synthesize.js +1 -3
- package/dist/user/synthesize.js.map +1 -1
- package/dist/user/synthesizeView.d.ts +41 -0
- package/dist/user/synthesizeView.d.ts.map +1 -0
- package/dist/user/synthesizeView.js +26 -0
- package/dist/user/synthesizeView.js.map +1 -0
- package/dist/user/typeDefs.d.ts.map +1 -1
- package/package.json +31 -7
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Cross-platform prop contracts for the BB built-in primitives. Each primitive
|
|
4
|
+
* names a small set of *semantic* fields (what the engine reads or wires), and
|
|
5
|
+
* accepts arbitrary extra props that pass through to the underlying platform
|
|
6
|
+
* element — no variants, no enum unions. Styling and platform-specific knobs
|
|
7
|
+
* (`style`, `className`, etc.) flow straight to the host element so the UI
|
|
8
|
+
* tree author owns the look without our primitives prescribing one.
|
|
9
|
+
*
|
|
10
|
+
* Future registry contracts are generated from this file.
|
|
11
|
+
*/
|
|
12
|
+
/** Extra props that aren't part of the semantic contract — passed through to
|
|
13
|
+
* the platform host element (e.g. `style`, `className`, ARIA attributes). */
|
|
14
|
+
export type PassThroughProps = Record<string, unknown>;
|
|
15
|
+
export type TextProps = PassThroughProps & {
|
|
16
|
+
text?: string;
|
|
17
|
+
children?: ReactNode;
|
|
18
|
+
};
|
|
19
|
+
export type ImageProps = PassThroughProps & {
|
|
20
|
+
src: string;
|
|
21
|
+
alt?: string;
|
|
22
|
+
};
|
|
23
|
+
export type ButtonProps = PassThroughProps & {
|
|
24
|
+
title?: string;
|
|
25
|
+
children?: ReactNode;
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
/** Emitted with the authored event payload + bindings; no component payload. */
|
|
28
|
+
onPress?: () => void;
|
|
29
|
+
};
|
|
30
|
+
/** Transparent press target around arbitrary content. Unlike `Button` it
|
|
31
|
+
* imposes no visual chrome, so wrapping `Text`/`Image`/`Card` doesn't alter
|
|
32
|
+
* their look. Web renders as a `role="button"` element so keyboard and
|
|
33
|
+
* screen-reader semantics survive. */
|
|
34
|
+
export type PressableProps = PassThroughProps & {
|
|
35
|
+
children?: ReactNode;
|
|
36
|
+
disabled?: boolean;
|
|
37
|
+
onPress?: () => void;
|
|
38
|
+
};
|
|
39
|
+
export type IconProps = PassThroughProps & {
|
|
40
|
+
name: string;
|
|
41
|
+
};
|
|
42
|
+
export type VideoProps = PassThroughProps & {
|
|
43
|
+
src: string;
|
|
44
|
+
poster?: string;
|
|
45
|
+
};
|
|
46
|
+
export type AudioProps = PassThroughProps & {
|
|
47
|
+
src: string;
|
|
48
|
+
};
|
|
49
|
+
/** A point in the gradient's local box, with each axis in [0, 1]. */
|
|
50
|
+
export type GradientPoint = {
|
|
51
|
+
x: number;
|
|
52
|
+
y: number;
|
|
53
|
+
};
|
|
54
|
+
/** Linear-gradient backdrop primitive. Matches `expo-linear-gradient`'s shape
|
|
55
|
+
* on RN; the web impl converts `start`/`end` to a CSS `linear-gradient(...)`.
|
|
56
|
+
* Defaults paint top→bottom so a no-arg `Gradient` matches the common case. */
|
|
57
|
+
export type GradientProps = PassThroughProps & {
|
|
58
|
+
colors: string[];
|
|
59
|
+
/** Defaults to `{ x: 0, y: 0 }` (top). */
|
|
60
|
+
start?: GradientPoint;
|
|
61
|
+
/** Defaults to `{ x: 0, y: 1 }` (bottom). */
|
|
62
|
+
end?: GradientPoint;
|
|
63
|
+
/** Optional color stops in [0, 1], one per color. */
|
|
64
|
+
locations?: number[];
|
|
65
|
+
children?: ReactNode;
|
|
66
|
+
};
|
|
67
|
+
export type ColumnProps = PassThroughProps & {
|
|
68
|
+
children?: ReactNode;
|
|
69
|
+
};
|
|
70
|
+
/** Horizontal flex container. Same surface as `Column` but the baseline is
|
|
71
|
+
* `flexDirection: 'row'`. Authors override via `style` when needed. */
|
|
72
|
+
export type RowProps = PassThroughProps & {
|
|
73
|
+
children?: ReactNode;
|
|
74
|
+
};
|
|
75
|
+
export type ListProps = PassThroughProps & {
|
|
76
|
+
children?: ReactNode;
|
|
77
|
+
};
|
|
78
|
+
export type CardProps = PassThroughProps & {
|
|
79
|
+
children?: ReactNode;
|
|
80
|
+
};
|
|
81
|
+
export type DividerProps = PassThroughProps;
|
|
82
|
+
/** Vertical scrollable container. Overflowing children scroll on the y-axis.
|
|
83
|
+
* Authors style the viewport (height, padding) via `style`; the inner
|
|
84
|
+
* content sizes naturally to its children. */
|
|
85
|
+
export type VerticalScrollProps = PassThroughProps & {
|
|
86
|
+
children?: ReactNode;
|
|
87
|
+
};
|
|
88
|
+
/** Horizontal scrollable container. Overflowing children scroll on the
|
|
89
|
+
* x-axis. Authors style the viewport (height, padding) via `style`; the
|
|
90
|
+
* inner content sizes naturally to its children. */
|
|
91
|
+
export type HorizontalScrollProps = PassThroughProps & {
|
|
92
|
+
children?: ReactNode;
|
|
93
|
+
};
|
|
94
|
+
export type TabsProps = PassThroughProps & {
|
|
95
|
+
defaultValue?: string;
|
|
96
|
+
children?: ReactNode;
|
|
97
|
+
};
|
|
98
|
+
export type TabsItemProps = PassThroughProps & {
|
|
99
|
+
value: string;
|
|
100
|
+
label: string;
|
|
101
|
+
children?: ReactNode;
|
|
102
|
+
};
|
|
103
|
+
export type ModalProps = PassThroughProps & {
|
|
104
|
+
/** Whether the modal is shown. Default true so a node-mounted modal is visible. */
|
|
105
|
+
open?: boolean;
|
|
106
|
+
children?: ReactNode;
|
|
107
|
+
/** Emitted when the user dismisses via backdrop or close affordance. */
|
|
108
|
+
onClose?: () => void;
|
|
109
|
+
};
|
|
110
|
+
/** All form primitives emit `{ value }` via their event slot; the engine
|
|
111
|
+
* merges that into the authored payload before calling the host's onEvent. */
|
|
112
|
+
export type FormChangePayload<T> = {
|
|
113
|
+
value: T;
|
|
114
|
+
};
|
|
115
|
+
export type TextFieldProps = PassThroughProps & {
|
|
116
|
+
defaultValue?: string;
|
|
117
|
+
placeholder?: string;
|
|
118
|
+
multiline?: boolean;
|
|
119
|
+
disabled?: boolean;
|
|
120
|
+
onChange?: (payload: FormChangePayload<string>) => void;
|
|
121
|
+
};
|
|
122
|
+
export type CheckboxProps = PassThroughProps & {
|
|
123
|
+
label?: string;
|
|
124
|
+
defaultChecked?: boolean;
|
|
125
|
+
disabled?: boolean;
|
|
126
|
+
onChange?: (payload: FormChangePayload<boolean>) => void;
|
|
127
|
+
};
|
|
128
|
+
export type ChoicePickerOption = {
|
|
129
|
+
label: string;
|
|
130
|
+
value: string;
|
|
131
|
+
};
|
|
132
|
+
export type ChoicePickerProps = PassThroughProps & {
|
|
133
|
+
defaultValue?: string;
|
|
134
|
+
options: ChoicePickerOption[];
|
|
135
|
+
disabled?: boolean;
|
|
136
|
+
onChange?: (payload: FormChangePayload<string>) => void;
|
|
137
|
+
};
|
|
138
|
+
export type SliderProps = PassThroughProps & {
|
|
139
|
+
defaultValue?: number;
|
|
140
|
+
min?: number;
|
|
141
|
+
max?: number;
|
|
142
|
+
step?: number;
|
|
143
|
+
disabled?: boolean;
|
|
144
|
+
onChange?: (payload: FormChangePayload<number>) => void;
|
|
145
|
+
};
|
|
146
|
+
export type DateTimeMode = 'date' | 'time' | 'datetime';
|
|
147
|
+
export type DateTimeInputProps = PassThroughProps & {
|
|
148
|
+
defaultValue?: string;
|
|
149
|
+
mode?: DateTimeMode;
|
|
150
|
+
disabled?: boolean;
|
|
151
|
+
onChange?: (payload: FormChangePayload<string>) => void;
|
|
152
|
+
};
|
|
153
|
+
/** The string names a UI tree uses in `UiNode.component` to reference each
|
|
154
|
+
* primitive. The host's `ComponentMap` keys must match. */
|
|
155
|
+
export declare const PRIMITIVE_NAMES: {
|
|
156
|
+
readonly Text: "Text";
|
|
157
|
+
readonly Image: "Image";
|
|
158
|
+
readonly Button: "Button";
|
|
159
|
+
readonly Pressable: "Pressable";
|
|
160
|
+
readonly Icon: "Icon";
|
|
161
|
+
readonly Video: "Video";
|
|
162
|
+
readonly Audio: "Audio";
|
|
163
|
+
readonly Column: "Column";
|
|
164
|
+
readonly Row: "Row";
|
|
165
|
+
readonly List: "List";
|
|
166
|
+
readonly Card: "Card";
|
|
167
|
+
readonly VerticalScroll: "VerticalScroll";
|
|
168
|
+
readonly HorizontalScroll: "HorizontalScroll";
|
|
169
|
+
readonly Tabs: "Tabs";
|
|
170
|
+
readonly TabsItem: "TabsItem";
|
|
171
|
+
readonly Modal: "Modal";
|
|
172
|
+
readonly Divider: "Divider";
|
|
173
|
+
readonly Gradient: "Gradient";
|
|
174
|
+
readonly TextField: "TextField";
|
|
175
|
+
readonly Checkbox: "Checkbox";
|
|
176
|
+
readonly ChoicePicker: "ChoicePicker";
|
|
177
|
+
readonly Slider: "Slider";
|
|
178
|
+
readonly DateTimeInput: "DateTimeInput";
|
|
179
|
+
};
|
|
180
|
+
//# sourceMappingURL=primitives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/synthesisView/primitives.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// --- Catalog name constants -------------------------------------------------
|
|
2
|
+
/** The string names a UI tree uses in `UiNode.component` to reference each
|
|
3
|
+
* primitive. The host's `ComponentMap` keys must match. */
|
|
4
|
+
export const PRIMITIVE_NAMES = {
|
|
5
|
+
Text: 'Text',
|
|
6
|
+
Image: 'Image',
|
|
7
|
+
Button: 'Button',
|
|
8
|
+
Pressable: 'Pressable',
|
|
9
|
+
Icon: 'Icon',
|
|
10
|
+
Video: 'Video',
|
|
11
|
+
Audio: 'Audio',
|
|
12
|
+
Column: 'Column',
|
|
13
|
+
Row: 'Row',
|
|
14
|
+
List: 'List',
|
|
15
|
+
Card: 'Card',
|
|
16
|
+
VerticalScroll: 'VerticalScroll',
|
|
17
|
+
HorizontalScroll: 'HorizontalScroll',
|
|
18
|
+
Tabs: 'Tabs',
|
|
19
|
+
TabsItem: 'TabsItem',
|
|
20
|
+
Modal: 'Modal',
|
|
21
|
+
Divider: 'Divider',
|
|
22
|
+
Gradient: 'Gradient',
|
|
23
|
+
TextField: 'TextField',
|
|
24
|
+
Checkbox: 'Checkbox',
|
|
25
|
+
ChoicePicker: 'ChoicePicker',
|
|
26
|
+
Slider: 'Slider',
|
|
27
|
+
DateTimeInput: 'DateTimeInput',
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=primitives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/synthesisView/primitives.ts"],"names":[],"mappings":"AAsMA,+EAA+E;AAE/E;4DAC4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,aAAa,EAAE,eAAe;CACtB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type Scope = {
|
|
2
|
+
/** The synthesis data the view binds against. */
|
|
3
|
+
data: unknown;
|
|
4
|
+
/** The current element when inside a Repeat subtree. */
|
|
5
|
+
item?: unknown;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Resolve a dot-path against the data scope. `$item` (and `$item.x`) reads the
|
|
9
|
+
* current Repeat element; any other path reads from the synthesis data.
|
|
10
|
+
*
|
|
11
|
+
* Bracket notation (`variants[variant]`, `themes[mode].text.primary`) is
|
|
12
|
+
* supported: the inner path resolves first, then the result is interpolated
|
|
13
|
+
* into the outer path before walking. This lets bindings pick a style or
|
|
14
|
+
* theme bucket at runtime — the consumer just sets the discriminator prop.
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolvePath(path: string, scope: Scope): unknown;
|
|
17
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/synthesisView/resolve.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,KAAK,GAAG;IAClB,iDAAiD;IACjD,IAAI,EAAE,OAAO,CAAC;IACd,wDAAwD;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CA8B/D"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const ITEM = '$item';
|
|
2
|
+
const BRACKET_RE = /\[([^\]]+)\]/;
|
|
3
|
+
/**
|
|
4
|
+
* Resolve a dot-path against the data scope. `$item` (and `$item.x`) reads the
|
|
5
|
+
* current Repeat element; any other path reads from the synthesis data.
|
|
6
|
+
*
|
|
7
|
+
* Bracket notation (`variants[variant]`, `themes[mode].text.primary`) is
|
|
8
|
+
* supported: the inner path resolves first, then the result is interpolated
|
|
9
|
+
* into the outer path before walking. This lets bindings pick a style or
|
|
10
|
+
* theme bucket at runtime — the consumer just sets the discriminator prop.
|
|
11
|
+
*/
|
|
12
|
+
export function resolvePath(path, scope) {
|
|
13
|
+
// Expand any `[inner]` segments first so prefix handling sees a normalized
|
|
14
|
+
// dot-path. Each inner segment recursively resolves against the same scope.
|
|
15
|
+
while (path.includes('[')) {
|
|
16
|
+
const m = BRACKET_RE.exec(path);
|
|
17
|
+
if (!m || m.index === undefined)
|
|
18
|
+
break;
|
|
19
|
+
const key = resolvePath(m[1], scope);
|
|
20
|
+
if (typeof key !== 'string' && typeof key !== 'number')
|
|
21
|
+
return undefined;
|
|
22
|
+
const before = path.slice(0, m.index);
|
|
23
|
+
const after = path.slice(m.index + m[0].length);
|
|
24
|
+
path = `${before}${before && !before.endsWith('.') ? '.' : ''}${key}${after}`;
|
|
25
|
+
}
|
|
26
|
+
if (path.startsWith('.'))
|
|
27
|
+
path = path.slice(1);
|
|
28
|
+
if (path === ITEM)
|
|
29
|
+
return scope.item;
|
|
30
|
+
let base;
|
|
31
|
+
let keys;
|
|
32
|
+
if (path.startsWith(`${ITEM}.`)) {
|
|
33
|
+
base = scope.item;
|
|
34
|
+
keys = path.slice(ITEM.length + 1).split('.');
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
base = scope.data;
|
|
38
|
+
keys = path.split('.');
|
|
39
|
+
}
|
|
40
|
+
return keys.reduce((acc, key) => (acc == null ? undefined : acc[key]), base);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/synthesisView/resolve.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,OAAO,CAAC;AACrB,MAAM,UAAU,GAAG,cAAc,CAAC;AASlC;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAY;IACpD,2EAA2E;IAC3E,4EAA4E;IAC5E,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM;QACvC,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,GAAG,GAAG,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/C,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IAErC,IAAI,IAAa,CAAC;IAClB,IAAI,IAAc,CAAC;IACnB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;QAChC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAClB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAClB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAChB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,GAA+B,CAAC,GAAG,CAAC,CAAC,EAC/E,IAAI,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Render-ready node delivered by the API. The SDK walks the array and
|
|
4
|
+
* renders each node — there is no further resolution to do.
|
|
5
|
+
*
|
|
6
|
+
* - `PRIMITIVE` — a BB built-in (`Row`, `Column`, `Text`, `Image`, …) with
|
|
7
|
+
* inline props.
|
|
8
|
+
* - `KEY_NAME` — a component the host app registered via
|
|
9
|
+
* `<BitBitView components={{ X: ... }} />`.
|
|
10
|
+
*/
|
|
11
|
+
export type FlatUiPrimitiveNode = {
|
|
12
|
+
id: string;
|
|
13
|
+
kind: 'PRIMITIVE';
|
|
14
|
+
/** BB primitive identifier (e.g. `'Row'`, `'Text'`, `'Image'`). */
|
|
15
|
+
component: string;
|
|
16
|
+
style?: Record<string, unknown>;
|
|
17
|
+
/** Ordered nested-node ids. */
|
|
18
|
+
children?: string[];
|
|
19
|
+
/** Single nested-node id shorthand. */
|
|
20
|
+
child?: string;
|
|
21
|
+
/** Host-facing event bindings. Component-emitted payloads (e.g.
|
|
22
|
+
* `TextField` `{value}`) merge over the static payload at fire time. */
|
|
23
|
+
events?: Record<string, {
|
|
24
|
+
name: string;
|
|
25
|
+
payload?: Record<string, unknown>;
|
|
26
|
+
}>;
|
|
27
|
+
/** Other fields (`text`, `src`, `title`, …) are static props on the node. */
|
|
28
|
+
[prop: string]: unknown;
|
|
29
|
+
};
|
|
30
|
+
export type FlatUiKeyNameNode = {
|
|
31
|
+
id: string;
|
|
32
|
+
kind: 'KEY_NAME';
|
|
33
|
+
/** Name the host registered with `<BitBitView components={{ X: ... }} />`. */
|
|
34
|
+
component: string;
|
|
35
|
+
props?: Record<string, unknown>;
|
|
36
|
+
/** Projected children (ids in the same array). */
|
|
37
|
+
children?: string[];
|
|
38
|
+
child?: string;
|
|
39
|
+
};
|
|
40
|
+
export type FlatUiNode = FlatUiPrimitiveNode | FlatUiKeyNameNode;
|
|
41
|
+
export type SynthesisViewEvent = {
|
|
42
|
+
name: string;
|
|
43
|
+
payload: Record<string, unknown>;
|
|
44
|
+
nodeId: string;
|
|
45
|
+
};
|
|
46
|
+
/** Maps component names → React implementations. Used both for BB
|
|
47
|
+
* primitives and for the host-registered `KEY_NAME` components. */
|
|
48
|
+
export type ComponentMap = Record<string, ComponentType<Record<string, unknown>>>;
|
|
49
|
+
export type ContentInput = {
|
|
50
|
+
type: string;
|
|
51
|
+
value: string;
|
|
52
|
+
};
|
|
53
|
+
export type ViewInputs = {
|
|
54
|
+
/** Provide the dark mode setting of the current UI to the agent. */
|
|
55
|
+
darkMode?: boolean;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Minimal structural shape `<BitBitView>` needs to fetch a view. A
|
|
59
|
+
* `BitBitPressClient` satisfies it via `client.user.synthesizeViewItem(...)`.
|
|
60
|
+
*/
|
|
61
|
+
export interface SynthesizeViewFetcher {
|
|
62
|
+
user: {
|
|
63
|
+
synthesizeViewItem(item: {
|
|
64
|
+
keyName: string;
|
|
65
|
+
contentInputs?: ContentInput[];
|
|
66
|
+
viewInputs?: ViewInputs;
|
|
67
|
+
}): Promise<{
|
|
68
|
+
uiData: unknown[];
|
|
69
|
+
}>;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/synthesisView/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;6EACyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAC7E,6EAA6E;IAC7E,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAEjE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;oEACoE;AACpE,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAElF,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG;IACvB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE;QACJ,kBAAkB,CAAC,IAAI,EAAE;YACvB,OAAO,EAAE,MAAM,CAAC;YAChB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;YAC/B,UAAU,CAAC,EAAE,UAAU,CAAC;SACzB,GAAG,OAAO,CAAC;YACV,MAAM,EAAE,OAAO,EAAE,CAAC;SACnB,CAAC,CAAC;KACJ,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/synthesisView/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ContentInput, FlatUiNode, SynthesizeViewFetcher, ViewInputs } from './types.js';
|
|
2
|
+
export type UseSynthesisViewResult = {
|
|
3
|
+
uiData: FlatUiNode[];
|
|
4
|
+
loading: boolean;
|
|
5
|
+
error: string | null;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Fetches a view's `uiData` by keyName and tracks loading/error state.
|
|
9
|
+
* Re-fetches when keyName, contentInputs, or viewInputs change. Calls
|
|
10
|
+
* coalesce with other views' lookups via the SDK's batch manager.
|
|
11
|
+
*/
|
|
12
|
+
export declare function useSynthesisView(client: SynthesizeViewFetcher, keyName: string, contentInputs?: ContentInput[], viewInputs?: ViewInputs): UseSynthesisViewResult;
|
|
13
|
+
//# sourceMappingURL=useSynthesisView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSynthesisView.d.ts","sourceRoot":"","sources":["../../src/synthesisView/useSynthesisView.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9F,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,YAAY,EAAE,EAC9B,UAAU,CAAC,EAAE,UAAU,GACtB,sBAAsB,CA8CxB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Fetches a view's `uiData` by keyName and tracks loading/error state.
|
|
4
|
+
* Re-fetches when keyName, contentInputs, or viewInputs change. Calls
|
|
5
|
+
* coalesce with other views' lookups via the SDK's batch manager.
|
|
6
|
+
*/
|
|
7
|
+
export function useSynthesisView(client, keyName, contentInputs, viewInputs) {
|
|
8
|
+
const [result, setResult] = useState({
|
|
9
|
+
uiData: [],
|
|
10
|
+
loading: true,
|
|
11
|
+
error: null,
|
|
12
|
+
});
|
|
13
|
+
const contentInputsKey = contentInputs && contentInputs.length > 0 ? JSON.stringify(contentInputs) : '';
|
|
14
|
+
const viewInputsKey = viewInputs ? JSON.stringify(viewInputs) : '';
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
let cancelled = false;
|
|
17
|
+
setResult((prev) => ({ ...prev, loading: true, error: null }));
|
|
18
|
+
const parsedContentInputs = contentInputsKey
|
|
19
|
+
? JSON.parse(contentInputsKey)
|
|
20
|
+
: undefined;
|
|
21
|
+
const parsedViewInputs = viewInputsKey ? JSON.parse(viewInputsKey) : undefined;
|
|
22
|
+
client.user
|
|
23
|
+
.synthesizeViewItem({
|
|
24
|
+
keyName,
|
|
25
|
+
contentInputs: parsedContentInputs,
|
|
26
|
+
viewInputs: parsedViewInputs,
|
|
27
|
+
})
|
|
28
|
+
.then((res) => {
|
|
29
|
+
if (cancelled)
|
|
30
|
+
return;
|
|
31
|
+
const uiData = Array.isArray(res.uiData) ? res.uiData : [];
|
|
32
|
+
setResult({ uiData, loading: false, error: null });
|
|
33
|
+
})
|
|
34
|
+
.catch((err) => {
|
|
35
|
+
if (cancelled)
|
|
36
|
+
return;
|
|
37
|
+
setResult({
|
|
38
|
+
uiData: [],
|
|
39
|
+
loading: false,
|
|
40
|
+
error: err instanceof Error ? err.message : 'Failed to load view',
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
return () => {
|
|
44
|
+
cancelled = true;
|
|
45
|
+
};
|
|
46
|
+
}, [client, keyName, contentInputsKey, viewInputsKey]);
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=useSynthesisView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSynthesisView.js","sourceRoot":"","sources":["../../src/synthesisView/useSynthesisView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAS5C;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAA6B,EAC7B,OAAe,EACf,aAA8B,EAC9B,UAAuB;IAEvB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAyB;QAC3D,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,MAAM,gBAAgB,GACpB,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE/D,MAAM,mBAAmB,GAAG,gBAAgB;YAC1C,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAoB;YAClD,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/F,MAAM,CAAC,IAAI;aACR,kBAAkB,CAAC;YAClB,OAAO;YACP,aAAa,EAAE,mBAAmB;YAClC,UAAU,EAAE,gBAAgB;SAC7B,CAAC;aACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,SAAS;gBAAE,OAAO;YACtB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,MAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,IAAI,SAAS;gBAAE,OAAO;YACtB,SAAS,CAAC;gBACR,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB;aAClE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC;IAEvD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/user/index.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import type { AuthStore } from '../auth.js';
|
|
2
2
|
import type { RequestConfig } from '../request.js';
|
|
3
|
-
import { type
|
|
4
|
-
import { type RecommendationsRequest, type RecommendationsResponse } from './recommendations.js';
|
|
3
|
+
import { type InteractionResponseRequest, type InteractionResponseResponse, type InteractionsRequest, type InteractionsResponse } from './interaction.js';
|
|
5
4
|
import { type ProfileResponse, type ProfileUpdateRequest } from './profile.js';
|
|
5
|
+
import { type RecommendationsRequest, type RecommendationsResponse } from './recommendations.js';
|
|
6
6
|
import { type ReportRequest, type ReportResponse } from './report.js';
|
|
7
7
|
import { type Signal, type SignalRequest, type SignalResponse } from './signal.js';
|
|
8
|
+
import { type CreateUserSubmissionRequest, type CreateUserSubmissionResponse, type ListUserSubmissionsRequest, type ListUserSubmissionsResponse } from './submissions.js';
|
|
8
9
|
import { type SynthesizeEvent, type SynthesizeItemResponse } from './synthesize.js';
|
|
10
|
+
import { type SynthesizeOnStreamingData } from './synthesize-batch-manager.js';
|
|
11
|
+
import { type SynthesizeViewRequestItem, type SynthesizeViewResponse } from './synthesizeView.js';
|
|
9
12
|
import { type TokenRequest, type TokenResponse } from './token.js';
|
|
10
13
|
import type { SynthesizeItem, SynthesizeItems } from './typeDefs.js';
|
|
11
|
-
import { type InteractionResponseRequest, type InteractionResponseResponse, type InteractionsRequest, type InteractionsResponse } from './interaction.js';
|
|
12
14
|
/**
|
|
13
15
|
* User-related API methods interface (aligned with OpenAPI spec paths).
|
|
14
16
|
*/
|
|
@@ -28,15 +30,16 @@ export interface UserMethods {
|
|
|
28
30
|
*/
|
|
29
31
|
token(ssoToken: TokenRequest['ssoToken']): Promise<TokenResponse>;
|
|
30
32
|
/**
|
|
31
|
-
* Get user profile (interest tags
|
|
33
|
+
* Get user profile (interest tags, suggested topics, job title, and company).
|
|
32
34
|
*
|
|
33
|
-
* @returns Promise that resolves with profile data
|
|
35
|
+
* @returns Promise that resolves with profile data
|
|
34
36
|
*/
|
|
35
37
|
profile(): Promise<NonNullable<ProfileResponse>>;
|
|
36
38
|
/**
|
|
37
|
-
* Update user profile
|
|
39
|
+
* Update user profile. Full replace interest tags via interestTags, add/remove
|
|
40
|
+
* via addInterestTags/removeInterestTags, and set or clear jobTitle/company.
|
|
38
41
|
*
|
|
39
|
-
* @param options - interestTags, addInterestTags, or
|
|
42
|
+
* @param options - interestTags, addInterestTags, removeInterestTags, jobTitle, or company
|
|
40
43
|
* @returns Promise that resolves with updated profile data
|
|
41
44
|
*/
|
|
42
45
|
updateProfile(options: ProfileUpdateRequest): Promise<NonNullable<ProfileResponse>>;
|
|
@@ -54,6 +57,21 @@ export interface UserMethods {
|
|
|
54
57
|
* @returns Promise that resolves when the report is accepted
|
|
55
58
|
*/
|
|
56
59
|
report(options: ReportRequest): Promise<NonNullable<ReportResponse>>;
|
|
60
|
+
/**
|
|
61
|
+
* Create a structured user submission and optional presigned file upload URLs.
|
|
62
|
+
*
|
|
63
|
+
* @param options - schema keyName, structured data, and optional file descriptors
|
|
64
|
+
* @returns Created submission and any presigned upload URLs
|
|
65
|
+
*/
|
|
66
|
+
createSubmission(options: CreateUserSubmissionRequest): Promise<NonNullable<CreateUserSubmissionResponse>>;
|
|
67
|
+
/**
|
|
68
|
+
* List live submissions for a user submission schema.
|
|
69
|
+
*
|
|
70
|
+
* @param keyName - User submission schema key name
|
|
71
|
+
* @param options - Optional pagination parameters
|
|
72
|
+
* @returns Live submissions and pagination cursor
|
|
73
|
+
*/
|
|
74
|
+
submissions(keyName: string, options?: ListUserSubmissionsRequest): Promise<NonNullable<ListUserSubmissionsResponse>>;
|
|
57
75
|
/**
|
|
58
76
|
* Record user signals (e.g. clicked topic, read article) to inform profile and recommendations.
|
|
59
77
|
*
|
|
@@ -102,9 +120,21 @@ export interface UserMethods {
|
|
|
102
120
|
* @returns Updated aggregates and the user's recorded response
|
|
103
121
|
*/
|
|
104
122
|
respondToInteraction(interactionId: string, options: InteractionResponseRequest): Promise<NonNullable<InteractionResponseResponse>>;
|
|
123
|
+
/**
|
|
124
|
+
* Resolve one or more synthesis views in a single request. Responses are
|
|
125
|
+
* returned in the same order as `items`; an item that matches no view
|
|
126
|
+
* resolves to `{ uiData: [] }`.
|
|
127
|
+
*/
|
|
128
|
+
synthesizeViews(items: SynthesizeViewRequestItem[]): Promise<SynthesizeViewResponse[]>;
|
|
129
|
+
/**
|
|
130
|
+
* Resolve a single view by `keyName`. Calls within a short window are
|
|
131
|
+
* coalesced into one batched request. This is the path `<BitBitView>` uses
|
|
132
|
+
* under the hood.
|
|
133
|
+
*/
|
|
134
|
+
synthesizeViewItem(item: SynthesizeViewRequestItem): Promise<SynthesizeViewResponse>;
|
|
105
135
|
}
|
|
106
136
|
/**
|
|
107
137
|
* User-related API methods (uses shared auth store).
|
|
108
138
|
*/
|
|
109
|
-
export declare function createUserMethods(authStore: AuthStore, config: RequestConfig, synthesizeBatchTimeout?: number, signalBatchTimeout?: number): UserMethods;
|
|
139
|
+
export declare function createUserMethods(authStore: AuthStore, config: RequestConfig, synthesizeBatchTimeout?: number, signalBatchTimeout?: number, synthesizeViewBatchTimeout?: number): UserMethods;
|
|
110
140
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/user/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"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"}
|
package/dist/user/index.js
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createUserMethods = createUserMethods;
|
|
4
|
-
const
|
|
5
|
-
const recommendations_js_1 = require("./recommendations.js");
|
|
4
|
+
const interaction_js_1 = require("./interaction.js");
|
|
6
5
|
const profile_js_1 = require("./profile.js");
|
|
6
|
+
const recommendations_js_1 = require("./recommendations.js");
|
|
7
7
|
const report_js_1 = require("./report.js");
|
|
8
8
|
const signal_js_1 = require("./signal.js");
|
|
9
9
|
const signal_batch_manager_js_1 = require("./signal-batch-manager.js");
|
|
10
|
+
const submissions_js_1 = require("./submissions.js");
|
|
10
11
|
const synthesize_js_1 = require("./synthesize.js");
|
|
12
|
+
const synthesize_batch_manager_js_1 = require("./synthesize-batch-manager.js");
|
|
13
|
+
const synthesize_view_batch_manager_js_1 = require("./synthesize-view-batch-manager.js");
|
|
14
|
+
const synthesizeView_js_1 = require("./synthesizeView.js");
|
|
11
15
|
const token_js_1 = require("./token.js");
|
|
12
|
-
const interaction_js_1 = require("./interaction.js");
|
|
13
16
|
/**
|
|
14
17
|
* User-related API methods (uses shared auth store).
|
|
15
18
|
*/
|
|
16
|
-
function createUserMethods(authStore, config, synthesizeBatchTimeout = 250, signalBatchTimeout = 250) {
|
|
19
|
+
function createUserMethods(authStore, config, synthesizeBatchTimeout = 250, signalBatchTimeout = 250, synthesizeViewBatchTimeout = 50) {
|
|
17
20
|
const getConfigWithToken = authStore.getConfigWithToken.bind(authStore);
|
|
18
21
|
const synthesizeBatchManager = new synthesize_batch_manager_js_1.SynthesizeBatchManager(getConfigWithToken, synthesizeBatchTimeout);
|
|
19
22
|
const signalBatchManager = new signal_batch_manager_js_1.SignalBatchManager(getConfigWithToken, signalBatchTimeout);
|
|
23
|
+
const synthesizeViewBatchManager = new synthesize_view_batch_manager_js_1.SynthesizeViewBatchManager(getConfigWithToken, synthesizeViewBatchTimeout);
|
|
20
24
|
return {
|
|
21
25
|
authenticate: authStore.authenticate.bind(authStore),
|
|
22
26
|
token: (ssoToken) => (0, token_js_1.exchangeToken)(config, ssoToken),
|
|
@@ -24,12 +28,16 @@ function createUserMethods(authStore, config, synthesizeBatchTimeout = 250, sign
|
|
|
24
28
|
updateProfile: (options) => getConfigWithToken().then((cfg) => (0, profile_js_1.putProfile)(cfg, options)),
|
|
25
29
|
recommendations: (options) => getConfigWithToken().then((cfg) => (0, recommendations_js_1.getRecommendations)(cfg, options)),
|
|
26
30
|
report: (options) => getConfigWithToken().then((cfg) => (0, report_js_1.reportBit)(cfg, options)),
|
|
31
|
+
createSubmission: (options) => getConfigWithToken().then((cfg) => (0, submissions_js_1.createUserSubmission)(cfg, options)),
|
|
32
|
+
submissions: (keyName, options) => getConfigWithToken().then((cfg) => (0, submissions_js_1.listUserSubmissions)(cfg, keyName, options)),
|
|
27
33
|
signal: (options) => getConfigWithToken().then((cfg) => (0, signal_js_1.recordSignal)(cfg, options)),
|
|
28
34
|
signalItem: (signal) => signalBatchManager.addSignal(signal),
|
|
29
35
|
synthesize: (items, options) => getConfigWithToken().then((cfg) => (0, synthesize_js_1.synthesize)(cfg, items, options)),
|
|
30
36
|
synthesizeItem: (item, onStreamingData) => synthesizeBatchManager.addItem(item, onStreamingData),
|
|
31
37
|
interactions: (options) => getConfigWithToken().then((cfg) => (0, interaction_js_1.getInteractions)(cfg, options)),
|
|
32
38
|
respondToInteraction: (interactionId, options) => getConfigWithToken().then((cfg) => (0, interaction_js_1.respondToInteraction)(cfg, interactionId, options)),
|
|
39
|
+
synthesizeViews: (items) => getConfigWithToken().then((cfg) => (0, synthesizeView_js_1.synthesizeViews)(cfg, items)),
|
|
40
|
+
synthesizeViewItem: (item) => synthesizeViewBatchManager.addItem(item),
|
|
33
41
|
};
|
|
34
42
|
}
|
|
35
43
|
//# sourceMappingURL=index.js.map
|
package/dist/user/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":";;AAuMA,8CAoEC;AAzQD,qDAO0B;AAC1B,6CAKsB;AACtB,6DAI8B;AAC9B,2CAAiF;AACjF,2CAAiG;AACjG,uEAA+D;AAC/D,qDAO0B;AAC1B,mDAAgG;AAChG,+EAGuC;AACvC,yFAAgF;AAChF,2DAI6B;AAC7B,yCAAkF;AAyJlF;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,SAAoB,EACpB,MAAqB,EACrB,yBAAiC,GAAG,EACpC,qBAA6B,GAAG,EAChC,6BAAqC,EAAE;IAEvC,MAAM,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAExE,MAAM,sBAAsB,GAAG,IAAI,oDAAsB,CACvD,kBAAkB,EAClB,sBAAsB,CACvB,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAI,4CAAkB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAC1F,MAAM,0BAA0B,GAAG,IAAI,6DAA0B,CAC/D,kBAAkB,EAClB,0BAA0B,CAC3B,CAAC;IAEF,OAAO;QACL,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QAEpD,KAAK,EAAE,CAAC,QAAkC,EAAE,EAAE,CAAC,IAAA,wBAAa,EAAC,MAAM,EAAE,QAAQ,CAAC;QAE9E,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,uBAAU,CAAC;QAEpD,aAAa,EAAE,CAAC,OAA6B,EAAE,EAAE,CAC/C,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,uBAAU,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9D,eAAe,EAAE,CAAC,OAAgC,EAAE,EAAE,CACpD,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,uCAAkB,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEtE,MAAM,EAAE,CAAC,OAAsB,EAAE,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,qBAAS,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE/F,gBAAgB,EAAE,CAAC,OAAoC,EAAE,EAAE,CACzD,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,qCAAoB,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAExE,WAAW,EAAE,CAAC,OAAe,EAAE,OAAoC,EAAE,EAAE,CACrE,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,oCAAmB,EAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEhF,MAAM,EAAE,CAAC,OAAsB,EAAE,EAAE,CACjC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,wBAAY,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEhE,UAAU,EAAE,CAAC,MAAc,EAAwC,EAAE,CACnE,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC;QAEtC,UAAU,EAAE,CACV,KAAsB,EACtB,OAAsE,EACtE,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAExE,cAAc,EAAE,CACd,IAAoB,EACpB,eAA2C,EACV,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;QAE3F,YAAY,EAAE,CAAC,OAA4B,EAAE,EAAE,CAC7C,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,gCAAe,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEnE,oBAAoB,EAAE,CAAC,aAAqB,EAAE,OAAmC,EAAE,EAAE,CACnF,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,qCAAoB,EAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAEvF,eAAe,EAAE,CAAC,KAAkC,EAAE,EAAE,CACtD,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,mCAAe,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEjE,kBAAkB,EAAE,CAAC,IAA+B,EAAE,EAAE,CACtD,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC;KAC3C,CAAC;AACJ,CAAC"}
|