@texuli/spec 0.8.0 → 0.9.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 CHANGED
@@ -14,11 +14,17 @@ by Texuli's Kotlin Multiplatform twin. The package is framework-free: no
14
14
  DOM, no Svelte, no Node APIs and no runtime dependencies.
15
15
 
16
16
  > **Status: 0.x release.** Texuli is in development. The packages are
17
- > published to npm as `0.8.0`, a pre-1.0 release (1.0.0 will be the first
18
- > stable release). Under 0.x, a new minor (`0.9.0`) may contain breaking
19
- > changes, so pin the exact version or use `^0.8.0`, which accepts only 0.8.x.
17
+ > published to npm as `0.9.0`, a pre-1.0 release (1.0.0 will be the first
18
+ > stable release). Under 0.x, a new minor (`0.10.0`) may contain breaking
19
+ > changes, so pin the exact version or use `^0.9.0`, which accepts only 0.9.x.
20
20
 
21
- > **New in `0.8.0`.** `@texuli/spec@0.8.0` carries **spec 0.8.0**, which adds
21
+ > **New in `0.9.0`.** `@texuli/spec@0.9.0` carries **spec 0.9.0**, a
22
+ > stamp-only catalog projection refresh (the Button pending note and the
23
+ > cartesian charts' `xKind` and `locale`, from the Protoyard gaps G94 and
24
+ > G97): the envelope, the `$defs` and the diagnostic codes are unchanged,
25
+ > and every `0.8.0` envelope migrates by stamping `spec`.
26
+
27
+ > **New in `0.8.0`.** `@texuli/spec@0.8.0` carried **spec 0.8.0**, which adds
22
28
  > data-source bindings (the `@texuli/spec/source` subpath), the
23
29
  > agent-emittable `schema-form`, `canvas`, `spreadsheet`, `data-dashboard`
24
30
  > and `data-dashboard-widget` ids with their closed shapes, the closed
@@ -75,7 +81,7 @@ import {
75
81
  validateInstance,
76
82
  } from '@texuli/spec';
77
83
 
78
- SPEC_VERSION; // the spec version: '0.8.0' in @texuli/spec@0.8.0
84
+ SPEC_VERSION; // the spec version: '0.9.0' in @texuli/spec@0.9.0
79
85
  SPEC_COMPONENT_IDS.includes('alert'); // true: the closed component vocabulary
80
86
 
81
87
  // The dialect validator: a closed subset of JSON Schema 2020-12.
@@ -107,7 +113,7 @@ import { type Schema, type SpecCatalog, validateBlueprint } from '@texuli/spec';
107
113
  import { migrateBlueprint } from '@texuli/spec/migrate';
108
114
  import { validateWorkflowGraph } from '@texuli/spec/workflow';
109
115
 
