@whitewall/blip-sdk 0.0.191 → 0.0.193

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 (42) hide show
  1. package/dist/cjs/client.js.map +1 -1
  2. package/dist/cjs/index.js +2 -0
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/types/flow.js +46 -8
  5. package/dist/cjs/types/flow.js.map +1 -1
  6. package/dist/cjs/utils/builder.js +34 -34
  7. package/dist/cjs/utils/builder.js.map +1 -1
  8. package/dist/cjs/utils/flow-rules.js +304 -0
  9. package/dist/cjs/utils/flow-rules.js.map +1 -0
  10. package/dist/cjs/utils/minifier.js +410 -0
  11. package/dist/cjs/utils/minifier.js.map +1 -0
  12. package/dist/esm/client.js.map +1 -1
  13. package/dist/esm/index.js +2 -0
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/esm/types/flow.js +40 -6
  16. package/dist/esm/types/flow.js.map +1 -1
  17. package/dist/esm/utils/builder.js +31 -30
  18. package/dist/esm/utils/builder.js.map +1 -1
  19. package/dist/esm/utils/flow-rules.js +297 -0
  20. package/dist/esm/utils/flow-rules.js.map +1 -0
  21. package/dist/esm/utils/minifier.js +405 -0
  22. package/dist/esm/utils/minifier.js.map +1 -0
  23. package/dist/types/client.d.ts +2 -1
  24. package/dist/types/client.d.ts.map +1 -1
  25. package/dist/types/index.d.ts +2 -0
  26. package/dist/types/index.d.ts.map +1 -1
  27. package/dist/types/namespaces/account.d.ts +20 -20
  28. package/dist/types/types/flow.d.ts +286 -96
  29. package/dist/types/types/flow.d.ts.map +1 -1
  30. package/dist/types/utils/builder.d.ts +33 -30
  31. package/dist/types/utils/builder.d.ts.map +1 -1
  32. package/dist/types/utils/flow-rules.d.ts +50 -0
  33. package/dist/types/utils/flow-rules.d.ts.map +1 -0
  34. package/dist/types/utils/minifier.d.ts +2857 -0
  35. package/dist/types/utils/minifier.d.ts.map +1 -0
  36. package/package.json +1 -1
  37. package/src/client.ts +2 -1
  38. package/src/index.ts +2 -0
  39. package/src/types/flow.ts +52 -6
  40. package/src/utils/builder.ts +61 -73
  41. package/src/utils/flow-rules.ts +453 -0
  42. package/src/utils/minifier.ts +505 -0
