@symbiotejs/symbiote 3.4.5 → 3.4.6

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/CHANGELOG.md CHANGED
@@ -1,10 +1,11 @@
1
1
  # Changelog
2
2
 
3
- ## 3.4.5
3
+ ## 3.4.6
4
4
 
5
5
  ### Fixed
6
6
 
7
7
  - **PubSub: computed properties with cross-context deps no longer depend on import order.** When a computed property declared `deps: ['CTX/prop']` and the target context wasn't registered yet, the subscription was silently skipped. Now deferred deps are stored in `PubSub.pendingDeps` and automatically resolved when `registerCtx()` is called.
8
+ - **Symbiote: named context access no longer crashes when context is not yet registered.** The `$` proxy, `sub()`, `notify()`, `has()`, and `add()` now handle missing named contexts gracefully (return `undefined`/no-op instead of throwing).
8
9
 
9
10
  ## 3.4.4
10
11
 
package/core/Symbiote.js CHANGED
@@ -247,7 +247,10 @@ export class Symbiote extends HTMLElement {
247
247
  ctx = found?.localCtx || fnCtx.localCtx;
248
248
  } else if (prop.includes('/')) {
249
249
  let slashIdx = prop.indexOf('/');
250
- ctx = PubSub.getCtx(prop.slice(0, slashIdx));
250
+ ctx = PubSub.getCtx(prop.slice(0, slashIdx), false);
251
+ if (!ctx) {
252
+ return null;
253
+ }
251
254
  name = prop.slice(slashIdx + 1);
252
255
  } else if (first === 45 && prop.charCodeAt(1) === 45) {
253
256
  ctx = fnCtx.localCtx;
@@ -276,6 +279,7 @@ export class Symbiote extends HTMLElement {
276
279
  handler(val);
277
280
  };
278
281
  let parsed = Symbiote.#parseProp(/** @type {string} */ (prop), this);
282
+ if (!parsed) return;
279
283
  if (!parsed.ctx.has(parsed.name)) {
280
284
  // Avoid *prop binding race:
281
285
  window.queueMicrotask(() => {
@@ -289,12 +293,14 @@ export class Symbiote extends HTMLElement {
289
293
  /** @param {String} prop */
290
294
  notify(prop) {
291
295
  let parsed = Symbiote.#parseProp(prop, this);
296
+ if (!parsed) return;
292
297
  parsed.ctx.notify(parsed.name);
293
298
  }
294
299
 
295
300
  /** @param {String} prop */
296
301
  has(prop) {
297
302
  let parsed = Symbiote.#parseProp(prop, this);
303
+ if (!parsed) return false;
298
304
  return parsed.ctx.has(parsed.name);
299
305
  }
300
306
 
@@ -306,6 +312,7 @@ export class Symbiote extends HTMLElement {
306
312
  */
307
313
  add(prop, val, rewrite = false) {
308
314
  let parsed = Symbiote.#parseProp(prop, this);
315
+ if (!parsed) return;
309
316
  parsed.ctx.add(parsed.name, val, rewrite);
310
317
  }
311
318
 
@@ -330,8 +337,9 @@ export class Symbiote extends HTMLElement {
330
337
  if (first !== 42 && first !== 94 && first !== 64 && first !== 43 && first !== 45 && !prop.includes('/')) {
331
338
  this.localCtx.pub(prop, val);
332
339
  } else {
333
- let parsed = Symbiote.#parseProp(prop, this);
334
- parsed.ctx.pub(parsed.name, val);
340
+ let parsed = Symbiote.#parseProp(prop, this);
341
+ if (!parsed) return true;
342
+ parsed.ctx.pub(parsed.name, val);
335
343
  }
336
344
  return true;
337
345
  },
@@ -341,6 +349,7 @@ export class Symbiote extends HTMLElement {
341
349
  return this.localCtx.read(prop);
342
350
  }
343
351
  let parsed = Symbiote.#parseProp(prop, this);
352
+ if (!parsed) return undefined;
344
353
  return parsed.ctx.read(parsed.name);
345
354
  },
346
355
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@symbiotejs/symbiote",
4
- "version": "3.4.5",
4
+ "version": "3.4.6",
5
5
  "description": "Symbiote.js - zero-dependency close-to-platform frontend library to build super-powered web components",
6
6
  "author": "team@rnd-pro.com",
7
7
  "license": "MIT",
@@ -1 +1 @@
1
- {"version":3,"file":"Symbiote.d.ts","sourceRoot":"","sources":["../../core/Symbiote.js"],"names":[],"mappings":";;AAmBA,sBADc,CAAC;IAuBb,cADW,mBAAmB,CACjB;IAGb,sCAAwB;IAExB,iCAGC;IAED,8BAEC;IAkBD,wBAAgB;IA0JhB,+BAJwB,CAAC,SAAZ,aAAU,uBAEZ,CAAC;;;MAuCX;IAmPD,qCAA+B;IAoC/B,iDAFa,OAAO,QAAQ,CAqB3B;IAED,wBAKC;IAGD;;aAOC;IAsHD,6BADY,SAAS,aAAa,QAOjC;IAGD,+BADY,SAAS,aAAa,QAOjC;IAGD,8BADY,SAAS,aAAa,EAIjC;IAGD,gCADY,SAAS,aAAa,EAIjC;IAnjBD,cA6BC;IArID,gCAEC;IAED,qBAAiB;IACjB,uBAAmB;IAiBnB,kBAHW,SAAS,gBAAgB,0BAmFnC;IApDG,aAAiD;IAyDnD,OADW,CAAC,CACoB;IAEhC;;MAAmC;IAEnC,oBADW,GAAG,CAAC,CAAC,EAAE,EAAE,gBAAgB,gBAAW,EAAE,KAAK,eAAU,KAAK,IAAI,CAAC,CACvC;IAEnC;;MAA8B;IAC9B,kBAAwB;IAExB,qBAAwB;IAExB,sBAAyB;IAEzB,wBAA0B;IAE1B,0BAA6B;IAI7B,iBAAoB;IAEpB,6BAAgC;IAEhC,mBAAsB;IAEtB,4BAA8B;IAIhC,yBAEC;IAGD,sBASC;IAGD,4BAKC;IAGD,6BAEC;IAoDD,IALuB,CAAC,SAAX,MAAO,CAAE,QACX,CAAC,WACD,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,wBAmB/B;IAGD,2BAGC;IAGD,uBAGC;IAQD,IALuB,CAAC,SAAX,MAAO,CAAE,qBAEX,CAAC,CAAC,CAAC,CAAC,2BAMd;IAMD,UAHW,OAAO,CAAC,CAAC,CAAC,2BAOpB;IAGD,SADc,CAAC,CA2Bd;IAMD,YAHW,OAAO,CAAC,CAAC,CAAC,mCAcpB;IAED,8BAgBC;IAdG,4CASE;IAwFF,0BAAwC;IAwB1C,uBAAyB;IAG3B,0BAEC;IAED,wBAAoB;IAUpB,yBAAuB;IACvB,6BA0BC;IA6CD,oEAeC;IAMD,yDAoBC;IAYD,0BAME;IAMF,0CAFW,GAAG,QAmBb;IAED,yBAGC;IAOD,8EAmBC;;CA+BF;;mBAntBkB,aAAa;qBACX,iBAAiB;2BACX,iBAAiB"}
1
+ {"version":3,"file":"Symbiote.d.ts","sourceRoot":"","sources":["../../core/Symbiote.js"],"names":[],"mappings":";;AAmBA,sBADc,CAAC;IAuBb,cADW,mBAAmB,CACjB;IAGb,sCAAwB;IAExB,iCAGC;IAED,8BAEC;IAkBD,wBAAgB;IA0JhB,+BAJwB,CAAC,SAAZ,aAAU,uBAEZ,CAAC;;;MA0CX;IAyPD,qCAA+B;IAoC/B,iDAFa,OAAO,QAAQ,CAqB3B;IAED,wBAKC;IAGD;;aAOC;IAsHD,6BADY,SAAS,aAAa,QAOjC;IAGD,+BADY,SAAS,aAAa,QAOjC;IAGD,8BADY,SAAS,aAAa,EAIjC;IAGD,gCADY,SAAS,aAAa,EAIjC;IA5jBD,cA6BC;IArID,gCAEC;IAED,qBAAiB;IACjB,uBAAmB;IAiBnB,kBAHW,SAAS,gBAAgB,0BAmFnC;IApDG,aAAiD;IAyDnD,OADW,CAAC,CACoB;IAEhC;;MAAmC;IAEnC,oBADW,GAAG,CAAC,CAAC,EAAE,EAAE,gBAAgB,gBAAW,EAAE,KAAK,eAAU,KAAK,IAAI,CAAC,CACvC;IAEnC;;MAA8B;IAC9B,kBAAwB;IAExB,qBAAwB;IAExB,sBAAyB;IAEzB,wBAA0B;IAE1B,0BAA6B;IAI7B,iBAAoB;IAEpB,6BAAgC;IAEhC,mBAAsB;IAEtB,4BAA8B;IAIhC,yBAEC;IAGD,sBASC;IAGD,4BAKC;IAGD,6BAEC;IAuDD,IALuB,CAAC,SAAX,MAAO,CAAE,QACX,CAAC,WACD,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,wBAoB/B;IAGD,2BAIC;IAGD,uBAIC;IAQD,IALuB,CAAC,SAAX,MAAO,CAAE,qBAEX,CAAC,CAAC,CAAC,CAAC,2BAOd;IAMD,UAHW,OAAO,CAAC,CAAC,CAAC,2BAOpB;IAGD,SADc,CAAC,CA6Bd;IAMD,YAHW,OAAO,CAAC,CAAC,CAAC,mCAcpB;IAED,8BAgBC;IAdG,4CASE;IAwFF,0BAAwC;IAwB1C,uBAAyB;IAG3B,0BAEC;IAED,wBAAoB;IAUpB,yBAAuB;IACvB,6BA0BC;IA6CD,oEAeC;IAMD,yDAoBC;IAYD,0BAME;IAMF,0CAFW,GAAG,QAmBb;IAED,yBAGC;IAOD,8EAmBC;;CA+BF;;mBA5tBkB,aAAa;qBACX,iBAAiB;2BACX,iBAAiB"}