110
- const migrated = migrateBlueprint(blueprint); // 0.2.0 → … → 0.7.0 → 0.8.0; never throws
116
+ const migrated = migrateBlueprint(blueprint); // 0.2.0 → … → 0.8.0 → 0.9.0; never throws
111
117
  const result = validateBlueprint(migrated.blueprint, {
112
118
  blueprintSchema: blueprintSchemaJson as Schema,
113
119
  catalog: componentsJson as SpecCatalog,
@@ -274,9 +280,12 @@ written for (`spec`; omitted means 0.2.0). `migrateBlueprint`
274
280
  (`@texuli/spec/migrate`) brings an
275
281
  envelope up to the current spec with pure, per-version steps
276
282
  (`src/migrations/`: `0.2.0 → 0.3.0`, `0.3.0 → 0.4.0`, `0.4.0 → 0.5.0`,
277
- `0.5.0 → 0.6.0`, `0.6.0 → 0.7.0` and `0.7.0 → 0.8.0`, each of which only
278
- stamps `spec`); a compatible version range is planned, not built.
279
- `@texuli/spec@0.8.0` carries spec `0.8.0` (digest
283
+ `0.5.0 → 0.6.0`, `0.6.0 → 0.7.0`, `0.7.0 → 0.8.0` and `0.8.0 → 0.9.0`,
284
+ each of which only stamps `spec`); a compatible version range is planned,
285
+ not built. `@texuli/spec@0.9.0` carries spec `0.9.0` (digest
286
+ `497df4d3b0c67d53483163ebd9bd73733b52caf5f8e2966478f1cf860e6f9d9d`), an
287
+ additive catalog projection refresh (PLAN_011 T-gaps-87-95 and
288
+ T-gaps-96-98); `@texuli/spec@0.8.0` carried spec `0.8.0` (digest
280
289
  `f6b6388280d247eb9c3106a925111f35b90d1ec3b59c23652542f06a9f103daf`), which
281
290
  adds data-source bindings, forms, canvases, dashboards and spreadsheets;
282
291
  `@texuli/spec@0.7.0` carried spec `0.7.0` (digest
@@ -562,8 +562,9 @@ export interface BlueprintSourceBinding {
562
562
  * ({"$source": name, "query": {...}}), with a closed query, and forms as data: the closed form
563
563
  * schema a `schema-form` node carries ($defs.formSchema) with conditions and cross-field rules in
564
564
  * the closed expression AST of @texuli/core/expression ($defs.expression). Spec 0.8.0 (ADR-012)
565
- * adds the canvas shape a `canvas` node carries ($defs.canvas). Planned minor additions: the native
566
- * profile and several roots.
565
+ * adds the canvas shape a `canvas` node carries ($defs.canvas). Spec 0.9.0 refreshes the catalog
566
+ * projection only (an additive minor; the envelope shape is unchanged). Planned minor additions:
567
+ * the native profile and several roots.
567
568
  */
568
569
  export interface BlueprintEnvelope {
569
570
  format: 'texuli-blueprint';
@@ -587,7 +588,7 @@ export interface BlueprintEnvelope {
587
588
  /**
588
589
  * The spec version the envelope was written for. Omitted means 0.2.0; migrateBlueprint stamps it.
589
590
  */
590
- spec?: '0.3.0' | '0.4.0' | '0.5.0' | '0.6.0' | '0.7.0' | '0.8.0';
591
+ spec?: '0.3.0' | '0.4.0' | '0.5.0' | '0.6.0' | '0.7.0' | '0.8.0' | '0.9.0';
591
592
  /**
592
593
  * Local state declarations (ADR-008), at most 64. Names, counts and per-type rules are checked by
593
594
  * the validator.
@@ -1,3 +1,3 @@
1
1
  // Generated by @texuli/spec from schemas/blueprint.schema.json. Do not edit: run the spec generator.
2
- // Spec 0.8.0, digest f6b6388280d247eb9c3106a925111f35b90d1ec3b59c23652542f06a9f103daf
2
+ // Spec 0.9.0, digest 497df4d3b0c67d53483163ebd9bd73733b52caf5f8e2966478f1cf860e6f9d9d
3
3
  export {};
@@ -1,3 +1,3 @@
1
1
  // Generated by @texuli/spec from schemas/catalog.schema.json. Do not edit: run the spec generator.
2
- // Spec 0.8.0, digest f6b6388280d247eb9c3106a925111f35b90d1ec3b59c23652542f06a9f103daf
2
+ // Spec 0.9.0, digest 497df4d3b0c67d53483163ebd9bd73733b52caf5f8e2966478f1cf860e6f9d9d
3
3
  export {};
@@ -1,3 +1,3 @@
1
1
  // Generated by @texuli/spec from schemas/diagnostics.schema.json. Do not edit: run the spec generator.
2
- // Spec 0.8.0, digest f6b6388280d247eb9c3106a925111f35b90d1ec3b59c23652542f06a9f103daf
2
+ // Spec 0.9.0, digest 497df4d3b0c67d53483163ebd9bd73733b52caf5f8e2966478f1cf860e6f9d9d
3
3
  export {};
@@ -1,3 +1,3 @@
1
1
  // Generated by @texuli/spec from schemas/manifest.schema.json. Do not edit: run the spec generator.
2
- // Spec 0.8.0, digest f6b6388280d247eb9c3106a925111f35b90d1ec3b59c23652542f06a9f103daf
2
+ // Spec 0.9.0, digest 497df4d3b0c67d53483163ebd9bd73733b52caf5f8e2966478f1cf860e6f9d9d
3
3
  export {};
@@ -1,5 +1,5 @@
1
1
  /** The built catalog this vocabulary was projected from. */
2
- export declare const SPEC_CATALOG_HASH = "598075e391ed95dcba46e120d2fbb706e8ff67d0d5bdeb3c0741f334f439b264";
2
+ export declare const SPEC_CATALOG_HASH = "8e72aaa2c94dba6b4245a9778fdd21fd86c6398e5a0fca410da0aa51a3190b72";
3
3
  /** Every closed component id, sorted. */
4
4
  export declare const SPEC_COMPONENT_IDS: readonly ["action-form", "alert", "alert-dialog", "analytics-grid", "app-nav", "badge", "banner", "blocks-code", "blocks-data", "blocks-diagram", "blocks-embed", "blocks-interactive", "blocks-map", "blocks-media", "blocks-structure", "blocks-text", "breadcrumb", "button", "button-group", "callout", "canvas", "card", "charts-area", "charts-bar", "charts-bubble", "charts-bullet", "charts-canvas-renderer", "charts-cartesian", "charts-combo", "charts-donut", "charts-funnel", "charts-gauge", "charts-geo-map", "charts-geo-point-map", "charts-heatmap", "charts-line", "charts-network", "charts-pie", "charts-progress-ring", "charts-sankey", "charts-scatter", "charts-sparkline", "charts-stacked-bar", "charts-sunburst", "charts-treemap", "chat-message", "chat-thread", "checkbox", "chip", "code", "combobox", "command-palette", "content-layout", "context-menu", "context-menu-trigger", "control-choice", "control-filter", "control-slider", "control-toggle", "data-board", "data-calendar", "data-cohort-table", "data-dashboard", "data-dashboard-widget", "data-files", "data-filter-builder", "data-grid", "data-map", "data-notification-inbox", "data-timeline", "data-tree-view", "deck-slide", "description", "detail-panel", "dialog", "document", "drawer", "dropdown-menu", "dropdown-menu-content", "dropdown-menu-item", "dropdown-menu-trigger", "empty-state", "error-state", "field", "field-error", "flow-action", "flow-view", "form", "form-field", "form-submit", "host-region", "hover-card", "hover-card-content", "icon-button", "inline-text", "input", "input-group", "kbd", "kpi", "label", "layout-auth-split", "layout-blog", "layout-card", "layout-chrome", "layout-dashboard-grid", "layout-deck", "layout-doc", "layout-docs", "layout-drawer", "layout-dual-sidebar", "layout-editorial", "layout-grid", "layout-host", "layout-landing", "layout-marketing", "layout-page", "layout-pricing", "layout-row", "layout-settings", "layout-sidebar", "layout-split", "layout-stack", "layout-tile", "layout-top-nav", "layout-wizard", "media-composition-canvas", "media-composition-svg", "media-image", "menubar", "menubar-trigger", "multi-select", "nav-icon", "navigation-menu", "pagination", "popover", "popover-content", "radio", "radio-group", "responsive-modal", "schema-form", "screen-outlet", "select", "select-content", "select-group", "select-item", "select-label", "select-portal", "select-separator", "select-trigger", "select-value", "select-viewport", "sheet", "sidebar", "sortable-list", "split-view", "spreadsheet", "stat", "stepper", "switch", "table", "tag", "text-counter", "textarea", "time-field", "timeline", "toaster", "tooltip", "workflow-graph"];
5
5
  export type SpecComponentId = (typeof SPEC_COMPONENT_IDS)[number];
@@ -154,20 +154,24 @@ export interface SpecComponentProps {
154
154
  description: string;
155
155
  fullDomain?: string;
156
156
  interactive?: string;
157
+ locale?: string;
157
158
  mode?: 'light' | 'dark';
158
159
  series: readonly unknown[];
159
160
  title: string;
160
161
  visibleDomain?: string;
162
+ xKind?: 'linear' | 'category' | 'time';
161
163
  };
162
164
  'charts-bar': {
163
165
  annotations?: string;
164
166
  description: string;
165
167
  fullDomain?: string;
166
168
  interactive?: string;
169
+ locale?: string;
167
170
  mode?: 'light' | 'dark';
168
171
  series: readonly unknown[];
169
172
  title: string;
170
173
  visibleDomain?: string;
174
+ xKind?: 'linear' | 'category' | 'time';
171
175
  };
172
176
  'charts-bubble': {
173
177
  annotations?: string;
@@ -202,20 +206,24 @@ export interface SpecComponentProps {
202
206
  fullDomain?: string;
203
207
  interactive?: string;
204
208
  kind: 'line' | 'area' | 'bar' | 'stacked-bar' | 'combo';
209
+ locale?: string;
205
210
  mode?: 'light' | 'dark';
206
211
  series: readonly unknown[];
207
212
  title: string;
208
213
  visibleDomain?: string;
214
+ xKind?: 'linear' | 'category' | 'time';
209
215
  };
210
216
  'charts-combo': {
211
217
  annotations?: string;
212
218
  description: string;
213
219
  fullDomain?: string;
214
220
  interactive?: string;
221
+ locale?: string;
215
222
  mode?: 'light' | 'dark';
216
223
  series: readonly unknown[];
217
224
  title: string;
218
225
  visibleDomain?: string;
226
+ xKind?: 'linear' | 'category' | 'time';
219
227
  };
220
228
  'charts-donut': {
221
229
  data: readonly unknown[];
@@ -281,10 +289,12 @@ export interface SpecComponentProps {
281
289
  description: string;
282
290
  fullDomain?: string;
283
291
  interactive?: string;
292
+ locale?: string;
284
293
  mode?: 'light' | 'dark';
285
294
  series: readonly unknown[];
286
295
  title: string;
287
296
  visibleDomain?: string;
297
+ xKind?: 'linear' | 'category' | 'time';
288
298
  };
289
299
  'charts-network': {
290
300
  description?: string;
@@ -350,10 +360,12 @@ export interface SpecComponentProps {
350
360
  description: string;
351
361
  fullDomain?: string;
352
362
  interactive?: string;
363
+ locale?: string;
353
364
  mode?: 'light' | 'dark';
354
365
  series: readonly unknown[];
355
366
  title: string;
356
367
  visibleDomain?: string;
368
+ xKind?: 'linear' | 'category' | 'time';
357
369
  };
358
370
  'charts-sunburst': {
359
371
  description: string;
@@ -1,7 +1,7 @@
1
1
  // Generated by @texuli/spec from catalog/components.json. Do not edit: run the spec generator.
2
- // Spec 0.8.0, digest f6b6388280d247eb9c3106a925111f35b90d1ec3b59c23652542f06a9f103daf
2
+ // Spec 0.9.0, digest 497df4d3b0c67d53483163ebd9bd73733b52caf5f8e2966478f1cf860e6f9d9d
3
3
  /** The built catalog this vocabulary was projected from. */
4
- export const SPEC_CATALOG_HASH = '598075e391ed95dcba46e120d2fbb706e8ff67d0d5bdeb3c0741f334f439b264';
4
+ export const SPEC_CATALOG_HASH = '8e72aaa2c94dba6b4245a9778fdd21fd86c6398e5a0fca410da0aa51a3190b72';
5
5
  /** Every closed component id, sorted. */
6
6
  export const SPEC_COMPONENT_IDS = [
7
7
  'action-form',
@@ -1,3 +1,3 @@
1
1
  // Generated by @texuli/spec from schemas/workflow.schema.json. Do not edit: run the spec generator.
2
- // Spec 0.8.0, digest f6b6388280d247eb9c3106a925111f35b90d1ec3b59c23652542f06a9f103daf
2
+ // Spec 0.9.0, digest 497df4d3b0c67d53483163ebd9bd73733b52caf5f8e2966478f1cf860e6f9d9d
3
3
  export {};
@@ -0,0 +1,8 @@
1
+ import type { SpecMigration } from './types.js';
2
+ /**
3
+ * 0.8.0 → 0.9.0 is additive (PLAN_011 T-gaps-87-95): it refreshes the catalog
4
+ * projection (the button pending note and the gap props that reach the
5
+ * manifests) and removes nothing. Every 0.8.0 envelope is a valid 0.9.0
6
+ * envelope, so the step only stamps `spec`.
7
+ */
8
+ export declare const migration080to090: SpecMigration;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 0.8.0 → 0.9.0 is additive (PLAN_011 T-gaps-87-95): it refreshes the catalog
3
+ * projection (the button pending note and the gap props that reach the
4
+ * manifests) and removes nothing. Every 0.8.0 envelope is a valid 0.9.0
5
+ * envelope, so the step only stamps `spec`.
6
+ */
7
+ export const migration080to090 = Object.freeze({
8
+ from: '0.8.0',
9
+ to: '0.9.0',
10
+ migrate: (envelope) => ({ ...envelope, spec: '0.9.0' }),
11
+ });
@@ -6,6 +6,7 @@ import { migration040to050 } from "./0.4.0-0.5.0.js";
6
6
  import { migration050to060 } from "./0.5.0-0.6.0.js";
7
7
  import { migration060to070 } from "./0.6.0-0.7.0.js";
8
8
  import { migration070to080 } from "./0.7.0-0.8.0.js";
9
+ import { migration080to090 } from "./0.8.0-0.9.0.js";
9
10
  /** The version an envelope without `spec` was written for. */
10
11
  export const UNDECLARED_SPEC_VERSION = '0.2.0';
11
12
  /** Every step, in order; each `to` is the next step's `from`. */
@@ -16,6 +17,7 @@ export const SPEC_MIGRATIONS = Object.freeze([
16
17
  migration050to060,
17
18
  migration060to070,
18
19
  migration070to080,
20
+ migration080to090,
19
21
  ]);
20
22
  /**
21
23
  * Bring a blueprint envelope up to `target` (the current spec by default)
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** The semantic version of the spec documents in this package. */
2
- export declare const SPEC_VERSION = "0.8.0";
2
+ export declare const SPEC_VERSION = "0.9.0";
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /** The semantic version of the spec documents in this package. */
2
- export const SPEC_VERSION = '0.8.0';
2
+ export const SPEC_VERSION = '0.9.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@texuli/spec",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "The schema-first blueprint contract: JSON schemas, the catalog vocabulary, deterministic TypeScript and Kotlin projections, and the conformance harness.",
5
5
  "keywords": [
6
6
  "svelte",