@@ -0,0 +1,405 @@
1
+ /**
2
+ * Round-trippable projection of a builder flow.
3
+ *
4
+ * Unlike the digest in `./builder.ts`, this keeps the `$`-prefixed keys and maps
5
+ * 1:1 onto the builder document: `minifyFlow` strips only the metadata the
6
+ * builder regenerates on its own, and `expandMinifiedFlow` rebuilds it, so a
7
+ * minified flow can be edited by hand and pushed back.
8
+ */
9
+ import { z } from 'zod';
10
+ import { actionTypeSchema, baseActionSchema, CUSTOM_ACTION_LISTS, conditionOutputSchema, defaultOutputSchema, inputStateSchema, isChatStateSendMessage, ROOT_STATE_ID, stateSchema, } from "../types/flow.js";
11
+ import { checkFlow } from "./flow-rules.js";
12
+ /**
13
+ * Everything `minifyFlow` removes, grouped by where it lives. Together these
14
+ * describe the same subset as `minifiedStateSchema`, so the two must be kept in
15
+ * sync. The lists deliberately differ from each other: a card only exists on a
16
+ * content action, and only a content action carries a generated `settings.id`.
17
+ */
18
+ const STATE_NOISE = [
19
+ '$invalidContentActions',
20
+ '$invalidOutputs',
21
+ '$invalidCustomActions',
22
+ '$invalid',
23
+ 'id',
24
+ '$tags',
25
+ '$inputSuggestions',
26
+ 'isAiGenerated',
27
+ 'deskStateVersion',
28
+ ];
29
+ const CUSTOM_ACTION_NOISE = ['$id', '$title', '$invalid', '$typeOfContent'];
30
+ const CONTENT_ACTION_ITEM_NOISE = ['$invalid'];
31
+ const CONTENT_ACTION_NOISE = ['$id', '$typeOfContent', '$cardContent', '$inputSchema'];
32
+ const CONTENT_ACTION_SETTINGS_NOISE = ['id'];
33
+ const CONTENT_INPUT_NOISE = ['$cardContent', '$invalid'];
34
+ const CONDITION_OUTPUT_NOISE = [
35
+ '$id',
36
+ '$invalid',
37
+ '$isBuilderDefaultOutput',
38
+ '$connId',
39
+ '$isDeskOutput',
40
+ '$isDeskCustomOutput',
41
+ '$isDeskDefaultOutput',
42
+ '$contentId',
43
+ ];
44
+ const DEFAULT_OUTPUT_NOISE = ['$invalid'];
45
+ /**
46
+ * Pairs an incoming item with the one the builder already has, so its generated
47
+ * ids survive a push instead of being replaced on every write.
48
+ *
49
+ * A match is consumed, because two items in the same state can be identical and
50
+ * must not end up sharing an id.
51
+ */
52
+ function createStaleMatcher(candidates, key) {
53
+ const byKey = new Map();
54
+ for (const candidate of candidates ?? []) {
55
+ const candidateKey = key(candidate);
56
+ const bucket = byKey.get(candidateKey);
57
+ if (bucket) {
58
+ bucket.push(candidate);
59
+ }
60
+ else {
61
+ byKey.set(candidateKey, [candidate]);
62
+ }
63
+ }
64
+ return (item) => byKey.get(key(item))?.shift();
65
+ }
66
+ // The generated `settings.id` is left out of the key since a minified action
67
+ // never carries one.
68
+ const actionKey = ({ type, settings, conditions }) => {
69
+ const { id: _id, ...rest } = (settings ?? {});
70
+ return JSON.stringify([type, rest, conditions]);
71
+ };
72
+ const conditionOutputKey = ({ stateId, conditions }) => JSON.stringify([stateId, conditions]);
73
+ // Only the part of the input a minified flow carries, so an unchanged input keeps
74
+ // the card the builder drew for it.
75
+ const inputKey = ({ $cardContent: _card, $invalid: _invalid, ...rest }) => JSON.stringify(rest);
76
+ function stripKeys(target, keys) {
77
+ if (!target || typeof target !== 'object') {
78
+ return;
79
+ }
80
+ for (const key of keys) {
81
+ delete target[key];
82
+ }
83
+ }
84
+ /**
85
+ * Angular tags every item of an `ng-repeat`ed array with a `$$hashKey`, so the
86
+ * document the builder saves carries them on its condition outputs, on the
87
+ * conditions inside them and on its content actions. Nothing outside the editor
88
+ * reads them and the editor puts them back, but `minifiedStateSchema` is strict —
89
+ * so left in place they would report a freshly pulled flow as invalid.
90
+ *
91
+ * They are stripped wherever they appear rather than per location, because which
92
+ * arrays the editor happened to repeat over is not something to keep in sync here.
93
+ */
94
+ function stripAngularKeys(target) {
95
+ if (Array.isArray(target)) {
96
+ for (const item of target) {
97
+ stripAngularKeys(item);
98
+ }
99
+ return;
100
+ }
101
+ if (target && typeof target === 'object') {
102
+ delete target.$$hashKey;
103
+ for (const value of Object.values(target)) {
104
+ stripAngularKeys(value);
105
+ }
106
+ }
107
+ }
108
+ const minifiedActionSchema = z.intersection(baseActionSchema.partial({ $id: true }), actionTypeSchema);
109
+ const minifiedInputSchema = inputStateSchema.partial({ $cardContent: true, $invalid: true }).strict();
110
+ const minifiedContentActionItemSchema = z
111
+ .object({
112
+ action: minifiedActionSchema.optional(),
113
+ input: minifiedInputSchema.optional(),
114
+ })
115
+ .strict();
116
+ /**
117
+ * `stateSchema` minus the metadata `minifyFlow` strips. It is strict on purpose:
118
+ * minified flows are edited by hand, so an unknown key is almost always a typo
119
+ * that would otherwise be silently dropped on push.
120
+ */
121
+ export const minifiedStateSchema = stateSchema
122
+ .extend({
123
+ $enteringCustomActions: z.array(minifiedActionSchema),
124
+ $leavingCustomActions: z.array(minifiedActionSchema),
125
+ $localCustomActions: z.array(minifiedActionSchema).optional(),
126
+ $afterStateChangedActions: z.array(minifiedActionSchema).optional(),
127
+ $contentActions: z.array(minifiedContentActionItemSchema),
128
+ $conditionOutputs: z.array(conditionOutputSchema.strict()),
129
+ $defaultOutput: defaultOutputSchema.strict(),
130
+ })
131
+ .partial({
132
+ $tags: true,
133
+ $inputSuggestions: true,
134
+ $invalidContentActions: true,
135
+ $invalidOutputs: true,
136
+ $invalidCustomActions: true,
137
+ })
138
+ .strict();
139
+ /**
140
+ * A push replaces the whole flow, so everything that decides whether the runtime
141
+ * loads it — the entry point, the outputs, the loops, every condition and every
142
+ * action — is a validation error here instead of a bot that does not start.
143
+ *
144
+ * The rules run from this one check, and never per state or per action: zod skips
145
+ * a check on a value that already has issues, so nesting them would report the
146
+ * innermost problem and hide the rest of the flow's.
147
+ */
148
+ export const minifiedFlowSchema = z.record(z.string(), minifiedStateSchema).check((ctx) => {
149
+ checkFlow(ctx.value, (rule, path, message) => {
150
+ ctx.issues.push({ code: 'custom', input: ctx.value, path, message, params: { rule } });
151
+ });
152
+ });
153
+ /**
154
+ * Strips everything the builder can regenerate, so what is left is the part of
155
+ * the flow worth reading and editing.
156
+ *
157
+ * The result is round-trippable through `expandMinifiedFlow` with one
158
+ * exception: typing indicators are discarded rather than preserved, so a custom
159
+ * typing interval is replaced by the default on the way back. See
160
+ * `createChatStateContentAction`.
161
+ */
162
+ export function minifyFlow(flow) {
163
+ const minified = {};
164
+ for (const [stateId, state] of Object.entries(flow)) {
165
+ const minifiedState = structuredClone(state);
166
+ stripKeys(minifiedState, STATE_NOISE);
167
+ stripAngularKeys(minifiedState);
168
+ stripKeys(minifiedState.$defaultOutput, DEFAULT_OUTPUT_NOISE);
169
+ // Only the state that is the entry point, and only a plugin that is really
170
+ // configured, are worth carrying: expansion writes `false` on all the others.
171
+ if (!minifiedState.root) {
172
+ delete minifiedState.root;
173
+ }
174
+ if (!minifiedState.$whiteWallIntegration) {
175
+ delete minifiedState.$whiteWallIntegration;
176
+ }
177
+ for (const output of minifiedState.$conditionOutputs ?? []) {
178
+ stripKeys(output, CONDITION_OUTPUT_NOISE);
179
+ }
180
+ for (const list of CUSTOM_ACTION_LISTS) {
181
+ for (const action of minifiedState[list] ?? []) {
182
+ stripKeys(action, CUSTOM_ACTION_NOISE);
183
+ }
184
+ }
185
+ // The builder re-inserts a typing indicator before every message, so
186
+ // carrying them around would just add noise to the minified flow.
187
+ minifiedState.$contentActions = minifiedState.$contentActions
188
+ ?.filter((item) => !isChatStateSendMessage(item))
189
+ .map((item) => {
190
+ stripKeys(item, CONTENT_ACTION_ITEM_NOISE);
191
+ stripKeys(item.input, CONTENT_INPUT_NOISE);
192
+ stripKeys(item.action, CONTENT_ACTION_NOISE);
193
+ stripKeys(item.action?.settings, CONTENT_ACTION_SETTINGS_NOISE);
194
+ return item;
195
+ });
196
+ minified[stateId] = minifiedState;
197
+ }
198
+ return minified;
199
+ }
200
+ export function expandMinifiedFlow(minifiedFlow, staleFlow) {
201
+ const flow = {};
202
+ // All or nothing: mixing the flow's own entry point with the builder's would
203
+ // leave two states marked as root, which the runtime refuses.
204
+ const declaresRoot = Object.values(minifiedFlow).some((state) => state.root);
205
+ for (const [stateId, minifiedState] of Object.entries(minifiedFlow)) {
206
+ try {
207
+ const staleState = staleFlow?.[stateId];
208
+ const state = structuredClone(minifiedState);
209
+ state.$invalidContentActions = false;
210
+ state.$invalidOutputs = false;
211
+ state.$invalidCustomActions = false;
212
+ state.$invalid = false;
213
+ state.id = stateId;
214
+ // The entry point is carried by the flow, because `Flow.Validate`
215
+ // asserts on the flag and nothing else can express "this state, not the
216
+ // one named `onboarding`". A flow that predates it falls back to what
217
+ // the builder already knows, then to the id convention, so a first push
218
+ // still gets an entry point either way.
219
+ state.root = declaresRoot
220
+ ? Boolean(minifiedState.root)
221
+ : staleState
222
+ ? staleState.root
223
+ : stateId === ROOT_STATE_ID || undefined;
224
+ state.$tags = staleState?.$tags ?? [];
225
+ state.$inputSuggestions = staleState?.$inputSuggestions ?? [];
226
+ state.isAiGenerated = staleState?.isAiGenerated ?? false;
227
+ // A plugin's configuration is authored, not generated, so the minified
228
+ // flow is the source of truth for it. Falling back to the stale state
229
+ // keeps a plugin configured before this was carried through.
230
+ state.$whiteWallIntegration =
231
+ minifiedState.$whiteWallIntegration ?? staleState?.$whiteWallIntegration ?? false;
232
+ state.deskStateVersion = staleState?.deskStateVersion;
233
+ state.$defaultOutput.$invalid = false;
234
+ // Reuse the ids the builder already knows so the canvas keeps its
235
+ // connections instead of redrawing them on every push.
236
+ const matchStaleConditionOutput = createStaleMatcher(staleState?.$conditionOutputs, conditionOutputKey);
237
+ for (const conditionOutput of state.$conditionOutputs ?? []) {
238
+ const staleConditionOutput = matchStaleConditionOutput(conditionOutput);
239
+ conditionOutput.$id = staleConditionOutput?.$id ?? crypto.randomUUID();
240
+ conditionOutput.$invalid = false;
241
+ conditionOutput.$connId = staleConditionOutput?.$connId;
242
+ conditionOutput.$isDeskOutput = staleConditionOutput?.$isDeskOutput;
243
+ conditionOutput.$isDeskCustomOutput = staleConditionOutput?.$isDeskCustomOutput;
244
+ conditionOutput.$isDeskDefaultOutput = staleConditionOutput?.$isDeskDefaultOutput;
245
+ conditionOutput.$contentId = staleConditionOutput?.$contentId;
246
+ }
247
+ for (const actionType of CUSTOM_ACTION_LISTS) {
248
+ const matchStaleAction = createStaleMatcher(staleState?.[actionType], actionKey);
249
+ for (const action of state[actionType] ?? []) {
250
+ const staleAction = matchStaleAction(action);
251
+ action.$id = staleAction?.$id ?? crypto.randomUUID();
252
+ action.$invalid = false;
253
+ action.$title = staleAction?.$title ?? createActionTitle(action);
254
+ action.$typeOfContent = staleAction?.$typeOfContent;
255
+ }
256
+ }
257
+ const matchStaleContentAction = createStaleMatcher(staleState?.$contentActions?.flatMap((candidate) => candidate.action ?? []), actionKey);
258
+ const matchStaleInput = createStaleMatcher(staleState?.$contentActions?.flatMap((candidate) => candidate.input ?? []), inputKey);
259
+ for (const contentAction of state.$contentActions ?? []) {
260
+ contentAction.$invalid = false;
261
+ if (contentAction.input) {
262
+ const staleInput = matchStaleInput(contentAction.input);
263
+ contentAction.input.$invalid = false;
264
+ contentAction.input.$cardContent = staleInput?.$cardContent ?? {
265
+ document: {
266
+ id: crypto.randomUUID(),
267
+ type: 'text/plain',
268
+ textContent: 'Entrada do usuário',
269
+ content: 'Entrada do usuário',
270
+ },
271
+ editable: false,
272
+ deletable: true,
273
+ position: 'right',
274
+ editing: false,
275
+ };
276
+ }
277
+ if (contentAction.action) {
278
+ const staleAction = matchStaleContentAction(contentAction.action);
279
+ const staleSettings = staleAction?.settings;
280
+ const settings = contentAction.action.settings;
281
+ contentAction.action.$id = staleAction?.$id ?? crypto.randomUUID();
282
+ settings.id = staleSettings?.id ?? crypto.randomUUID();
283
+ // The label the builder wrote is at least as precise as a derived
284
+ // one, but a GET can answer with an empty one.
285
+ contentAction.action.$typeOfContent =
286
+ staleAction?.$typeOfContent || getTypeOfContent(contentAction.action);
287
+ contentAction.action.$cardContent = {
288
+ deletable: true,
289
+ editable: true,
290
+ position: 'left',
291
+ document: {
292
+ id: staleAction?.$cardContent?.document.id ?? crypto.randomUUID(),
293
+ type: settings.type,
294
+ content: settings.content,
295
+ },
296
+ };
297
+ }
298
+ }
299
+ state.$contentActions = (state.$contentActions ?? []).flatMap((item) => item.action ? [createChatStateContentAction(), item] : [item]);
300
+ flow[stateId] = state;
301
+ }
302
+ catch (err) {
303
+ if (err instanceof Error) {
304
+ throw new Error(`[State ${stateId}] ${err.message}`, { cause: err });
305
+ }
306
+ throw err;
307
+ }
308
+ }
309
+ // Drops the keys explicitly set to undefined above.
310
+ return JSON.parse(JSON.stringify(flow));
311
+ }
312
+ /**
313
+ * Typing indicators are dropped by `minifyFlow` and rebuilt here from scratch,
314
+ * one before every message, rather than being carried through the minified flow.
315
+ *
316
+ * This is deliberate: they are pure presentation, they outnumber the messages
317
+ * they precede, and keeping them would double the size of the file a person or
318
+ * an LLM has to read and edit. The trade-off is that a typing interval tuned by
319
+ * hand in the builder does not survive a round trip and comes back as the
320
+ * default below.
321
+ */
322
+ function createChatStateContentAction() {
323
+ const content = { state: 'composing', interval: 1000 };
324
+ return {
325
+ action: {
326
+ $id: crypto.randomUUID(),
327
+ $typeOfContent: 'chat-state',
328
+ type: 'SendMessage',
329
+ settings: {
330
+ id: crypto.randomUUID(),
331
+ type: 'application/vnd.lime.chatstate+json',
332
+ content,
333
+ },
334
+ $cardContent: {
335
+ document: {
336
+ id: crypto.randomUUID(),
337
+ type: 'application/vnd.lime.chatstate+json',
338
+ content,
339
+ },
340
+ editable: true,
341
+ deletable: true,
342
+ position: 'left',
343
+ },
344
+ },
345
+ $invalid: false,
346
+ };
347
+ }
348
+ /** Derives the label the builder would have given an action it has never seen. */
349
+ function getTypeOfContent(action) {
350
+ if (action.type === 'SendRawMessage') {
351
+ return 'raw-content';
352
+ }
353
+ const settings = action.settings;
354
+ switch (settings.type) {
355
+ case 'text/plain':
356
+ return 'text';
357
+ case 'application/vnd.lime.media-link+json':
358
+ return getTypeOfMedia(settings.content?.type ?? '');
359
+ case 'application/vnd.lime.select+json':
360
+ return settings.content?.scope === 'immediate' ? 'select-immediate' : 'select';
361
+ case 'application/vnd.lime.chatstate+json':
362
+ return 'chat-state';
363
+ case 'application/vnd.lime.web-link+json':
364
+ return 'web-link';
365
+ default:
366
+ throw new Error(`Content action does not have a valid action property: ${JSON.stringify(action)}`);
367
+ }
368
+ }
369
+ function getTypeOfMedia(mimeType) {
370
+ if (mimeType.startsWith('audio/')) {
371
+ return 'media-audio';
372
+ }
373
+ if (mimeType.startsWith('video/')) {
374
+ return 'media-video';
375
+ }
376
+ return mimeType.startsWith('image/') ? 'media' : 'media-document';
377
+ }
378
+ function createActionTitle(action) {
379
+ const sanitize = (value) => value.toString().replace(/[^a-zA-Z0-9.@]/g, '');
380
+ switch (action.type) {
381
+ case 'TrackEvent':
382
+ return `Track ${sanitize(action.settings.category)}`;
383
+ case 'ExecuteScript':
384
+ case 'ExecuteScriptV2':
385
+ return `Process ${action.settings.outputVariable}`;
386
+ case 'Redirect':
387
+ return `Redirect to ${sanitize(action.settings.address)}`;
388
+ case 'MergeContact': {
389
+ const items = Object.keys(action.settings).filter((key) => key !== 'extras');
390
+ if (Object.keys(action.settings.extras ?? {}).length > 0) {
391
+ items.push('extras');
392
+ }
393
+ return `Set ${items.join(', ')}`;
394
+ }
395
+ case 'ProcessHttp':
396
+ return `[${action.settings.method}] Process ${action.settings.responseBodyVariable ?? ''}`;
397
+ case 'SetVariable':
398
+ return `Set ${action.settings.variable} to ${sanitize(action.settings.value ?? '')}`;
399
+ case 'ProcessCommand':
400
+ return `[${action.settings.method.toUpperCase()}] Process ${action.settings.variable}`;
401
+ default:
402
+ return undefined;
403
+ }
404
+ }
405
+ //# sourceMappingURL=minifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minifier.js","sourceRoot":"","sources":["../../../src/utils/minifier.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import { PortalNamespace } from './namespaces/portal.ts';
11
11
  import { SchedulerNamespace } from './namespaces/scheduler.ts';
