rebuilt with correct sdk

This commit is contained in:
or-else
2024-05-18 18:07:14 -07:00
parent 944cf32bb9
commit ba81261ee8
9 changed files with 166 additions and 80 deletions
+79 -51
View File
@@ -15,7 +15,7 @@
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-intl": "^6.4.4",
"tinode-sdk": "^0.22.12",
"tinode-sdk": "^0.22.13",
"webm-duration-fix": "^1.0.4"
},
"devDependencies": {
@@ -2322,9 +2322,9 @@
"integrity": "sha512-EnfRJvrnzkHwN3BPMCayCFT5lCqInzg3RdlRsDjDvB1EJli6Usj26T6lJ67BU2UcYXBS5xcp1Wj4+zRzj2NaZg=="
},
"node_modules/@formatjs/cli": {
"version": "6.2.9",
"resolved": "https://registry.npmjs.org/@formatjs/cli/-/cli-6.2.9.tgz",
"integrity": "sha512-YH09kY6oufPdNDIwva/rC7wyg/ptJG6hRZ768eJEafiBR5R1VV1pKFmx106FV5WT7nzBm8Xf4Td+8+Mu+DtQsg==",
"version": "6.2.10",
"resolved": "https://registry.npmjs.org/@formatjs/cli/-/cli-6.2.10.tgz",
"integrity": "sha512-JdFw5oqPNB4qahie2Mcg6yXxyUJouN60OaEaejjMtGsgoPbFjS7X/9/Nj5vW+rAUTi0UNbOW+JPW9XNx6EuoHw==",
"dev": true,
"bin": {
"formatjs": "bin/formatjs"
@@ -2333,9 +2333,37 @@
"node": ">= 16"
},
"peerDependencies": {
"@glimmer/env": "^0.1.7",
"@glimmer/reference": "^0.91.1",
"@glimmer/syntax": "^0.91.1",
"@glimmer/validator": "^0.91.1",
"@vue/compiler-core": "^3.4.0",
"content-tag": "^2.0.1",
"ember-template-recast": "^6.1.4",
"vue": "^3.4.0"
},
"peerDependenciesMeta": {
"@glimmer/env": {
"optional": true
},
"@glimmer/reference": {
"optional": true
},
"@glimmer/syntax": {
"optional": true
},
"@glimmer/validator": {
"optional": true
},
"@vue/compiler-core": {
"optional": true
},
"content-tag": {
"optional": true
},
"ember-template-recast": {
"optional": true
},
"vue": {
"optional": true
}
@@ -2378,16 +2406,16 @@
}
},
"node_modules/@formatjs/intl": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.1.tgz",
"integrity": "sha512-dsLG15U7xDi8yzKf4hcAWSsCaez3XrjTO2oaRHPyHtXLm1aEzYbDw6bClo/HMHu+iwS5GbDqT3DV+hYP2ylScg==",
"version": "2.10.2",
"resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.2.tgz",
"integrity": "sha512-raPGWr3JRv3neXV78SqPFrGC05fIbhhNzVghHNxFde27ls2KkXiMhtP7HBybjGpikVSjjhdhaZto+4p1vmm9bQ==",
"dependencies": {
"@formatjs/ecma402-abstract": "1.18.2",
"@formatjs/fast-memoize": "2.2.0",
"@formatjs/icu-messageformat-parser": "2.7.6",
"@formatjs/intl-displaynames": "6.6.6",
"@formatjs/intl-listformat": "7.5.5",
"intl-messageformat": "10.5.11",
"intl-messageformat": "10.5.12",
"tslib": "^2.4.0"
},
"peerDependencies": {
@@ -2533,13 +2561,13 @@
}
},
"node_modules/@grpc/proto-loader": {
"version": "0.7.12",
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.12.tgz",
"integrity": "sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q==",
"version": "0.7.13",
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz",
"integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==",
"dependencies": {
"lodash.camelcase": "^4.3.0",
"long": "^5.0.0",
"protobufjs": "^7.2.4",
"protobufjs": "^7.2.5",
"yargs": "^17.7.2"
},
"bin": {
@@ -3072,15 +3100,15 @@
}
},
"node_modules/ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"version": "8.13.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz",
"integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-deep-equal": "^3.1.3",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
"uri-js": "^4.4.1"
},
"funding": {
"type": "github",
@@ -3385,9 +3413,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001614",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz",
"integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==",
"version": "1.0.30001616",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz",
"integrity": "sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==",
"dev": true,
"funding": [
{
@@ -3973,9 +4001,9 @@
"integrity": "sha512-HgNlIsRFP6D9VKU5atCeHRJY7XkJP8bOe8yEhd8NB7B3b4++VWTyauz6g650iiPmLfPLGlVpoJmGSgMfXDYusg=="
},
"node_modules/electron-to-chromium": {
"version": "1.4.751",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.751.tgz",
"integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==",
"version": "1.4.759",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.759.tgz",
"integrity": "sha512-qZJc+zsuI+/5UjOSFnpkJBwwLMH1AZgyKqJ7LUNnRsB7v/cDjMu9DvXgp9kH6PTTZxjnPXGp2Uhurw+2Ll4Hjg==",
"dev": true
},
"node_modules/emoji-regex": {
@@ -3985,9 +4013,9 @@
"dev": true
},
"node_modules/enhanced-resolve": {
"version": "5.16.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz",
"integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==",
"version": "5.16.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz",
"integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.4",
@@ -4701,9 +4729,9 @@
}
},
"node_modules/intl-messageformat": {
"version": "10.5.11",
"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz",
"integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==",
"version": "10.5.12",
"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.12.tgz",
"integrity": "sha512-izl0uxhy/melhw8gP2r8pGiVieviZmM4v5Oqx3c1/R7g9cwER2smmGfSjcIsp8Y3Q53bfciL/gkxacJRx/dUvg==",
"dependencies": {
"@formatjs/ecma402-abstract": "1.18.2",
"@formatjs/fast-memoize": "2.2.0",
@@ -4952,9 +4980,9 @@
}
},
"node_modules/libphonenumber-js": {
"version": "1.10.61",
"resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.61.tgz",
"integrity": "sha512-TsQsyzDttDvvzWNkbp/i0fVbzTGJIG0mUu/uNalIaRQEYeJxVQ/FPg+EJgSqfSXezREjM0V3RZ8cLVsKYhhw0Q=="
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.1.tgz",
"integrity": "sha512-Wze1LPwcnzvcKGcRHFGFECTaLzxOtujwpf924difr5zniyYv1C2PiW0419qDR7m8lKDxsImu5mwxFuXhXpjmvw=="
},
"node_modules/lilconfig": {
"version": "3.1.1",
@@ -5111,9 +5139,9 @@
}
},
"node_modules/minipass": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.0.tgz",
"integrity": "sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==",
"dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
@@ -5979,19 +6007,19 @@
}
},
"node_modules/react-intl": {
"version": "6.6.5",
"resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.5.tgz",
"integrity": "sha512-OErDPbGqus0QKVj77MGCC9Plbnys3CDQrq6Lw41c60pmeTdn41AhoS1SIzXG6SUlyF7qNN2AVqfrrIvHUgSyLQ==",
"version": "6.6.6",
"resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.6.tgz",
"integrity": "sha512-dKXQNUrhZTlCp8uelYW8PHiM4saNKyLmHCfsJYWK0N/kZ/Ien35wjPHB8x9yQcTJbeN/hBOmb4x16iKUrdL9MA==",
"dependencies": {
"@formatjs/ecma402-abstract": "1.18.2",
"@formatjs/icu-messageformat-parser": "2.7.6",
"@formatjs/intl": "2.10.1",
"@formatjs/intl": "2.10.2",
"@formatjs/intl-displaynames": "6.6.6",
"@formatjs/intl-listformat": "7.5.5",
"@types/hoist-non-react-statics": "^3.3.1",
"@types/react": "16 || 17 || 18",
"hoist-non-react-statics": "^3.3.2",
"intl-messageformat": "10.5.11",
"intl-messageformat": "10.5.12",
"tslib": "^2.4.0"
},
"peerDependencies": {
@@ -6504,9 +6532,9 @@
}
},
"node_modules/svgo": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz",
"integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==",
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.0.tgz",
"integrity": "sha512-y350OL6eAmhDbWcASdukXoG0MbpdfJQPHwEUAaTW1HBNSO2VErJ35fs7uNLSWjzFDhfua517RcouBzjZoO1JFg==",
"dev": true,
"dependencies": {
"@trysound/sax": "0.2.0",
@@ -6518,7 +6546,7 @@
"picocolors": "^1.0.0"
},
"bin": {
"svgo": "bin/svgo"
"svgo": "bin/svgo.js"
},
"engines": {
"node": ">=14.0.0"
@@ -6651,9 +6679,9 @@
"dev": true
},
"node_modules/tinode-sdk": {
"version": "0.22.12",
"resolved": "https://registry.npmjs.org/tinode-sdk/-/tinode-sdk-0.22.12.tgz",
"integrity": "sha512-Rj9W1JIk3Qzv90oNXSHWgWgtXpZIe+o0yWRq/Fistirs9DOtMZpVgDkfLJ+G/vosVO01fc8PClEMNLYpQH1x+Q=="
"version": "0.22.13",
"resolved": "https://registry.npmjs.org/tinode-sdk/-/tinode-sdk-0.22.13.tgz",
"integrity": "sha512-LdWs61yc4Xe7sGW1cZUmpkyVY8WUMuam4yYxBePWgE4zE+Ed8H+Le7LK9iw7fKrypY1krAwPplNicrpFFict0w=="
},
"node_modules/to-fast-properties": {
"version": "2.0.0",
@@ -6755,9 +6783,9 @@
}
},
"node_modules/update-browserslist-db": {
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
"integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
"version": "1.0.15",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz",
"integrity": "sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==",
"dev": true,
"funding": [
{
@@ -6774,7 +6802,7 @@
}
],
"dependencies": {
"escalade": "^3.1.1",
"escalade": "^3.1.2",
"picocolors": "^1.0.0"
},
"bin": {
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+80 -22
View File
@@ -1220,7 +1220,7 @@ class DB {
/***/ ((module) => {
/**
* @copyright 2015-2022 Tinode LLC.
* @copyright 2015-2024 Tinode LLC.
* @summary Minimally rich text representation and formatting for Tinode.
* @license Apache 2.0
*
@@ -1280,6 +1280,7 @@ const MAX_PREVIEW_DATA_SIZE = 64;
const JSON_MIME_TYPE = 'application/json';
const DRAFTY_MIME_TYPE = 'text/x-drafty';
const ALLOWED_ENT_FIELDS = ['act', 'height', 'duration', 'incoming', 'mime', 'name', 'premime', 'preref', 'preview', 'ref', 'size', 'state', 'url', 'val', 'width'];
const segmenter = new Intl.Segmenter();
const INLINE_STYLES = [{
name: 'ST',
start: /(?:^|[\W_])(\*)[^\s*]/,
@@ -1700,24 +1701,48 @@ Drafty.parse = function (content) {
if (blx.length > 0) {
result.txt = blx[0].txt;
result.fmt = (blx[0].fmt || []).concat(blx[0].ent || []);
if (result.fmt.length) {
const segments = segmenter.segment(result.txt);
for (const ele of result.fmt) {
({
at: ele.at,
len: ele.len
} = toGraphemeValues(ele, segments, result.txt));
}
}
for (let i = 1; i < blx.length; i++) {
const block = blx[i];
const offset = result.txt.length + 1;
const offset = stringToGraphemes(result.txt).length + 1;
result.fmt.push({
tp: 'BR',
len: 1,
at: offset - 1
});
let segments = {};
result.txt += ' ' + block.txt;
if (block.fmt) {
segments = segmenter.segment(block.txt);
result.fmt = result.fmt.concat(block.fmt.map(s => {
s.at += offset;
const {
at: correctAt,
len: correctLen
} = toGraphemeValues(s, segments, block.txt);
s.at = correctAt + offset;
s.len = correctLen;
return s;
}));
}
if (block.ent) {
if (isEmptyObject(segments)) {
segments = segmenter.segment(block.txt);
}
result.fmt = result.fmt.concat(block.ent.map(s => {
s.at += offset;
const {
at: correctAt,
len: correctLen
} = toGraphemeValues(s, segments, block.txt);
s.at = correctAt + offset;
s.len = correctLen;
return s;
}));
}
@@ -1739,7 +1764,7 @@ Drafty.append = function (first, second) {
return first;
}
first.txt = first.txt || '';
const len = first.txt.length;
const len = stringToGraphemes(first.txt).length;
if (typeof second == 'string') {
first.txt += second;
} else if (second.txt) {
@@ -1927,7 +1952,7 @@ Drafty.quote = function (header, uid, body) {
const quote = Drafty.append(Drafty.appendLineBreak(Drafty.mention(header, uid)), body);
quote.fmt.push({
at: 0,
len: quote.txt.length,
len: stringToGraphemes(quote.txt).length,
tp: 'QQ'
});
return quote;
@@ -1937,7 +1962,7 @@ Drafty.mention = function (name, uid) {
txt: name || '',
fmt: [{
at: 0,
len: (name || '').length,
len: stringToGraphemes(name || '').length,
key: 0
}],
ent: [{
@@ -2101,7 +2126,7 @@ Drafty.appendLineBreak = function (content) {
};
content.fmt = content.fmt || [];
content.fmt.push({
at: content.txt.length,
at: stringToGraphemes(content.txt).length,
len: 1,
tp: 'BR'
});
@@ -2504,7 +2529,7 @@ function draftyToTree(doc) {
key: key
});
return;
} else if (at + len > txt.length) {
} else if (at + len > stringToGraphemes(txt).length) {
return;
}
if (!span.tp) {
@@ -2546,7 +2571,8 @@ function draftyToTree(doc) {
span.type = 'HD';
}
});
let tree = spansToTree({}, txt, 0, txt.length, spans);
const graphemes = stringToGraphemes(txt);
let tree = spansToTree({}, graphemes, 0, graphemes.length, spans);
const flatten = function (node) {
if (Array.isArray(node.children) && node.children.length == 1) {
const child = node.children[0];
@@ -2582,11 +2608,11 @@ function addNode(parent, n) {
parent.children.push(n);
return parent;
}
function spansToTree(parent, text, start, end, spans) {
function spansToTree(parent, graphemes, start, end, spans) {
if (!spans || spans.length == 0) {
if (start < end) {
addNode(parent, {
text: text.substring(start, end)
text: graphemes.slice(start, end).map(segment => segment.segment).join('')
});
}
return parent;
@@ -2604,7 +2630,7 @@ function spansToTree(parent, text, start, end, spans) {
}
if (start < span.start) {
addNode(parent, {
text: text.substring(start, span.start)
text: graphemes.slice(start, span.start).map(segment => segment.segment).join('')
});
start = span.start;
}
@@ -2629,12 +2655,12 @@ function spansToTree(parent, text, start, end, spans) {
type: span.type,
data: span.data,
key: span.key
}, text, start, span.end, subspans));
}, graphemes, start, span.end, subspans));
start = span.end;
}
if (start < end) {
addNode(parent, {
text: text.substring(start, end)
text: graphemes.slice(start, end).map(segment => segment.segment).join('')
});
}
return parent;
@@ -2644,7 +2670,7 @@ function treeToDrafty(doc, tree, keymap) {
return doc;
}
doc.txt = doc.txt || '';
const start = doc.txt.length;
const start = stringToGraphemes(doc.txt).length;
if (tree.text) {
doc.txt += tree.text;
} else if (Array.isArray(tree.children)) {
@@ -2653,7 +2679,7 @@ function treeToDrafty(doc, tree, keymap) {
});
}
if (tree.type) {
const len = doc.txt.length - start;
const len = stringToGraphemes(doc.txt).length - start;
doc.fmt = doc.fmt || [];
if (Object.keys(tree.data || {}).length > 0) {
doc.ent = doc.ent || [];
@@ -2755,12 +2781,12 @@ function shortenTree(tree, limit, tail) {
node.text = tail;
limit = -1;
} else if (node.text) {
const len = node.text.length;
if (len > limit) {
node.text = node.text.substring(0, limit) + tail;
const graphemes = stringToGraphemes(node.text);
if (graphemes.length > limit) {
node.text = graphemes.slice(0, limit).map(segment => segment.segment).join('') + tail;
limit = -1;
} else {
limit -= len;
limit -= graphemes.length;
}
}
return node;
@@ -2907,6 +2933,38 @@ function copyEntData(data, light, allow) {
}
return null;
}
function isEmptyObject(obj) {
return Object.keys(obj ?? {}).length == 0;
}
;
function graphemeIndices(graphemes) {
const result = [];
let graphemeIndex = 0;
let charIndex = 0;
for (const {
segment
} of graphemes) {
for (let i = 0; i < segment.length; i++) {
result[charIndex + i] = graphemeIndex;
}
charIndex += segment.length;
graphemeIndex++;
}
return result;
}
function toGraphemeValues(fmt, segments, txt) {
segments = segments ?? segmenter.segment(txt);
const indices = graphemeIndices(segments);
const correctAt = indices[fmt.at];
const correctLen = fmt.at + fmt.len <= txt.length ? indices[fmt.at + fmt.len - 1] - correctAt : fmt.len;
return {
at: correctAt,
len: correctLen + 1
};
}
function stringToGraphemes(str) {
return Array.from(segmenter.segment(str));
}
if (true) {
module.exports = Drafty;
}
@@ -4857,7 +4915,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ PACKAGE_VERSION: () => (/* binding */ PACKAGE_VERSION)
/* harmony export */ });
const PACKAGE_VERSION = "0.22.12";
const PACKAGE_VERSION = "0.22.13";
/***/ })
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long