@multiplatform.one/frappe 7.28.1 → 7.29.1
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/dist/cjs/core/http.cjs +3 -29
- package/dist/cjs/core/http.native.js +3 -50
- package/dist/cjs/core/http.native.js.map +1 -1
- package/dist/cjs/core/serverMessages.cjs +61 -0
- package/dist/cjs/core/serverMessages.native.js +92 -0
- package/dist/cjs/core/serverMessages.native.js.map +1 -0
- package/dist/cjs/index.cjs +3 -0
- package/dist/cjs/index.native.js +3 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/core/http.mjs +3 -29
- package/dist/esm/core/http.mjs.map +1 -1
- package/dist/esm/core/http.native.js +3 -50
- package/dist/esm/core/http.native.js.map +1 -1
- package/dist/esm/core/serverMessages.mjs +35 -0
- package/dist/esm/core/serverMessages.mjs.map +1 -0
- package/dist/esm/core/serverMessages.native.js +63 -0
- package/dist/esm/core/serverMessages.native.js.map +1 -0
- package/dist/esm/index.mjs +2 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/jsx/core/http.mjs +3 -29
- package/dist/jsx/core/http.mjs.map +1 -1
- package/dist/jsx/core/http.native.js +3 -50
- package/dist/jsx/core/http.native.js.map +1 -1
- package/dist/jsx/core/serverMessages.mjs +35 -0
- package/dist/jsx/core/serverMessages.mjs.map +1 -0
- package/dist/jsx/core/serverMessages.native.js +92 -0
- package/dist/jsx/core/serverMessages.native.js.map +1 -0
- package/dist/jsx/index.js +2 -1
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +2 -1
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +3 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/package.json +6 -6
- package/src/core/http.spec.ts +44 -3
- package/src/core/http.ts +3 -42
- package/src/core/serverMessages.spec.ts +41 -0
- package/src/core/serverMessages.ts +63 -0
- package/src/index.ts +1 -0
- package/types/core/http.d.ts.map +1 -1
- package/types/core/serverMessages.d.ts +17 -0
- package/types/core/serverMessages.d.ts.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
}), mod);
|
|
25
|
+
var serverMessages_exports = {};
|
|
26
|
+
__export(serverMessages_exports, {
|
|
27
|
+
readServerMessages: () => readServerMessages,
|
|
28
|
+
serverMessageLines: () => serverMessageLines
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(serverMessages_exports);
|
|
31
|
+
function _type_of(obj) {
|
|
32
|
+
"@swc/helpers - typeof";
|
|
33
|
+
|
|
34
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
35
|
+
}
|
|
36
|
+
var lineBoundary = /<\s*br\s*\/?\s*>|<\/?\s*(?:p|div|li|ul|ol|summary|details|h[1-6]|tr|table|blockquote|pre)\b[^>]*>/gi;
|
|
37
|
+
var entities = [[/ /g, " "], [/</g, "<"], [/>/g, ">"], [/"/g, '"'], [/'/g, "'"], [/&/g, "&"]];
|
|
38
|
+
function serverMessageLines(html) {
|
|
39
|
+
var text = html.replace(lineBoundary, "\n").replace(/<[^>]*>/g, "");
|
|
40
|
+
var _iteratorNormalCompletion = true,
|
|
41
|
+
_didIteratorError = false,
|
|
42
|
+
_iteratorError = void 0;
|
|
43
|
+
try {
|
|
44
|
+
for (var _iterator = entities[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
45
|
+
var [pattern, value] = _step.value;
|
|
46
|
+
text = text.replace(pattern, value);
|
|
47
|
+
}
|
|
48
|
+
} catch (err) {
|
|
49
|
+
_didIteratorError = true;
|
|
50
|
+
_iteratorError = err;
|
|
51
|
+
} finally {
|
|
52
|
+
try {
|
|
53
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
54
|
+
_iterator.return();
|
|
55
|
+
}
|
|
56
|
+
} finally {
|
|
57
|
+
if (_didIteratorError) {
|
|
58
|
+
throw _iteratorError;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return text.split("\n").map(function (line) {
|
|
63
|
+
return line.replace(/\s+/g, " ").trim();
|
|
64
|
+
}).filter(Boolean);
|
|
65
|
+
}
|
|
66
|
+
function entryText(entry) {
|
|
67
|
+
var value = entry;
|
|
68
|
+
if (typeof entry === "string") {
|
|
69
|
+
try {
|
|
70
|
+
value = JSON.parse(entry);
|
|
71
|
+
} catch (unused) {
|
|
72
|
+
return entry;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object") return value.message;
|
|
76
|
+
return typeof value === "string" ? value : entry;
|
|
77
|
+
}
|
|
78
|
+
function readServerMessages(raw) {
|
|
79
|
+
if (typeof raw !== "string" || !raw.trim()) return [];
|
|
80
|
+
var entries;
|
|
81
|
+
try {
|
|
82
|
+
entries = JSON.parse(raw);
|
|
83
|
+
} catch (unused) {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
if (!Array.isArray(entries)) return [];
|
|
87
|
+
return entries.flatMap(function (entry) {
|
|
88
|
+
var text = entryText(entry);
|
|
89
|
+
return typeof text === "string" ? serverMessageLines(text) : [];
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=serverMessages.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","serverMessages_exports","readServerMessages","serverMessageLines","module","exports","_type_of","obj","Symbol","constructor","lineBoundary","entities"],"sources":["../../../src/core/serverMessages.ts"],"sourcesContent":[null],"mappings":"AAUA,YAAM;;AAGN,IAAAA,SAAM,GAAAC,MAAqD,CAAAC,cAAA;AAAA,IACxDC,gBAAc,GAAAF,MAAA,CAAAG,wBAAA;AAAA,IACdC,iBAAY,GAAAJ,MAAA,CAAAK,mBAAA;AAAA,IACZC,YAAY,GAAAN,MAAA,CAAAO,SAAA,CAAAC,cAAA;AAAA,IACZC,QAAA,GAAWA,CAAAC,MAAG,EAAAC,GAAA;EACf,KAAC,IAAAC,IAAU,IAAGD,GAAA,EACbZ,SAAU,CAAAW,MAAG,EAAAE,IAAA;IAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;IAAAE,UAAA;EAAA;AAChB;AAGO,IAAAC,WAAS,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAmBC,MAAwB,EAAAC,IAAA;EACzD,IAAIF,IAAA,IAAO,OAAKA,IAAA,KAAQ,YAAc,OAAMA,IAAA,KAAQ,UAAc;IAClE,SAAWG,GAAC,IAAAhB,iBAAmB,CAAAa,IAAU,GACzC,IAAO,CAAAX,YACE,CAAIe,IACV,CAAAL,EAAK,EAAAI,GAAA,KAASA,GAAA,KAAKF,MAAQ,EAEhCnB,SAAA,CAAAiB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;EAEA;EACE,OAAIE,EAAA;AACJ;AACE,IAAAM,YAAI,GAAAC,GAAA,IAAAR,WAAA,CAAAhB,SAAA;EAAAyB,KAAA;AAAA,IAAAD,GAAA;AACF,IAAAE,sBAAmB,IAAK;AAAAhB,QAC1B,CAAAgB,sBAAQ;EACNC,kBAAO,EAAAA,CAAA,KAAAA,kBAAA;EAAAC,kBACT,EAAAA,CAAA,KAAAA;AAAA,EACF;AACAC,MAAI,CAAAC,OAAA,GAASP,YAAO,CAAAG,sBAA4B;AAChD,SAAOK,QAAOA,CAAAC,GAAA;EAChB;;EAMO,OAASA,GAAA,WAAAC,MAAmB,KAAwB,eAAAD,GAAA,CAAAE,WAAA,KAAAD,MAAA,qBAAAD,GAAA;AACzD;AACA,IAAAG,YAAI;AACJ,IAAAC,QAAI,IACF,CACF,SAAQ,EACN,IACF,EACA,CACA,OAAO,EACL,IACA,EACF,CACF,S","ignoreList":[]}
|
package/dist/jsx/index.js
CHANGED
|
@@ -16,6 +16,7 @@ import { eq, gt, gte, lt, lte, and, or, not, inArray, like, ilike, isUndefined,
|
|
|
16
16
|
import { Debouncer, AsyncDebouncer, Throttler, AsyncThrottler, RateLimiter, AsyncRateLimiter, Queuer, AsyncQueuer, Batcher, AsyncBatcher, debounce, asyncDebounce, throttle, asyncThrottle, rateLimit, asyncRateLimit, queue, asyncQueue, batch, asyncBatch } from "@tanstack/pacer";
|
|
17
17
|
export * from "./fixtures.mjs";
|
|
18
18
|
import { HttpClient, getCookie, setCookie, deleteCookie, setSSRCookies, clearSSRCookies, invalidateCookieCache } from "./core/http.mjs";
|
|
19
|
+
import { readServerMessages, serverMessageLines } from "./core/serverMessages.mjs";
|
|
19
20
|
import { FrappeError } from "./core/types.mjs";
|
|
20
21
|
import { useDocTypeMeta, useLinkSearch, useLinkTitle, useDocTypeSearch, parseDependsOn, parseFormLayout, stockFieldTypes, customFieldTypes, frappeFieldTypes } from "./doctype.mjs";
|
|
21
22
|
import { defaultPageLength, Order, Operation } from "./sync/types.mjs";
|
|
@@ -23,5 +24,5 @@ import { MergeStrategy, FieldMergeStrategy } from "./sync/merge.mjs";
|
|
|
23
24
|
import { matchesFilters, validateFilters, normalizeFilters, extractFilterFields, extractSingleName, formatFilter, hasServerOnlyOperators, canEvaluateClientSide, isTreeOperator, getClientEvaluationBlockers, FilterOperator } from "./sync/filters.mjs";
|
|
24
25
|
import { TreeDbModule } from "./db.mjs";
|
|
25
26
|
import { default as default2 } from "./plugin/index.mjs";
|
|
26
|
-
export { AsyncBatcher, AsyncDebouncer, AsyncQueuer, AsyncRateLimiter, AsyncThrottler, AuthModule, Batcher, CallModule, DbModule, Debouncer, FieldMergeStrategy, FileModule, FilterOperator, FrappeApp, FrappeError, HttpClient, MergeStrategy, OPTIMISTIC_TEMP_PREFIX, Operation, Order, Queuer, RateLimiter, RealtimeModule, RealtimePlatform, SyncModule, Throttler, TreeDbModule, __getActiveSyncModule, and, asyncBatch, asyncDebounce, asyncQueue, asyncRateLimit, asyncThrottle, avg, batch, canEvaluateClientSide, clearSSRCookies, count, createCollection, createFixtureCollection, createFrappeCollection, createOptimisticAction, createRateLimitedBatch, createTransaction, customFieldTypes, debounce, defaultPageLength, deleteCookie, eq, extractFilterFields, extractSingleName, fixtureCollectionOptions, formatFilter, frappeCollectionOptions, frappeDocLoader, frappeFieldTypes, frappeListLoader, default2 as frappePlugin, getClientEvaluationBlockers, getCookie, getFrappeSyncModule, gt, gte, hasServerOnlyOperators, ilike, inArray, invalidateCookieCache, isNull, isOptimisticTempId, isTreeOperator, isUndefined, like, loadDoc, loadDocList, lt, lte, matchesFilters, max, min, newOptimisticTempId, normalizeFilters, not, or, parseDependsOn, parseFormLayout, queue, rateLimit, runOptimisticRpc, serverFrappeBaseURL, setCookie, setSSRCookies, stockFieldTypes, sum, throttle, useDebouncedSearch, useDocTypeMeta, useDocTypeSearch, useFrappeCatchUp, useFrappeCollection, useFrappeConnection, useFrappeDoctypeEvents, useFrappeInfiniteList, useFrappePendingMutations, useInfiniteScroll, useLinkSearch, useLinkTitle, useLiveQuery, useThrottledPagination, validateFilters };
|
|
27
|
+
export { AsyncBatcher, AsyncDebouncer, AsyncQueuer, AsyncRateLimiter, AsyncThrottler, AuthModule, Batcher, CallModule, DbModule, Debouncer, FieldMergeStrategy, FileModule, FilterOperator, FrappeApp, FrappeError, HttpClient, MergeStrategy, OPTIMISTIC_TEMP_PREFIX, Operation, Order, Queuer, RateLimiter, RealtimeModule, RealtimePlatform, SyncModule, Throttler, TreeDbModule, __getActiveSyncModule, and, asyncBatch, asyncDebounce, asyncQueue, asyncRateLimit, asyncThrottle, avg, batch, canEvaluateClientSide, clearSSRCookies, count, createCollection, createFixtureCollection, createFrappeCollection, createOptimisticAction, createRateLimitedBatch, createTransaction, customFieldTypes, debounce, defaultPageLength, deleteCookie, eq, extractFilterFields, extractSingleName, fixtureCollectionOptions, formatFilter, frappeCollectionOptions, frappeDocLoader, frappeFieldTypes, frappeListLoader, default2 as frappePlugin, getClientEvaluationBlockers, getCookie, getFrappeSyncModule, gt, gte, hasServerOnlyOperators, ilike, inArray, invalidateCookieCache, isNull, isOptimisticTempId, isTreeOperator, isUndefined, like, loadDoc, loadDocList, lt, lte, matchesFilters, max, min, newOptimisticTempId, normalizeFilters, not, or, parseDependsOn, parseFormLayout, queue, rateLimit, readServerMessages, runOptimisticRpc, serverFrappeBaseURL, serverMessageLines, setCookie, setSSRCookies, stockFieldTypes, sum, throttle, useDebouncedSearch, useDocTypeMeta, useDocTypeSearch, useFrappeCatchUp, useFrappeCollection, useFrappeConnection, useFrappeDoctypeEvents, useFrappeInfiniteList, useFrappePendingMutations, useInfiniteScroll, useLinkSearch, useLinkTitle, useLiveQuery, useThrottledPagination, validateFilters };
|
|
27
28
|
//# sourceMappingURL=index.js.map
|
package/dist/jsx/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FrappeApp","frappeDocLoader","frappeListLoader","loadDoc","loadDocList","serverFrappeBaseURL","AuthModule","CallModule","DbModule","FileModule","RealtimeModule","RealtimePlatform","SyncModule","createFrappeCollection","frappeCollectionOptions","createFixtureCollection","fixtureCollectionOptions","createOptimisticAction","isOptimisticTempId","newOptimisticTempId","OPTIMISTIC_TEMP_PREFIX","runOptimisticRpc","useFrappeCollection","useFrappeCatchUp","useFrappeConnection","useFrappeDoctypeEvents","useFrappePendingMutations","useInfiniteScroll","useFrappeInfiniteList","getFrappeSyncModule","__getActiveSyncModule","useDebouncedSearch","useThrottledPagination","createRateLimitedBatch","useLiveQuery","createCollection","createTransaction","eq","gt","gte","lt","lte","and","or","not","inArray","like","ilike","isUndefined","isNull","count","avg","sum","min","max","Debouncer","AsyncDebouncer","Throttler","AsyncThrottler","RateLimiter","AsyncRateLimiter","Queuer","AsyncQueuer","Batcher","AsyncBatcher","debounce","asyncDebounce","throttle","asyncThrottle","rateLimit","asyncRateLimit","queue","asyncQueue","batch","asyncBatch","HttpClient","getCookie","setCookie","deleteCookie","setSSRCookies","clearSSRCookies","invalidateCookieCache","FrappeError","useDocTypeMeta","useLinkSearch","useLinkTitle","useDocTypeSearch","parseDependsOn","parseFormLayout","stockFieldTypes","customFieldTypes","frappeFieldTypes","defaultPageLength","Order","Operation","MergeStrategy","FieldMergeStrategy","matchesFilters","validateFilters","normalizeFilters","extractFilterFields","extractSingleName","formatFilter","hasServerOnlyOperators","canEvaluateClientSide","isTreeOperator","getClientEvaluationBlockers","FilterOperator","TreeDbModule","default","default2"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAQA,SAASA,SAAA,QAAiB;AAE1B,SACEC,eAAA,EACAC,gBAAA,EACAC,OAAA,EACAC,WAAA,EACAC,mBAAA,QAKK;AACP,SAASC,UAAA,QAAkB;AAC3B,SAASC,UAAA,QAAkB;AAC3B,SAASC,QAAA,QAAgB;AACzB,SAASC,UAAA,QAAkB;AAC3B,SAASC,cAAA,EAAgBC,gBAAA,QAAwB;AAajD,SAASC,UAAA,QAAkB;AAG3B,SACEC,sBAAA,EACAC,uBAAA,EACAC,uBAAA,EACAC,wBAAA,QACK;AAEP,SACEC,sBAAA,EACAC,kBAAA,EACAC,mBAAA,EACAC,sBAAA,EACAC,gBAAA,QACK;AAIP,SACEC,mBAAA,EACAC,gBAAA,EACAC,mBAAA,EACAC,sBAAA,EACAC,yBAAA,EACAC,iBAAA,EACAC,qBAAA,EACAC,mBAAA,EACAC,qBAAA,QACK;AAkBP,SAASC,kBAAA,EAAoBC,sBAAA,EAAwBC,sBAAA,QAA8B;AAYnF,SAASC,YAAA,QAAoB;AAC7B,SAASC,gBAAA,EAAkBC,iBAAA,QAAyB;AAGpD,SACEC,EAAA,EACAC,EAAA,EACAC,GAAA,EACAC,EAAA,EACAC,GAAA,EACAC,GAAA,EACAC,EAAA,EACAC,GAAA,EACAC,OAAA,EACAC,IAAA,EACAC,KAAA,EACAC,WAAA,EACAC,MAAA,EACAC,KAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,QACK;AAGP,SACEC,SAAA,EACAC,cAAA,EACAC,SAAA,EACAC,cAAA,EACAC,WAAA,EACAC,gBAAA,EACAC,MAAA,EACAC,WAAA,EACAC,OAAA,EACAC,YAAA,EACAC,QAAA,EACAC,aAAA,EACAC,QAAA,EACAC,aAAA,EACAC,SAAA,EACAC,cAAA,EACAC,KAAA,EACAC,UAAA,EACAC,KAAA,EACAC,UAAA,QACK;AAGP,cAAc;AAGd,SACEC,UAAA,EACAC,SAAA,EACAC,SAAA,EACAC,YAAA,EACAC,aAAA,EACAC,eAAA,EACAC,qBAAA,QACK;
|
|
1
|
+
{"version":3,"names":["FrappeApp","frappeDocLoader","frappeListLoader","loadDoc","loadDocList","serverFrappeBaseURL","AuthModule","CallModule","DbModule","FileModule","RealtimeModule","RealtimePlatform","SyncModule","createFrappeCollection","frappeCollectionOptions","createFixtureCollection","fixtureCollectionOptions","createOptimisticAction","isOptimisticTempId","newOptimisticTempId","OPTIMISTIC_TEMP_PREFIX","runOptimisticRpc","useFrappeCollection","useFrappeCatchUp","useFrappeConnection","useFrappeDoctypeEvents","useFrappePendingMutations","useInfiniteScroll","useFrappeInfiniteList","getFrappeSyncModule","__getActiveSyncModule","useDebouncedSearch","useThrottledPagination","createRateLimitedBatch","useLiveQuery","createCollection","createTransaction","eq","gt","gte","lt","lte","and","or","not","inArray","like","ilike","isUndefined","isNull","count","avg","sum","min","max","Debouncer","AsyncDebouncer","Throttler","AsyncThrottler","RateLimiter","AsyncRateLimiter","Queuer","AsyncQueuer","Batcher","AsyncBatcher","debounce","asyncDebounce","throttle","asyncThrottle","rateLimit","asyncRateLimit","queue","asyncQueue","batch","asyncBatch","HttpClient","getCookie","setCookie","deleteCookie","setSSRCookies","clearSSRCookies","invalidateCookieCache","readServerMessages","serverMessageLines","FrappeError","useDocTypeMeta","useLinkSearch","useLinkTitle","useDocTypeSearch","parseDependsOn","parseFormLayout","stockFieldTypes","customFieldTypes","frappeFieldTypes","defaultPageLength","Order","Operation","MergeStrategy","FieldMergeStrategy","matchesFilters","validateFilters","normalizeFilters","extractFilterFields","extractSingleName","formatFilter","hasServerOnlyOperators","canEvaluateClientSide","isTreeOperator","getClientEvaluationBlockers","FilterOperator","TreeDbModule","default","default2"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAQA,SAASA,SAAA,QAAiB;AAE1B,SACEC,eAAA,EACAC,gBAAA,EACAC,OAAA,EACAC,WAAA,EACAC,mBAAA,QAKK;AACP,SAASC,UAAA,QAAkB;AAC3B,SAASC,UAAA,QAAkB;AAC3B,SAASC,QAAA,QAAgB;AACzB,SAASC,UAAA,QAAkB;AAC3B,SAASC,cAAA,EAAgBC,gBAAA,QAAwB;AAajD,SAASC,UAAA,QAAkB;AAG3B,SACEC,sBAAA,EACAC,uBAAA,EACAC,uBAAA,EACAC,wBAAA,QACK;AAEP,SACEC,sBAAA,EACAC,kBAAA,EACAC,mBAAA,EACAC,sBAAA,EACAC,gBAAA,QACK;AAIP,SACEC,mBAAA,EACAC,gBAAA,EACAC,mBAAA,EACAC,sBAAA,EACAC,yBAAA,EACAC,iBAAA,EACAC,qBAAA,EACAC,mBAAA,EACAC,qBAAA,QACK;AAkBP,SAASC,kBAAA,EAAoBC,sBAAA,EAAwBC,sBAAA,QAA8B;AAYnF,SAASC,YAAA,QAAoB;AAC7B,SAASC,gBAAA,EAAkBC,iBAAA,QAAyB;AAGpD,SACEC,EAAA,EACAC,EAAA,EACAC,GAAA,EACAC,EAAA,EACAC,GAAA,EACAC,GAAA,EACAC,EAAA,EACAC,GAAA,EACAC,OAAA,EACAC,IAAA,EACAC,KAAA,EACAC,WAAA,EACAC,MAAA,EACAC,KAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,QACK;AAGP,SACEC,SAAA,EACAC,cAAA,EACAC,SAAA,EACAC,cAAA,EACAC,WAAA,EACAC,gBAAA,EACAC,MAAA,EACAC,WAAA,EACAC,OAAA,EACAC,YAAA,EACAC,QAAA,EACAC,aAAA,EACAC,QAAA,EACAC,aAAA,EACAC,SAAA,EACAC,cAAA,EACAC,KAAA,EACAC,UAAA,EACAC,KAAA,EACAC,UAAA,QACK;AAGP,cAAc;AAGd,SACEC,UAAA,EACAC,SAAA,EACAC,SAAA,EACAC,YAAA,EACAC,aAAA,EACAC,eAAA,EACAC,qBAAA,QACK;AACP,SAASC,kBAAA,EAAoBC,kBAAA,QAA0B;AAEvD,SAASC,WAAA,QAAmB;AAyB5B,SACEC,cAAA,EACAC,aAAA,EACAC,YAAA,EACAC,gBAAA,EACAC,cAAA,EACAC,eAAA,EACAC,eAAA,EACAC,gBAAA,EACAC,gBAAA,QACK;AAmCP,SAASC,iBAAA,EAAmBC,KAAA,EAAOC,SAAA,QAAiB;AACpD,SAASC,aAAA,EAAeC,kBAAA,QAA0B;AAIlD,SACEC,cAAA,EACAC,eAAA,EACAC,gBAAA,EACAC,mBAAA,EACAC,iBAAA,EACAC,YAAA,EACAC,sBAAA,EACAC,qBAAA,EACAC,cAAA,EACAC,2BAAA,EACAC,cAAA,QACK;AAWP,SAASC,YAAA,QAAoB;AAS7B,SAAoBC,OAAA,IAAXC,QAAA,QAA+B","ignoreList":[]}
|
package/dist/jsx/index.mjs
CHANGED
|
@@ -16,6 +16,7 @@ import { eq, gt, gte, lt, lte, and, or, not, inArray, like, ilike, isUndefined,
|
|
|
16
16
|
import { Debouncer, AsyncDebouncer, Throttler, AsyncThrottler, RateLimiter, AsyncRateLimiter, Queuer, AsyncQueuer, Batcher, AsyncBatcher, debounce, asyncDebounce, throttle, asyncThrottle, rateLimit, asyncRateLimit, queue, asyncQueue, batch, asyncBatch } from "@tanstack/pacer";
|
|
17
17
|
export * from "./fixtures.mjs";
|
|
18
18
|
import { HttpClient, getCookie, setCookie, deleteCookie, setSSRCookies, clearSSRCookies, invalidateCookieCache } from "./core/http.mjs";
|
|
19
|
+
import { readServerMessages, serverMessageLines } from "./core/serverMessages.mjs";
|
|
19
20
|
import { FrappeError } from "./core/types.mjs";
|
|
20
21
|
import { useDocTypeMeta, useLinkSearch, useLinkTitle, useDocTypeSearch, parseDependsOn, parseFormLayout, stockFieldTypes, customFieldTypes, frappeFieldTypes } from "./doctype.mjs";
|
|
21
22
|
import { defaultPageLength, Order, Operation } from "./sync/types.mjs";
|
|
@@ -23,5 +24,5 @@ import { MergeStrategy, FieldMergeStrategy } from "./sync/merge.mjs";
|
|
|
23
24
|
import { matchesFilters, validateFilters, normalizeFilters, extractFilterFields, extractSingleName, formatFilter, hasServerOnlyOperators, canEvaluateClientSide, isTreeOperator, getClientEvaluationBlockers, FilterOperator } from "./sync/filters.mjs";
|
|
24
25
|
import { TreeDbModule } from "./db.mjs";
|
|
25
26
|
import { default as default2 } from "./plugin/index.mjs";
|
|
26
|
-
export { AsyncBatcher, AsyncDebouncer, AsyncQueuer, AsyncRateLimiter, AsyncThrottler, AuthModule, Batcher, CallModule, DbModule, Debouncer, FieldMergeStrategy, FileModule, FilterOperator, FrappeApp, FrappeError, HttpClient, MergeStrategy, OPTIMISTIC_TEMP_PREFIX, Operation, Order, Queuer, RateLimiter, RealtimeModule, RealtimePlatform, SyncModule, Throttler, TreeDbModule, __getActiveSyncModule, and, asyncBatch, asyncDebounce, asyncQueue, asyncRateLimit, asyncThrottle, avg, batch, canEvaluateClientSide, clearSSRCookies, count, createCollection, createFixtureCollection, createFrappeCollection, createOptimisticAction, createRateLimitedBatch, createTransaction, customFieldTypes, debounce, defaultPageLength, deleteCookie, eq, extractFilterFields, extractSingleName, fixtureCollectionOptions, formatFilter, frappeCollectionOptions, frappeDocLoader, frappeFieldTypes, frappeListLoader, default2 as frappePlugin, getClientEvaluationBlockers, getCookie, getFrappeSyncModule, gt, gte, hasServerOnlyOperators, ilike, inArray, invalidateCookieCache, isNull, isOptimisticTempId, isTreeOperator, isUndefined, like, loadDoc, loadDocList, lt, lte, matchesFilters, max, min, newOptimisticTempId, normalizeFilters, not, or, parseDependsOn, parseFormLayout, queue, rateLimit, runOptimisticRpc, serverFrappeBaseURL, setCookie, setSSRCookies, stockFieldTypes, sum, throttle, useDebouncedSearch, useDocTypeMeta, useDocTypeSearch, useFrappeCatchUp, useFrappeCollection, useFrappeConnection, useFrappeDoctypeEvents, useFrappeInfiniteList, useFrappePendingMutations, useInfiniteScroll, useLinkSearch, useLinkTitle, useLiveQuery, useThrottledPagination, validateFilters };
|
|
27
|
+
export { AsyncBatcher, AsyncDebouncer, AsyncQueuer, AsyncRateLimiter, AsyncThrottler, AuthModule, Batcher, CallModule, DbModule, Debouncer, FieldMergeStrategy, FileModule, FilterOperator, FrappeApp, FrappeError, HttpClient, MergeStrategy, OPTIMISTIC_TEMP_PREFIX, Operation, Order, Queuer, RateLimiter, RealtimeModule, RealtimePlatform, SyncModule, Throttler, TreeDbModule, __getActiveSyncModule, and, asyncBatch, asyncDebounce, asyncQueue, asyncRateLimit, asyncThrottle, avg, batch, canEvaluateClientSide, clearSSRCookies, count, createCollection, createFixtureCollection, createFrappeCollection, createOptimisticAction, createRateLimitedBatch, createTransaction, customFieldTypes, debounce, defaultPageLength, deleteCookie, eq, extractFilterFields, extractSingleName, fixtureCollectionOptions, formatFilter, frappeCollectionOptions, frappeDocLoader, frappeFieldTypes, frappeListLoader, default2 as frappePlugin, getClientEvaluationBlockers, getCookie, getFrappeSyncModule, gt, gte, hasServerOnlyOperators, ilike, inArray, invalidateCookieCache, isNull, isOptimisticTempId, isTreeOperator, isUndefined, like, loadDoc, loadDocList, lt, lte, matchesFilters, max, min, newOptimisticTempId, normalizeFilters, not, or, parseDependsOn, parseFormLayout, queue, rateLimit, readServerMessages, runOptimisticRpc, serverFrappeBaseURL, serverMessageLines, setCookie, setSSRCookies, stockFieldTypes, sum, throttle, useDebouncedSearch, useDocTypeMeta, useDocTypeSearch, useFrappeCatchUp, useFrappeCollection, useFrappeConnection, useFrappeDoctypeEvents, useFrappeInfiniteList, useFrappePendingMutations, useInfiniteScroll, useLinkSearch, useLinkTitle, useLiveQuery, useThrottledPagination, validateFilters };
|
|
27
28
|
//# sourceMappingURL=index.mjs.map
|
package/dist/jsx/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FrappeApp","frappeDocLoader","frappeListLoader","loadDoc","loadDocList","serverFrappeBaseURL","AuthModule","CallModule","DbModule","FileModule","RealtimeModule","RealtimePlatform","SyncModule","createFrappeCollection","frappeCollectionOptions","createFixtureCollection","fixtureCollectionOptions","createOptimisticAction","isOptimisticTempId","newOptimisticTempId","OPTIMISTIC_TEMP_PREFIX","runOptimisticRpc","useFrappeCollection","useFrappeCatchUp","useFrappeConnection","useFrappeDoctypeEvents","useFrappePendingMutations","useInfiniteScroll","useFrappeInfiniteList","getFrappeSyncModule","__getActiveSyncModule","useDebouncedSearch","useThrottledPagination","createRateLimitedBatch","useLiveQuery","createCollection","createTransaction","eq","gt","gte","lt","lte","and","or","not","inArray","like","ilike","isUndefined","isNull","count","avg","sum","min","max","Debouncer","AsyncDebouncer","Throttler","AsyncThrottler","RateLimiter","AsyncRateLimiter","Queuer","AsyncQueuer","Batcher","AsyncBatcher","debounce","asyncDebounce","throttle","asyncThrottle","rateLimit","asyncRateLimit","queue","asyncQueue","batch","asyncBatch","HttpClient","getCookie","setCookie","deleteCookie","setSSRCookies","clearSSRCookies","invalidateCookieCache","FrappeError","useDocTypeMeta","useLinkSearch","useLinkTitle","useDocTypeSearch","parseDependsOn","parseFormLayout","stockFieldTypes","customFieldTypes","frappeFieldTypes","defaultPageLength","Order","Operation","MergeStrategy","FieldMergeStrategy","matchesFilters","validateFilters","normalizeFilters","extractFilterFields","extractSingleName","formatFilter","hasServerOnlyOperators","canEvaluateClientSide","isTreeOperator","getClientEvaluationBlockers","FilterOperator","TreeDbModule","default","default2"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAQA,SAASA,SAAA,QAAiB;AAE1B,SACEC,eAAA,EACAC,gBAAA,EACAC,OAAA,EACAC,WAAA,EACAC,mBAAA,QAKK;AACP,SAASC,UAAA,QAAkB;AAC3B,SAASC,UAAA,QAAkB;AAC3B,SAASC,QAAA,QAAgB;AACzB,SAASC,UAAA,QAAkB;AAC3B,SAASC,cAAA,EAAgBC,gBAAA,QAAwB;AAajD,SAASC,UAAA,QAAkB;AAG3B,SACEC,sBAAA,EACAC,uBAAA,EACAC,uBAAA,EACAC,wBAAA,QACK;AAEP,SACEC,sBAAA,EACAC,kBAAA,EACAC,mBAAA,EACAC,sBAAA,EACAC,gBAAA,QACK;AAIP,SACEC,mBAAA,EACAC,gBAAA,EACAC,mBAAA,EACAC,sBAAA,EACAC,yBAAA,EACAC,iBAAA,EACAC,qBAAA,EACAC,mBAAA,EACAC,qBAAA,QACK;AAkBP,SAASC,kBAAA,EAAoBC,sBAAA,EAAwBC,sBAAA,QAA8B;AAYnF,SAASC,YAAA,QAAoB;AAC7B,SAASC,gBAAA,EAAkBC,iBAAA,QAAyB;AAGpD,SACEC,EAAA,EACAC,EAAA,EACAC,GAAA,EACAC,EAAA,EACAC,GAAA,EACAC,GAAA,EACAC,EAAA,EACAC,GAAA,EACAC,OAAA,EACAC,IAAA,EACAC,KAAA,EACAC,WAAA,EACAC,MAAA,EACAC,KAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,QACK;AAGP,SACEC,SAAA,EACAC,cAAA,EACAC,SAAA,EACAC,cAAA,EACAC,WAAA,EACAC,gBAAA,EACAC,MAAA,EACAC,WAAA,EACAC,OAAA,EACAC,YAAA,EACAC,QAAA,EACAC,aAAA,EACAC,QAAA,EACAC,aAAA,EACAC,SAAA,EACAC,cAAA,EACAC,KAAA,EACAC,UAAA,EACAC,KAAA,EACAC,UAAA,QACK;AAGP,cAAc;AAGd,SACEC,UAAA,EACAC,SAAA,EACAC,SAAA,EACAC,YAAA,EACAC,aAAA,EACAC,eAAA,EACAC,qBAAA,QACK;
|
|
1
|
+
{"version":3,"names":["FrappeApp","frappeDocLoader","frappeListLoader","loadDoc","loadDocList","serverFrappeBaseURL","AuthModule","CallModule","DbModule","FileModule","RealtimeModule","RealtimePlatform","SyncModule","createFrappeCollection","frappeCollectionOptions","createFixtureCollection","fixtureCollectionOptions","createOptimisticAction","isOptimisticTempId","newOptimisticTempId","OPTIMISTIC_TEMP_PREFIX","runOptimisticRpc","useFrappeCollection","useFrappeCatchUp","useFrappeConnection","useFrappeDoctypeEvents","useFrappePendingMutations","useInfiniteScroll","useFrappeInfiniteList","getFrappeSyncModule","__getActiveSyncModule","useDebouncedSearch","useThrottledPagination","createRateLimitedBatch","useLiveQuery","createCollection","createTransaction","eq","gt","gte","lt","lte","and","or","not","inArray","like","ilike","isUndefined","isNull","count","avg","sum","min","max","Debouncer","AsyncDebouncer","Throttler","AsyncThrottler","RateLimiter","AsyncRateLimiter","Queuer","AsyncQueuer","Batcher","AsyncBatcher","debounce","asyncDebounce","throttle","asyncThrottle","rateLimit","asyncRateLimit","queue","asyncQueue","batch","asyncBatch","HttpClient","getCookie","setCookie","deleteCookie","setSSRCookies","clearSSRCookies","invalidateCookieCache","readServerMessages","serverMessageLines","FrappeError","useDocTypeMeta","useLinkSearch","useLinkTitle","useDocTypeSearch","parseDependsOn","parseFormLayout","stockFieldTypes","customFieldTypes","frappeFieldTypes","defaultPageLength","Order","Operation","MergeStrategy","FieldMergeStrategy","matchesFilters","validateFilters","normalizeFilters","extractFilterFields","extractSingleName","formatFilter","hasServerOnlyOperators","canEvaluateClientSide","isTreeOperator","getClientEvaluationBlockers","FilterOperator","TreeDbModule","default","default2"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAQA,SAASA,SAAA,QAAiB;AAE1B,SACEC,eAAA,EACAC,gBAAA,EACAC,OAAA,EACAC,WAAA,EACAC,mBAAA,QAKK;AACP,SAASC,UAAA,QAAkB;AAC3B,SAASC,UAAA,QAAkB;AAC3B,SAASC,QAAA,QAAgB;AACzB,SAASC,UAAA,QAAkB;AAC3B,SAASC,cAAA,EAAgBC,gBAAA,QAAwB;AAajD,SAASC,UAAA,QAAkB;AAG3B,SACEC,sBAAA,EACAC,uBAAA,EACAC,uBAAA,EACAC,wBAAA,QACK;AAEP,SACEC,sBAAA,EACAC,kBAAA,EACAC,mBAAA,EACAC,sBAAA,EACAC,gBAAA,QACK;AAIP,SACEC,mBAAA,EACAC,gBAAA,EACAC,mBAAA,EACAC,sBAAA,EACAC,yBAAA,EACAC,iBAAA,EACAC,qBAAA,EACAC,mBAAA,EACAC,qBAAA,QACK;AAkBP,SAASC,kBAAA,EAAoBC,sBAAA,EAAwBC,sBAAA,QAA8B;AAYnF,SAASC,YAAA,QAAoB;AAC7B,SAASC,gBAAA,EAAkBC,iBAAA,QAAyB;AAGpD,SACEC,EAAA,EACAC,EAAA,EACAC,GAAA,EACAC,EAAA,EACAC,GAAA,EACAC,GAAA,EACAC,EAAA,EACAC,GAAA,EACAC,OAAA,EACAC,IAAA,EACAC,KAAA,EACAC,WAAA,EACAC,MAAA,EACAC,KAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,QACK;AAGP,SACEC,SAAA,EACAC,cAAA,EACAC,SAAA,EACAC,cAAA,EACAC,WAAA,EACAC,gBAAA,EACAC,MAAA,EACAC,WAAA,EACAC,OAAA,EACAC,YAAA,EACAC,QAAA,EACAC,aAAA,EACAC,QAAA,EACAC,aAAA,EACAC,SAAA,EACAC,cAAA,EACAC,KAAA,EACAC,UAAA,EACAC,KAAA,EACAC,UAAA,QACK;AAGP,cAAc;AAGd,SACEC,UAAA,EACAC,SAAA,EACAC,SAAA,EACAC,YAAA,EACAC,aAAA,EACAC,eAAA,EACAC,qBAAA,QACK;AACP,SAASC,kBAAA,EAAoBC,kBAAA,QAA0B;AAEvD,SAASC,WAAA,QAAmB;AAyB5B,SACEC,cAAA,EACAC,aAAA,EACAC,YAAA,EACAC,gBAAA,EACAC,cAAA,EACAC,eAAA,EACAC,eAAA,EACAC,gBAAA,EACAC,gBAAA,QACK;AAmCP,SAASC,iBAAA,EAAmBC,KAAA,EAAOC,SAAA,QAAiB;AACpD,SAASC,aAAA,EAAeC,kBAAA,QAA0B;AAIlD,SACEC,cAAA,EACAC,eAAA,EACAC,gBAAA,EACAC,mBAAA,EACAC,iBAAA,EACAC,YAAA,EACAC,sBAAA,EACAC,qBAAA,EACAC,cAAA,EACAC,2BAAA,EACAC,cAAA,QACK;AAWP,SAASC,YAAA,QAAoB;AAS7B,SAAoBC,OAAA,IAAXC,QAAA,QAA+B","ignoreList":[]}
|
package/dist/jsx/index.native.js
CHANGED
|
@@ -124,8 +124,10 @@ __export(index_exports, {
|
|
|
124
124
|
parseFormLayout: () => import_doctype.parseFormLayout,
|
|
125
125
|
queue: () => import_pacer2.queue,
|
|
126
126
|
rateLimit: () => import_pacer2.rateLimit,
|
|
127
|
+
readServerMessages: () => import_serverMessages.readServerMessages,
|
|
127
128
|
runOptimisticRpc: () => import_optimistic.runOptimisticRpc,
|
|
128
129
|
serverFrappeBaseURL: () => import_serverLoaders.serverFrappeBaseURL,
|
|
130
|
+
serverMessageLines: () => import_serverMessages.serverMessageLines,
|
|
129
131
|
setCookie: () => import_http.setCookie,
|
|
130
132
|
setSSRCookies: () => import_http.setSSRCookies,
|
|
131
133
|
stockFieldTypes: () => import_doctype.stockFieldTypes,
|
|
@@ -166,6 +168,7 @@ var import_db3 = require("@tanstack/db");
|
|
|
166
168
|
var import_pacer2 = require("@tanstack/pacer");
|
|
167
169
|
__reExport(index_exports, require("./fixtures.native.js"), module.exports);
|
|
168
170
|
var import_http = require("./core/http.native.js");
|
|
171
|
+
var import_serverMessages = require("./core/serverMessages.native.js");
|
|
169
172
|
var import_types = require("./core/types.native.js");
|
|
170
173
|
var import_doctype = require("./doctype.native.js");
|
|
171
174
|
var import_types2 = require("./sync/types.native.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__reExport","mod","secondTarget","__toESM","isNodeMode","__esModule","value","__toCommonJS","index_exports","AsyncBatcher","import_pacer2","AsyncDebouncer","AsyncQueuer","AsyncRateLimiter","AsyncThrottler","AuthModule","import_auth","Batcher","CallModule","import_call","DbModule","import_db","Debouncer","FieldMergeStrategy","import_merge","FileModule","import_file","FilterOperator","import_filters","FrappeApp","import_frappeApp","FrappeError","import_types","HttpClient","import_http","MergeStrategy","OPTIMISTIC_TEMP_PREFIX","import_optimistic","Operation","import_types2","Order","Queuer","RateLimiter","RealtimeModule","import_realtime","RealtimePlatform","SyncModule","import_sync","Throttler","TreeDbModule","import_db4","__getActiveSyncModule","import_frappeReact","and","import_db3","asyncBatch","asyncDebounce","asyncQueue","asyncRateLimit","asyncThrottle","avg","batch","canEvaluateClientSide","clearSSRCookies","count","createCollection","import_db2","createFixtureCollection","import_collection","createFrappeCollection","createOptimisticAction","createRateLimitedBatch","import_pacer","createTransaction","customFieldTypes","import_doctype","debounce","defaultPageLength","deleteCookie","eq","extractFilterFields","extractSingleName","fixtureCollectionOptions","formatFilter","frappeCollectionOptions","frappeDocLoader","import_serverLoaders","frappeFieldTypes","frappeListLoader","frappePlugin","import_plugin","default","getClientEvaluationBlockers","getCookie","getFrappeSyncModule","gt","gte","hasServerOnlyOperators","ilike","inArray","invalidateCookieCache","isNull","isOptimisticTempId","isTreeOperator","isUndefined","like","loadDoc","loadDocList","lt","lte","matchesFilters","max","min","newOptimisticTempId","normalizeFilters","not","or","parseDependsOn","parseFormLayout","queue","rateLimit","runOptimisticRpc","serverFrappeBaseURL","
|
|
1
|
+
{"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__reExport","mod","secondTarget","__toESM","isNodeMode","__esModule","value","__toCommonJS","index_exports","AsyncBatcher","import_pacer2","AsyncDebouncer","AsyncQueuer","AsyncRateLimiter","AsyncThrottler","AuthModule","import_auth","Batcher","CallModule","import_call","DbModule","import_db","Debouncer","FieldMergeStrategy","import_merge","FileModule","import_file","FilterOperator","import_filters","FrappeApp","import_frappeApp","FrappeError","import_types","HttpClient","import_http","MergeStrategy","OPTIMISTIC_TEMP_PREFIX","import_optimistic","Operation","import_types2","Order","Queuer","RateLimiter","RealtimeModule","import_realtime","RealtimePlatform","SyncModule","import_sync","Throttler","TreeDbModule","import_db4","__getActiveSyncModule","import_frappeReact","and","import_db3","asyncBatch","asyncDebounce","asyncQueue","asyncRateLimit","asyncThrottle","avg","batch","canEvaluateClientSide","clearSSRCookies","count","createCollection","import_db2","createFixtureCollection","import_collection","createFrappeCollection","createOptimisticAction","createRateLimitedBatch","import_pacer","createTransaction","customFieldTypes","import_doctype","debounce","defaultPageLength","deleteCookie","eq","extractFilterFields","extractSingleName","fixtureCollectionOptions","formatFilter","frappeCollectionOptions","frappeDocLoader","import_serverLoaders","frappeFieldTypes","frappeListLoader","frappePlugin","import_plugin","default","getClientEvaluationBlockers","getCookie","getFrappeSyncModule","gt","gte","hasServerOnlyOperators","ilike","inArray","invalidateCookieCache","isNull","isOptimisticTempId","isTreeOperator","isUndefined","like","loadDoc","loadDocList","lt","lte","matchesFilters","max","min","newOptimisticTempId","normalizeFilters","not","or","parseDependsOn","parseFormLayout","queue","rateLimit","readServerMessages","import_serverMessages","runOptimisticRpc","serverFrappeBaseURL","serverMessageLines"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/frappe",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.29.1",
|
|
4
4
|
"description": "frappe client for multiplatform.one ecosystem",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"auth",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"access": "public"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@multiplatform.one/store": "7.
|
|
63
|
+
"@multiplatform.one/store": "7.29.1",
|
|
64
64
|
"@tanstack/db": "0.8.0",
|
|
65
65
|
"@tanstack/pacer": "0.21.0",
|
|
66
66
|
"@tanstack/react-db": "0.3.0",
|
|
@@ -69,9 +69,9 @@
|
|
|
69
69
|
"socket.io-client": "^4.8.3"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
|
-
"@multiplatform.one/config": "7.
|
|
73
|
-
"@multiplatform.one/platform": "7.
|
|
74
|
-
"@multiplatform.one/test-utils": "7.
|
|
72
|
+
"@multiplatform.one/config": "7.29.1",
|
|
73
|
+
"@multiplatform.one/platform": "7.29.1",
|
|
74
|
+
"@multiplatform.one/test-utils": "7.29.1",
|
|
75
75
|
"@tamagui/build": "2.7.6",
|
|
76
76
|
"@testing-library/jest-dom": "^6.9.1",
|
|
77
77
|
"@testing-library/react": "^16.3.2",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"vitest": "^4.1.5"
|
|
85
85
|
},
|
|
86
86
|
"peerDependencies": {
|
|
87
|
-
"@multiplatform.one/platform": "^7.
|
|
87
|
+
"@multiplatform.one/platform": "^7.29.1",
|
|
88
88
|
"react": "^19.1.0"
|
|
89
89
|
},
|
|
90
90
|
"engines": {
|
package/src/core/http.spec.ts
CHANGED
|
@@ -1019,9 +1019,50 @@ describe("HttpClient", () => {
|
|
|
1019
1019
|
await expect(
|
|
1020
1020
|
client.request(HttpMethod.Get, "/api/resource/DocType/ToDo", {}),
|
|
1021
1021
|
).rejects.toThrow(
|
|
1022
|
-
// Inline markup stripped, <br> kept as a
|
|
1023
|
-
// not run together into "…document DocTypeUser desk@example.com…".
|
|
1024
|
-
"User desk@example.com does not have doctype access via role permission for document DocType
|
|
1022
|
+
// Inline markup stripped, <br> kept as a line break so the two sentences
|
|
1023
|
+
// do not run together into "…document DocTypeUser desk@example.com…".
|
|
1024
|
+
"User desk@example.com does not have doctype access via role permission for document DocType\nUser desk@example.com does not have access to this document",
|
|
1025
|
+
);
|
|
1026
|
+
});
|
|
1027
|
+
|
|
1028
|
+
// Verbatim from pokemon's bench (MPO-473): is_whitelisted refuses Guest with
|
|
1029
|
+
// ONE message whose summary and body sit in a <details>. Dropping the tags
|
|
1030
|
+
// without a boundary read "Login to accessFunction …".
|
|
1031
|
+
it("keeps a <details> summary and its body on separate lines", async () => {
|
|
1032
|
+
respondWith(
|
|
1033
|
+
permissionDeniedPayload(
|
|
1034
|
+
"<details><summary>You are not permitted to access this resource. Login to access</summary>Function <strong>frappe.desk.form.load.getdoctype</strong> is not whitelisted.</details>",
|
|
1035
|
+
),
|
|
1036
|
+
403,
|
|
1037
|
+
"FORBIDDEN",
|
|
1038
|
+
);
|
|
1039
|
+
|
|
1040
|
+
await expect(
|
|
1041
|
+
client.request(HttpMethod.Get, "/api/method/frappe.desk.form.load.getdoctype", {}),
|
|
1042
|
+
).rejects.toSatisfy(
|
|
1043
|
+
(err: FrappeError) =>
|
|
1044
|
+
err.message ===
|
|
1045
|
+
"You are not permitted to access this resource. Login to access\nFunction frappe.desk.form.load.getdoctype is not whitelisted.",
|
|
1046
|
+
);
|
|
1047
|
+
});
|
|
1048
|
+
|
|
1049
|
+
it("keeps every server message, one per line, in the order the server sent them", async () => {
|
|
1050
|
+
respondWith(
|
|
1051
|
+
{
|
|
1052
|
+
exc_type: "PermissionError",
|
|
1053
|
+
_server_messages: JSON.stringify([
|
|
1054
|
+
JSON.stringify({ message: "Insufficient Permission for <strong>Report</strong>" }),
|
|
1055
|
+
JSON.stringify({ message: "You don't have access to Report: ToDo & Notes" }),
|
|
1056
|
+
]),
|
|
1057
|
+
},
|
|
1058
|
+
403,
|
|
1059
|
+
"FORBIDDEN",
|
|
1060
|
+
);
|
|
1061
|
+
|
|
1062
|
+
await expect(client.request(HttpMethod.Get, "/test", {})).rejects.toSatisfy(
|
|
1063
|
+
(err: FrappeError) =>
|
|
1064
|
+
err.message ===
|
|
1065
|
+
"Insufficient Permission for Report\nYou don't have access to Report: ToDo & Notes",
|
|
1025
1066
|
);
|
|
1026
1067
|
});
|
|
1027
1068
|
|
package/src/core/http.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getCookie, setCookie, deleteCookie, isNative } from "@multiplatform.one/platform";
|
|
2
2
|
import { isBrowser } from "../util";
|
|
3
|
+
import { readServerMessages } from "./serverMessages";
|
|
3
4
|
import { FrappeError, HttpMethod } from "./types";
|
|
4
5
|
import type { AuthConfig, RetryConfig } from "./types";
|
|
5
6
|
|
|
@@ -24,46 +25,6 @@ function isAbortError(err: unknown, signal?: AbortSignal): boolean {
|
|
|
24
25
|
return err instanceof Error && err.name === "AbortError";
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
/**
|
|
28
|
-
* Frappe's `_server_messages` is a JSON array of JSON strings, each an object
|
|
29
|
-
* like `{"message": "You don't have access to Report: ToDo", "title": "Message"}`,
|
|
30
|
-
* and the messages carry inline HTML (`<strong>…</strong>`).
|
|
31
|
-
*/
|
|
32
|
-
function readServerMessage(raw: unknown): string | undefined {
|
|
33
|
-
if (typeof raw !== "string" || !raw.trim()) return undefined;
|
|
34
|
-
let entries: unknown;
|
|
35
|
-
try {
|
|
36
|
-
entries = JSON.parse(raw);
|
|
37
|
-
} catch {
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
if (!Array.isArray(entries)) return undefined;
|
|
41
|
-
for (const entry of entries) {
|
|
42
|
-
let text: unknown = entry;
|
|
43
|
-
if (typeof entry === "string") {
|
|
44
|
-
try {
|
|
45
|
-
text = (JSON.parse(entry) as { message?: unknown })?.message ?? entry;
|
|
46
|
-
} catch {
|
|
47
|
-
text = entry;
|
|
48
|
-
}
|
|
49
|
-
} else if (entry && typeof entry === "object") {
|
|
50
|
-
text = (entry as { message?: unknown }).message;
|
|
51
|
-
}
|
|
52
|
-
if (typeof text === "string" && text.trim()) {
|
|
53
|
-
// Strip the inline markup so the sentence survives into plain-text UI.
|
|
54
|
-
// Frappe separates multiple sentences inside ONE message with `<br>`, so
|
|
55
|
-
// line-breaking tags become spaces or the sentences run together.
|
|
56
|
-
const plain = text
|
|
57
|
-
.replace(/<\s*br\s*\/?\s*>|<\/\s*(?:p|div|li)\s*>/gi, " ")
|
|
58
|
-
.replace(/<[^>]+>/g, "")
|
|
59
|
-
.replace(/\s+/g, " ")
|
|
60
|
-
.trim();
|
|
61
|
-
if (plain) return plain;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return undefined;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
28
|
/**
|
|
68
29
|
* The user-facing sentence for a failed response.
|
|
69
30
|
*
|
|
@@ -84,8 +45,8 @@ export function errorMessageFromPayload(payload: unknown, statusText: string): s
|
|
|
84
45
|
|
|
85
46
|
if (typeof body.message === "string" && body.message.trim()) return body.message;
|
|
86
47
|
|
|
87
|
-
const
|
|
88
|
-
if (
|
|
48
|
+
const serverMessages = readServerMessages(body._server_messages);
|
|
49
|
+
if (serverMessages.length > 0) return serverMessages.join("\n");
|
|
89
50
|
|
|
90
51
|
if (typeof body.exception === "string" && body.exception.trim()) return body.exception;
|
|
91
52
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { readServerMessages, serverMessageLines } from "./serverMessages";
|
|
3
|
+
|
|
4
|
+
describe("serverMessageLines", () => {
|
|
5
|
+
it("ends a line at a block edge or <br> and drops inline tags", () => {
|
|
6
|
+
expect(
|
|
7
|
+
serverMessageLines(
|
|
8
|
+
"<details><summary>Not permitted. Login to access</summary>Function <strong>x.y</strong> is not whitelisted.</details>",
|
|
9
|
+
),
|
|
10
|
+
).toEqual(["Not permitted. Login to access", "Function x.y is not whitelisted."]);
|
|
11
|
+
expect(serverMessageLines("One<br/>Two<p>Three</p><div>Four</div>Five")).toEqual([
|
|
12
|
+
"One",
|
|
13
|
+
"Two",
|
|
14
|
+
"Three",
|
|
15
|
+
"Four",
|
|
16
|
+
"Five",
|
|
17
|
+
]);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it("decodes entities once, after the tags are gone", () => {
|
|
21
|
+
expect(serverMessageLines("A & B <b> &lt;")).toEqual(["A & B <b> <"]);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
describe("readServerMessages", () => {
|
|
26
|
+
it("reads every entry in order and skips what carries no text", () => {
|
|
27
|
+
const raw = JSON.stringify([
|
|
28
|
+
JSON.stringify({ message: "First" }),
|
|
29
|
+
JSON.stringify({ message: "" }),
|
|
30
|
+
"Plain second",
|
|
31
|
+
JSON.stringify({ title: "no message" }),
|
|
32
|
+
]);
|
|
33
|
+
expect(readServerMessages(raw)).toEqual(["First", "Plain second"]);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it("answers nothing for a payload that is not a JSON array", () => {
|
|
37
|
+
expect(readServerMessages(undefined)).toEqual([]);
|
|
38
|
+
expect(readServerMessages("Server error messages")).toEqual([]);
|
|
39
|
+
expect(readServerMessages('{"message":"x"}')).toEqual([]);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frappe's `_server_messages` is a JSON array of JSON strings, each an object
|
|
3
|
+
* like `{"message": "You don't have access to Report: ToDo", "title": "Message"}`.
|
|
4
|
+
* A message is HTML: inline markup (`<strong>`), `<br>` between sentences, and
|
|
5
|
+
* blocks such as the `<details><summary>` that `is_whitelisted` refuses Guest
|
|
6
|
+
* with. Dropping a block's tags with no boundary glued its summary to its body
|
|
7
|
+
* ("Login to accessFunction …", MPO-473), so a line break or a block edge ends
|
|
8
|
+
* a line here and only inline tags drop.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const lineBoundary =
|
|
12
|
+
/<\s*br\s*\/?\s*>|<\/?\s*(?:p|div|li|ul|ol|summary|details|h[1-6]|tr|table|blockquote|pre)\b[^>]*>/gi;
|
|
13
|
+
|
|
14
|
+
const entities: ReadonlyArray<readonly [RegExp, string]> = [
|
|
15
|
+
[/ /g, " "],
|
|
16
|
+
[/</g, "<"],
|
|
17
|
+
[/>/g, ">"],
|
|
18
|
+
[/"/g, '"'],
|
|
19
|
+
[/'/g, "'"],
|
|
20
|
+
[/&/g, "&"],
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
/** One server message's HTML as the plain lines it reads as. */
|
|
24
|
+
export function serverMessageLines(html: string): string[] {
|
|
25
|
+
let text = html.replace(lineBoundary, "\n").replace(/<[^>]*>/g, "");
|
|
26
|
+
for (const [pattern, value] of entities) text = text.replace(pattern, value);
|
|
27
|
+
return text
|
|
28
|
+
.split("\n")
|
|
29
|
+
.map((line) => line.replace(/\s+/g, " ").trim())
|
|
30
|
+
.filter(Boolean);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function entryText(entry: unknown): unknown {
|
|
34
|
+
let value = entry;
|
|
35
|
+
if (typeof entry === "string") {
|
|
36
|
+
try {
|
|
37
|
+
value = JSON.parse(entry);
|
|
38
|
+
} catch {
|
|
39
|
+
return entry;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (value && typeof value === "object") return (value as { message?: unknown }).message;
|
|
43
|
+
return typeof value === "string" ? value : entry;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Every message in a `_server_messages` payload, in the server's order, as
|
|
48
|
+
* plain lines: one or more per message, none for an empty one.
|
|
49
|
+
*/
|
|
50
|
+
export function readServerMessages(raw: unknown): string[] {
|
|
51
|
+
if (typeof raw !== "string" || !raw.trim()) return [];
|
|
52
|
+
let entries: unknown;
|
|
53
|
+
try {
|
|
54
|
+
entries = JSON.parse(raw);
|
|
55
|
+
} catch {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
if (!Array.isArray(entries)) return [];
|
|
59
|
+
return entries.flatMap((entry) => {
|
|
60
|
+
const text = entryText(entry);
|
|
61
|
+
return typeof text === "string" ? serverMessageLines(text) : [];
|
|
62
|
+
});
|
|
63
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -158,6 +158,7 @@ export {
|
|
|
158
158
|
clearSSRCookies,
|
|
159
159
|
invalidateCookieCache,
|
|
160
160
|
} from "./core/http";
|
|
161
|
+
export { readServerMessages, serverMessageLines } from "./core/serverMessages";
|
|
161
162
|
// FrappeError is a class (runtime value) — consumers catch/instanceof it.
|
|
162
163
|
export { FrappeError } from "./core/types";
|
|
163
164
|
export type {
|
package/types/core/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAY,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frappe's `_server_messages` is a JSON array of JSON strings, each an object
|
|
3
|
+
* like `{"message": "You don't have access to Report: ToDo", "title": "Message"}`.
|
|
4
|
+
* A message is HTML: inline markup (`<strong>`), `<br>` between sentences, and
|
|
5
|
+
* blocks such as the `<details><summary>` that `is_whitelisted` refuses Guest
|
|
6
|
+
* with. Dropping a block's tags with no boundary glued its summary to its body
|
|
7
|
+
* ("Login to accessFunction …", MPO-473), so a line break or a block edge ends
|
|
8
|
+
* a line here and only inline tags drop.
|
|
9
|
+
*/
|
|
10
|
+
/** One server message's HTML as the plain lines it reads as. */
|
|
11
|
+
export declare function serverMessageLines(html: string): string[];
|
|
12
|
+
/**
|
|
13
|
+
* Every message in a `_server_messages` payload, in the server's order, as
|
|
14
|
+
* plain lines: one or more per message, none for an empty one.
|
|
15
|
+
*/
|
|
16
|
+
export declare function readServerMessages(raw: unknown): string[];
|
|
17
|
+
//# sourceMappingURL=serverMessages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverMessages.d.ts","sourceRoot":"","sources":["../../src/core/serverMessages.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAOzD;AAeD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAazD"}
|
package/types/index.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ export { eq, gt, gte, lt, lte, and, or, not, inArray, like, ilike, isUndefined,
|
|
|
29
29
|
export { Debouncer, AsyncDebouncer, Throttler, AsyncThrottler, RateLimiter, AsyncRateLimiter, Queuer, AsyncQueuer, Batcher, AsyncBatcher, debounce, asyncDebounce, throttle, asyncThrottle, rateLimit, asyncRateLimit, queue, asyncQueue, batch, asyncBatch, } from "@tanstack/pacer";
|
|
30
30
|
export * from "./fixtures";
|
|
31
31
|
export { HttpClient, getCookie, setCookie, deleteCookie, setSSRCookies, clearSSRCookies, invalidateCookieCache, } from "./core/http";
|
|
32
|
+
export { readServerMessages, serverMessageLines } from "./core/serverMessages";
|
|
32
33
|
export { FrappeError } from "./core/types";
|
|
33
34
|
export type { AuthConfig, ListOptions, CustomEndpoints, FrappeLiveConfig, WriteStrategy, } from "./core/types";
|
|
34
35
|
export type { BackfillArgs, BackfillResponse, CursorPaginationArgs, CursorPaginationResponse, BatchMutationType, BatchMutation, BatchMutationsArgs, BatchMutationResult, BatchMutationsResponse, ListSinceArgs, ListSinceResponse, } from "./db";
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|