@rindo/core 4.25.3 → 4.27.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.
Files changed (43) hide show
  1. package/cli/index.cjs +4 -4
  2. package/cli/index.js +1 -1
  3. package/cli/package.json +1 -1
  4. package/compiler/package.json +1 -1
  5. package/compiler/rindo.js +1545 -1475
  6. package/dev-server/client/index.js +1 -1
  7. package/dev-server/client/package.json +1 -1
  8. package/dev-server/connector.html +2 -2
  9. package/dev-server/index.js +4 -4
  10. package/dev-server/package.json +1 -1
  11. package/dev-server/server-process.js +4 -4
  12. package/internal/app-data/index.cjs +3 -14
  13. package/internal/app-data/index.js +0 -11
  14. package/internal/app-data/package.json +1 -1
  15. package/internal/client/index.js +639 -228
  16. package/internal/client/package.json +1 -1
  17. package/internal/client/patch-browser.js +1 -1
  18. package/internal/client/shadow-css.js +30 -6
  19. package/internal/hydrate/index.js +674 -233
  20. package/internal/hydrate/package.json +1 -1
  21. package/internal/hydrate/runner.d.ts +22 -5
  22. package/internal/hydrate/runner.js +34 -9
  23. package/internal/package.json +1 -1
  24. package/internal/rindo-private.d.ts +6 -13
  25. package/internal/rindo-public-compiler.d.ts +23 -6
  26. package/internal/testing/index.js +637 -242
  27. package/internal/testing/package.json +1 -1
  28. package/mock-doc/index.cjs +233 -233
  29. package/mock-doc/index.d.ts +5 -1
  30. package/mock-doc/index.js +230 -230
  31. package/mock-doc/package.json +1 -1
  32. package/package.json +2 -2
  33. package/screenshot/index.js +4 -4
  34. package/screenshot/package.json +1 -1
  35. package/screenshot/pixel-match.js +3 -3
  36. package/sys/node/index.js +9 -9
  37. package/sys/node/package.json +1 -1
  38. package/sys/node/worker.js +1 -1
  39. package/testing/index.js +9 -16
  40. package/testing/jest/jest-27-and-under/matchers/html.d.ts +2 -1
  41. package/testing/jest/jest-28/matchers/html.d.ts +2 -1
  42. package/testing/jest/jest-29/matchers/html.d.ts +2 -1
  43. package/testing/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/internal/client",
3
- "version": "4.25.3",
3
+ "version": "4.27.0",
4
4
  "description": "Rindo internal client platform to be imported by the Rindo Compiler and internal runtime. Breaking changes can and will happen at any time.",
5
5
  "main": "./index.js",
6
6
  "exports": "./index.js",
