talkdom 0.1.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/talkdom.min.js.map +1 -1
- package/index.js +12 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -223,6 +223,35 @@ talkDOM.methods["show:"] = function (el, message) {
|
|
|
223
223
|
};
|
|
224
224
|
```
|
|
225
225
|
|
|
226
|
+
## Security
|
|
227
|
+
|
|
228
|
+
talkDOM does **not** sanitize HTML. Content from `get:apply:`, `post:apply:`, server triggers, and piped `apply:` is inserted via `innerHTML` / `insertAdjacentHTML` / `outerHTML` as-is. You are responsible for ensuring that server responses do not contain untrusted markup.
|
|
229
|
+
|
|
230
|
+
The `persist` attribute stores receiver content in `localStorage` in plain text. Do not use it for sensitive data.
|
|
231
|
+
|
|
232
|
+
CSRF tokens are read from `<meta name="csrf-token">` and sent automatically on non-GET requests. Make sure this tag is present if your server requires CSRF protection.
|
|
233
|
+
|
|
234
|
+
## Browser compatibility
|
|
235
|
+
|
|
236
|
+
talkDOM works in all modern browsers. No polyfills needed.
|
|
237
|
+
|
|
238
|
+
| Browser | Minimum version |
|
|
239
|
+
|---------|-----------------|
|
|
240
|
+
| Chrome | 51+ |
|
|
241
|
+
| Firefox | 49+ |
|
|
242
|
+
| Safari | 10+ |
|
|
243
|
+
| Edge | 79+ (Chromium) |
|
|
244
|
+
|
|
245
|
+
IE is not supported.
|
|
246
|
+
|
|
247
|
+
## Performance
|
|
248
|
+
|
|
249
|
+
Receiver lookups are cached and invalidated automatically via `MutationObserver`. Repeated dispatches to the same receiver name within a stable DOM hit the cache.
|
|
250
|
+
|
|
251
|
+
Polling is capped at 64 concurrent pollers by default (configurable via `talkDOM.maxPollers`). Pollers clean up automatically when their element is removed from the DOM.
|
|
252
|
+
|
|
253
|
+
For most pages, talkDOM adds negligible overhead. On pages with thousands of receivers, keep in mind that `querySelectorAll` runs once per unique receiver name per DOM mutation cycle.
|
|
254
|
+
|
|
226
255
|
## License
|
|
227
256
|
|
|
228
257
|
MIT. See [LICENSE](LICENSE).
|
package/dist/talkdom.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["parseMessage","str","trimmed","trim","tokens","split","receiver","body","substring","length","rest","slice","keywords","args","currentArg","i","token","endsWith","push","join","selector","receiverName","el","getAttribute","receiverCache","cacheValid","findReceivers","name","result","document","querySelectorAll","apply","op","content","attr","indexOf","accepts","innerHTML","textContent","insertAdjacentHTML","outerHTML","hasAttribute","key","localStorage","setItem","JSON","stringify","persist","console","error","request","method","url","meta","headers","location","href","querySelector","warn","fetch","then","r","ok","status","Promise","reject","trigger","get","text","dispatchRaw","err","recName","MutationObserver","observe","childList","subtree","attributes","attributeFilter","methods","message","confirm","t","pushing","replayState","state","sender","send","msg","piped","els","undefined","concat","forEach","detail","parent","parentNode","next","nextElementSibling","resolveTarget","isConnected","previousElementSibling","lastElementChild","target","dispatchEvent","CustomEvent","bubbles","run","raw","chains","map","chain","resolve","steps","s","filter","Boolean","reduce","prev","step","all","catch","dispatch","senderEl","pathname","search","history","pushState","pushUrl","window","addEventListener","e","activePollers","maxPollers","closest","preventDefault","getItem","parse","removeItem","interval","match","n","parseInt","parseInterval","cachedTargets","id","setInterval","clearInterval","talkDOM"],"sources":["index.js"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["parseMessage","str","trimmed","trim","tokens","split","receiver","body","substring","length","rest","slice","keywords","args","currentArg","i","token","endsWith","push","join","selector","receiverName","el","getAttribute","receiverCache","cacheValid","findReceivers","name","result","document","querySelectorAll","apply","op","content","attr","indexOf","accepts","innerHTML","textContent","insertAdjacentHTML","outerHTML","hasAttribute","key","localStorage","setItem","JSON","stringify","persist","console","error","request","method","url","meta","headers","location","href","querySelector","warn","fetch","then","r","ok","status","Promise","reject","trigger","get","text","dispatchRaw","err","recName","MutationObserver","observe","childList","subtree","attributes","attributeFilter","methods","message","confirm","t","pushing","replayState","state","sender","send","msg","piped","els","undefined","concat","forEach","detail","parent","parentNode","next","nextElementSibling","resolveTarget","isConnected","previousElementSibling","lastElementChild","target","dispatchEvent","CustomEvent","bubbles","run","raw","chains","map","chain","resolve","steps","s","filter","Boolean","reduce","prev","step","all","catch","dispatch","senderEl","pathname","search","history","pushState","pushUrl","window","addEventListener","e","activePollers","maxPollers","closest","preventDefault","getItem","parse","removeItem","interval","match","n","parseInt","parseInterval","cachedTargets","id","setInterval","clearInterval","talkDOM"],"sources":["index.js"],"mappings":"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","ignoreList":[]}
|
package/index.js
CHANGED
|
@@ -206,9 +206,15 @@
|
|
|
206
206
|
var result;
|
|
207
207
|
els.forEach(function (el) {
|
|
208
208
|
var detail = { receiver: msg.receiver, selector: msg.selector, args: msg.args };
|
|
209
|
+
// Snapshot DOM neighbors before the method runs. If the method does an
|
|
210
|
+
// outer swap, `el` is replaced and disconnected, so we need these anchors
|
|
211
|
+
// to locate the replacement element for dispatching lifecycle events.
|
|
209
212
|
var parent = el.parentNode;
|
|
210
213
|
var next = el.nextElementSibling;
|
|
211
214
|
result = method(el, ...args);
|
|
215
|
+
// After an outer swap `el` is gone. Walk from the snapshotted sibling or
|
|
216
|
+
// parent to find the element that took its place; fall back to a fresh
|
|
217
|
+
// receiver query if the DOM was restructured.
|
|
212
218
|
function resolveTarget() {
|
|
213
219
|
if (el.isConnected) return el;
|
|
214
220
|
var candidate = next && next.isConnected ? next.previousElementSibling
|
|
@@ -235,13 +241,18 @@
|
|
|
235
241
|
// Programmatic API: parse and execute a raw message string (supports pipes and semicolons).
|
|
236
242
|
// Returns a promise that resolves when all chains complete.
|
|
237
243
|
function run(raw) {
|
|
244
|
+
// Semicolons split into independent chains that run in parallel.
|
|
238
245
|
var chains = raw.split(";").map(function (chain) {
|
|
239
246
|
var trimmed = chain.trim();
|
|
240
247
|
if (!trimmed) return Promise.resolve();
|
|
248
|
+
// Pipes split a chain into sequential steps where each step's return
|
|
249
|
+
// value is fed as the first argument to the next step.
|
|
241
250
|
var steps = trimmed.split("|").map(function (s) { return s.trim(); }).filter(Boolean);
|
|
242
251
|
if (steps.length === 1) {
|
|
243
252
|
return Promise.resolve(send(parseMessage(steps[0])));
|
|
244
253
|
}
|
|
254
|
+
// Reduce builds a promise chain: each step waits for the previous one,
|
|
255
|
+
// then passes its resolved value (piped) into send().
|
|
245
256
|
return steps.reduce(function (prev, step) {
|
|
246
257
|
var msg = parseMessage(step);
|
|
247
258
|
return Promise.resolve(prev).then(function (piped) {
|
|
@@ -249,6 +260,7 @@
|
|
|
249
260
|
});
|
|
250
261
|
}, undefined);
|
|
251
262
|
});
|
|
263
|
+
// All independent chains resolve together.
|
|
252
264
|
return Promise.all(chains);
|
|
253
265
|
}
|
|
254
266
|
|