12
12
  import { TunnelNamespace } from './namespaces/tunnel.ts';
13
13
  import { WhatsAppNamespace } from './namespaces/whatsapp.ts';
14
+ import type { NonTransportAuthentication } from './sender/security.ts';
14
15
  import type { ConnectionSenderConstructor, Sender } from './sender/sender.ts';
15
16
  import type { Message, MessageTypes } from './types/message.ts';
16
17
  import { type Domain, type Identity } from './types/node.ts';
@@ -35,7 +36,7 @@ export declare class BlipClient<TSender extends Sender = Sender> {
35
36
  close(): Promise<void>;
36
37
  static http(bot: string | Identity, accessKey: string, tenantId?: string): BlipClient;
37
38
  static http(token: string, tenantId?: string): BlipClient;
38
- static createAccountAndConnect<TSender extends Sender>(sender: ConnectionSenderConstructor<TSender>, identity: Identity, password: string, tenantId?: string): Promise<BlipClient<TSender>>;
39
+ static createAccountAndConnect<TSender extends Sender>(sender: ConnectionSenderConstructor<TSender, NonTransportAuthentication>, identity: Identity, password: string, tenantId?: string): Promise<BlipClient<TSender>>;
39
40
  }
40
41
  export declare class DelegatedClient<TSender extends Sender = Sender> extends BlipClient<TSender> {
41
42
  get delegatedIdentity(): Identity | Domain;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAG5D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,EAAoB,2BAA2B,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC/F,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAmB,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAQ,MAAM,iBAAiB,CAAA;AAGnF,qBAAa,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;aAE/B,MAAM,EAAE,OAAO;IAC/B,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,kBAAkB;gBADtC,MAAM,EAAE,OAAO,EACZ,cAAc,CAAC,EAAE,kBAAkB,YAAA;IAgB1D,SAAgB,OAAO,EAAG,gBAAgB,CAAA;IAC1C,SAAgB,OAAO,EAAG,gBAAgB,CAAA;IAC1C,SAAgB,IAAI,EAAG,aAAa,CAAA;IACpC,SAAgB,KAAK,EAAG,cAAc,CAAA;IACtC,SAAgB,QAAQ,EAAG,iBAAiB,CAAA;IAC5C,SAAgB,SAAS,EAAG,kBAAkB,CAAA;IAC9C,SAAgB,SAAS,EAAG,kBAAkB,CAAA;IAC9C,SAAgB,cAAc,EAAG,uBAAuB,CAAA;IACxD,SAAgB,MAAM,EAAG,eAAe,CAAA;IACxC,SAAgB,OAAO,EAAG,gBAAgB,CAAA;IAC1C,SAAgB,OAAO,EAAG,gBAAgB,CAAA;IAC1C,SAAgB,MAAM,EAAG,eAAe,CAAA;IAEjC,EAAE,CAAC,uBAAuB,EAAE,MAAM,GAAG,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC;IAOxE,WAAW,CAAC,IAAI,SAAS,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;WAIf,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU;WAC9E,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU;WAK5C,uBAAuB,CAAC,OAAO,SAAS,MAAM,EAC9D,MAAM,EAAE,2BAA2B,CAAC,OAAO,EAAE,0BAA0B,CAAC,EACxE,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM;CAkCxB;AAED,qBAAa,eAAe,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,UAAU,CAAC,OAAO,CAAC;IACrF,IAAW,iBAAiB,IAAI,QAAQ,GAAG,MAAM,CAMhD;IAEY,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;CA+B3D"}
@@ -5,6 +5,8 @@ export * from './sender/index.ts';
5
5
  export * from './types/index.ts';
6
6
  export * from './utils/builder.ts';
7
7
  export * from './utils/desk.ts';
8
+ export * from './utils/flow-rules.ts';
9
+ export * from './utils/minifier.ts';
8
10
  export * from './utils/odata.ts';
9
11
  export * from './utils/thread.ts';
10
12
  export * from './utils/uri.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA"}
@@ -101,7 +101,7 @@ export declare class AccountNamespace extends Namespace {
101
101
  position: "left";
102
102
  document: {
103
103
  id: string;
104
- type: "text/plain" | "application/vnd.lime.media-link+json" | "application/json" | "application/vnd.lime.select+json" | "application/vnd.lime.chatstate+json" | "application/vnd.lime.web-link+json";
104
+ type: string;
105
105
  content: string | {
106
106
  state: string;
107
107
  interval?: string | number | undefined;
@@ -159,7 +159,7 @@ export declare class AccountNamespace extends Namespace {
159
159
  settings: {
160
160
  rawContent: string;
161
161
  $invalid?: boolean | undefined;
162
- type?: "application/json" | undefined;
162
+ type?: string | undefined;
163
163
  };
164
164
  } | {
165
165
  type: "TrackEvent";
@@ -315,7 +315,7 @@ export declare class AccountNamespace extends Namespace {
315
315
  position: "left";
316
316
  document: {
317
317
  id: string;
318
- type: "text/plain" | "application/vnd.lime.media-link+json" | "application/json" | "application/vnd.lime.select+json" | "application/vnd.lime.chatstate+json" | "application/vnd.lime.web-link+json";
318
+ type: string;
319
319
  content: string | {
320
320
  state: string;
321
321
  interval?: string | number | undefined;
@@ -373,7 +373,7 @@ export declare class AccountNamespace extends Namespace {
373
373
  settings: {
374
374
  rawContent: string;
375
375
  $invalid?: boolean | undefined;
376
- type?: "application/json" | undefined;
376
+ type?: string | undefined;
377
377
  };
378
378
  } | {
379
379
  type: "TrackEvent";
@@ -478,7 +478,7 @@ export declare class AccountNamespace extends Namespace {
478
478
  position: "left";
479
479
  document: {
480
480
  id: string;
481
- type: "text/plain" | "application/vnd.lime.media-link+json" | "application/json" | "application/vnd.lime.select+json" | "application/vnd.lime.chatstate+json" | "application/vnd.lime.web-link+json";
481
+ type: string;
482
482
  content: string | {
483
483
  state: string;
484
484
  interval?: string | number | undefined;
@@ -536,7 +536,7 @@ export declare class AccountNamespace extends Namespace {
536
536
  settings: {
537
537
  rawContent: string;
538
538
  $invalid?: boolean | undefined;
539
- type?: "application/json" | undefined;
539
+ type?: string | undefined;
540
540
  };
541
541
  } | {
542
542
  type: "TrackEvent";
@@ -657,7 +657,7 @@ export declare class AccountNamespace extends Namespace {
657
657
  position: "left";
658
658
  document: {
659
659
  id: string;
660
- type: "text/plain" | "application/vnd.lime.media-link+json" | "application/json" | "application/vnd.lime.select+json" | "application/vnd.lime.chatstate+json" | "application/vnd.lime.web-link+json";
660
+ type: string;
661
661
  content: string | {
662
662
  state: string;
663
663
  interval?: string | number | undefined;
@@ -715,7 +715,7 @@ export declare class AccountNamespace extends Namespace {
715
715
  settings: {
716
716
  rawContent: string;
717
717
  $invalid?: boolean | undefined;
718
- type?: "application/json" | undefined;
718
+ type?: string | undefined;
719
719
  };
720
720
  } | {
721
721
  type: "TrackEvent";
@@ -822,7 +822,7 @@ export declare class AccountNamespace extends Namespace {
822
822
  position: "left";
823
823
  document: {
824
824
  id: string;
825
- type: "text/plain" | "application/vnd.lime.media-link+json" | "application/json" | "application/vnd.lime.select+json" | "application/vnd.lime.chatstate+json" | "application/vnd.lime.web-link+json";
825
+ type: string;
826
826
  content: string | {
827
827
  state: string;
828
828
  interval?: string | number | undefined;
@@ -880,7 +880,7 @@ export declare class AccountNamespace extends Namespace {
880
880
  settings: {
881
881
  rawContent: string;
882
882
  $invalid?: boolean | undefined;
883
- type?: "application/json" | undefined;
883
+ type?: string | undefined;
884
884
  };
885
885
  } | {
886
886
  type: "TrackEvent";
@@ -996,7 +996,7 @@ export declare class AccountNamespace extends Namespace {
996
996
  position: "left";
997
997
  document: {
998
998
  id: string;
999
- type: "text/plain" | "application/vnd.lime.media-link+json" | "application/json" | "application/vnd.lime.select+json" | "application/vnd.lime.chatstate+json" | "application/vnd.lime.web-link+json";
999
+ type: string;
1000
1000
  content: string | {
1001
1001
  state: string;
1002
1002
  interval?: string | number | undefined;
@@ -1054,7 +1054,7 @@ export declare class AccountNamespace extends Namespace {
1054
1054
  settings: {
1055
1055
  rawContent: string;
1056
1056
  $invalid?: boolean | undefined;
1057
- type?: "application/json" | undefined;
1057
+ type?: string | undefined;
1058
1058
  };
1059
1059
  } | {
1060
1060
  type: "TrackEvent";
@@ -1210,7 +1210,7 @@ export declare class AccountNamespace extends Namespace {
1210
1210
  position: "left";
1211
1211
  document: {
1212
1212
  id: string;
1213
- type: "text/plain" | "application/vnd.lime.media-link+json" | "application/json" | "application/vnd.lime.select+json" | "application/vnd.lime.chatstate+json" | "application/vnd.lime.web-link+json";
1213
+ type: string;
1214
1214
  content: string | {
1215
1215
  state: string;
1216
1216
  interval?: string | number | undefined;
@@ -1268,7 +1268,7 @@ export declare class AccountNamespace extends Namespace {
1268
1268
  settings: {
1269
1269
  rawContent: string;
1270
1270
  $invalid?: boolean | undefined;
1271
- type?: "application/json" | undefined;
1271
+ type?: string | undefined;
1272
1272
  };
1273
1273
  } | {
1274
1274
  type: "TrackEvent";
@@ -1373,7 +1373,7 @@ export declare class AccountNamespace extends Namespace {
1373
1373
  position: "left";
1374
1374
  document: {
1375
1375
  id: string;
1376
- type: "text/plain" | "application/vnd.lime.media-link+json" | "application/json" | "application/vnd.lime.select+json" | "application/vnd.lime.chatstate+json" | "application/vnd.lime.web-link+json";
1376
+ type: string;
1377
1377
  content: string | {
1378
1378
  state: string;
1379
1379
  interval?: string | number | undefined;
@@ -1431,7 +1431,7 @@ export declare class AccountNamespace extends Namespace {
1431
1431
  settings: {
1432
1432
  rawContent: string;
1433
1433
  $invalid?: boolean | undefined;
1434
- type?: "application/json" | undefined;
1434
+ type?: string | undefined;
1435
1435
  };
1436
1436
  } | {
1437
1437
  type: "TrackEvent";
@@ -1552,7 +1552,7 @@ export declare class AccountNamespace extends Namespace {
1552
1552
  position: "left";
1553
1553
  document: {
1554
1554
  id: string;
1555
- type: "text/plain" | "application/vnd.lime.media-link+json" | "application/json" | "application/vnd.lime.select+json" | "application/vnd.lime.chatstate+json" | "application/vnd.lime.web-link+json";
1555
+ type: string;
1556
1556
  content: string | {
1557
1557
  state: string;
1558
1558
  interval?: string | number | undefined;
@@ -1610,7 +1610,7 @@ export declare class AccountNamespace extends Namespace {
1610
1610
  settings: {
1611
1611
  rawContent: string;
1612
1612
  $invalid?: boolean | undefined;
1613
- type?: "application/json" | undefined;
1613
+ type?: string | undefined;
1614
1614
  };
1615
1615
  } | {
1616
1616
  type: "TrackEvent";
@@ -1717,7 +1717,7 @@ export declare class AccountNamespace extends Namespace {
1717
1717
  position: "left";
1718
1718
  document: {
1719
1719
  id: string;
1720
- type: "text/plain" | "application/vnd.lime.media-link+json" | "application/json" | "application/vnd.lime.select+json" | "application/vnd.lime.chatstate+json" | "application/vnd.lime.web-link+json";
1720
+ type: string;
1721
1721
  content: string | {
1722
1722
  state: string;
1723
1723
  interval?: string | number | undefined;
@@ -1775,7 +1775,7 @@ export declare class AccountNamespace extends Namespace {
1775
1775
  settings: {
1776
1776
  rawContent: string;
1777
1777
  $invalid?: boolean | undefined;
1778
- type?: "application/json" | undefined;
1778
+ type?: string | undefined;
1779
1779
  };
1780
1780
  } | {
1781
1781
  type: "TrackEvent";