css-in-js-engine-pb 0.2.0 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"insertWithBucket.d.ts","sourceRoot":"","sources":["../src/insertWithBucket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAoC5C,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,WAAW,QAuEtB"}
1
+ {"version":3,"file":"insertWithBucket.d.ts","sourceRoot":"","sources":["../src/insertWithBucket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAmC5C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,QAqDzE"}
@@ -2,7 +2,6 @@ import { insertRulesOnce } from './insertOnce';
2
2
  import { StyleBucket } from './StyleBucket';
3
3
  const bucketRules = new Map();
4
4
  const seenBuckets = new Set();
5
- const flushedBuckets = new Set();
6
5
  const ORDER = [
7
6
  StyleBucket.Reset,
8
7
  StyleBucket.Base,
@@ -13,7 +12,6 @@ const ORDER = [
13
12
  StyleBucket.Focus,
14
13
  StyleBucket.User,
15
14
  ];
16
- // Buckets that should NOT block ordering if unused
17
15
  const OPTIONAL_BUCKETS = [
18
16
  StyleBucket.Base,
19
17
  StyleBucket.Size,
@@ -22,10 +20,10 @@ const OPTIONAL_BUCKETS = [
22
20
  StyleBucket.Focus,
23
21
  StyleBucket.User,
24
22
  ];
25
- // Mark optional buckets as seen by default
26
23
  for (const b of OPTIONAL_BUCKETS) {
27
24
  seenBuckets.add(b);
28
25
  }
26
+ let highestInsertedBucketIndex = -1;
29
27
  function bucketName(bucket) {
30
28
  var _a;
31
29
  return (_a = StyleBucket[bucket]) !== null && _a !== void 0 ? _a : `UNKNOWN(${bucket})`;
@@ -33,45 +31,44 @@ function bucketName(bucket) {
33
31
  export function insertRulesWithBucket(rules, bucket) {
34
32
  console.groupCollapsed(`[STYLE] insertRulesWithBucket → ${bucketName(bucket)}`);
35
33
  console.log('incoming rules.length:', rules.length);
36
- // mark bucket as seen
37
34
  seenBuckets.add(bucket);
38
- // collect rules
39
35
  if (rules.length) {
40
36
  const existing = bucketRules.get(bucket);
41
- if (existing) {
37
+ if (existing)
42
38
  existing.push(...rules);
43
- }
44
- else {
39
+ else
45
40
  bucketRules.set(bucket, [...rules]);
46
- }
47
41
  }
48
42
  console.log('bucketRules:', Array.from(bucketRules.entries()).map(([b, r]) => `${bucketName(b)}=${r.length}`));
49
43
  console.log('seenBuckets:', Array.from(seenBuckets).map(bucketName));
50
- // try flushing in strict ORDER
51
- for (const b of ORDER) {
52
- if (flushedBuckets.has(b)) {
53
- console.log(`⏭ ${bucketName(b)} already flushed`);
54
- continue;
55
- }
56
- // 🚨 critical guard
57
- // do NOT flush if an earlier bucket has not been seen yet
58
- const bIndex = ORDER.indexOf(b);
59
- const hasUnseenEarlier = ORDER
60
- .slice(0, bIndex)
61
- .some(prev => !seenBuckets.has(prev));
62
- if (hasUnseenEarlier) {
63
- console.log(`⛔ ${bucketName(b)} blocked (earlier bucket not seen yet)`);
64
- break; // cannot flush further
44
+ const targetIndex = ORDER.indexOf(bucket);
45
+ if (targetIndex === -1) {
46
+ console.warn('⛔ bucket not in ORDER:', bucket);
47
+ console.groupEnd();
48
+ return;
49
+ }
50
+ // Don’t insert beyond unseen required buckets
51
+ // (Reset + Appearance are required; Base/Size/Shape/State/Focus/User are optional via pre-seed)
52
+ for (let i = 0; i <= targetIndex; i++) {
53
+ if (!seenBuckets.has(ORDER[i])) {
54
+ console.log(`⛔ blocked at ${bucketName(ORDER[i])} (not seen yet)`);
55
+ console.groupEnd();
56
+ return;
65
57
  }
58
+ }
59
+ // Insert buckets in order up to targetIndex.
60
+ // IMPORTANT: we do NOT “flush forever”. We may insert more later.
61
+ for (let i = 0; i <= targetIndex; i++) {
62
+ const b = ORDER[i];
66
63
  const r = bucketRules.get(b);
67
64
  if (!r || r.length === 0) {
68
- console.log(`⏳ ${bucketName(b)} has no rules yet`);
65
+ console.log(`⏳ ${bucketName(b)} has no queued rules`);
69
66
  continue;
70
67
  }
71
- console.log(`➡ FLUSHING ${r.length} rules from ${bucketName(b)}`);
68
+ console.log(`➡ INSERTING ${r.length} queued rules from ${bucketName(b)}`);
72
69
  insertRulesOnce(r);
73
- flushedBuckets.add(b);
74
70
  bucketRules.set(b, []);
71
+ highestInsertedBucketIndex = Math.max(highestInsertedBucketIndex, i);
75
72
  }
76
73
  console.groupEnd();
77
74
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "css-in-js-engine-pb",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "A lightweight atomic CSS-in-JS engine built on the native CSS cascade",
5
5
  "license": "MIT",
6
6
  "type": "module",