@bicharts/shape-core 0.5.40 → 0.5.41

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.
@@ -11,7 +11,7 @@ export type GeoPointResult = {
11
11
  export { normalizePlaceName } from "./geoCountryNames";
12
12
  /** Which point-map's candidate set a lookup runs against. Rows carry kind flags
13
13
  * (N = North America map, W = World map; a row may carry both), so ONE table serves
14
- * every map type with the map deciding its own scope — Joel 2026-08-02: "one row can
14
+ * every map type with the map deciding its own scope — 2026-08-02: "one row can
15
15
  * apply to 1 or more map types", and the matching rules are COMMON logic. */
16
16
  export type GeoMapKind = "north-america" | "world";
17
17
  /** REPLACE the bundled gazetteer with another packed table (same record format). The
@@ -53,7 +53,7 @@ export declare function zipToPrefix3(value: string | null | undefined): string |
53
53
  /**
54
54
  * THE ZIP READER. One function, because a ZIP arrives in whatever shape the pipeline left it
55
55
  * and both matchers — the point cascade here and the choropleth join key in geoDetector —
56
- * have to read it identically (Joel 2026-08-02: "the matcher to the gazette needs to do
56
+ * have to read it identically (2026-08-02: "the matcher to the gazette needs to do
57
57
  * proper zip matching: it should work for 02108 no matter how the source is interpreted").
58
58
  *
59
59
  * Everything it survives, and why each one is real:
@@ -85,7 +85,7 @@ export declare function zipPrefixCandidates(value: string | null | undefined): s
85
85
  */
86
86
  /** The city tier found MORE THAN ONE place the source row could mean, after every
87
87
  * non-blank source attribute was honoured. The row is NOT plotted and the caller
88
- * reports it as info — since v2 (Joel 2026-08-02) a guess is never made: "if multiple
88
+ * reports it as info — since v2 (2026-08-02) a guess is never made: "if multiple
89
89
  * possible matches are found, that should be a call-out … and it should not be
90
90
  * plotted." Distinct from `null` (nothing matched at all): coarser tiers must NOT
91
91
  * rescue an ambiguity, because the coarser placement would silently pick a side. */
@@ -116,7 +116,7 @@ export type GeoPointColumns = {
116
116
  * Without this a chart can only ever say "22 of 117 positions approximated" — true,
117
117
  * but it cannot say WHICH 22, so it draws every mark as though it were exact. A reader
118
118
  * hovering Inverness got "Inverness, United Kingdom" over LONDON's coordinates, with
119
- * nothing to distinguish it from the London row stacked underneath (Joel 2026-08-04).
119
+ * nothing to distinguish it from the London row stacked underneath (2026-08-04).
120
120
  *
121
121
  * The counts above are a summary OF this array and remain the right input for a
122
122
  * caption. This is what lets a mark disclose its own precision — style it differently,
@@ -179,7 +179,7 @@ rows: Array<{
179
179
  /**
180
180
  * The TAGS on a known city ("capital", ...), empty when it carries none or is unknown.
181
181
  *
182
- * The query surface for the per-city tag layer (Joel 2026-08-03: "having tags that can apply
182
+ * The query surface for the per-city tag layer (2026-08-03: "having tags that can apply
183
183
  * at the city level makes sense and can be leveraged in follow-on prompt requests"). `country`
184
184
  * narrows to one row when the name is shared ("London" GB vs ON); without it, a name that
185
185
  * matches several cities returns the union of their tags, which is honest about what a bare
@@ -3,12 +3,12 @@
3
3
  * that column may claim a geographic role.
4
4
  *
5
5
  * One number for every role — city, state, ZIP, country, and the choropleth region detector
6
- * (Joel 2026-08-02: "I would prefer one constant, so maybe we make that 95 and apply to all").
6
+ * (2026-08-02: "I would prefer one constant, so maybe we make that 95 and apply to all").
7
7
  * Tune here and they all move together — except CITY, which has its own looser bar below for
8
8
  * a reason worth reading.
9
9
  *
10
- * 96 was tried first and SETTLED AT 95 the same day, on evidence rather than taste: Joel's own
11
- * world_country_metrics carries 42 clean countries and two deliberate junk rows, which is
10
+ * 96 was tried first and SETTLED AT 95 the same day, on evidence rather than taste: the reference
11
+ * dataset behind the request carries 42 clean countries and two deliberate junk rows, which is
12
12
  * 95.5% — a well-formed reference dataset landing half a point under its own bar. A cliff that
13
13
  * a curated 44-row table falls off is in the wrong place. 95 is still far too strict for a
14
14
  * column of something else to claim a role by accident (a wrong column scores near zero, not
@@ -33,7 +33,7 @@ export declare const ROLE_MATCH_PCT = 95;
33
33
  */
34
34
  export declare function isBlankLike(normalized: string): boolean;
35
35
  /**
36
- * CITY is held LOWER, and deliberately so (Joel 2026-08-02: "maybe city is a good one to make
36
+ * CITY is held LOWER, and deliberately so (2026-08-02: "maybe city is a good one to make
37
37
  * lower - 80% even").
38
38
  *
39
39
  * The other roles are closed vocabularies. There are ~195 countries and ~90 admin1s in scope,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bicharts/shape-core",
3
- "version": "0.5.40",
3
+ "version": "0.5.41",
4
4
  "description": "Host-agnostic data-shape profiler: ingest a dataset's rows through IValueCollection.addRow and read back the measured shape as an LLMColumnWithValue[] payload — types, cardinality, temporal/ordinal detection, geographic region and point resolution, cross-column signals. MEASUREMENT only: the policy that decides what a measured shape means for chart selection lives server-side.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",