@@ -1,5 +1,5 @@
1
1
  /*
2
- Rindo Client Patch Browser v4.25.3 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Client Patch Browser v4.27.0 | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
 
5
5
  // src/client/client-patch-browser.ts
@@ -274,14 +274,14 @@ var scopeSelector = (selector, scopeSelectorText, hostSelector, slotSelector) =>
274
274
  }
275
275
  }).join(", ");
276
276
  };
277
- var scopeSelectors = (cssText, scopeSelectorText, hostSelector, slotSelector) => {
277
+ var scopeSelectors = (cssText, scopeSelectorText, hostSelector, slotSelector, commentOriginalSelector) => {
278
278
  return processRules(cssText, (rule) => {
279
279
  let selector = rule.selector;
280
280
  let content = rule.content;
281
281
  if (rule.selector[0] !== "@") {
282
282
  selector = scopeSelector(rule.selector, scopeSelectorText, hostSelector, slotSelector);
283
283
  } else if (rule.selector.startsWith("@media") || rule.selector.startsWith("@supports") || rule.selector.startsWith("@page") || rule.selector.startsWith("@document")) {
284
- content = scopeSelectors(rule.content, scopeSelectorText, hostSelector, slotSelector);
284
+ content = scopeSelectors(rule.content, scopeSelectorText, hostSelector, slotSelector, commentOriginalSelector);
285
285
  }
286
286
  const cssRule = {
287
287
  selector: selector.replace(/\s{2,}/g, " ").trim(),
@@ -290,7 +290,7 @@ var scopeSelectors = (cssText, scopeSelectorText, hostSelector, slotSelector) =>
290
290
  return cssRule;
291
291
  });
292
292
  };
293
- var scopeCssText = (cssText, scopeId, hostScopeId, slotScopeId) => {
293
+ var scopeCssText = (cssText, scopeId, hostScopeId, slotScopeId, commentOriginalSelector) => {
294
294
  cssText = insertPolyfillHostInCssText(cssText);
295
295
  cssText = convertColonHost(cssText);
296
296
  cssText = convertColonHostContext(cssText);
@@ -298,7 +298,7 @@ var scopeCssText = (cssText, scopeId, hostScopeId, slotScopeId) => {
298
298
  cssText = slotted.cssText;
299
299
  cssText = convertShadowDOMSelectors(cssText);
300
300
  if (scopeId) {
301
- cssText = scopeSelectors(cssText, scopeId, hostScopeId, slotScopeId);
301
+ cssText = scopeSelectors(cssText, scopeId, hostScopeId, slotScopeId, commentOriginalSelector);
302
302
  }
303
303
  cssText = replaceShadowCssHost(cssText, hostScopeId);
304
304
  cssText = cssText.replace(/>\s*\*\s+([^{, ]+)/gm, " $1 ");
@@ -315,13 +315,37 @@ var scopeCssText = (cssText, scopeId, hostScopeId, slotScopeId) => {
315
315
  var replaceShadowCssHost = (cssText, hostScopeId) => {
316
316
  return cssText.replace(/-shadowcsshost-no-combinator/g, `.${hostScopeId}`);
317
317
  };
318
- var scopeCss = (cssText, scopeId) => {
318
+ var scopeCss = (cssText, scopeId, commentOriginalSelector) => {
319
319
  const hostScopeId = scopeId + "-h";
320
320
  const slotScopeId = scopeId + "-s";
321
321
  const commentsWithHash = extractCommentsWithHash(cssText);
322
322
  cssText = stripComments(cssText);
323
- const scoped = scopeCssText(cssText, scopeId, hostScopeId, slotScopeId);
323
+ const orgSelectors = [];
324
+ if (commentOriginalSelector) {
325
+ const processCommentedSelector = (rule) => {
326
+ const placeholder = `/*!@___${orgSelectors.length}___*/`;
327
+ const comment = `/*!@${rule.selector}*/`;
328
+ orgSelectors.push({ placeholder, comment });
329
+ rule.selector = placeholder + rule.selector;
330
+ return rule;
331
+ };
332
+ cssText = processRules(cssText, (rule) => {
333
+ if (rule.selector[0] !== "@") {
334
+ return processCommentedSelector(rule);
335
+ } else if (rule.selector.startsWith("@media") || rule.selector.startsWith("@supports") || rule.selector.startsWith("@page") || rule.selector.startsWith("@document")) {
336
+ rule.content = processRules(rule.content, processCommentedSelector);
337
+ return rule;
338
+ }
339
+ return rule;
340
+ });
341
+ }
342
+ const scoped = scopeCssText(cssText, scopeId, hostScopeId, slotScopeId, commentOriginalSelector);
324
343
  cssText = [scoped.cssText, ...commentsWithHash].join("\n");
344
+ if (commentOriginalSelector) {
345
+ orgSelectors.forEach(({ placeholder, comment }) => {
346
+ cssText = cssText.replace(placeholder, comment);
347
+ });
348
+ }
325
349
  scoped.slottedSelectors.forEach((slottedSelector) => {
326
350
  const regex = new RegExp(escapeRegExpSpecialCharacters(slottedSelector.orgSelector), "g");
327
351
  cssText = cssText.replace(regex, slottedSelector.updatedSelector);