@pwfabric/contracts 1.0.0-rc.0 → 1.0.0-rc.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.
- package/README.md +27 -5
- package/dist/capability/builder.d.ts +0 -1
- package/dist/capability/builder.js.map +1 -1
- package/dist/capability/index.d.ts +0 -1
- package/dist/capability/index.js.map +1 -1
- package/dist/core/ids.d.ts +0 -1
- package/dist/core/ids.js.map +1 -1
- package/dist/core/index.d.ts +0 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/result.d.ts +0 -1
- package/dist/core/result.js.map +1 -1
- package/dist/core/schema.d.ts +0 -1
- package/dist/core/schema.js.map +1 -1
- package/dist/core/version.d.ts +0 -1
- package/dist/core/version.js.map +1 -1
- package/dist/fabric/appearance-cascade.d.ts +0 -1
- package/dist/fabric/appearance-cascade.js.map +1 -1
- package/dist/fabric/artifact.d.ts +0 -1
- package/dist/fabric/artifact.js.map +1 -1
- package/dist/fabric/atom.d.ts +0 -1
- package/dist/fabric/atom.js.map +1 -1
- package/dist/fabric/block-manifest-schema.d.ts +0 -1
- package/dist/fabric/block-manifest-schema.js.map +1 -1
- package/dist/fabric/block.d.ts +0 -1
- package/dist/fabric/block.js.map +1 -1
- package/dist/fabric/capability-configs.d.ts +0 -1
- package/dist/fabric/capability-configs.js.map +1 -1
- package/dist/fabric/capability.d.ts +0 -1
- package/dist/fabric/capability.js.map +1 -1
- package/dist/fabric/config-schema.d.ts +0 -1
- package/dist/fabric/config-schema.js.map +1 -1
- package/dist/fabric/contract.d.ts +0 -1
- package/dist/fabric/contract.js.map +1 -1
- package/dist/fabric/domain.d.ts +0 -1
- package/dist/fabric/domain.js.map +1 -1
- package/dist/fabric/dynamic-artifact.d.ts +0 -1
- package/dist/fabric/dynamic-artifact.js.map +1 -1
- package/dist/fabric/events.d.ts +0 -1
- package/dist/fabric/events.js.map +1 -1
- package/dist/fabric/execution.d.ts +0 -1
- package/dist/fabric/execution.js.map +1 -1
- package/dist/fabric/fabric.d.ts +0 -1
- package/dist/fabric/fabric.js.map +1 -1
- package/dist/fabric/index.d.ts +0 -1
- package/dist/fabric/index.js.map +1 -1
- package/dist/fabric/interaction-rules.d.ts +0 -1
- package/dist/fabric/interaction-rules.js.map +1 -1
- package/dist/fabric/layout.d.ts +0 -1
- package/dist/fabric/layout.js.map +1 -1
- package/dist/fabric/manifestation.d.ts +0 -1
- package/dist/fabric/manifestation.js.map +1 -1
- package/dist/fabric/media-declaration.d.ts +0 -1
- package/dist/fabric/media-declaration.js.map +1 -1
- package/dist/fabric/media-provenance.d.ts +0 -1
- package/dist/fabric/media-provenance.js.map +1 -1
- package/dist/fabric/pack-requires.d.ts +0 -1
- package/dist/fabric/pack-requires.js.map +1 -1
- package/dist/fabric/project-identity.d.ts +0 -1
- package/dist/fabric/project-identity.js.map +1 -1
- package/dist/fabric/pwpack-json.d.ts +0 -1
- package/dist/fabric/pwpack-json.js.map +1 -1
- package/dist/fabric/surface-appearance.d.ts +0 -1
- package/dist/fabric/surface-appearance.js.map +1 -1
- package/dist/fabric/surface-doc.d.ts +0 -1
- package/dist/fabric/surface-doc.js.map +1 -1
- package/dist/fabric/surface-events.d.ts +0 -1
- package/dist/fabric/surface-events.js.map +1 -1
- package/dist/fabric/surface-mutation.d.ts +0 -1
- package/dist/fabric/surface-mutation.js.map +1 -1
- package/dist/fabric/surface-render-grant.d.ts +0 -1
- package/dist/fabric/surface-render-grant.js.map +1 -1
- package/dist/fabric/surface-schema.d.ts +0 -1
- package/dist/fabric/surface-schema.js.map +1 -1
- package/dist/fabric/surface-theme.d.ts +0 -1
- package/dist/fabric/surface-theme.js.map +1 -1
- package/dist/fabric/surface.d.ts +0 -1
- package/dist/fabric/surface.js.map +1 -1
- package/dist/fabric/validation.d.ts +0 -1
- package/dist/fabric/validation.js.map +1 -1
- package/dist/fabric/webfonts.d.ts +0 -1
- package/dist/fabric/webfonts.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js.map +1 -1
- package/package.json +21 -18
- package/dist/capability/builder.d.ts.map +0 -1
- package/dist/capability/index.d.ts.map +0 -1
- package/dist/core/ids.d.ts.map +0 -1
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/result.d.ts.map +0 -1
- package/dist/core/schema.d.ts.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/fabric/appearance-cascade.d.ts.map +0 -1
- package/dist/fabric/artifact.d.ts.map +0 -1
- package/dist/fabric/atom.d.ts.map +0 -1
- package/dist/fabric/block-manifest-schema.d.ts.map +0 -1
- package/dist/fabric/block.d.ts.map +0 -1
- package/dist/fabric/capability-configs.d.ts.map +0 -1
- package/dist/fabric/capability.d.ts.map +0 -1
- package/dist/fabric/config-schema.d.ts.map +0 -1
- package/dist/fabric/contract.d.ts.map +0 -1
- package/dist/fabric/domain.d.ts.map +0 -1
- package/dist/fabric/dynamic-artifact.d.ts.map +0 -1
- package/dist/fabric/events.d.ts.map +0 -1
- package/dist/fabric/execution.d.ts.map +0 -1
- package/dist/fabric/fabric.d.ts.map +0 -1
- package/dist/fabric/index.d.ts.map +0 -1
- package/dist/fabric/interaction-rules.d.ts.map +0 -1
- package/dist/fabric/layout.d.ts.map +0 -1
- package/dist/fabric/manifestation.d.ts.map +0 -1
- package/dist/fabric/media-declaration.d.ts.map +0 -1
- package/dist/fabric/media-provenance.d.ts.map +0 -1
- package/dist/fabric/pack-requires.d.ts.map +0 -1
- package/dist/fabric/project-identity.d.ts.map +0 -1
- package/dist/fabric/pwpack-json.d.ts.map +0 -1
- package/dist/fabric/surface-appearance.d.ts.map +0 -1
- package/dist/fabric/surface-doc.d.ts.map +0 -1
- package/dist/fabric/surface-events.d.ts.map +0 -1
- package/dist/fabric/surface-mutation.d.ts.map +0 -1
- package/dist/fabric/surface-render-grant.d.ts.map +0 -1
- package/dist/fabric/surface-schema.d.ts.map +0 -1
- package/dist/fabric/surface-theme.d.ts.map +0 -1
- package/dist/fabric/surface.d.ts.map +0 -1
- package/dist/fabric/validation.d.ts.map +0 -1
- package/dist/fabric/webfonts.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
# @pwfabric/contracts
|
|
2
2
|
|
|
3
|
-
The types and schemas every part of PWFabric agrees on
|
|
3
|
+
The types and schemas every part of PWFabric agrees on: ids, results, versions,
|
|
4
|
+
blocks, surfaces, capabilities, events and the pwpack manifest. Everything else
|
|
5
|
+
in the engine depends on this package; it depends only on `zod`.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
4
8
|
|
|
5
9
|
```bash
|
|
6
|
-
pnpm add @pwfabric/contracts
|
|
10
|
+
pnpm add @pwfabric/contracts@rc zod@3
|
|
7
11
|
```
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
ESM only: import it from an ES module (`"type": "module"` or `.mjs`). Node 22+. Peer: TypeScript 5.4+.
|
|
14
|
+
|
|
15
|
+
## Main exports
|
|
16
|
+
|
|
17
|
+
| Export | What it is |
|
|
18
|
+
|--------|------------|
|
|
19
|
+
| `ok`, `err`, `isOk`, `isErr`, `unwrap`, `mapResult`, … | The `Result` type every engine call returns |
|
|
20
|
+
| `surfaceId`, `capabilityId`, `artifactId`, `parseId`, `isValidId`, … | Branded ids |
|
|
21
|
+
| `parseVersion`, `compareVersions`, `isValidVersion` | Semver helpers |
|
|
22
|
+
| `toJsonSchema`, `validationOk`, `validationErr` | Schema and validation helpers |
|
|
23
|
+
| `CapabilityBuilder`, `defineCapability` | Declare a capability |
|
|
24
|
+
| Block, surface, event and manifest types and schemas | The shapes a pwpack and a pwapp are made of |
|
|
25
|
+
|
|
26
|
+
## Entry points
|
|
27
|
+
|
|
28
|
+
| Import | Contents |
|
|
29
|
+
|--------|----------|
|
|
30
|
+
| `@pwfabric/contracts` | Everything above (the only entry point) |
|
|
11
31
|
|
|
12
32
|
## Licence
|
|
13
33
|
|
|
14
|
-
Apache-2.0 — see `LICENSE`.
|
|
34
|
+
Apache-2.0 — see `LICENSE`. No additional conditions, patent grant included. See [licensing](https://pwfabric.com/licence).
|
|
35
|
+
|
|
36
|
+
Part of [PWFabric](https://pwfabric.com) — the engine that renders an app. Source: [github.com/pwfabric/pwfabric](https://github.com/pwfabric/pwfabric).
|
|
@@ -97,4 +97,3 @@ export declare class CapabilityBuilder<TInput = unknown, TOutput = unknown> {
|
|
|
97
97
|
* Create a new capability builder
|
|
98
98
|
*/
|
|
99
99
|
export declare function defineCapability<TInput = unknown, TOutput = unknown>(): CapabilityBuilder<TInput, TOutput>;
|
|
100
|
-
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/capability/builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/capability/builder.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Capability Builder\n *\n * PHASE0-WS3: Fluent API for building capabilities\n *\n * Lives in the contracts package so that capability authors depend only on\n * the Apache-2.0 contract surface. `@pwfabric/core`\n * re-exports these names unchanged.\n *\n * @module @pwfabric/contracts/capability/builder\n */\n\nimport type { CapabilityId, DomainId } from '../core/ids.js'\nimport type { SemanticVersion } from '../core/version.js'\nimport type { Capability, CapabilityMetadata, CapabilityState } from '../fabric/capability.js'\nimport type { ConfigSchema } from '../fabric/config-schema.js'\nimport type { Contract } from '../fabric/contract.js'\nimport type { ExecutionContext } from '../fabric/execution.js'\nimport { capabilityId } from '../core/ids.js'\nimport { parseVersion, INITIAL_VERSION } from '../core/version.js'\n\n// ============================================================\n// CAPABILITY IMPLEMENTATION\n// ============================================================\n\n/**\n * Simple capability implementation\n */\nclass SimpleCapability<TInput, TOutput> implements Capability<CapabilityId, TInput, TOutput> {\n readonly id: CapabilityId\n readonly version: SemanticVersion\n readonly contract: Contract<TInput, TOutput>\n readonly dependencies: readonly CapabilityId[]\n readonly metadata: CapabilityMetadata\n readonly configSchema?: ConfigSchema | undefined\n\n private readonly executor: (input: TInput, context: ExecutionContext) => Promise<TOutput>\n\n constructor(config: {\n id: CapabilityId\n version: SemanticVersion\n contract: Contract<TInput, TOutput>\n dependencies: readonly CapabilityId[]\n metadata: CapabilityMetadata\n configSchema?: ConfigSchema | undefined\n execute: (input: TInput, context: ExecutionContext) => Promise<TOutput>\n }) {\n this.id = config.id\n this.version = config.version\n this.contract = config.contract\n this.dependencies = config.dependencies\n this.metadata = config.metadata\n if (config.configSchema !== undefined) {\n this.configSchema = config.configSchema\n }\n this.executor = config.execute\n }\n\n execute(input: TInput, context: ExecutionContext): Promise<TOutput> {\n return this.executor(input, context)\n }\n}\n\n// ============================================================\n// CAPABILITY BUILDER\n// ============================================================\n\n/**\n * Capability builder for fluent API\n */\nexport class CapabilityBuilder<TInput = unknown, TOutput = unknown> {\n private _id = ''\n private _version = '0.1.0'\n private _name = ''\n private _description?: string\n private _state: CapabilityState = 'draft'\n private _domain?: DomainId\n private _tags?: readonly string[]\n private _timeout?: number\n private _retryable?: boolean\n private _idempotent?: boolean\n private _dependencies: CapabilityId[] = []\n private _contract?: Contract<TInput, TOutput>\n private _configSchema?: ConfigSchema\n private _executor?: (input: TInput, context: ExecutionContext) => Promise<TOutput>\n\n /**\n * Set the capability ID\n */\n id(id: string): this {\n this._id = id\n return this\n }\n\n /**\n * Set the capability version\n */\n version(version: string): this {\n this._version = version\n return this\n }\n\n /**\n * Set the capability name\n */\n name(name: string): this {\n this._name = name\n return this\n }\n\n /**\n * Set the capability description\n */\n description(description: string): this {\n this._description = description\n return this\n }\n\n /**\n * Set the capability state\n */\n state(state: CapabilityState): this {\n this._state = state\n return this\n }\n\n /**\n * Set the capability domain\n */\n domain(domain: DomainId): this {\n this._domain = domain\n return this\n }\n\n /**\n * Set the capability tags\n */\n tags(tags: readonly string[]): this {\n this._tags = tags\n return this\n }\n\n /**\n * Set the capability timeout\n */\n timeout(ms: number): this {\n this._timeout = ms\n return this\n }\n\n /**\n * Mark the capability as retryable\n */\n retryable(value = true): this {\n this._retryable = value\n return this\n }\n\n /**\n * Mark the capability as idempotent\n */\n idempotent(value = true): this {\n this._idempotent = value\n return this\n }\n\n /**\n * Add a dependency\n */\n dependsOn(id: string | CapabilityId): this {\n this._dependencies.push(typeof id === 'string' ? capabilityId(id) : id)\n return this\n }\n\n /**\n * Set the contract\n */\n contract<I, O>(contract: Contract<I, O>): CapabilityBuilder<I, O> {\n const builder = this as unknown as CapabilityBuilder<I, O>\n builder._contract = contract\n return builder\n }\n\n /**\n * Set the configuration schema\n */\n configSchema(schema: ConfigSchema): this {\n this._configSchema = schema\n return this\n }\n\n /**\n * Set the executor function\n */\n execute(fn: (input: TInput, context: ExecutionContext) => Promise<TOutput>): this {\n this._executor = fn\n return this\n }\n\n /**\n * Build the capability\n */\n build(): Capability<CapabilityId, TInput, TOutput> {\n if (!this._id) {\n throw new Error('Capability ID is required')\n }\n if (!this._name) {\n throw new Error('Capability name is required')\n }\n if (!this._contract) {\n throw new Error('Capability contract is required')\n }\n if (!this._executor) {\n throw new Error('Capability executor is required')\n }\n\n const metadata: CapabilityMetadata = {\n name: this._name,\n state: this._state,\n }\n if (this._description !== undefined) {\n ;(metadata as { description?: string }).description = this._description\n }\n if (this._domain !== undefined) {\n ;(metadata as { domain?: DomainId }).domain = this._domain\n }\n if (this._tags !== undefined) {\n ;(metadata as { tags?: readonly string[] }).tags = this._tags\n }\n if (this._timeout !== undefined) {\n ;(metadata as { timeout?: number }).timeout = this._timeout\n }\n if (this._retryable !== undefined) {\n ;(metadata as { retryable?: boolean }).retryable = this._retryable\n }\n if (this._idempotent !== undefined) {\n ;(metadata as { idempotent?: boolean }).idempotent = this._idempotent\n }\n\n return new SimpleCapability<TInput, TOutput>({\n id: capabilityId(this._id),\n version: parseVersion(this._version) ?? INITIAL_VERSION,\n contract: this._contract,\n dependencies: this._dependencies,\n metadata,\n ...(this._configSchema !== undefined ? { configSchema: this._configSchema } : {}),\n execute: this._executor,\n })\n }\n}\n\n/**\n * Create a new capability builder\n */\nexport function defineCapability<TInput = unknown, TOutput = unknown>(): CapabilityBuilder<\n TInput,\n TOutput\n> {\n return new CapabilityBuilder<TInput, TOutput>()\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capability/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capability/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA","sourcesContent":["/**\n * Capability Authoring\n *\n * Fluent builder for capabilities, part of the public contract surface.\n *\n * @module @pwfabric/contracts/capability\n */\n\nexport { CapabilityBuilder, defineCapability } from './builder.js'\n"]}
|
package/dist/core/ids.d.ts
CHANGED
package/dist/core/ids.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/core/ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuEH,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,OAAO,EAAc,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,EAAkB,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,EAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,OAAO,EAAe,CAAA;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,OAAO,EAAqB,CAAA;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,OAAO,EAAc,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,OAAO,EAAa,CAAA;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,EAAgB,CAAA;AACzB,CAAC;AAED,+DAA+D;AAC/D,8BAA8B;AAC9B,+DAA+D;AAE/D,MAAM,UAAU,MAAM,CAAC,EAAU;IAC/B,OAAO,EAAY,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAgB,CAAA;AACzB,CAAC;AAED,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,oEAAoE,CAAA;AAE9F;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;IAC3E,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjD,MAAM,MAAM,GAA0D;QACpE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;KACf,CAAA;IAED,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACb,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/core/ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuEH,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,OAAO,EAAc,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,EAAkB,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,EAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,OAAO,EAAe,CAAA;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,OAAO,EAAqB,CAAA;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,OAAO,EAAc,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,OAAO,EAAa,CAAA;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,EAAgB,CAAA;AACzB,CAAC;AAED,+DAA+D;AAC/D,8BAA8B;AAC9B,+DAA+D;AAE/D,MAAM,UAAU,MAAM,CAAC,EAAU;IAC/B,OAAO,EAAY,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAgB,CAAA;AACzB,CAAC;AAED,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,oEAAoE,CAAA;AAE9F;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;IAC3E,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjD,MAAM,MAAM,GAA0D;QACpE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;KACf,CAAA;IAED,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACb,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["/**\n * Identity and Addressing Primitives\n *\n * PHASE0-WS1: Core identity types for PWFabric\n *\n * These types use branded types (opaque types) to provide\n * compile-time safety for different ID types that are\n * structurally identical (all strings) but semantically distinct.\n *\n * @module @pwfabric/contracts/core/ids\n */\n\n/**\n * Brand symbol for nominal typing\n */\ndeclare const brand: unique symbol\n\n/**\n * Branded type helper - creates nominally typed strings\n */\ntype Brand<T, B extends string> = T & { readonly [brand]: B }\n\n// ============================================================\n// FABRIC IDENTITY TYPES\n// ============================================================\n\n/**\n * Unique identifier for a Fabric instance\n */\nexport type FabricId = Brand<string, 'FabricId'>\n\n/**\n * Unique identifier for a Capability\n */\nexport type CapabilityId = Brand<string, 'CapabilityId'>\n\n/**\n * Unique identifier for a Contract\n */\nexport type ContractId = Brand<string, 'ContractId'>\n\n/**\n * Unique identifier for a Surface\n */\nexport type SurfaceId = Brand<string, 'SurfaceId'>\n\n/**\n * Unique identifier for a Manifestation\n */\nexport type ManifestationId = Brand<string, 'ManifestationId'>\n\n/**\n * Unique identifier for a Domain\n */\nexport type DomainId = Brand<string, 'DomainId'>\n\n/**\n * Unique identifier for an Owner (human or system)\n */\nexport type OwnerId = Brand<string, 'OwnerId'>\n\n/**\n * Unique identifier for an Artifact\n */\nexport type ArtifactId = Brand<string, 'ArtifactId'>\n\n// ============================================================\n// WORLD LAYER IDENTITY\n// ============================================================\n\n/**\n * User identifier — auth principal. A single user may belong to many Worlds.\n */\nexport type UserId = Brand<string, 'UserId'>\n\n/**\n * ISO 8601 datetime string. Branded for documentation; runtime is plain string.\n * Always UTC; suffix `Z` required.\n */\nexport type ISODateTime = Brand<string, 'ISODateTime'>\n\n// ============================================================\n// ID CONSTRUCTORS\n// ============================================================\n\n/**\n * Create a FabricId from a string\n * Runtime validation should be performed by the caller\n */\nexport function fabricId(id: string): FabricId {\n return id as FabricId\n}\n\n/**\n * Create a CapabilityId from a string\n */\nexport function capabilityId(id: string): CapabilityId {\n return id as CapabilityId\n}\n\n/**\n * Create a ContractId from a string\n */\nexport function contractId(id: string): ContractId {\n return id as ContractId\n}\n\n/**\n * Create a SurfaceId from a string\n */\nexport function surfaceId(id: string): SurfaceId {\n return id as SurfaceId\n}\n\n/**\n * Create a ManifestationId from a string\n */\nexport function manifestationId(id: string): ManifestationId {\n return id as ManifestationId\n}\n\n/**\n * Create a DomainId from a string\n */\nexport function domainId(id: string): DomainId {\n return id as DomainId\n}\n\n/**\n * Create an OwnerId from a string\n */\nexport function ownerId(id: string): OwnerId {\n return id as OwnerId\n}\n\n/**\n * Create an ArtifactId from a string\n */\nexport function artifactId(id: string): ArtifactId {\n return id as ArtifactId\n}\n\n// ============================================================\n// WORLD LAYER ID CONSTRUCTORS\n// ============================================================\n\nexport function userId(id: string): UserId {\n return id as UserId\n}\n\nexport function isoDateTime(s: string): ISODateTime {\n return s as ISODateTime\n}\n\n// ============================================================\n// ID VALIDATION\n// ============================================================\n\n/**\n * ID format: namespace/name or namespace/name@version\n * Examples:\n * - \"auth/login\"\n * - \"payments/process@1.0.0\"\n * - \"core/validate\"\n */\nexport const ID_PATTERN = /^[a-z][a-z0-9-]*\\/[a-z][a-z0-9-]*(@\\d+\\.\\d+\\.\\d+(-[a-z0-9.]+)?)?$/i\n\n/**\n * Check if a string is a valid PWFabric ID format\n */\nexport function isValidId(id: string): boolean {\n return ID_PATTERN.test(id)\n}\n\n/**\n * Parse an ID into namespace and name parts\n */\nexport function parseId(id: string): { namespace: string; name: string; version?: string } | null {\n const match = id.match(/^([a-z][a-z0-9-]*)\\/([a-z][a-z0-9-]*)(?:@(.+))?$/i)\n if (!match || !match[1] || !match[2]) return null\n\n const result: { namespace: string; name: string; version?: string } = {\n namespace: match[1],\n name: match[2],\n }\n\n if (match[3]) {\n result.version = match[3]\n }\n\n return result\n}\n"]}
|
package/dist/core/index.d.ts
CHANGED
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,0BAA0B;AAC1B,cAAc,UAAU,CAAA;AAExB,sBAAsB;AACtB,cAAc,cAAc,CAAA;AAE5B,eAAe;AACf,cAAc,aAAa,CAAA;AAE3B,eAAe;AACf,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,0BAA0B;AAC1B,cAAc,UAAU,CAAA;AAExB,sBAAsB;AACtB,cAAc,cAAc,CAAA;AAE5B,eAAe;AACf,cAAc,aAAa,CAAA;AAE3B,eAAe;AACf,cAAc,aAAa,CAAA","sourcesContent":["/**\n * Core Contract Primitives\n *\n * PHASE0-WS1: Foundational types for PWFabric\n *\n * @module @pwfabric/contracts/core\n */\n\n// Identity and addressing\nexport * from './ids.js'\n\n// Semantic versioning\nexport * from './version.js'\n\n// Result types\nexport * from './result.js'\n\n// Schema types\nexport * from './schema.js'\n"]}
|
package/dist/core/result.d.ts
CHANGED
|
@@ -88,4 +88,3 @@ export declare function validationErr(errors: ValidationError[]): ValidationResu
|
|
|
88
88
|
* Create a single validation error
|
|
89
89
|
*/
|
|
90
90
|
export declare function validationError(path: string[], message: string, code: string): ValidationError;
|
|
91
|
-
//# sourceMappingURL=result.d.ts.map
|
package/dist/core/result.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/core/result.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiCH,+DAA+D;AAC/D,sBAAsB;AACtB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,EAAE,CAAI,IAAO;IAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAI,KAAQ;IAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AAClC,CAAC;AAED,+DAA+D;AAC/D,qBAAqB;AACrB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,IAAI,CAAO,MAAoB;IAC7C,OAAO,MAAM,CAAC,OAAO,KAAK,IAAI,CAAA;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAO,MAAoB;IAC9C,OAAO,MAAM,CAAC,OAAO,KAAK,KAAK,CAAA;AACjC,CAAC;AAED,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,MAAM,CAAO,MAAoB;IAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IACD,MAAM,MAAM,CAAC,KAAK,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAO,MAAoB,EAAE,YAAe;IAClE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAU,MAAoB,EAAE,EAAkB;IACzE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAU,MAAoB,EAAE,EAAmB;IACzE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,MAAoB,EACpB,EAA6B;IAE7B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAoBD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAI,IAAO;IACrC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAyB;IACrD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,OAAe,EAAE,IAAY;IAC3E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAChC,CAAC"}
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/core/result.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiCH,+DAA+D;AAC/D,sBAAsB;AACtB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,EAAE,CAAI,IAAO;IAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAI,KAAQ;IAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AAClC,CAAC;AAED,+DAA+D;AAC/D,qBAAqB;AACrB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,IAAI,CAAO,MAAoB;IAC7C,OAAO,MAAM,CAAC,OAAO,KAAK,IAAI,CAAA;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAO,MAAoB;IAC9C,OAAO,MAAM,CAAC,OAAO,KAAK,KAAK,CAAA;AACjC,CAAC;AAED,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,MAAM,CAAO,MAAoB;IAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IACD,MAAM,MAAM,CAAC,KAAK,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAO,MAAoB,EAAE,YAAe;IAClE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAU,MAAoB,EAAE,EAAkB;IACzE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAU,MAAoB,EAAE,EAAmB;IACzE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,MAAoB,EACpB,EAA6B;IAE7B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAoBD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAI,IAAO;IACrC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAyB;IACrD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,OAAe,EAAE,IAAY;IAC3E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAChC,CAAC","sourcesContent":["/**\n * Result Types for Operations\n *\n * PHASE0-WS1: Typed result handling without exceptions\n *\n * @module @pwfabric/contracts/core/result\n */\n\n// ============================================================\n// RESULT TYPE\n// ============================================================\n\n/**\n * Success result\n */\nexport interface Success<T> {\n readonly success: true\n readonly data: T\n}\n\n/**\n * Failure result\n */\nexport interface Failure<E> {\n readonly success: false\n readonly error: E\n}\n\n/**\n * Result type for operations that can fail\n * Encodes success/failure in the type system\n */\nexport type Result<T, E = Error> = Success<T> | Failure<E>\n\n/**\n * Async result type\n */\nexport type AsyncResult<T, E = Error> = Promise<Result<T, E>>\n\n// ============================================================\n// RESULT CONSTRUCTORS\n// ============================================================\n\n/**\n * Create a success result\n */\nexport function ok<T>(data: T): Success<T> {\n return { success: true, data }\n}\n\n/**\n * Create a failure result\n */\nexport function err<E>(error: E): Failure<E> {\n return { success: false, error }\n}\n\n// ============================================================\n// RESULT TYPE GUARDS\n// ============================================================\n\n/**\n * Check if result is successful\n */\nexport function isOk<T, E>(result: Result<T, E>): result is Success<T> {\n return result.success === true\n}\n\n/**\n * Check if result is a failure\n */\nexport function isErr<T, E>(result: Result<T, E>): result is Failure<E> {\n return result.success === false\n}\n\n// ============================================================\n// RESULT UTILITIES\n// ============================================================\n\n/**\n * Unwrap a result, throwing if it's a failure\n */\nexport function unwrap<T, E>(result: Result<T, E>): T {\n if (result.success) {\n return result.data\n }\n throw result.error\n}\n\n/**\n * Unwrap a result with a default value\n */\nexport function unwrapOr<T, E>(result: Result<T, E>, defaultValue: T): T {\n if (result.success) {\n return result.data\n }\n return defaultValue\n}\n\n/**\n * Map over a successful result\n */\nexport function mapResult<T, U, E>(result: Result<T, E>, fn: (data: T) => U): Result<U, E> {\n if (result.success) {\n return ok(fn(result.data))\n }\n return result\n}\n\n/**\n * Map over a failure result\n */\nexport function mapError<T, E, F>(result: Result<T, E>, fn: (error: E) => F): Result<T, F> {\n if (!result.success) {\n return err(fn(result.error))\n }\n return result\n}\n\n/**\n * FlatMap (bind) over a result\n */\nexport function flatMap<T, U, E>(\n result: Result<T, E>,\n fn: (data: T) => Result<U, E>\n): Result<U, E> {\n if (result.success) {\n return fn(result.data)\n }\n return result\n}\n\n// ============================================================\n// VALIDATION RESULT\n// ============================================================\n\n/**\n * Validation error details\n */\nexport interface ValidationError {\n readonly path: string[]\n readonly message: string\n readonly code: string\n}\n\n/**\n * Validation result type\n */\nexport type ValidationResult<T = unknown> = Result<T, ValidationError[]>\n\n/**\n * Create a validation success\n */\nexport function validationOk<T>(data: T): ValidationResult<T> {\n return ok(data)\n}\n\n/**\n * Create a validation failure\n */\nexport function validationErr(errors: ValidationError[]): ValidationResult<never> {\n return err(errors)\n}\n\n/**\n * Create a single validation error\n */\nexport function validationError(path: string[], message: string, code: string): ValidationError {\n return { path, message, code }\n}\n"]}
|
package/dist/core/schema.d.ts
CHANGED
package/dist/core/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgNH;;GAEG;AACH,SAAS,eAAe,CAAoC,GAAM;IAChE,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAoB,CAAA;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,MAAM,IAAI,GAAe,eAAe,CAAC;QACvC,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC,CAAA;IAEF,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,MAAsB,CAAA;YAChC,OAAO,eAAe,CAAC;gBACrB,GAAG,IAAI;gBACP,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,MAAsB,CAAA;YAChC,OAAO,eAAe,CAAC;gBACrB,GAAG,IAAI;gBACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;gBACtC,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,SAAS;YACZ,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;QAErC,KAAK,MAAM;YACT,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QAElC,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,CAAC,GAAG,MAAqB,CAAA;YAC/B,OAAO,eAAe,CAAC;gBACrB,GAAG,IAAI;gBACP,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;aACrB,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,MAAsB,CAAA;YAChC,MAAM,UAAU,GAA+B,EAAE,CAAA;YACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxD,UAAU,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;YACvC,CAAC;YACD,MAAM,MAAM,GAAe;gBACzB,GAAG,IAAI;gBACP,IAAI,EAAE,QAAQ;gBACd,UAAU;aACX,CAAA;YACD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACf,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAA;YAC9B,CAAC;YACD,IAAI,OAAO,CAAC,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;gBAChD,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC,oBAAoB,CAAA;YACtD,CAAC;iBAAM,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;gBAClC,MAAM,CAAC,oBAAoB,GAAG,YAAY,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAA;YACpE,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,CAAC,GAAG,MAAqB,CAAA;YAC/B,OAAO;gBACL,GAAG,IAAI;gBACP,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;aACpC,CAAA;QACH,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,MAAuB,CAAA;YACjC,OAAO;gBACL,GAAG,IAAI;gBACP,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAA;QACH,CAAC;QAED,KAAK,SAAS;YACZ,OAAO,EAAE,GAAG,IAAI,EAAE,CAAA;QAEpB;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC","sourcesContent":["/**\n * Schema Types for Contract Validation\n *\n * PHASE0-WS1: Runtime-validated, serializable schema definitions\n *\n * These types define the shape of validation schemas without\n * coupling to a specific validation library.\n *\n * @module @pwfabric/contracts/core/schema\n */\n\nimport type { ValidationResult } from './result.js'\n\n// ============================================================\n// SCHEMA TYPES\n// ============================================================\n\n/**\n * Supported primitive types in schemas\n */\nexport type SchemaType =\n | 'string'\n | 'number'\n | 'boolean'\n | 'null'\n | 'array'\n | 'object'\n | 'union'\n | 'literal'\n | 'unknown'\n\n/**\n * Base schema definition\n */\nexport interface SchemaDefinition {\n readonly type: SchemaType\n readonly nullable?: boolean\n readonly optional?: boolean\n readonly description?: string\n}\n\n/**\n * String schema\n */\nexport interface StringSchema extends SchemaDefinition {\n readonly type: 'string'\n readonly minLength?: number\n readonly maxLength?: number\n readonly pattern?: string\n readonly format?: 'email' | 'uuid' | 'uri' | 'date' | 'datetime'\n}\n\n/**\n * Number schema\n */\nexport interface NumberSchema extends SchemaDefinition {\n readonly type: 'number'\n readonly minimum?: number\n readonly maximum?: number\n readonly integer?: boolean\n}\n\n/**\n * Boolean schema\n */\nexport interface BooleanSchema extends SchemaDefinition {\n readonly type: 'boolean'\n}\n\n/**\n * Null schema\n */\nexport interface NullSchema extends SchemaDefinition {\n readonly type: 'null'\n}\n\n/**\n * Array schema\n */\nexport interface ArraySchema extends SchemaDefinition {\n readonly type: 'array'\n readonly items: AnySchema\n readonly minItems?: number\n readonly maxItems?: number\n}\n\n/**\n * Object schema\n */\nexport interface ObjectSchema extends SchemaDefinition {\n readonly type: 'object'\n readonly properties: Record<string, AnySchema>\n readonly required?: string[]\n readonly additionalProperties?: boolean | AnySchema\n}\n\n/**\n * Union schema (discriminated or simple)\n */\nexport interface UnionSchema extends SchemaDefinition {\n readonly type: 'union'\n readonly variants: AnySchema[]\n readonly discriminator?: string\n}\n\n/**\n * Literal schema\n */\nexport interface LiteralSchema extends SchemaDefinition {\n readonly type: 'literal'\n readonly value: string | number | boolean\n}\n\n/**\n * Unknown schema (accepts any value)\n */\nexport interface UnknownSchema extends SchemaDefinition {\n readonly type: 'unknown'\n}\n\n/**\n * Any valid schema\n */\nexport type AnySchema =\n | StringSchema\n | NumberSchema\n | BooleanSchema\n | NullSchema\n | ArraySchema\n | ObjectSchema\n | UnionSchema\n | LiteralSchema\n | UnknownSchema\n\n// ============================================================\n// SCHEMA INTERFACE\n// ============================================================\n\n/**\n * Schema validator interface\n *\n * This interface abstracts the validation logic, allowing\n * different implementations (Zod, Yup, custom, etc.)\n */\nexport interface Schema<T = unknown> {\n /**\n * The schema definition (serializable)\n */\n readonly definition: AnySchema\n\n /**\n * Validate data against the schema\n */\n validate(data: unknown): ValidationResult<T>\n\n /**\n * Parse data (validate and transform)\n */\n parse(data: unknown): T\n\n /**\n * Safe parse (returns result instead of throwing)\n */\n safeParse(data: unknown): ValidationResult<T>\n\n /**\n * Serialize the schema to JSON Schema format\n */\n toJsonSchema(): JsonSchema\n}\n\n// ============================================================\n// JSON SCHEMA COMPATIBILITY\n// ============================================================\n\n/**\n * JSON Schema compatible format\n * Subset of JSON Schema Draft-07\n */\nexport interface JsonSchema {\n $schema?: string\n $id?: string\n title?: string\n description?: string\n type?: string | string[]\n properties?: Record<string, JsonSchema>\n required?: string[]\n items?: JsonSchema\n enum?: unknown[]\n const?: unknown\n oneOf?: JsonSchema[]\n anyOf?: JsonSchema[]\n allOf?: JsonSchema[]\n minLength?: number\n maxLength?: number\n pattern?: string\n format?: string\n minimum?: number\n maximum?: number\n minItems?: number\n maxItems?: number\n additionalProperties?: boolean | JsonSchema\n}\n\n// ============================================================\n// SERIALIZATION\n// ============================================================\n\n/**\n * Serialized contract schema (for network transport)\n */\nexport interface SerializedSchema {\n readonly version: string\n readonly definition: AnySchema\n readonly jsonSchema: JsonSchema\n}\n\n/**\n * Helper to filter out undefined values from an object\n */\nfunction filterUndefined<T extends Record<string, unknown>>(obj: T): Partial<T> {\n const result: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) {\n result[key] = value\n }\n }\n return result as Partial<T>\n}\n\n/**\n * Serialize a schema definition to JSON Schema\n */\nexport function toJsonSchema(schema: AnySchema): JsonSchema {\n const base: JsonSchema = filterUndefined({\n description: schema.description,\n })\n\n switch (schema.type) {\n case 'string': {\n const s = schema as StringSchema\n return filterUndefined({\n ...base,\n type: 'string',\n minLength: s.minLength,\n maxLength: s.maxLength,\n pattern: s.pattern,\n format: s.format,\n })\n }\n\n case 'number': {\n const n = schema as NumberSchema\n return filterUndefined({\n ...base,\n type: n.integer ? 'integer' : 'number',\n minimum: n.minimum,\n maximum: n.maximum,\n })\n }\n\n case 'boolean':\n return { ...base, type: 'boolean' }\n\n case 'null':\n return { ...base, type: 'null' }\n\n case 'array': {\n const a = schema as ArraySchema\n return filterUndefined({\n ...base,\n type: 'array',\n items: toJsonSchema(a.items),\n minItems: a.minItems,\n maxItems: a.maxItems,\n })\n }\n\n case 'object': {\n const o = schema as ObjectSchema\n const properties: Record<string, JsonSchema> = {}\n for (const [key, value] of Object.entries(o.properties)) {\n properties[key] = toJsonSchema(value)\n }\n const result: JsonSchema = {\n ...base,\n type: 'object',\n properties,\n }\n if (o.required) {\n result.required = o.required\n }\n if (typeof o.additionalProperties === 'boolean') {\n result.additionalProperties = o.additionalProperties\n } else if (o.additionalProperties) {\n result.additionalProperties = toJsonSchema(o.additionalProperties)\n }\n return result\n }\n\n case 'union': {\n const u = schema as UnionSchema\n return {\n ...base,\n oneOf: u.variants.map(toJsonSchema),\n }\n }\n\n case 'literal': {\n const l = schema as LiteralSchema\n return {\n ...base,\n const: l.value,\n }\n }\n\n case 'unknown':\n return { ...base }\n\n default:\n return base\n }\n}\n"]}
|
package/dist/core/version.d.ts
CHANGED
package/dist/core/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Semantic Versioning Types\n *\n * PHASE0-WS1: Version types following SemVer 2.0.0\n *\n * @module @pwfabric/contracts/core/version\n */\n\n// ============================================================\n// SEMANTIC VERSION TYPE\n// ============================================================\n\n/**\n * Semantic version components\n */\nexport interface SemanticVersion {\n readonly major: number\n readonly minor: number\n readonly patch: number\n readonly prerelease?: string\n readonly build?: string\n}\n\n/**\n * Version string format: MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]\n */\nexport type VersionString = `${number}.${number}.${number}${string}`\n\n// ============================================================\n// VERSION PARSING\n// ============================================================\n\n/**\n * SemVer regex pattern\n */\nconst SEMVER_PATTERN =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/\n\n/**\n * Parse a version string into components\n */\nexport function parseVersion(version: string): SemanticVersion | null {\n const match = version.match(SEMVER_PATTERN)\n if (!match || !match[1] || !match[2] || !match[3]) return null\n\n const result: SemanticVersion = {\n major: parseInt(match[1], 10),\n minor: parseInt(match[2], 10),\n patch: parseInt(match[3], 10),\n }\n\n if (match[4]) {\n ;(result as { prerelease?: string }).prerelease = match[4]\n }\n\n if (match[5]) {\n ;(result as { build?: string }).build = match[5]\n }\n\n return result\n}\n\n/**\n * Convert a SemanticVersion to string format\n */\nexport function versionToString(version: SemanticVersion): VersionString {\n let str = `${version.major}.${version.minor}.${version.patch}`\n if (version.prerelease) str += `-${version.prerelease}`\n if (version.build) str += `+${version.build}`\n return str as VersionString\n}\n\n/**\n * Check if a string is a valid semantic version\n */\nexport function isValidVersion(version: string): boolean {\n return SEMVER_PATTERN.test(version)\n}\n\n// ============================================================\n// VERSION COMPARISON\n// ============================================================\n\n/**\n * Comparison result\n */\nexport type ComparisonResult = -1 | 0 | 1\n\n/**\n * Compare two semantic versions\n * Returns:\n * -1 if a < b\n * 0 if a == b\n * 1 if a > b\n */\nexport function compareVersions(a: SemanticVersion, b: SemanticVersion): ComparisonResult {\n // Compare major\n if (a.major !== b.major) {\n return a.major < b.major ? -1 : 1\n }\n\n // Compare minor\n if (a.minor !== b.minor) {\n return a.minor < b.minor ? -1 : 1\n }\n\n // Compare patch\n if (a.patch !== b.patch) {\n return a.patch < b.patch ? -1 : 1\n }\n\n // Handle prerelease (presence means lower precedence than no prerelease)\n if (a.prerelease && !b.prerelease) return -1\n if (!a.prerelease && b.prerelease) return 1\n if (a.prerelease && b.prerelease) {\n // Lexicographic comparison for prerelease\n if (a.prerelease < b.prerelease) return -1\n if (a.prerelease > b.prerelease) return 1\n }\n\n return 0\n}\n\n/**\n * Check if version a is compatible with version b (same major, >= minor.patch)\n */\nexport function isCompatible(a: SemanticVersion, b: SemanticVersion): boolean {\n if (a.major !== b.major) return false\n if (a.major === 0) {\n // Pre-1.0: minor version changes are breaking\n return a.minor === b.minor && a.patch >= b.patch\n }\n // Post-1.0: minor/patch can be higher\n return a.minor > b.minor || (a.minor === b.minor && a.patch >= b.patch)\n}\n\n// ============================================================\n// VERSION CONSTANTS\n// ============================================================\n\n/**\n * Initial development version\n */\nexport const INITIAL_VERSION: SemanticVersion = {\n major: 0,\n minor: 1,\n patch: 0,\n}\n\n/**\n * First stable version\n */\nexport const STABLE_VERSION: SemanticVersion = {\n major: 1,\n minor: 0,\n patch: 0,\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appearance-cascade.js","sourceRoot":"","sources":["../../src/fabric/appearance-cascade.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"appearance-cascade.js","sourceRoot":"","sources":["../../src/fabric/appearance-cascade.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Appearance Cascade — the SINGLE implementation of theme → CSS.\n *\n * Before this module the same token mapping existed in EIGHT\n * places: `runtime/render/theme-utils.ts` plus a per-atom `theme/cascade.ts` in\n * every `ui-appearance` pack atom. Those copies were required to stay\n * byte-identical (a divergence repaints the surface after the atom bundle\n * loads) but nothing enforced it — the `audit-cascade-sync` gate the copies'\n * comments referred to was never written, and the baselines had already drifted.\n *\n * The atom bundles never loaded (the kind is `bundled:false / json-payload`), so\n * the copies were dead weight. They are gone; this is the only cascade.\n *\n * It lives in `contracts` because it is the one place all three consumers can\n * reach: the renderer, the theme exporter and the composer\n * (bake the dark variant at write time). Everything here is PURE — no DOM, no\n * React, no zod — so the leaf position is honest.\n *\n * @module @pwfabric/contracts/fabric/appearance-cascade\n */\n\nimport type { SurfaceTheme, SurfaceThemeColors } from './surface-theme.js'\nimport type { AppearanceContrast } from './surface-appearance.js'\n\n/** The four status colours, in the order the cascade emits their inks. */\nexport const THEME_STATUS_TOKENS = ['error', 'success', 'warning', 'info'] as const\nexport type ThemeStatusToken = (typeof THEME_STATUS_TOKENS)[number]\n\n/**\n * Options for `surfaceThemeToCSS`. Every field optional; omitting the object\n * gives the default (AA) output.\n */\nexport interface SurfaceThemeCssOptions {\n /**\n * The contrast the app promises (`appearanceConfig.mode.contrast`). `high`\n * pushes every derived ink to 7:1 and every UI edge (focus ring, control\n * border) to 4.5:1 instead of 4.5 / 3.\n */\n readonly contrast?: AppearanceContrast\n}\n\n/** The contrast lines for a contrast level: text first, UI components second. */\nexport function themeContrastLines(contrast: AppearanceContrast = 'normal'): { text: number; ui: number } {\n return contrast === 'high' ? { text: 7, ui: 4.5 } : { text: 4.5, ui: 3 }\n}\n\n// ============================================================\n// COLOR PRIMITIVES\n// ============================================================\n\n/**\n * Parse a hex color string to its RGB components.\n *\n * Supports 3-digit (#RGB), 4-digit (#RGBA), 6-digit (#RRGGBB), and 8-digit\n * (#RRGGBBAA) hex formats. The alpha channel is parsed but not returned\n * (contrast/luminance work on opaque colors).\n *\n * @param hex - A hex color string (with or without leading #)\n * @returns RGB object, or null if the format is invalid\n */\nexport function hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n // Strip leading #\n let cleaned = hex.startsWith('#') ? hex.slice(1) : hex\n\n // Expand shorthand (3 or 4 digit)\n if (cleaned.length === 3 || cleaned.length === 4) {\n cleaned = cleaned\n .split('')\n .map((c) => c + c)\n .join('')\n }\n\n // Validate length (6 or 8 digit)\n if (cleaned.length !== 6 && cleaned.length !== 8) {\n return null\n }\n\n // Validate hex characters\n if (!/^[0-9a-fA-F]+$/.test(cleaned)) {\n return null\n }\n\n const r = parseInt(cleaned.slice(0, 2), 16)\n const g = parseInt(cleaned.slice(2, 4), 16)\n const b = parseInt(cleaned.slice(4, 6), 16)\n\n return { r, g, b }\n}\n\n/**\n * Calculate the relative luminance of an RGB color.\n *\n * Uses the sRGB linearization formula from WCAG 2.0:\n * - Divide each channel by 255 to get a value in [0, 1]\n * - Apply sRGB gamma correction (linearize)\n * - Combine using luminance coefficients: 0.2126R + 0.7152G + 0.0722B\n *\n * @param r - Red channel (0-255)\n * @param g - Green channel (0-255)\n * @param b - Blue channel (0-255)\n * @returns Relative luminance in the range [0, 1]\n *\n * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\nexport function relativeLuminance(r: number, g: number, b: number): number {\n const linearize = (channel: number): number => {\n const srgb = channel / 255\n return srgb <= 0.03928 ? srgb / 12.92 : Math.pow((srgb + 0.055) / 1.055, 2.4)\n }\n\n const rLin = linearize(r)\n const gLin = linearize(g)\n const bLin = linearize(b)\n\n return 0.2126 * rLin + 0.7152 * gLin + 0.0722 * bLin\n}\n\n/** Lightness polarity of a hex colour: true = \"light\" (luminance >= 0.5).\n * Returns null when the value is not a parseable hex (e.g. a CSS var) — the\n * on-card derivation then stays out of the way. */\nfunction isLightColor(hex: string): boolean | null {\n const rgb = hexToRgb(hex)\n if (!rgb) return null\n return relativeLuminance(rgb.r, rgb.g, rgb.b) >= 0.5\n}\n\n// ============================================================\n// SEMANTIC TOKEN MAP\n// ============================================================\n\n/**\n * Convert a SurfaceTheme to a CSS custom property map.\n *\n * The returned object is suitable for use as React inline `style` props on the\n * [data-pw-surface] root element. Undefined theme values are omitted so that the\n * CSS cascade falls through to @layer pw-defaults.\n *\n * Token mapping:\n * - colors.primary → --pw-color-primary\n * - colors.secondary → --pw-color-secondary\n * - colors.accent → --pw-color-accent\n * - colors.background → --pw-color-background\n * - colors.card → --pw-color-card\n * - colors.text → --pw-color-text\n * - colors.textMuted → --pw-color-text-muted\n * - colors.border → --pw-color-border\n * - colors.error → --pw-color-error\n * - colors.success → --pw-color-success\n * - colors.warning → --pw-color-warning\n * - colors.info → --pw-color-info\n * - colors.textOnPrimary → --pw-color-text-on-primary\n * - (derived) --pw-color-primary-subtle / -strong, --pw-color-accent-subtle,\n * --pw-color-surface-muted — color-mix() from role vars (always emitted)\n * - border.* → --pw-border-radius{,-sm,-lg,-xl,-2xl,-full}, -width, -style\n * - typography.* → --pw-font-*, --pw-line-height-*, --pw-letter-spacing-*\n * - spacing.* → --pw-spacing-base, --pw-space-{xs..xxl}\n * - shadows.* → --pw-shadow-card/button + ramp sm/md/lg/xl\n * - motion.* → --pw-duration-*, --pw-easing*\n * - layout.* → --pw-layout-*, --pw-space-section-{x,y}\n * - focus.* → --pw-focus-ring-{color,width,offset}\n * - zIndex.* → --pw-z-{sticky,nav,dropdown,drawer,modal,toast}\n */\nexport function surfaceThemeToCSS(\n theme: SurfaceTheme | undefined,\n defaults?: SurfaceTheme,\n projectTheme?: SurfaceTheme,\n options: SurfaceThemeCssOptions = {}\n): Record<string, string> {\n const lines = themeContrastLines(options.contrast)\n // When a `defaults` base is supplied (the platform DEFAULT_APPEARANCE_THEME),\n // merge per-category so an empty/partial surface theme still emits the full\n // token set — the surface config overrides only the keys it sets.\n //\n // `projectTheme` is an optional middle layer — a Project's\n // shared theme, applied AFTER platform defaults but BEFORE this surface's\n // own override. A surface that hasn't touched a given token inherits the\n // project's; one that has, keeps winning. Omitting projectTheme reproduces\n // the exact pre-Stage-2 two-layer behaviour (defaults → surface only).\n const merged: SurfaceTheme | undefined = defaults\n ? {\n colors: { ...defaults.colors, ...projectTheme?.colors, ...theme?.colors },\n border: { ...defaults.border, ...projectTheme?.border, ...theme?.border },\n typography: { ...defaults.typography, ...projectTheme?.typography, ...theme?.typography },\n spacing: { ...defaults.spacing, ...projectTheme?.spacing, ...theme?.spacing },\n shadows: { ...defaults.shadows, ...projectTheme?.shadows, ...theme?.shadows },\n motion: { ...defaults.motion, ...projectTheme?.motion, ...theme?.motion },\n layout: { ...defaults.layout, ...projectTheme?.layout, ...theme?.layout },\n focus: { ...defaults.focus, ...projectTheme?.focus, ...theme?.focus },\n zIndex: { ...defaults.zIndex, ...projectTheme?.zIndex, ...theme?.zIndex },\n }\n : theme\n\n if (!merged) return {}\n\n const vars: Record<string, string> = {}\n const { colors, border, typography, spacing, shadows, motion, layout, focus, zIndex } = merged\n\n // Color tokens\n if (colors?.primary) vars['--pw-color-primary'] = colors.primary\n if (colors?.secondary) vars['--pw-color-secondary'] = colors.secondary\n if (colors?.accent) vars['--pw-color-accent'] = colors.accent\n if (colors?.background) vars['--pw-color-background'] = colors.background\n if (colors?.card) vars['--pw-color-card'] = colors.card\n if (colors?.text) vars['--pw-color-text'] = colors.text\n if (colors?.textMuted) vars['--pw-color-text-muted'] = colors.textMuted\n if (colors?.border) vars['--pw-color-border'] = colors.border\n if (colors?.error) vars['--pw-color-error'] = colors.error\n if (colors?.success) vars['--pw-color-success'] = colors.success\n if (colors?.warning) vars['--pw-color-warning'] = colors.warning\n if (colors?.info) vars['--pw-color-info'] = colors.info\n // The button ink owes 4.5:1 to the fill it sits on, and it is pushed there\n // the same way `on-accent` is. Passed through untouched, white ink on common\n // mid-tone brand fills lands under AA (2.3-3.7:1). The brand fill is NOT\n // moved — the ink is. An ink that already reads is left exactly as authored.\n // Emitted only when the theme states an ink, so an unset one still falls\n // through to @layer pw-defaults.\n if (colors?.textOnPrimary !== undefined) {\n vars['--pw-color-text-on-primary'] =\n colors.primary !== undefined\n ? ensureInk(colors.textOnPrimary, colors.primary, lines.text)\n : colors.textOnPrimary\n }\n // Blocks that paint on an accent ground (announcement-bar, chat-panel,\n // avatar) read `--pw-color-on-accent`; without it they fall back to the\n // baseline near-black, which on a dark-derived accent is about 1.5:1. So the\n // pair is symmetric with `primary`: an ink chosen for the accent, then pushed\n // until it reads as text.\n if (colors?.accent) {\n vars['--pw-color-on-accent'] = ensureInk(inkFor(colors.accent), colors.accent, lines.text)\n }\n\n // ---- status colours: an ink ON each, and each AS text --------------------\n //\n // A status colour does two jobs, like primary. As a FILL (a destructive\n // button, a solid badge, an alert band) it needs an ink that reads on it:\n // `--pw-color-on-<status>`. As TEXT (a field error, a \"Paid\" label, an alert's\n // words) it owes the text line to the page and the card: `--pw-color-<status>-ink`.\n // Without them a destructive button paints `--pw-color-background` on the\n // error fill (often 2.6-3.9:1), and typical status colours read as text under\n // AA. The fill is never moved, the ink is: same rule as on-accent.\n {\n const statusGrounds = [colors?.background, colors?.card].filter(\n (g): g is string => typeof g === 'string'\n )\n for (const status of THEME_STATUS_TOKENS) {\n const value = colors?.[status]\n if (!value) continue\n vars[`--pw-color-on-${status}`] = ensureInk(inkFor(value), value, lines.text)\n vars[`--pw-color-${status}-ink`] = statusGrounds.length\n ? ensureAgainst(value, statusGrounds, lines.text)\n : value\n }\n }\n\n // Derived color roles (Batch-1) — computed via color-mix() from the EXISTING\n // role vars so they stay fully rebrandable (a theme changes primary/accent and\n // these track automatically). They reference only the always-present --pw-color-*\n // role vars, not any optional theme input, so they're emitted whenever a colors\n // group is present.\n if (colors) {\n vars['--pw-color-primary-subtle'] =\n 'color-mix(in srgb, var(--pw-color-primary) 12%, var(--pw-color-background))'\n // Mixed toward the theme's own TEXT, not a hard-coded #000. \"Strong\" means\n // \"further from the page than primary is\" — on a light theme that is darker,\n // but on a dark theme it must be BRIGHTER. Mixing toward black muddied every\n // dark palette, and since derives a dark variant for every themed\n // surface, that is now the common case rather than the exception.\n //\n // The retired `amber-onyx` atom had already made this correction in its own\n // cascade copy and flagged it as an upstream candidate; the copy was deleted\n // with the engine, so the fix is landed here where the one cascade lives.\n vars['--pw-color-primary-strong'] =\n 'color-mix(in srgb, var(--pw-color-primary) 85%, var(--pw-color-text))'\n vars['--pw-color-accent-subtle'] =\n 'color-mix(in srgb, var(--pw-color-accent) 12%, var(--pw-color-background))'\n vars['--pw-color-surface-muted'] =\n 'color-mix(in srgb, var(--pw-color-card) 94%, var(--pw-color-text))'\n }\n\n // On-card ink derivation (contrast safety): the cascade\n // derives on-card ink so blocks read correctly on a card WITHOUT a per-palette\n // styleVariable. ALWAYS emitted as a LITERAL (never a var reference): blocks\n // redefine `--pw-color-text: var(--pw-color-text-on-card, var(--pw-color-text))`\n // on a card, so if on-card were undefined that redefinition is a SELF-REFERENCE\n // cycle → the property becomes invalid-at-computed-value. Emitting a concrete\n // value always breaks the cycle.\n //\n // - Card on the SAME lightness side as the page → ink is the theme's own\n // text/muted (no visual change; just makes the redefinition concrete).\n // - Card on the OPPOSITE side (white card on a dark page, or vice-versa) →\n // a contrasting ink derived from the card's luminance, so the card stays\n // readable.\n const cardColor = colors?.card\n if (cardColor) {\n const cardLight = isLightColor(cardColor)\n const bgLight = colors?.background ? isLightColor(colors.background) : cardLight\n const inverted = cardLight !== null && bgLight !== null && cardLight !== bgLight\n const ink = inverted\n ? cardLight\n ? '#1a1a1a'\n : '#f5f5f5'\n : colors?.text ?? (cardLight ? '#1a1a1a' : '#f5f5f5')\n vars['--pw-color-text-on-card'] = ink\n vars['--pw-color-text-muted-on-card'] = inverted\n ? `color-mix(in srgb, ${ink} 62%, var(--pw-color-card))`\n : colors?.textMuted ?? `color-mix(in srgb, ${ink} 62%, var(--pw-color-card))`\n }\n\n // ---- primary as INK -------------------------------------------------------\n //\n // The brand hue does two jobs and they need two values. As a FILL, `primary`\n // pairs with `text-on-primary` and is fine. As TEXT it owes 4.5:1 against\n // whatever it sits on, and `deriveDarkTheme` deliberately preserves brand\n // hues — so an indigo primary stays indigo while the surface goes dark.\n // Measured on a rendered dark surface: 2.48–2.83 across 33 sites in\n // 20 blocks. Radix formalises the same split (step 9 solid, step 11 text);\n // this is that text step.\n //\n // REPLACES `--pw-color-link-on-card`, which was this exact value under a name\n // that fit one caller. A stat icon and a tab label are not \"a link on a card\",\n // and a token whose name lies teaches the next reader the wrong rule — the\n // defect class this whole pass has been closing. No alias is kept: two names\n // for one value is what we are removing.\n //\n // Emitted OUTSIDE the card block on purpose. `link-on-card` lived inside\n // `if (cardColor)`, so a theme that declares no card never got it and\n // every call site silently fell back to its literal. Ink belongs to `primary`,\n // not to the card; the card only decides what it is measured AGAINST.\n if (colors?.primary) {\n const ground = cardColor ?? colors?.background\n vars['--pw-color-primary-ink'] = ground\n ? ensureSeparation(colors.primary, ground, lines.text)\n : colors.primary\n }\n\n // ---- control edge -----------------------------------------------------------\n //\n // `border` is a divider colour: a hairline between two cards may be faint.\n // The edge of an INPUT may not; it is the only thing that says \"type here\"\n // (WCAG 1.4.11: 3:1 against what it sits on). The default #e2e8f0 on white is\n // 1.23:1. Controls get their own edge, the border pushed until it clears the\n // UI line on the page and the card; dividers keep the faint one.\n if (colors?.border) {\n const grounds = [colors.background, cardColor].filter((g): g is string => typeof g === 'string')\n vars['--pw-color-control-border'] = grounds.length\n ? ensureAgainst(colors.border, grounds, lines.ui)\n : colors.border\n }\n\n // ---- inverse set ------------------------------------------------------------\n //\n // A band that stands out from the page (a \"dark band\" on a light app, a\n // footer strip) cannot paint itself with `--pw-color-text` as its ground and\n // a hard-coded light ink: on a dark device the text colour is LIGHT, so the\n // \"dark\" band would come out light with light words on it. The\n // inverse set is the page turned inside out, in whichever mode this map is\n // for: the ground is the mode's own text colour, the ink its own background\n // (pushed to the text line), and the brand hue re-measured against the new\n // ground. Emitted only when the theme states both text and background.\n if (colors?.text && colors?.background) {\n const inverseBg = colors.text\n const inverseText = ensureInk(colors.background, inverseBg, lines.text)\n vars['--pw-color-inverse-background'] = inverseBg\n vars['--pw-color-inverse-text'] = inverseText\n vars['--pw-color-inverse-text-muted'] = `color-mix(in srgb, ${inverseText} 72%, ${inverseBg})`\n vars['--pw-color-inverse-border'] = `color-mix(in srgb, ${inverseText} 24%, ${inverseBg})`\n if (colors.primary) {\n vars['--pw-color-inverse-primary'] = ensureSeparation(colors.primary, inverseBg, lines.text)\n }\n }\n\n // Border tokens\n if (border?.radius) vars['--pw-border-radius'] = border.radius\n if (border?.width) vars['--pw-border-width'] = border.width\n if (border?.style) vars['--pw-border-style'] = border.style\n if (border?.radiusLarge) vars['--pw-border-radius-lg'] = border.radiusLarge\n // Radius scale (Batch-1) → --pw-border-radius-{sm,xl,2xl,full}\n if (border?.radiusSmall) vars['--pw-border-radius-sm'] = border.radiusSmall\n if (border?.radiusXl) vars['--pw-border-radius-xl'] = border.radiusXl\n if (border?.radius2xl) vars['--pw-border-radius-2xl'] = border.radius2xl\n if (border?.radiusFull) vars['--pw-border-radius-full'] = border.radiusFull\n\n // Typography tokens\n if (typography?.fontFamily) vars['--pw-font-family'] = typography.fontFamily\n if (typography?.headingFontFamily) vars['--pw-font-family-heading'] = typography.headingFontFamily\n if (typography?.monoFontFamily) vars['--pw-font-family-mono'] = typography.monoFontFamily\n if (typography?.baseFontSize) vars['--pw-font-size-base'] = typography.baseFontSize\n if (typography?.headingWeight) vars['--pw-font-weight-heading'] = typography.headingWeight\n if (typography?.headingLineHeight) vars['--pw-line-height-heading'] = typography.headingLineHeight\n if (typography?.letterSpacing) vars['--pw-letter-spacing-heading'] = typography.letterSpacing\n if (typography?.bodyLineHeight) vars['--pw-line-height-body'] = typography.bodyLineHeight\n if (typography?.fontSizeSm) vars['--pw-font-size-sm'] = typography.fontSizeSm\n if (typography?.fontSizeXs) vars['--pw-font-size-xs'] = typography.fontSizeXs\n // Type scale (Batch-1) → --pw-font-size-{lg,xl,2xl,3xl,4xl}\n if (typography?.fontSizeLg) vars['--pw-font-size-lg'] = typography.fontSizeLg\n if (typography?.fontSizeXl) vars['--pw-font-size-xl'] = typography.fontSizeXl\n if (typography?.fontSize2xl) vars['--pw-font-size-2xl'] = typography.fontSize2xl\n if (typography?.fontSize3xl) vars['--pw-font-size-3xl'] = typography.fontSize3xl\n if (typography?.fontSize4xl) vars['--pw-font-size-4xl'] = typography.fontSize4xl\n // Body typography (Batch-1)\n if (typography?.bodyWeight) vars['--pw-font-weight-body'] = typography.bodyWeight\n if (typography?.bodyLetterSpacing) vars['--pw-letter-spacing-body'] = typography.bodyLetterSpacing\n // Heading scale -> --pw-font-size-h1..h5. A stated size wins; an\n // unstated one points at its step of the type ramp, so a theme that never\n // mentions headings renders exactly as it did.\n if (typography) {\n const steps: ReadonlyArray<readonly [string, string | undefined, string]> = [\n ['h1', typography.fontSizeH1, 'var(--pw-font-size-4xl, 2.25rem)'],\n ['h2', typography.fontSizeH2, 'var(--pw-font-size-3xl, 1.875rem)'],\n ['h3', typography.fontSizeH3, 'var(--pw-font-size-2xl, 1.5rem)'],\n ['h4', typography.fontSizeH4, 'var(--pw-font-size-xl, 1.25rem)'],\n ['h5', typography.fontSizeH5, 'var(--pw-font-size-lg, 1.125rem)'],\n ]\n for (const [level, stated, derived] of steps) vars[`--pw-font-size-${level}`] = stated ?? derived\n }\n\n // Spacing tokens\n if (spacing?.base) vars['--pw-spacing-base'] = spacing.base\n // Named spacing scale (8px-grid) → --pw-space-{xs..xxl}\n if (spacing?.xs !== undefined) vars['--pw-space-xs'] = spacing.xs\n if (spacing?.sm !== undefined) vars['--pw-space-sm'] = spacing.sm\n if (spacing?.md !== undefined) vars['--pw-space-md'] = spacing.md\n if (spacing?.lg !== undefined) vars['--pw-space-lg'] = spacing.lg\n if (spacing?.xl !== undefined) vars['--pw-space-xl'] = spacing.xl\n if (spacing?.xxl !== undefined) vars['--pw-space-xxl'] = spacing.xxl\n\n // Shadow tokens\n if (shadows?.card !== undefined) vars['--pw-shadow-card'] = shadows.card\n if (shadows?.button !== undefined) vars['--pw-shadow-button'] = shadows.button\n // Elevation ramp → --pw-shadow-{sm..xl}\n if (shadows?.sm !== undefined) vars['--pw-shadow-sm'] = shadows.sm\n if (shadows?.md !== undefined) vars['--pw-shadow-md'] = shadows.md\n if (shadows?.lg !== undefined) vars['--pw-shadow-lg'] = shadows.lg\n if (shadows?.xl !== undefined) vars['--pw-shadow-xl'] = shadows.xl\n\n // Motion tokens\n if (motion?.durationFast !== undefined) vars['--pw-duration-fast'] = motion.durationFast\n if (motion?.durationNormal !== undefined) vars['--pw-duration-normal'] = motion.durationNormal\n if (motion?.durationSlow !== undefined) vars['--pw-duration-slow'] = motion.durationSlow\n if (motion?.easing !== undefined) vars['--pw-easing'] = motion.easing\n if (motion?.easingBounce !== undefined) vars['--pw-easing-bounce'] = motion.easingBounce\n\n // Layout tokens\n if (layout?.gap !== undefined) vars['--pw-layout-surface-gap'] = layout.gap\n if (layout?.padding !== undefined) vars['--pw-layout-surface-padding'] = layout.padding\n if (layout?.containerMaxWidth !== undefined)\n vars['--pw-layout-container-max-width'] = layout.containerMaxWidth\n if (layout?.gridGap !== undefined) vars['--pw-layout-grid-gap'] = layout.gridGap\n // Fluid section padding tokens (layout) — section blocks read these as\n // their default paddingBlock/paddingInline so spacing is theme-driven + responsive.\n if (layout?.sectionPaddingY !== undefined) vars['--pw-space-section-y'] = layout.sectionPaddingY\n if (layout?.sectionPaddingX !== undefined) vars['--pw-space-section-x'] = layout.sectionPaddingX\n\n // Focus tokens (a11y) → --pw-focus-ring-{color,width,offset}\n // The ring is a UI component (WCAG 1.4.11 / 2.4.11): 3:1 against the page\n // AND the card it may sit on, in whichever mode this map is for. Five of six\n // presets carried indigo #4f46e5 — 2.84:1 on midnight's own ground — and a\n // ring chosen for a light page fell under 3:1 on the derived dark ground,\n // which passes the ring through. Hue and saturation stay; only lightness\n // moves, and only when it has to.\n if (focus?.ringColor !== undefined) {\n const grounds = [colors?.background, cardColor].filter((g): g is string => typeof g === 'string')\n vars['--pw-focus-ring-color'] = grounds.length\n ? ensureAgainst(focus.ringColor, grounds, lines.ui)\n : focus.ringColor\n }\n if (focus?.ringWidth !== undefined) vars['--pw-focus-ring-width'] = focus.ringWidth\n if (focus?.ringOffset !== undefined) vars['--pw-focus-ring-offset'] = focus.ringOffset\n\n // Z-index scale → --pw-z-{sticky,nav,dropdown,drawer,modal,toast}\n if (zIndex?.sticky !== undefined) vars['--pw-z-sticky'] = String(zIndex.sticky)\n if (zIndex?.nav !== undefined) vars['--pw-z-nav'] = String(zIndex.nav)\n if (zIndex?.dropdown !== undefined) vars['--pw-z-dropdown'] = String(zIndex.dropdown)\n if (zIndex?.drawer !== undefined) vars['--pw-z-drawer'] = String(zIndex.drawer)\n if (zIndex?.modal !== undefined) vars['--pw-z-modal'] = String(zIndex.modal)\n if (zIndex?.toast !== undefined) vars['--pw-z-toast'] = String(zIndex.toast)\n\n return vars\n}\n\n// ============================================================\n// DARK VARIANT DERIVATION\n// ============================================================\n\ninterface Hsl {\n h: number\n s: number\n l: number\n}\n\n/** RGB (0-255) → HSL (h 0-360, s/l 0-1). */\nfunction rgbToHsl(r: number, g: number, b: number): Hsl {\n const rn = r / 255\n const gn = g / 255\n const bn = b / 255\n const max = Math.max(rn, gn, bn)\n const min = Math.min(rn, gn, bn)\n const l = (max + min) / 2\n let h = 0\n let s = 0\n const d = max - min\n if (d !== 0) {\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n switch (max) {\n case rn:\n h = (gn - bn) / d + (gn < bn ? 6 : 0)\n break\n case gn:\n h = (bn - rn) / d + 2\n break\n default:\n h = (rn - gn) / d + 4\n }\n h *= 60\n }\n return { h, s, l }\n}\n\n/** HSL → hex (#rrggbb). */\nfunction hslToHex(h: number, s: number, l: number): string {\n const c = (1 - Math.abs(2 * l - 1)) * s\n const hp = h / 60\n const x = c * (1 - Math.abs((hp % 2) - 1))\n let r = 0\n let g = 0\n let b = 0\n if (hp >= 0 && hp < 1) [r, g, b] = [c, x, 0]\n else if (hp < 2) [r, g, b] = [x, c, 0]\n else if (hp < 3) [r, g, b] = [0, c, x]\n else if (hp < 4) [r, g, b] = [0, x, c]\n else if (hp < 5) [r, g, b] = [x, 0, c]\n else [r, g, b] = [c, 0, x]\n const m = l - c / 2\n const to255 = (v: number): string =>\n Math.round((v + m) * 255)\n .toString(16)\n .padStart(2, '0')\n return `#${to255(r)}${to255(g)}${to255(b)}`\n}\n\nconst clamp = (v: number, lo: number, hi: number): number => Math.min(hi, Math.max(lo, v))\n\n/** Parse a hex colour to HSL; null when the value is not a hex the parser accepts\n * (e.g. a CSS var reference or a named colour) — the caller then keeps the\n * original value unchanged rather than guessing. */\nfunction toHsl(hex: string): Hsl | null {\n const rgb = hexToRgb(hex)\n return rgb ? rgbToHsl(rgb.r, rgb.g, rgb.b) : null\n}\n\n/**\n * Re-target a colour's lightness into [lo, hi] while keeping its hue and\n * saturation. Used to move a neutral to the opposite end of the ramp: a near-\n * white background (l~1) becomes a dark background, a dark ink becomes a light\n * ink — without losing a subtle tint (a faintly-blue border stays faintly blue).\n */\nfunction retargetLightness(hex: string, lo: number, hi: number): string {\n const hsl = toHsl(hex)\n if (!hsl) return hex\n const flipped = 1 - hsl.l\n return hslToHex(hsl.h, hsl.s, clamp(flipped, lo, hi))\n}\n\n/** Set an absolute lightness (hue/sat kept). Used to place card/border a fixed\n * step above the derived background so elevation ordering survives the flip. */\nfunction withLightness(hex: string, l: number): string {\n const hsl = toHsl(hex)\n if (!hsl) return hex\n return hslToHex(hsl.h, hsl.s, clamp(l, 0, 1))\n}\n\n/** Lightness of a hex in [0,1], or a fallback when unparseable. */\nfunction lightnessOf(hex: string, fallback: number): number {\n return toHsl(hex)?.l ?? fallback\n}\n\n/**\n * Derive a dark SurfaceTheme from a (fully-merged) light one. Neutrals flip;\n * brand + semantic hues are preserved. Non-colour categories (typography,\n * spacing, borders, motion, layout, focus, z-index) are mode-independent and\n * pass through unchanged. Shadows are deepened for a dark ground.\n *\n * Pass a FULL theme (merged over the platform defaults) so every neutral has a\n * concrete value to flip.\n *\n * Runs at WRITE time (an editor can bake the result into\n * `appearance.config.darkTheme` so the author can see and edit it) and, for\n * surfaces that carry no baked variant, at render time as the fallback.\n */\n/** WCAG contrast ratio between two hex colours; null when either is unparseable. */\nfunction contrastOf(a: string, b: string): number | null {\n const ra = hexToRgb(a)\n const rb = hexToRgb(b)\n if (!ra || !rb) return null\n const la = relativeLuminance(ra.r, ra.g, ra.b)\n const lb = relativeLuminance(rb.r, rb.g, rb.b)\n const [hi, lo] = la > lb ? [la, lb] : [lb, la]\n return (hi + 0.05) / (lo + 0.05)\n}\n\n/**\n * Keep a control colour VISIBLE against the ground it sits on.\n *\n * `deriveDarkTheme` preserves brand hues so a theme stays recognisably itself —\n * right for a chromatic brand (gold stays gold). But a NEUTRAL or already-dark\n * primary is emphatic in light mode precisely because it is dark; flipping the\n * ground beneath it without touching it leaves both on the same side of the\n * ramp and the control disappears. Measured on the shipped themes: zinc's\n * primary went from 17.7:1 on white to 1.08:1 on the derived dark ground —\n * an invisible button.\n *\n * So: keep hue and saturation, move LIGHTNESS until the pair clears `min`\n * (3:1, the WCAG floor for UI components). Walk in steps rather than jumping to\n * white so a colour that only just fails moves only just enough.\n */\nfunction ensureSeparation(colour: string, ground: string, min = 3): string {\n const current = contrastOf(colour, ground)\n if (current === null || current >= min) return colour\n const hsl = toHsl(colour)\n const groundL = lightnessOf(ground, 0.1)\n if (!hsl) return colour\n // Move AWAY from the ground: lighter on a dark ground, darker on a light one.\n const up = groundL < 0.5\n for (let step = 1; step <= 20; step++) {\n const l = clamp(up ? hsl.l + step * 0.05 : hsl.l - step * 0.05, 0, 1)\n const candidate = hslToHex(hsl.h, hsl.s, l)\n const ratio = contrastOf(candidate, ground)\n if (ratio !== null && ratio >= min) return candidate\n if (l === 0 || l === 1) break\n }\n return up ? '#ffffff' : '#000000'\n}\n\n/** Ink that reads on `bg` — used when a control colour has been re-targeted and\n * the old on-colour ink would land on the wrong side. */\nfunction inkFor(bg: string): string {\n const rgb = hexToRgb(bg)\n if (!rgb) return '#ffffff'\n return relativeLuminance(rgb.r, rgb.g, rgb.b) >= 0.5 ? '#1a1a1a' : '#fafafa'\n}\n\n/**\n * An INK that reads as text (`min`, default 4.5:1) on `ground`.\n *\n * `ensureSeparation` walks a colour in ONE direction picked from the ground's\n * HSL lightness and falls back to pure white or black. That is the wrong tool\n * for an ink: white on forest #22c55e (HSL lightness 0.45) walked \"up\", could\n * not get any whiter, and came back as the same failing white.\n *\n * So: an ink that already reads is kept. Otherwise the side that CAN reach\n * `min` is chosen — the author's side first — and the GROUND's own hue is\n * walked toward it, so a failing white on green becomes a deep green rather\n * than a grey. Black or white is the last resort.\n */\nfunction ensureInk(ink: string, ground: string, min = 4.5): string {\n const current = contrastOf(ink, ground)\n if (current === null || current >= min) return ink\n const g = hexToRgb(ground)\n const gh = toHsl(ground)\n if (!g || !gh) return ink\n const groundLum = relativeLuminance(g.r, g.g, g.b)\n const i = hexToRgb(ink)\n const inkIsLighter = i ? relativeLuminance(i.r, i.g, i.b) > groundLum : groundLum < 0.18\n const reachable = {\n light: 1.05 / (groundLum + 0.05) >= min,\n dark: (groundLum + 0.05) / 0.05 >= min,\n }\n const sides: Array<'light' | 'dark'> = inkIsLighter ? ['light', 'dark'] : ['dark', 'light']\n for (const side of sides) {\n if (!reachable[side]) continue\n const dir = side === 'light' ? 1 : -1\n for (let step = 1; step <= 50; step++) {\n const l = clamp(gh.l + dir * step * 0.02, 0, 1)\n const candidate = hslToHex(gh.h, gh.s, l)\n const ratio = contrastOf(candidate, ground)\n if (ratio !== null && ratio >= min) return candidate\n if (l === 0 || l === 1) break\n }\n return side === 'light' ? '#ffffff' : '#000000'\n }\n const onBlack = contrastOf('#000000', ground) ?? 0\n const onWhite = contrastOf('#ffffff', ground) ?? 0\n return onBlack >= onWhite ? '#000000' : '#ffffff'\n}\n\n/**\n * A colour that clears `min` against EVERY ground it may sit on — page and\n * card. Hue and saturation are kept; lightness walks away from the grounds\n * first, then toward them. When no single lightness clears them all (a white\n * page with a black card) the candidate with the best worst-case ratio is\n * returned rather than pretending.\n */\nfunction ensureAgainst(colour: string, grounds: readonly string[], min = 3): string {\n const worst = (c: string): number | null => {\n let w: number | null = null\n for (const g of grounds) {\n const r = contrastOf(c, g)\n if (r === null) continue\n w = w === null ? r : Math.min(w, r)\n }\n return w\n }\n const start = worst(colour)\n if (start === null || start >= min) return colour\n const hsl = toHsl(colour)\n if (!hsl) return colour\n const meanL = grounds.reduce((sum, g) => sum + lightnessOf(g, 0.5), 0) / grounds.length\n let best = { colour, ratio: start }\n for (const dir of meanL < 0.5 ? [1, -1] : [-1, 1]) {\n for (let step = 1; step <= 50; step++) {\n const l = clamp(hsl.l + dir * step * 0.02, 0, 1)\n const candidate = hslToHex(hsl.h, hsl.s, l)\n const ratio = worst(candidate) ?? 0\n if (ratio >= min) return candidate\n if (ratio > best.ratio) best = { colour: candidate, ratio }\n if (l === 0 || l === 1) break\n }\n }\n return best.colour\n}\n\nexport function deriveDarkTheme(light: SurfaceTheme): SurfaceTheme {\n const c: SurfaceThemeColors = light.colors ?? {}\n\n // Background: near-white → deep neutral. Anchor the dark ground's lightness.\n const bgHex = c.background ?? '#ffffff'\n const bgDark = retargetLightness(bgHex, 0.06, 0.16)\n const bgL = lightnessOf(bgDark, 0.1)\n\n // Card sits one elevation step ABOVE the background (lighter in dark).\n const cardStepL = clamp(bgL + 0.05, 0, 1)\n const borderL = clamp(bgL + 0.14, 0, 1)\n\n // Brand hues are kept — but a control has to stay visible on the new ground.\n // See `ensureSeparation`: only colours that actually fail the 3:1 UI floor\n // move, and they move by lightness alone, so the hue survives.\n const primaryDark = c.primary !== undefined ? ensureSeparation(c.primary, bgDark) : undefined\n const accentDark = c.accent !== undefined ? ensureSeparation(c.accent, bgDark) : undefined\n // If primary was re-targeted, the ink that sat on it may now be on the wrong\n // side — a light primary with light text is the same defect one layer in.\n const textOnPrimaryDark =\n primaryDark !== undefined && primaryDark !== c.primary ? inkFor(primaryDark) : undefined\n\n // Text is measured against BOTH dark grounds. The lightness bands below were\n // tuned on light palettes; re-deriving an already-dark theme (midnight) put\n // textMuted at 4.02:1 on its card. Only a value under 4.5 moves.\n const cardSource = c.card\n const darkGrounds = [bgDark, ...(cardSource !== undefined ? [withLightness(cardSource, cardStepL)] : [])]\n\n const colors: SurfaceThemeColors = {\n ...c, // brand + semantic kept unless separation forced a move\n background: bgDark,\n ...(primaryDark !== undefined ? { primary: primaryDark } : {}),\n ...(accentDark !== undefined ? { accent: accentDark } : {}),\n ...(textOnPrimaryDark !== undefined ? { textOnPrimary: textOnPrimaryDark } : {}),\n ...(c.card !== undefined ? { card: withLightness(c.card, cardStepL) } : {}),\n ...(c.text !== undefined\n ? { text: ensureAgainst(retargetLightness(c.text, 0.86, 0.96), darkGrounds, 4.5) }\n : {}),\n ...(c.textMuted !== undefined\n ? { textMuted: ensureAgainst(retargetLightness(c.textMuted, 0.58, 0.74), darkGrounds, 4.5) }\n : {}),\n ...(c.border !== undefined ? { border: withLightness(c.border, borderL) } : {}),\n // The error colour is TEXT — a field message, an alert's words. No single\n // red reads on both grounds: an AA\n // red on white (#b91c1c, 6.5:1) is ~2.6:1 on the derived dark page, and a\n // red that reads on dark fails on white. So the light value stays the\n // author's and the dark one is DERIVED — same hue, lightness walked until\n // it clears 4.5 on the dark page and card, like text and textMuted above.\n // An error that already reads on dark does not move.\n ...(c.error !== undefined ? { error: ensureAgainst(c.error, darkGrounds, 4.5) } : {}),\n // The other three status colours are text just as often (\"Paid\", \"Low\n // stock\", a hint line): a green chosen for white is under AA on the\n // derived dark page. Same rule.\n ...(c.success !== undefined ? { success: ensureAgainst(c.success, darkGrounds, 4.5) } : {}),\n ...(c.warning !== undefined ? { warning: ensureAgainst(c.warning, darkGrounds, 4.5) } : {}),\n ...(c.info !== undefined ? { info: ensureAgainst(c.info, darkGrounds, 4.5) } : {}),\n }\n\n // Depth on a dark ground comes from a soft black glow, not a hairline shadow.\n const shadows = light.shadows\n ? {\n ...light.shadows,\n ...(light.shadows.card !== undefined ? { card: '0 4px 16px rgba(0,0,0,0.5)' } : {}),\n }\n : light.shadows\n\n return { ...light, colors, ...(shadows ? { shadows } : {}) }\n}\n\n// ============================================================\n// LAYERS AND MODES\n// ============================================================\n\n/**\n * Merge theme layers per category, later layers winning, into one theme.\n *\n * The one merge the platform does everywhere — defaults < project < surface —\n * written once. Each group (colors, typography, …) is merged shallowly; a key\n * whose value is not a plain object is taken from the last layer that sets it.\n * `undefined` layers are skipped, so optional layers can be passed as they are.\n */\nexport function mergeSurfaceThemes(...layers: ReadonlyArray<SurfaceTheme | undefined>): SurfaceTheme {\n const isGroup = (v: unknown): v is Record<string, unknown> =>\n v !== null && typeof v === 'object' && !Array.isArray(v)\n const out: Record<string, unknown> = {}\n for (const layer of layers) {\n if (!layer) continue\n for (const [key, value] of Object.entries(layer as Record<string, unknown>)) {\n if (value === undefined) continue\n const prev = out[key]\n out[key] = isGroup(value) ? { ...(isGroup(prev) ? prev : {}), ...value } : value\n }\n }\n return out as SurfaceTheme\n}\n\n/**\n * The dark theme a surface actually wears: the DERIVED dark of its full light\n * theme, with any explicit dark overrides on top.\n *\n * An explicit `darkTheme` is an OVERRIDE of the derivation, never a theme of\n * its own: an editor's dark tab stores only the tokens the author changed.\n * Merging it over the LIGHT default instead would turn one edited dark colour\n * into a dark mode with a white page and dark text. A fully baked dark variant\n * still renders as baked: every token it sets wins.\n *\n * @param light a FULL light theme (merged over DEFAULT_APPEARANCE_THEME)\n * @param overrides dark override layers, lowest first (project, then surface)\n */\nexport function resolveDarkTheme(\n light: SurfaceTheme,\n ...overrides: ReadonlyArray<SurfaceTheme | undefined>\n): SurfaceTheme {\n return mergeSurfaceThemes(deriveDarkTheme(light), ...overrides)\n}\n\n/** One pair a theme fails, as it would RENDER (after the cascade's pushes). */\nexport interface ThemeContrastFinding {\n /** Theme tokens, foreground first: `['textMuted', 'card']`, `['focus.ringColor', 'background']`. */\n readonly pair: readonly [string, string]\n readonly foreground: string\n readonly background: string\n readonly ratio: number\n /** 4.5 for text, 3 for a UI component (the focus ring); 7 / 4.5 at high contrast. */\n readonly min: number\n readonly kind: 'text' | 'ui'\n /**\n * Which family of pairs this is. `base` is always checked; the others come\n * only with `{ extended: true }`:\n *\n * status the error colour as text, each status ink as text, each\n * `on-<status>` ink on its fill\n * selection a selected item (primary fill) against an unselected one\n * (card / page): badge, segmented control, stepper\n * control the control edge against the page and the card\n *\n * Absent unless `{ extended: true }` was passed; read it as `base`.\n */\n readonly group?: ThemeContrastGroup\n}\n\nexport type ThemeContrastGroup = 'base' | 'status' | 'selection' | 'control'\n\n/** WCAG AA line for text pairs. */\nexport const THEME_TEXT_CONTRAST_MIN = 4.5\n/** WCAG line for UI components (the focus indicator). */\nexport const THEME_UI_CONTRAST_MIN = 3\n\n/** Options for `themeContrastFindings`. */\nexport interface ThemeContrastOptions {\n /**\n * Also check the status, selection and control pairs. Off by default so a\n * gate that refuses on findings stays narrow; a caller that wants the wider\n * picture (a warning list, an editor's theme card) opts in.\n */\n readonly extended?: boolean\n /** The contrast level the app promises; `high` raises the lines to 7 / 4.5. */\n readonly contrast?: AppearanceContrast\n}\n\n/**\n * The contrast pairs a theme FAILS, measured on what the cascade emits.\n *\n * Base, always: text and textMuted on background and card, and the button ink\n * on primary (text line); the focus ring on background and card (UI line).\n *\n * Extended (`{ extended: true }`):\n * - status: the raw error colour on background and card (blocks still paint\n * it as text), every `<status>-ink` on background and card, every\n * `on-<status>` ink on its own fill (text line);\n * - selection: the primary fill against the card and the page, the line a\n * selected badge / segment / step owes its unselected neighbour (UI line);\n * - control: the control edge on background and card (UI line).\n *\n * Inks, the ring and the control edge are measured AFTER `surfaceThemeToCSS`\n * pushes them, so a value the cascade corrects is not reported; the neutrals\n * and the raw colours are measured as written, because nothing moves them.\n * Unparseable values (a `var()`) are skipped.\n *\n * Pass a FULL theme for the mode being checked: the light theme merged over\n * the defaults, or `resolveDarkTheme(light, …)` for dark.\n */\nexport function themeContrastFindings(\n theme: SurfaceTheme,\n options: ThemeContrastOptions = {}\n): ThemeContrastFinding[] {\n const c = theme.colors ?? {}\n const card = c.card\n const lines = themeContrastLines(options.contrast)\n const findings: ThemeContrastFinding[] = []\n const check = (\n pair: [string, string],\n fg: string | undefined,\n bg: string | undefined,\n kind: 'text' | 'ui',\n group: ThemeContrastGroup = 'base'\n ): void => {\n if (fg === undefined || bg === undefined) return\n const ratio = contrastOf(fg, bg)\n const min = kind === 'text' ? lines.text : lines.ui\n if (ratio === null || ratio >= min) return\n const finding: ThemeContrastFinding = {\n pair,\n foreground: fg,\n background: bg,\n ratio: Math.round(ratio * 100) / 100,\n min,\n kind,\n // `group` is set only when the caller opted in to extended findings.\n ...(options.extended ? { group } : {}),\n }\n findings.push(finding)\n }\n check(['text', 'background'], c.text, c.background, 'text')\n check(['text', 'card'], c.text, card, 'text')\n check(['textMuted', 'background'], c.textMuted, c.background, 'text')\n check(['textMuted', 'card'], c.textMuted, card, 'text')\n const emitted = surfaceThemeToCSS(\n { colors: c, ...(theme.focus ? { focus: theme.focus } : {}) },\n undefined,\n undefined,\n options.contrast ? { contrast: options.contrast } : {}\n )\n check(['textOnPrimary', 'primary'], emitted['--pw-color-text-on-primary'], c.primary, 'text')\n check(['focus.ringColor', 'background'], emitted['--pw-focus-ring-color'], c.background, 'ui')\n check(['focus.ringColor', 'card'], emitted['--pw-focus-ring-color'], card, 'ui')\n if (!options.extended) return findings\n\n // status\n check(['error', 'background'], c.error, c.background, 'text', 'status')\n check(['error', 'card'], c.error, card, 'text', 'status')\n for (const status of THEME_STATUS_TOKENS) {\n const ink = emitted[`--pw-color-${status}-ink`]\n check([`${status}Ink`, 'background'], ink, c.background, 'text', 'status')\n check([`${status}Ink`, 'card'], ink, card, 'text', 'status')\n const onName = `on${status.charAt(0).toUpperCase()}${status.slice(1)}`\n check([onName, status], emitted[`--pw-color-on-${status}`], c[status], 'text', 'status')\n }\n // selection\n check(['primary', 'card'], c.primary, card, 'ui', 'selection')\n check(['primary', 'background'], c.primary, c.background, 'ui', 'selection')\n // control\n check(['controlBorder', 'background'], emitted['--pw-color-control-border'], c.background, 'ui', 'control')\n check(['controlBorder', 'card'], emitted['--pw-color-control-border'], card, 'ui', 'control')\n return findings\n}\n\n// ============================================================\n// BRAND AND INK\n// ============================================================\n\n/** What `brandInk` settled on. */\nexport interface BrandInkResult {\n /** The ink to write on the brand fill. */\n readonly ink: string\n /** The brand fill: the author's value unless it had to darken. */\n readonly brand: string\n /** How much the brand's lightness was lowered, 0..maxDarken (0.04 = 4%). */\n readonly darkened: number\n /** True when the pair clears `min`. */\n readonly meets: boolean\n}\n\n/**\n * Ink first, brand last: the rule for text on a brand fill.\n *\n * 1. The ink moves: the preferred ink is kept if it reads; otherwise the\n * cascade's ink push picks the brand's own deep (or light) tone, then black\n * or white. This is exactly what `surfaceThemeToCSS` does for\n * `text-on-primary`, so the helper and the rendered page agree.\n * 2. Only when no ink can reach `min` (a mid-tone brand at a 7:1 promise) does\n * the BRAND move, darkening its lightness by at most `maxDarken` (default\n * 0.04, i.e. 4%). The caller shows that as \"adjusted for accessibility\".\n *\n * Pure; the cascade never darkens a brand on its own. Call this where the\n * author's colour is chosen.\n */\nexport function brandInk(\n brand: string,\n options: { readonly ink?: string; readonly min?: number; readonly maxDarken?: number } = {}\n): BrandInkResult {\n const min = options.min ?? THEME_TEXT_CONTRAST_MIN\n const maxDarken = Math.max(0, options.maxDarken ?? 0.04)\n const preferred = options.ink ?? inkFor(brand)\n const first = ensureInk(preferred, brand, min)\n const firstRatio = contrastOf(first, brand)\n if (firstRatio === null) return { ink: preferred, brand, darkened: 0, meets: false }\n if (firstRatio >= min) return { ink: first, brand, darkened: 0, meets: true }\n const hsl = toHsl(brand)\n if (hsl) {\n const STEP = 0.005\n for (let d = STEP; d <= maxDarken + 1e-9; d += STEP) {\n const darker = hslToHex(hsl.h, hsl.s, clamp(hsl.l - d, 0, 1))\n const ink = ensureInk(preferred, darker, min)\n const ratio = contrastOf(ink, darker)\n if (ratio !== null && ratio >= min) {\n return { ink, brand: darker, darkened: Math.round(d * 1000) / 1000, meets: true }\n }\n }\n }\n return { ink: first, brand, darkened: 0, meets: false }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/fabric/artifact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/fabric/artifact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG","sourcesContent":["/**\n * Artifact Contract Types\n *\n * Artifact Packaging & Upload System\n *\n * Types for package manifests, artifact descriptors, validation,\n * and publisher extensions.\n *\n * @module @pwfabric/contracts/fabric/artifact\n */\n\nimport type { SemanticVersion } from '../core/version.js'\nimport type { PwpackManifest } from './atom.js'\n\n// ============================================================\n// ARTIFACT KIND\n// ============================================================\n\n/**\n * What KIND of thing an artifact is — a property of the artifact itself, not\n * of any place that sells it.\n *\n * The marketplace is a consumer of the kind, not its owner, so the union is\n * declared here and `marketplace.ts` imports it — an engine module never\n * imports from a platform module.\n *\n * - `block` — L1 primitive block\n * - `starter` — L2 starter surface\n * - `capability` — L3 capability\n * - `bundle` — curated collection\n * - `pwfpack` — a package as a whole\n */\nexport type ArtifactType = 'pwfpack' | 'starter' | 'block' | 'capability' | 'bundle'\n\n// ============================================================\n// PACKAGE REQUIREMENTS\n// ============================================================\n//\n// The deployment unit is the atoms[] pwpack (`PwpackManifest` / `AtomRef` in\n// ./atom.ts), packaged, published and bundled per atom.\n\n/**\n * What a package requires (dependencies)\n */\nexport interface ArtifactRequires {\n readonly blocks?: readonly string[]\n readonly capabilities?: readonly string[]\n}\n\n// ============================================================\n// ARTIFACT DESCRIPTOR\n// ============================================================\n\n/**\n * Artifact scope (where the artifact is accessible)\n */\nexport type ArtifactScope = 'workspace' | 'marketplace'\n\n/**\n * Artifact processing status\n */\nexport type ArtifactStatus = 'uploading' | 'validating' | 'valid' | 'invalid' | 'published'\n\n/**\n * Artifact database record representation\n */\nexport interface ArtifactDescriptor {\n readonly id: string\n readonly scope: ArtifactScope\n readonly worldId: string\n readonly publisherId?: string\n readonly listingId?: string\n readonly name: string\n readonly version: SemanticVersion\n readonly artifactType: ArtifactType\n readonly manifest: PwpackManifest\n readonly storageKey: string\n readonly fileSize: number\n readonly checksum: string\n readonly status: ArtifactStatus\n readonly validationErrors?: readonly ManifestValidationIssue[]\n readonly createdAt: number\n readonly updatedAt: number\n}\n\n// ============================================================\n// VALIDATION TYPES\n// ============================================================\n\n/**\n * Validation issue severity\n */\nexport type ValidationSeverity = 'error' | 'warning'\n\n/**\n * A single validation issue found in a manifest or package\n */\nexport interface ManifestValidationIssue {\n readonly severity: ValidationSeverity\n readonly code: string\n readonly message: string\n readonly path?: string\n}\n\n/**\n * Result of package validation\n */\nexport interface PackageValidationResult {\n readonly valid: boolean\n readonly manifest?: PwpackManifest\n readonly issues: readonly ManifestValidationIssue[]\n}\n\n// ============================================================\n// UPLOAD TYPES\n// ============================================================\n\n/**\n * Artifact upload input\n */\nexport interface ArtifactUploadInput {\n readonly data: Uint8Array\n readonly scope: ArtifactScope\n readonly worldId: string\n readonly publisherId?: string\n}\n\n/**\n * Artifact upload result\n */\nexport interface ArtifactUploadResult {\n readonly artifact: ArtifactDescriptor\n readonly validation: PackageValidationResult\n}\n"]}
|
package/dist/fabric/atom.d.ts
CHANGED
|
@@ -2091,4 +2091,3 @@ export declare const AtomFileManifestSchema: z.ZodObject<{
|
|
|
2091
2091
|
}>;
|
|
2092
2092
|
export type AtomFileManifestInput = z.input<typeof AtomFileManifestSchema>;
|
|
2093
2093
|
export type AtomFileManifestParsed = z.output<typeof AtomFileManifestSchema>;
|
|
2094
|
-
//# sourceMappingURL=atom.d.ts.map
|