@swarm.ing/pieui 3.0.10 → 3.0.11

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.
@@ -0,0 +1,62 @@
1
+ import { UIConfigType } from '../types';
2
+ /**
3
+ * Единый источник правды для запроса конфига страницы (`/api/content`).
4
+ *
5
+ * Раньше URL собирался копипастой в каждом руте (PieRoot / PieTelegramRoot /
6
+ * PieMaxRoot). Пока запрос делал только сам рут, это было терпимо. Но хост
7
+ * умеет прогревать этот запрос ДО загрузки бандла (см. {@link PieConfigPrefetch}),
8
+ * а прогрев находят по точному совпадению URL — значит правило сборки обязано
9
+ * быть ровно одно, иначе прогрев молча уходит впустую.
10
+ */
11
+ /** Идентификатор рута, который уезжает на бэкенд параметром `__pieroot`. */
12
+ export type PieRootKind = 'telegram' | 'max' | 'web';
13
+ export interface ContentUrlParams {
14
+ /** Базовый URL API; завершающий слэш не важен. */
15
+ apiServer: string;
16
+ pathname: string;
17
+ /** Строка запроса БЕЗ ведущего «?» — как отдаёт `URLSearchParams.toString()`. */
18
+ search: string;
19
+ root: PieRootKind;
20
+ /** initData мини-аппа (Telegram / MAX). Для веб-рута не передаётся. */
21
+ initData?: string | null;
22
+ }
23
+ /**
24
+ * Абсолютный URL запроса конфига. Абсолютный, а не относительный, именно чтобы
25
+ * его можно было сравнить с тем, что прогрел хост; axios с абсолютным URL
26
+ * работает так же (baseURL просто игнорируется).
27
+ */
28
+ export declare function buildContentUrl({ apiServer, pathname, search, root, initData, }: ContentUrlParams): string;
29
+ /**
30
+ * Запрос конфига, который хост запустил заранее — до того, как загрузился и
31
+ * сгидрировался бандл.
32
+ *
33
+ * Зачем. Рут просит конфиг из хука, то есть в самом раннем случае после
34
+ * гидрации. На медленной сети это означает, что загрузка бандла и поход к
35
+ * бэкенду идут строго последовательно (в замерах приложения — около 4.5 с на
36
+ * Slow 4G до первого байта запроса). Хост может выстрелить тем же запросом из
37
+ * инлайнового скрипта в <head>, параллельно загрузке бандла, и отдать сюда
38
+ * промис — тогда рут заберёт готовый ответ вместо нового запроса.
39
+ *
40
+ * URL хост собирает через {@link buildContentUrl}, тем же вызовом, что и рут.
41
+ *
42
+ * Прогрев одноразовый: `used` взводится при первом же использовании, поэтому
43
+ * рефетчи (смена роута, `refetchOnMount`, ретраи react-query) честно идут в
44
+ * сеть и не получают устаревший ответ.
45
+ */
46
+ export interface PieConfigPrefetch {
47
+ /** Абсолютный URL, по которому хост уже отправил запрос. */
48
+ url: string;
49
+ /** Промис с распарсенным телом ответа. */
50
+ promise: Promise<UIConfigType>;
51
+ /** Служебное поле; выставляет рут. Хосту трогать не нужно. */
52
+ used?: boolean;
53
+ }
54
+ /**
55
+ * Отдаёт прогретый ответ, если он относится к этому же URL и ещё не был
56
+ * использован. Во всех остальных случаях — `null`, и рут идёт в сеть сам.
57
+ *
58
+ * Провалившийся прогрев (сеть моргнула, бэкенд ответил ошибкой) тоже даёт
59
+ * `null`: это не повод ронять страницу, обычный запрос сделает вторую попытку.
60
+ */
61
+ export declare function consumeConfigPrefetch(prefetch: PieConfigPrefetch | undefined, url: string): Promise<UIConfigType | null>;
62
+ //# sourceMappingURL=contentRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentRequest.d.ts","sourceRoot":"","sources":["../../src/util/contentRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC;;;;;;;;GAQG;AAEH,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,CAAA;AAEpD,MAAM,WAAW,gBAAgB;IAC7B,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,WAAW,CAAA;IACjB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC5B,SAAS,EACT,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,QAAQ,GACX,EAAE,gBAAgB,GAAG,MAAM,CAQ3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,iBAAiB;IAC9B,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAA;IACX,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9B,8DAA8D;IAC9D,IAAI,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACvC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EACvC,GAAG,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAU9B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swarm.ing/pieui",
3
- "version": "3.0.10",
3
+ "version": "3.0.11",
4
4
  "description": "A React component library featuring PieCard component",
5
5
  "repository": {
6
6
  "type": "git",