@master/css-binding 0.0.0-site.1793659883.g69c9aebcf628

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/artifacts/mastercss.node +0 -0
  2. package/artifacts/mcss +0 -0
  3. package/dist/binding-options.d.ts +14 -0
  4. package/dist/binding-options.js +15 -0
  5. package/dist/binding.d.ts +12 -0
  6. package/dist/binding.js +23 -0
  7. package/dist/browser.d.ts +3 -0
  8. package/dist/browser.js +3 -0
  9. package/dist/compiler-binding-adapter.js +55 -0
  10. package/dist/compiler-binding-browser.d.ts +6 -0
  11. package/dist/compiler-binding-browser.js +24 -0
  12. package/dist/compiler-binding-contract.d.ts +45 -0
  13. package/dist/compiler-binding-node.d.ts +5 -0
  14. package/dist/compiler-binding-node.js +20 -0
  15. package/dist/compiler-binding-wasm.js +58 -0
  16. package/dist/compiler-binding.d.ts +6 -0
  17. package/dist/compiler-binding.js +42 -0
  18. package/dist/compiler.js +52 -0
  19. package/dist/engine-binding-adapter.js +61 -0
  20. package/dist/engine-binding-browser.d.ts +8 -0
  21. package/dist/engine-binding-browser.js +35 -0
  22. package/dist/engine-binding-js.js +81 -0
  23. package/dist/engine-binding-node.d.ts +9 -0
  24. package/dist/engine-binding-node.js +38 -0
  25. package/dist/engine-binding-wasm.js +64 -0
  26. package/dist/engine-binding.d.ts +40 -0
  27. package/dist/engine-binding.js +57 -0
  28. package/dist/engine-contract.d.ts +14 -0
  29. package/dist/engine-js/src/animation.js +154 -0
  30. package/dist/engine-js/src/apply.js +207 -0
  31. package/dist/engine-js/src/class-syntax.js +333 -0
  32. package/dist/engine-js/src/condition.js +440 -0
  33. package/dist/engine-js/src/css-syntax.js +247 -0
  34. package/dist/engine-js/src/generate.js +288 -0
  35. package/dist/engine-js/src/mixin.js +328 -0
  36. package/dist/engine-js/src/native-properties.js +5 -0
  37. package/dist/engine-js/src/order.js +97 -0
  38. package/dist/engine-js/src/program-model.js +19 -0
  39. package/dist/engine-js/src/program.js +434 -0
  40. package/dist/engine-js/src/selector.js +195 -0
  41. package/dist/engine-js/src/session.js +540 -0
  42. package/dist/engine-js/src/state.js +62 -0
  43. package/dist/engine-js/src/text.js +51 -0
  44. package/dist/engine-js/src/utility.js +236 -0
  45. package/dist/engine-js/src/value.js +254 -0
  46. package/dist/engine.js +86 -0
  47. package/dist/errors.js +10 -0
  48. package/dist/index.d.ts +4 -0
  49. package/dist/index.js +3 -0
  50. package/dist/native-loader.js +134 -0
  51. package/dist/normalize-error.js +63 -0
  52. package/dist/protocol.d.ts +1119 -0
  53. package/dist/protocol.js +14 -0
  54. package/dist/tooling-binding-adapter.js +23 -0
  55. package/dist/tooling-binding-browser.d.ts +5 -0
  56. package/dist/tooling-binding-browser.js +15 -0
  57. package/dist/tooling-binding-contract.d.ts +92 -0
  58. package/dist/tooling-binding-native.js +46 -0
  59. package/dist/tooling-binding-node.d.ts +4 -0
  60. package/dist/tooling-binding-node.js +11 -0
  61. package/dist/tooling-binding-wasm.js +127 -0
  62. package/dist/tooling-binding.d.ts +5 -0
  63. package/dist/tooling-binding.js +21 -0
  64. package/dist/tooling.js +144 -0
  65. package/dist/version.js +3 -0
  66. package/package.json +78 -0
Binary file
package/artifacts/mcss ADDED
Binary file
@@ -0,0 +1,14 @@
1
+ import { MasterCSSBinding } from "./protocol.js";
2
+ interface MasterCSSNativeBindingLoadOptions {
3
+ readonly bindingPath?: string;
4
+ }
5
+ interface MasterCSSWasmBindingLoadOptions {
6
+ readonly module?: object;
7
+ readonly input?: RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
8
+ }
9
+ interface MasterCSSBindingLoadOptions {
10
+ readonly binding?: MasterCSSBinding;
11
+ readonly native?: MasterCSSNativeBindingLoadOptions;
12
+ readonly wasm?: MasterCSSWasmBindingLoadOptions;
13
+ }
14
+ export { MasterCSSBindingLoadOptions, MasterCSSNativeBindingLoadOptions, MasterCSSWasmBindingLoadOptions };
@@ -0,0 +1,15 @@
1
+ import { MasterCSSError } from "@master/css-schema";
2
+ // src/binding-options.ts
3
+ function hasMasterCSSNodeRuntime() {
4
+ return typeof globalThis.process?.versions?.node === "string";
5
+ }
6
+ function shouldLoadMasterCSSNativeBinding(binding) {
7
+ const hasNode = hasMasterCSSNodeRuntime();
8
+ if (binding === "native" && !hasNode) throw new MasterCSSError({
9
+ code: "NATIVE_UNAVAILABLE",
10
+ domain: "binding",
11
+ message: "Master CSS native bindings are unavailable outside Node.js."
12
+ });
13
+ return binding !== "wasm" && hasNode;
14
+ }
15
+ export { hasMasterCSSNodeRuntime, shouldLoadMasterCSSNativeBinding };
@@ -0,0 +1,12 @@
1
+ import { MasterCSSBindingFeature, MasterCSSBindingInfo, MasterCSSBindingSurface } from "./protocol.js";
2
+ interface MasterCSSBindingRequirements {
3
+ surface: MasterCSSBindingSurface;
4
+ features?: readonly MasterCSSBindingFeature[];
5
+ packageVersion?: string;
6
+ }
7
+ declare class MasterCSSBindingContractError extends Error {
8
+ readonly code = "BINDING_MISMATCH";
9
+ constructor(message: string, options?: ErrorOptions);
10
+ }
11
+ declare function assertMasterCSSBindingInfo(value: unknown, requirements: MasterCSSBindingRequirements): MasterCSSBindingInfo;
12
+ export { MasterCSSBindingContractError, MasterCSSBindingRequirements, assertMasterCSSBindingInfo };
@@ -0,0 +1,23 @@
1
+ import "./protocol.js";
2
+ // src/binding.ts
3
+ var MasterCSSBindingContractError = class extends Error {
4
+ code = "BINDING_MISMATCH";
5
+ constructor(message, options) {
6
+ super(message, options);
7
+ this.name = "MasterCSSBindingContractError";
8
+ }
9
+ };
10
+ function parseBindingInfo(value) {
11
+ if (!value || typeof value !== "object") throw new MasterCSSBindingContractError("Master CSS binding metadata must be an object.");
12
+ return value;
13
+ }
14
+ function assertMasterCSSBindingInfo(value, requirements) {
15
+ const info = parseBindingInfo(value);
16
+ const versionsMatch = info.bindingAbiVersion === 32 && info.manifestVersion === 6 && info.programVersion === 3 && info.languageVersion === 18 && info.hydrationManifestVersion === 5 && info.engineTransitionVersion === 5 && info.validatorBatchVersion === 4 && info.diagnosticsReportVersion === 5 && info.lintBatchVersion === 4 && info.languageBatchVersion === 8 && info.lexerBatchVersion === 1 && info.sourceBatchVersion === 2;
17
+ const packageMatches = requirements.packageVersion === void 0 || info.packageVersion === requirements.packageVersion;
18
+ const features = Array.isArray(info.features) ? new Set(info.features) : /* @__PURE__ */ new Set();
19
+ const missingFeatures = (requirements.features || []).filter((feature) => !features.has(feature));
20
+ if (!versionsMatch || !packageMatches || info.surface !== requirements.surface || missingFeatures.length) throw new MasterCSSBindingContractError(`Master CSS ${requirements.surface} binding contract mismatch.` + (missingFeatures.length ? ` Missing features: ${missingFeatures.join(", ")}.` : ""));
21
+ return info;
22
+ }
23
+ export { MasterCSSBindingContractError, assertMasterCSSBindingInfo };
@@ -0,0 +1,3 @@
1
+ import { MASTER_CSS_BINDING_ABI_VERSION, MASTER_CSS_HYDRATION_MANIFEST_VERSION, MASTER_CSS_MANIFEST_VERSION, MasterCSSBinding, MasterCSSBindingFeature, MasterCSSBindingInfo, MasterCSSBindingSurface, MasterCSSEngineResolvedBinding, MasterCSSResolvedBinding } from "./protocol.js";
2
+ import { MasterCSSBindingContractError, MasterCSSBindingRequirements, assertMasterCSSBindingInfo } from "./binding.js";
3
+ export { MASTER_CSS_BINDING_ABI_VERSION, MASTER_CSS_HYDRATION_MANIFEST_VERSION, MASTER_CSS_MANIFEST_VERSION, type MasterCSSBinding, MasterCSSBindingContractError, type MasterCSSBindingFeature, type MasterCSSBindingInfo, type MasterCSSBindingRequirements, type MasterCSSBindingSurface, type MasterCSSEngineResolvedBinding, type MasterCSSResolvedBinding, assertMasterCSSBindingInfo };
@@ -0,0 +1,3 @@
1
+ import { MASTER_CSS_BINDING_ABI_VERSION, MASTER_CSS_HYDRATION_MANIFEST_VERSION, MASTER_CSS_MANIFEST_VERSION } from "./protocol.js";
2
+ import { MasterCSSBindingContractError, assertMasterCSSBindingInfo } from "./binding.js";
3
+ export { MASTER_CSS_BINDING_ABI_VERSION, MASTER_CSS_HYDRATION_MANIFEST_VERSION, MASTER_CSS_MANIFEST_VERSION, MasterCSSBindingContractError, assertMasterCSSBindingInfo };
@@ -0,0 +1,55 @@
1
+ import { callBinding } from "./normalize-error.js";
2
+ import { MasterCSSError } from "@master/css-schema";
3
+ // src/compiler-binding-adapter.ts
4
+ function unavailable(operation) {
5
+ throw new MasterCSSError({
6
+ code: "NATIVE_UNAVAILABLE",
7
+ domain: "compiler",
8
+ message: `${operation} requires the Master CSS native Node binding.`
9
+ });
10
+ }
11
+ function bindCompilerBindingSession(binding, operations) {
12
+ let disposed = false;
13
+ const invoke = (domain, operation, source) => {
14
+ if (disposed) throw new MasterCSSError({
15
+ code: "SESSION_DISPOSED",
16
+ domain: "compiler",
17
+ message: "The Master CSS compiler binding session has been disposed."
18
+ });
19
+ return callBinding(domain, operation, source);
20
+ };
21
+ const dispose = () => {
22
+ if (disposed) return;
23
+ disposed = true;
24
+ operations.dispose?.();
25
+ };
26
+ return Object.freeze({
27
+ binding,
28
+ findManifestEntries: (projectDir) => invoke("project", () => operations.findManifestEntries?.(projectDir) ?? unavailable("Project discovery")),
29
+ loadProjectManifest: (projectDir, baseManifest, entries) => invoke("project", () => operations.loadProjectManifest?.(projectDir, baseManifest, entries) ?? unavailable("Project manifest loading")),
30
+ loadPreparedProjectManifest: (projectDir, baseManifest, graphs) => invoke("project", () => operations.loadPreparedProjectManifest?.(projectDir, baseManifest, graphs) ?? unavailable("Prepared project manifest loading")),
31
+ compareProjectSnapshots: (request) => invoke("compiler", () => operations.compareProjectSnapshots(request)),
32
+ inspectCSS: (source) => invoke("compiler", () => operations.inspectCSS(source), source),
33
+ compileNativeCSS: (source, options) => invoke("compiler", () => operations.compileNativeCSS(source, options), source),
34
+ compileCSSDirectives: (source, options) => invoke("compiler", () => operations.compileCSSDirectives(source, options), source),
35
+ analyzeCSSDependencies: (source) => invoke("compiler", () => operations.analyzeCSSDependencies(source), source),
36
+ analyzeStandaloneDirectives: (source) => invoke("compiler", () => operations.analyzeStandaloneDirectives(source), source),
37
+ mergeCSSExtractionPolicies: (policies) => invoke("compiler", () => operations.mergeCSSExtractionPolicies(policies)),
38
+ filterCSSExtractionCandidates: (candidates, blocklist) => invoke("compiler", () => operations.filterCSSExtractionCandidates(candidates, blocklist)),
39
+ compileManifestInput: (input, options) => invoke("compiler", () => operations.compileManifestInput(input, options)),
40
+ lowerCSSDirectives: (request, options, sourceText) => invoke("compiler", () => operations.lowerCSSDirectives(request, options), sourceText),
41
+ normalizeManifest: (manifest) => invoke("compiler", () => operations.normalizeManifest(manifest)),
42
+ normalizeDefaultManifest: (manifest) => invoke("compiler", () => operations.normalizeDefaultManifest(manifest)),
43
+ compileDefaultPresetManifest: (request) => invoke("compiler", () => operations.compileDefaultPresetManifest(request)),
44
+ resolveCSSImportGraph: (request) => invoke("compiler", () => operations.resolveCSSImportGraph(request)),
45
+ resolveCSSStylesheetGraph: (request) => invoke("compiler", () => operations.resolveCSSStylesheetGraph(request), (filename) => request.files[filename]),
46
+ prepareCSSStylesheetBundle: (request) => invoke("compiler", () => operations.prepareCSSStylesheetBundle(request), (filename) => filename === request.from ? request.source : request.managed.stylesheets.find((asset) => asset.id === filename)?.css),
47
+ renderCSSStylesheetBundle: (request) => invoke("compiler", () => operations.renderCSSStylesheetBundle(request)),
48
+ compileCSSStylesheetGraph: (request) => invoke("compiler", () => operations.compileCSSStylesheetGraph(request), (filename) => Object.hasOwn(request.graph.files, filename) ? request.graph.files[filename] : void 0),
49
+ createInspectionReport: (input) => invoke("tooling", () => operations.createInspectionReport?.(input) ?? unavailable("Inspection reporting")),
50
+ renderClassNames: (manifest, classNames) => invoke("server", () => operations.renderClassNames?.(manifest, classNames) ?? unavailable("Native class rendering")),
51
+ dispose,
52
+ [Symbol.dispose]: dispose
53
+ });
54
+ }
55
+ export { bindCompilerBindingSession };
@@ -0,0 +1,6 @@
1
+ import { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION, MasterCSSCompileDefaultPresetRequest, MasterCSSCompileDefaultPresetResult, MasterCSSCompileManifestOptions, MasterCSSCompileManifestResult, MasterCSSCompileStylesheetGraphRequest, MasterCSSCompiledStylesheet, MasterCSSCompiledStylesheetGraph, MasterCSSCompilerInspection, MasterCSSDependencyAnalysis, MasterCSSDiagnosticsReportInput, MasterCSSDirectiveCompilation, MasterCSSDirectiveCompileOptions, MasterCSSDirectiveExtractionPolicy, MasterCSSDirectiveManifestInput, MasterCSSImportGraphRequest, MasterCSSInspectionReport, MasterCSSLowerDirectivesOptions, MasterCSSLowerDirectivesRequest, MasterCSSLowerDirectivesResult, MasterCSSPrepareStylesheetBundleRequest, MasterCSSProjectAssetChange, MasterCSSProjectComparison, MasterCSSProjectComparisonRequest, MasterCSSProjectEntryGraph, MasterCSSProjectManifest, MasterCSSProjectSnapshot, MasterCSSRenderStylesheetBundleRequest, MasterCSSResolvedImportGraph, MasterCSSStandaloneDirectiveAnalysis, MasterCSSStylesheetAsset, MasterCSSStylesheetBundle } from "./protocol.js";
2
+ import { MasterCSSBindingLoadOptions, MasterCSSNativeBindingLoadOptions, MasterCSSWasmBindingLoadOptions } from "./binding-options.js";
3
+ import { MasterCSSCompilerBindingSession, MasterCSSCompilerRenderBindingSession, MasterCSSCompilerRenderBindingSessionOptions } from "./compiler-binding-contract.js";
4
+ declare function createCompilerBindingSession(options?: MasterCSSBindingLoadOptions): Promise<MasterCSSCompilerBindingSession>;
5
+ declare function createCompilerRenderBindingSession(options: MasterCSSCompilerRenderBindingSessionOptions, loadOptions?: MasterCSSBindingLoadOptions): Promise<MasterCSSCompilerRenderBindingSession>;
6
+ export { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION, type MasterCSSBindingLoadOptions, type MasterCSSCompileDefaultPresetRequest, type MasterCSSCompileDefaultPresetResult, type MasterCSSCompileManifestOptions, type MasterCSSCompileManifestResult, type MasterCSSCompileStylesheetGraphRequest, type MasterCSSCompiledStylesheet, type MasterCSSCompiledStylesheetGraph, type MasterCSSCompilerBindingSession, type MasterCSSCompilerInspection, type MasterCSSCompilerRenderBindingSession, type MasterCSSCompilerRenderBindingSessionOptions, type MasterCSSDependencyAnalysis, type MasterCSSDiagnosticsReportInput, type MasterCSSDirectiveCompilation, type MasterCSSDirectiveCompileOptions, type MasterCSSDirectiveExtractionPolicy, type MasterCSSDirectiveManifestInput, type MasterCSSImportGraphRequest, type MasterCSSInspectionReport, type MasterCSSLowerDirectivesOptions, type MasterCSSLowerDirectivesRequest, type MasterCSSLowerDirectivesResult, type MasterCSSNativeBindingLoadOptions, type MasterCSSPrepareStylesheetBundleRequest, type MasterCSSProjectAssetChange, type MasterCSSProjectComparison, type MasterCSSProjectComparisonRequest, type MasterCSSProjectEntryGraph, type MasterCSSProjectManifest, type MasterCSSProjectSnapshot, type MasterCSSRenderStylesheetBundleRequest, type MasterCSSResolvedImportGraph, type MasterCSSStandaloneDirectiveAnalysis, type MasterCSSStylesheetAsset, type MasterCSSStylesheetBundle, type MasterCSSWasmBindingLoadOptions, createCompilerBindingSession, createCompilerRenderBindingSession };
@@ -0,0 +1,24 @@
1
+ import { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION } from "./protocol.js";
2
+ import { callBindingAsync } from "./normalize-error.js";
3
+ import { createCompilerWasmBindingSession, createCompilerWasmRenderBindingSession } from "./compiler-binding-wasm.js";
4
+ import { MasterCSSError } from "@master/css-schema";
5
+ import { serializeMasterCSSManifest } from "@master/css-schema/manifest";
6
+ import { createMasterCSSCompilerWasmProvider } from "@master/css-binding-wasm-compiler";
7
+ // src/compiler-binding-browser.ts
8
+ function createCompilerBindingSession(options = {}) {
9
+ if (options.binding === "native") throw new MasterCSSError({
10
+ code: "NATIVE_UNAVAILABLE",
11
+ domain: "binding",
12
+ message: "Master CSS native compiler bindings are unavailable in browsers."
13
+ });
14
+ return callBindingAsync("compiler", () => createCompilerWasmBindingSession(options.wasm, createMasterCSSCompilerWasmProvider));
15
+ }
16
+ function createCompilerRenderBindingSession(options, loadOptions = {}) {
17
+ if (loadOptions.binding === "native") throw new MasterCSSError({
18
+ code: "NATIVE_UNAVAILABLE",
19
+ domain: "binding",
20
+ message: "Master CSS native compiler bindings are unavailable in browsers."
21
+ });
22
+ return callBindingAsync("compiler", () => createCompilerWasmRenderBindingSession(serializeMasterCSSManifest(options.manifest), options.emittedGlobals === void 0 ? void 0 : JSON.stringify(options.emittedGlobals), loadOptions.wasm, createMasterCSSCompilerWasmProvider));
23
+ }
24
+ export { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION, createCompilerBindingSession, createCompilerRenderBindingSession };
@@ -0,0 +1,45 @@
1
+ import { MasterCSSCompileDefaultPresetRequest, MasterCSSCompileDefaultPresetResult, MasterCSSCompileManifestOptions, MasterCSSCompileManifestResult, MasterCSSCompileStylesheetGraphRequest, MasterCSSCompiledStylesheetGraph, MasterCSSCompilerInspection, MasterCSSDependencyAnalysis, MasterCSSDiagnosticsReportInput, MasterCSSDirectiveCompilation, MasterCSSDirectiveCompileOptions, MasterCSSDirectiveExtractionPolicy, MasterCSSDirectiveManifestInput, MasterCSSImportGraphRequest, MasterCSSInspectionReport, MasterCSSLowerDirectivesOptions, MasterCSSLowerDirectivesRequest, MasterCSSLowerDirectivesResult, MasterCSSNativeDeclarationCandidate, MasterCSSPrepareStylesheetBundleRequest, MasterCSSProjectComparison, MasterCSSProjectComparisonRequest, MasterCSSProjectEntryGraph, MasterCSSProjectManifest, MasterCSSRegex, MasterCSSRenderStylesheetBundleRequest, MasterCSSResolvedBinding, MasterCSSResolvedImportGraph, MasterCSSServerRender, MasterCSSStandaloneDirectiveAnalysis, MasterCSSStylesheetAsset, MasterCSSStylesheetBundle } from "./protocol.js";
2
+ import { MasterCSSBindingLoadOptions, MasterCSSNativeBindingLoadOptions, MasterCSSWasmBindingLoadOptions } from "./binding-options.js";
3
+ import { MasterCSSManifest } from "@master/css-schema/manifest";
4
+ import { MasterCSSEmittedGlobals } from "@master/css-schema/emitted-globals";
5
+ interface MasterCSSCompilerBindingSession extends Disposable {
6
+ readonly binding: MasterCSSResolvedBinding;
7
+ findManifestEntries(projectDir: string): readonly string[];
8
+ loadProjectManifest(projectDir: string, baseManifest: MasterCSSManifest, entries?: readonly string[]): MasterCSSProjectManifest;
9
+ loadPreparedProjectManifest(projectDir: string, baseManifest: MasterCSSManifest, graphs: readonly MasterCSSProjectEntryGraph[]): MasterCSSProjectManifest;
10
+ compareProjectSnapshots(request: MasterCSSProjectComparisonRequest): MasterCSSProjectComparison;
11
+ inspectCSS(source: string): MasterCSSCompilerInspection;
12
+ compileNativeCSS(source: string, options?: MasterCSSDirectiveCompileOptions): MasterCSSDirectiveCompilation;
13
+ compileCSSDirectives(source: string, options?: MasterCSSDirectiveCompileOptions): MasterCSSDirectiveCompilation;
14
+ analyzeCSSDependencies(source: string): MasterCSSDependencyAnalysis;
15
+ analyzeStandaloneDirectives(source: string): MasterCSSStandaloneDirectiveAnalysis;
16
+ mergeCSSExtractionPolicies(policies: readonly Partial<MasterCSSDirectiveExtractionPolicy>[]): MasterCSSDirectiveExtractionPolicy;
17
+ filterCSSExtractionCandidates(candidates: readonly string[], blocklist: readonly (string | MasterCSSRegex)[]): readonly string[];
18
+ compileManifestInput(input: MasterCSSDirectiveManifestInput, options?: MasterCSSCompileManifestOptions): MasterCSSCompileManifestResult;
19
+ lowerCSSDirectives(request: MasterCSSLowerDirectivesRequest, options?: MasterCSSLowerDirectivesOptions, sourceText?: string): MasterCSSLowerDirectivesResult;
20
+ normalizeManifest(manifest: MasterCSSManifest): MasterCSSManifest;
21
+ normalizeDefaultManifest(manifest: MasterCSSManifest): MasterCSSManifest;
22
+ compileDefaultPresetManifest(request: MasterCSSCompileDefaultPresetRequest): MasterCSSCompileDefaultPresetResult;
23
+ resolveCSSImportGraph(request: MasterCSSImportGraphRequest): MasterCSSResolvedImportGraph;
24
+ resolveCSSStylesheetGraph(request: MasterCSSImportGraphRequest): MasterCSSStylesheetBundle['graph'];
25
+ prepareCSSStylesheetBundle(request: MasterCSSPrepareStylesheetBundleRequest): MasterCSSStylesheetBundle;
26
+ renderCSSStylesheetBundle(request: MasterCSSRenderStylesheetBundleRequest): readonly MasterCSSStylesheetAsset[];
27
+ compileCSSStylesheetGraph(request: MasterCSSCompileStylesheetGraphRequest): MasterCSSCompiledStylesheetGraph;
28
+ createInspectionReport(input: MasterCSSDiagnosticsReportInput): MasterCSSInspectionReport;
29
+ renderClassNames(manifest: MasterCSSManifest, classNames: readonly string[]): MasterCSSServerRender;
30
+ dispose(): void;
31
+ }
32
+ interface MasterCSSCompilerRenderBindingSessionOptions {
33
+ readonly manifest: MasterCSSManifest;
34
+ readonly emittedGlobals?: MasterCSSEmittedGlobals;
35
+ }
36
+ interface MasterCSSCompilerRenderBindingSession extends Disposable {
37
+ readonly binding: MasterCSSResolvedBinding;
38
+ nativeDeclarationCandidates(classNames: readonly string[]): readonly MasterCSSNativeDeclarationCandidate[];
39
+ ensureClasses(classNames: readonly string[]): void;
40
+ ensureStylesheetResources(nativeCSS: string): void;
41
+ emittedGlobals(): MasterCSSEmittedGlobals;
42
+ snapshot(): MasterCSSServerRender;
43
+ dispose(): void;
44
+ }
45
+ export { type MasterCSSBindingLoadOptions, MasterCSSCompilerBindingSession, MasterCSSCompilerRenderBindingSession, MasterCSSCompilerRenderBindingSessionOptions, type MasterCSSNativeBindingLoadOptions, type MasterCSSWasmBindingLoadOptions };
@@ -0,0 +1,5 @@
1
+ import { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION, MasterCSSCompileDefaultPresetRequest, MasterCSSCompileDefaultPresetResult, MasterCSSCompileManifestOptions, MasterCSSCompileManifestResult, MasterCSSCompilerInspection, MasterCSSDependencyAnalysis, MasterCSSDiagnosticsReportInput, MasterCSSDirectiveCompilation, MasterCSSDirectiveCompileOptions, MasterCSSDirectiveExtractionPolicy, MasterCSSDirectiveManifestInput, MasterCSSImportGraphRequest, MasterCSSInspectionReport, MasterCSSLowerDirectivesOptions, MasterCSSLowerDirectivesRequest, MasterCSSLowerDirectivesResult, MasterCSSProjectAssetChange, MasterCSSProjectComparison, MasterCSSProjectComparisonRequest, MasterCSSProjectEntryGraph, MasterCSSProjectManifest, MasterCSSProjectSnapshot, MasterCSSResolvedImportGraph, MasterCSSStandaloneDirectiveAnalysis } from "./protocol.js";
2
+ import { MasterCSSNativeBindingLoadOptions } from "./binding-options.js";
3
+ import { MasterCSSCompilerBindingSession } from "./compiler-binding-contract.js";
4
+ declare function createCompilerBindingSessionSync(options?: MasterCSSNativeBindingLoadOptions): MasterCSSCompilerBindingSession;
5
+ export { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION, type MasterCSSCompileDefaultPresetRequest, type MasterCSSCompileDefaultPresetResult, type MasterCSSCompileManifestOptions, type MasterCSSCompileManifestResult, type MasterCSSCompilerBindingSession, type MasterCSSCompilerInspection, type MasterCSSDependencyAnalysis, type MasterCSSDiagnosticsReportInput, type MasterCSSDirectiveCompilation, type MasterCSSDirectiveCompileOptions, type MasterCSSDirectiveExtractionPolicy, type MasterCSSDirectiveManifestInput, type MasterCSSImportGraphRequest, type MasterCSSInspectionReport, type MasterCSSLowerDirectivesOptions, type MasterCSSLowerDirectivesRequest, type MasterCSSLowerDirectivesResult, type MasterCSSNativeBindingLoadOptions, type MasterCSSProjectAssetChange, type MasterCSSProjectComparison, type MasterCSSProjectComparisonRequest, type MasterCSSProjectEntryGraph, type MasterCSSProjectManifest, type MasterCSSProjectSnapshot, type MasterCSSResolvedImportGraph, type MasterCSSStandaloneDirectiveAnalysis, createCompilerBindingSessionSync };
@@ -0,0 +1,20 @@
1
+ import { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION } from "./protocol.js";
2
+ import { normalizeBindingError } from "./normalize-error.js";
3
+ import { bindCompilerBindingSession } from "./compiler-binding-adapter.js";
4
+ import { loadNativeCompilerBinding } from "./compiler.js";
5
+ // src/compiler-binding-node.ts
6
+ function createCompilerBindingSessionSync(options = {}) {
7
+ try {
8
+ const native = loadNativeCompilerBinding({
9
+ ...options,
10
+ required: true
11
+ });
12
+ return bindCompilerBindingSession("native", {
13
+ ...native,
14
+ dispose: () => void 0
15
+ });
16
+ } catch (cause) {
17
+ throw normalizeBindingError(cause, "compiler");
18
+ }
19
+ }
20
+ export { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION, createCompilerBindingSessionSync };
@@ -0,0 +1,58 @@
1
+ import { assertMasterCSSBindingInfo } from "./binding.js";
2
+ import { bindCompilerBindingSession } from "./compiler-binding-adapter.js";
3
+ // src/compiler-binding-wasm.ts
4
+ async function loadDefaultWasmProvider(options) {
5
+ const { createMasterCSSCompilerWasmProvider } = await import("@master/css-binding-wasm-compiler");
6
+ return await createMasterCSSCompilerWasmProvider(options);
7
+ }
8
+ async function provider(options, factory = loadDefaultWasmProvider) {
9
+ const wasm = await factory(options);
10
+ assertMasterCSSBindingInfo(wasm.info, {
11
+ surface: "compiler",
12
+ features: ["compiler", "render"]
13
+ });
14
+ return wasm;
15
+ }
16
+ async function createCompilerWasmBindingSession(options, providerFactory) {
17
+ const session = await (await provider(options, providerFactory)).createSession();
18
+ return bindCompilerBindingSession("wasm", {
19
+ compareProjectSnapshots: (request) => session.compareProjectSnapshots(request),
20
+ inspectCSS: (source) => session.inspectCSS(source),
21
+ compileNativeCSS: (source, compileOptions) => session.compileNativeCSS(source, compileOptions),
22
+ compileCSSDirectives: (source, compileOptions) => session.compileCSSDirectives(source, compileOptions),
23
+ analyzeCSSDependencies: (source) => session.analyzeCSSDependencies(source),
24
+ analyzeStandaloneDirectives: (source) => session.analyzeStandaloneDirectives(source),
25
+ mergeCSSExtractionPolicies: (policies) => session.mergeCSSExtractionPolicies(policies),
26
+ filterCSSExtractionCandidates: (candidates, blocklist) => session.filterCSSExtractionCandidates([...candidates], blocklist),
27
+ compileManifestInput: (input, compileOptions) => session.compileManifestInput(input, compileOptions),
28
+ lowerCSSDirectives: (request, compileOptions) => session.lowerCSSDirectives(request, compileOptions),
29
+ normalizeManifest: (manifest) => session.normalizeManifestForJSON(manifest),
30
+ normalizeDefaultManifest: (manifest) => session.normalizeDefaultManifestForJSON(manifest),
31
+ compileDefaultPresetManifest: (request) => session.compileDefaultPresetManifest(request),
32
+ resolveCSSImportGraph: (request) => session.resolveCSSImportGraph(request),
33
+ resolveCSSStylesheetGraph: (request) => session.resolveCSSStylesheetGraph(request),
34
+ prepareCSSStylesheetBundle: (request) => session.prepareCSSStylesheetBundle(request),
35
+ renderCSSStylesheetBundle: (request) => session.renderCSSStylesheetBundle(request),
36
+ compileCSSStylesheetGraph: (request) => session.compileCSSStylesheetGraph(request)
37
+ });
38
+ }
39
+ async function createCompilerWasmRenderBindingSession(manifestJSON, emittedGlobalsJSON, options, providerFactory) {
40
+ const session = await (await provider(options, providerFactory)).createRenderSession(manifestJSON, emittedGlobalsJSON);
41
+ let disposed = false;
42
+ const dispose = () => {
43
+ if (disposed) return;
44
+ disposed = true;
45
+ session.dispose();
46
+ };
47
+ return Object.freeze({
48
+ binding: "wasm",
49
+ nativeDeclarationCandidates: (classNames) => session.nativeDeclarationCandidates([...classNames]),
50
+ ensureClasses: (classNames) => session.ensureClasses([...classNames]),
51
+ ensureStylesheetResources: (nativeCSS) => session.ensureStylesheetResources(nativeCSS),
52
+ emittedGlobals: () => session.emittedGlobals(),
53
+ snapshot: () => session.snapshot(),
54
+ dispose,
55
+ [Symbol.dispose]: dispose
56
+ });
57
+ }
58
+ export { createCompilerWasmBindingSession, createCompilerWasmRenderBindingSession };
@@ -0,0 +1,6 @@
1
+ import { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION, MasterCSSCompileDefaultPresetRequest, MasterCSSCompileDefaultPresetResult, MasterCSSCompileManifestOptions, MasterCSSCompileManifestResult, MasterCSSCompileStylesheetGraphRequest, MasterCSSCompiledStylesheet, MasterCSSCompiledStylesheetGraph, MasterCSSCompilerInspection, MasterCSSDependencyAnalysis, MasterCSSDiagnosticsReportInput, MasterCSSDirectiveCompilation, MasterCSSDirectiveCompileOptions, MasterCSSDirectiveExtractionPolicy, MasterCSSDirectiveManifestInput, MasterCSSImportGraphRequest, MasterCSSInspectionReport, MasterCSSLowerDirectivesOptions, MasterCSSLowerDirectivesRequest, MasterCSSLowerDirectivesResult, MasterCSSPrepareStylesheetBundleRequest, MasterCSSProjectAssetChange, MasterCSSProjectComparison, MasterCSSProjectComparisonRequest, MasterCSSProjectEntryGraph, MasterCSSProjectManifest, MasterCSSProjectSnapshot, MasterCSSRenderStylesheetBundleRequest, MasterCSSResolvedImportGraph, MasterCSSStandaloneDirectiveAnalysis, MasterCSSStylesheetAsset, MasterCSSStylesheetBundle } from "./protocol.js";
2
+ import { MasterCSSBindingLoadOptions, MasterCSSNativeBindingLoadOptions, MasterCSSWasmBindingLoadOptions } from "./binding-options.js";
3
+ import { MasterCSSCompilerBindingSession, MasterCSSCompilerRenderBindingSession, MasterCSSCompilerRenderBindingSessionOptions } from "./compiler-binding-contract.js";
4
+ declare function createCompilerBindingSession(options?: MasterCSSBindingLoadOptions): Promise<MasterCSSCompilerBindingSession>;
5
+ declare function createCompilerRenderBindingSession(options: MasterCSSCompilerRenderBindingSessionOptions, loadOptions?: MasterCSSBindingLoadOptions): Promise<MasterCSSCompilerRenderBindingSession>;
6
+ export { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION, type MasterCSSBindingLoadOptions, type MasterCSSCompileDefaultPresetRequest, type MasterCSSCompileDefaultPresetResult, type MasterCSSCompileManifestOptions, type MasterCSSCompileManifestResult, type MasterCSSCompileStylesheetGraphRequest, type MasterCSSCompiledStylesheet, type MasterCSSCompiledStylesheetGraph, type MasterCSSCompilerBindingSession, type MasterCSSCompilerInspection, type MasterCSSCompilerRenderBindingSession, type MasterCSSCompilerRenderBindingSessionOptions, type MasterCSSDependencyAnalysis, type MasterCSSDiagnosticsReportInput, type MasterCSSDirectiveCompilation, type MasterCSSDirectiveCompileOptions, type MasterCSSDirectiveExtractionPolicy, type MasterCSSDirectiveManifestInput, type MasterCSSImportGraphRequest, type MasterCSSInspectionReport, type MasterCSSLowerDirectivesOptions, type MasterCSSLowerDirectivesRequest, type MasterCSSLowerDirectivesResult, type MasterCSSNativeBindingLoadOptions, type MasterCSSPrepareStylesheetBundleRequest, type MasterCSSProjectAssetChange, type MasterCSSProjectComparison, type MasterCSSProjectComparisonRequest, type MasterCSSProjectEntryGraph, type MasterCSSProjectManifest, type MasterCSSProjectSnapshot, type MasterCSSRenderStylesheetBundleRequest, type MasterCSSResolvedImportGraph, type MasterCSSStandaloneDirectiveAnalysis, type MasterCSSStylesheetAsset, type MasterCSSStylesheetBundle, type MasterCSSWasmBindingLoadOptions, createCompilerBindingSession, createCompilerRenderBindingSession };
@@ -0,0 +1,42 @@
1
+ import { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION } from "./protocol.js";
2
+ import { normalizeBindingError } from "./normalize-error.js";
3
+ import { shouldLoadMasterCSSNativeBinding } from "./binding-options.js";
4
+ import { bindCompilerBindingSession } from "./compiler-binding-adapter.js";
5
+ import { createCompilerWasmBindingSession, createCompilerWasmRenderBindingSession } from "./compiler-binding-wasm.js";
6
+ import { MasterCSSError } from "@master/css-schema";
7
+ import { serializeMasterCSSManifest } from "@master/css-schema/manifest";
8
+ // src/compiler-binding.ts
9
+ async function loadNativeCompilerFactory() {
10
+ return await (import.meta.url.endsWith(".ts") ? import("./compiler.js") : import("./compiler.js"));
11
+ }
12
+ async function createCompilerBindingSession(options = {}) {
13
+ try {
14
+ if (shouldLoadMasterCSSNativeBinding(options.binding)) {
15
+ const { loadNativeCompilerBinding } = await loadNativeCompilerFactory();
16
+ const native = loadNativeCompilerBinding({
17
+ ...options.native,
18
+ required: options.binding === "native"
19
+ });
20
+ if (native) return bindCompilerBindingSession("native", {
21
+ ...native,
22
+ dispose: () => void 0
23
+ });
24
+ }
25
+ return await createCompilerWasmBindingSession(options.wasm);
26
+ } catch (cause) {
27
+ throw normalizeBindingError(cause, "compiler");
28
+ }
29
+ }
30
+ async function createCompilerRenderBindingSession(options, loadOptions = {}) {
31
+ try {
32
+ if (loadOptions.binding === "native") throw new MasterCSSError({
33
+ code: "NATIVE_UNAVAILABLE",
34
+ domain: "binding",
35
+ message: "The Master CSS compiler render session is only available through Wasm."
36
+ });
37
+ return await createCompilerWasmRenderBindingSession(serializeMasterCSSManifest(options.manifest), options.emittedGlobals === void 0 ? void 0 : JSON.stringify(options.emittedGlobals), loadOptions.wasm);
38
+ } catch (cause) {
39
+ throw normalizeBindingError(cause, "compiler");
40
+ }
41
+ }
42
+ export { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION, createCompilerBindingSession, createCompilerRenderBindingSession };
@@ -0,0 +1,52 @@
1
+ import { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION } from "./protocol.js";
2
+ import { NativeBindingError } from "./errors.js";
3
+ import { loadNativeBinding } from "./native-loader.js";
4
+ import { MasterCSSError } from "@master/css-schema";
5
+ // src/compiler.ts
6
+ function parse(value) {
7
+ return JSON.parse(value);
8
+ }
9
+ function bindingError(cause) {
10
+ if (cause instanceof MasterCSSError) return cause;
11
+ const code = cause instanceof NativeBindingError ? cause.code : "NATIVE_LOAD_FAILED";
12
+ return new MasterCSSError({
13
+ code,
14
+ domain: "binding",
15
+ message: cause instanceof Error ? cause.message : String(cause)
16
+ }, { cause });
17
+ }
18
+ function loadNativeCompilerBinding(moduleOptions = {}) {
19
+ try {
20
+ const loaded = loadNativeBinding(moduleOptions);
21
+ if (!loaded) return;
22
+ const nativeBinding = loaded.binding;
23
+ return Object.freeze({
24
+ findManifestEntries: (projectDir) => nativeBinding.findCssManifestEntries(projectDir),
25
+ loadProjectManifest: (projectDir, baseManifest, entries) => parse(nativeBinding.loadProjectManifestJson(projectDir, JSON.stringify(baseManifest), entries ? [...entries] : void 0)),
26
+ loadPreparedProjectManifest: (projectDir, baseManifest, graphs) => parse(nativeBinding.loadProjectManifestPreparedJson(projectDir, JSON.stringify(baseManifest), JSON.stringify(graphs))),
27
+ compareProjectSnapshots: (request) => parse(nativeBinding.compareProjectSnapshotsJson(JSON.stringify(request))),
28
+ inspectCSS: (source) => parse(nativeBinding.inspectCssJson(source)),
29
+ compileNativeCSS: (source, options) => parse(nativeBinding.compileNativeCssJson(source, options === void 0 ? void 0 : JSON.stringify(options))),
30
+ compileCSSDirectives: (source, options) => parse(nativeBinding.compileCssDirectivesJson(source, options === void 0 ? void 0 : JSON.stringify(options))),
31
+ analyzeCSSDependencies: (source) => parse(nativeBinding.analyzeCssDependenciesJson(source)),
32
+ analyzeStandaloneDirectives: (source) => parse(nativeBinding.analyzeStandaloneDirectivesJson(source)),
33
+ mergeCSSExtractionPolicies: (policies) => parse(nativeBinding.mergeCssExtractionPoliciesJson(JSON.stringify(policies))),
34
+ filterCSSExtractionCandidates: (candidates, blocklist) => nativeBinding.filterCssExtractionCandidates([...candidates], JSON.stringify(blocklist)),
35
+ compileManifestInput: (input, options) => parse(nativeBinding.compileManifestInputJson(JSON.stringify(input), options === void 0 ? void 0 : JSON.stringify(options))),
36
+ lowerCSSDirectives: (request, options) => parse(nativeBinding.lowerCssDirectivesJson(JSON.stringify(request), options === void 0 ? void 0 : JSON.stringify(options))),
37
+ normalizeManifest: (manifest) => parse(nativeBinding.normalizeManifestJson(JSON.stringify(manifest))),
38
+ normalizeDefaultManifest: (manifest) => parse(nativeBinding.normalizeDefaultManifestJson(JSON.stringify(manifest))),
39
+ compileDefaultPresetManifest: (request) => parse(nativeBinding.compileDefaultPresetManifestJson(JSON.stringify(request))),
40
+ resolveCSSStylesheetGraph: (request) => parse(nativeBinding.resolveCssStylesheetGraphJson(JSON.stringify(request))),
41
+ resolveCSSImportGraph: (request) => parse(nativeBinding.resolveCssImportGraphJson(JSON.stringify(request))),
42
+ prepareCSSStylesheetBundle: (request) => parse(nativeBinding.prepareCssStylesheetBundleJson(JSON.stringify(request))),
43
+ renderCSSStylesheetBundle: (request) => parse(nativeBinding.renderCssStylesheetBundleJson(JSON.stringify(request))),
44
+ compileCSSStylesheetGraph: (request) => parse(nativeBinding.compileCssStylesheetGraphJson(JSON.stringify(request))),
45
+ createInspectionReport: (input) => parse(nativeBinding.createInspectionReportJson(JSON.stringify(input))),
46
+ renderClassNames: (manifest, classNames) => parse(nativeBinding.renderClassesJson(JSON.stringify(manifest), [...classNames]))
47
+ });
48
+ } catch (cause) {
49
+ throw bindingError(cause);
50
+ }
51
+ }
52
+ export { MASTER_CSS_DIAGNOSTICS_REPORT_VERSION, loadNativeCompilerBinding };
@@ -0,0 +1,61 @@
1
+ import { callBinding } from "./normalize-error.js";
2
+ import { MasterCSSError } from "@master/css-schema";
3
+ // src/engine-binding-adapter.ts
4
+ function assertActive(disposed, domain) {
5
+ if (!disposed) return;
6
+ throw new MasterCSSError({
7
+ code: "SESSION_DISPOSED",
8
+ domain,
9
+ message: `The Master CSS ${domain} binding session has been disposed.`
10
+ });
11
+ }
12
+ function bindEngineBindingSession(binding, session) {
13
+ let disposed = false;
14
+ const invoke = (operation) => {
15
+ assertActive(disposed, "engine");
16
+ return callBinding("engine", operation);
17
+ };
18
+ const dispose = () => {
19
+ if (disposed) return;
20
+ disposed = true;
21
+ session.dispose();
22
+ };
23
+ return Object.freeze({
24
+ binding,
25
+ ensureClassRules: (classNames) => invoke(() => session.ensureClassRules(classNames)),
26
+ deleteClassRules: (classNames) => invoke(() => session.deleteClassRules(classNames)),
27
+ registerEmittedGlobals: (emittedGlobals) => invoke(() => session.registerEmittedGlobals(emittedGlobals)),
28
+ replaceEmittedGlobals: (emittedGlobals) => invoke(() => session.replaceEmittedGlobals(emittedGlobals)),
29
+ refresh: (source, emittedGlobals) => invoke(() => session.refresh(source, emittedGlobals)),
30
+ keyframeDefinitions: () => invoke(() => session.keyframeDefinitions()),
31
+ executionState: (classNames) => invoke(() => session.executionState(classNames)),
32
+ inspect: (className) => invoke(() => session.inspect(className)),
33
+ snapshot: () => invoke(() => session.snapshot()),
34
+ dispose,
35
+ [Symbol.dispose]: dispose
36
+ });
37
+ }
38
+ function bindRenderBindingSession(binding, session) {
39
+ let disposed = false;
40
+ const invoke = (operation) => {
41
+ assertActive(disposed, "server");
42
+ return callBinding("server", operation);
43
+ };
44
+ const dispose = () => {
45
+ if (disposed) return;
46
+ disposed = true;
47
+ session.dispose();
48
+ };
49
+ return Object.freeze({
50
+ binding,
51
+ nativeDeclarationCandidates: (classNames) => invoke(() => session.nativeDeclarationCandidates(classNames)),
52
+ ensureClassRules: (classNames) => invoke(() => session.ensureClassRules(classNames)),
53
+ ensureStylesheetResources: (nativeCSS) => invoke(() => session.ensureStylesheetResources(nativeCSS)),
54
+ emittedGlobals: () => invoke(() => session.emittedGlobals()),
55
+ snapshot: () => invoke(() => session.snapshot()),
56
+ snapshotForClassNames: (classNames) => invoke(() => session.snapshotForClassNames(classNames)),
57
+ dispose,
58
+ [Symbol.dispose]: dispose
59
+ });
60
+ }
61
+ export { bindEngineBindingSession, bindRenderBindingSession };
@@ -0,0 +1,8 @@
1
+ import { MasterCSSBindingLoadOptions, MasterCSSNativeBindingLoadOptions, MasterCSSWasmBindingLoadOptions } from "./binding-options.js";
2
+ import { MasterCSSEngineSource } from "./engine-contract.js";
3
+ import { MasterCSSEngineBindingSession, MasterCSSEngineBindingSessionOptions, MasterCSSRenderBindingSession, MasterCSSRenderBindingSessionOptions } from "./engine-binding.js";
4
+ import { MasterCSSManifest } from "@master/css-schema/manifest";
5
+ declare function createEngineBindingSession(options: MasterCSSEngineBindingSessionOptions, loadOptions?: MasterCSSBindingLoadOptions): Promise<MasterCSSEngineBindingSession>;
6
+ declare function createRenderBindingSession(_options: MasterCSSRenderBindingSessionOptions, _loadOptions?: MasterCSSBindingLoadOptions): Promise<MasterCSSRenderBindingSession>;
7
+ declare function compileRuntimeProgram(_manifest: MasterCSSManifest, _loadOptions?: MasterCSSBindingLoadOptions): Promise<Uint8Array>;
8
+ export { type MasterCSSBindingLoadOptions, type MasterCSSEngineBindingSession, type MasterCSSEngineBindingSessionOptions, type MasterCSSEngineSource, type MasterCSSNativeBindingLoadOptions, type MasterCSSRenderBindingSession, type MasterCSSRenderBindingSessionOptions, type MasterCSSWasmBindingLoadOptions, compileRuntimeProgram, createEngineBindingSession, createRenderBindingSession };
@@ -0,0 +1,35 @@
1
+ import { callBindingAsync } from "./normalize-error.js";
2
+ import { createJavaScriptEngineBindingSession, programRequired } from "./engine-binding-js.js";
3
+ import { MasterCSSError } from "@master/css-schema";
4
+ // src/engine-binding-browser.ts
5
+ function assertBrowserBinding(options) {
6
+ if (options.binding === "native") throw new MasterCSSError({
7
+ code: "NATIVE_UNAVAILABLE",
8
+ domain: "binding",
9
+ message: "Master CSS native bindings are unavailable in browsers."
10
+ });
11
+ if (options.binding === "wasm") throw new MasterCSSError({
12
+ code: "WASM_UNAVAILABLE",
13
+ domain: "binding",
14
+ message: "Master CSS Wasm engines are unavailable in browsers, which execute programs with the JavaScript engine."
15
+ });
16
+ }
17
+ function createEngineBindingSession(options, loadOptions = {}) {
18
+ return callBindingAsync("engine", async () => {
19
+ assertBrowserBinding(loadOptions);
20
+ return createJavaScriptEngineBindingSession(options);
21
+ });
22
+ }
23
+ function createRenderBindingSession(_options, _loadOptions = {}) {
24
+ return callBindingAsync("server", async () => {
25
+ throw new MasterCSSError({
26
+ code: "FEATURE_UNAVAILABLE",
27
+ domain: "server",
28
+ message: "Master CSS rendering is unavailable in browsers; use @master/css/node."
29
+ });
30
+ });
31
+ }
32
+ function compileRuntimeProgram(_manifest, _loadOptions = {}) {
33
+ return callBindingAsync("engine", async () => programRequired());
34
+ }
35
+ export { compileRuntimeProgram, createEngineBindingSession, createRenderBindingSession };
@@ -0,0 +1,81 @@
1
+ import { bindEngineBindingSession } from "./engine-binding-adapter.js";
2
+ import { EngineError, createEngineSession } from "./engine-js/src/session.js";
3
+ import { MASTER_CSS_DIAGNOSTIC_VERSION, MasterCSSError } from "@master/css-schema";
4
+ // src/engine-binding-js.ts
5
+ /** The JavaScript engine executes compiled programs; compiling a manifest is a Node build step. */
6
+ function programRequired() {
7
+ throw new MasterCSSError({
8
+ code: "INVALID_INPUT",
9
+ domain: "binding",
10
+ message: "Master CSS engines in browsers execute compiled runtime programs, not manifests. Compile the manifest with compileRuntimeProgram() from @master/css/node and pass { program }."
11
+ });
12
+ }
13
+ function program(source) {
14
+ return ArrayBuffer.isView(source) ? source : programRequired();
15
+ }
16
+ function invalidEmittedGlobals(message) {
17
+ throw new MasterCSSError({
18
+ code: "INVALID_INPUT",
19
+ domain: "binding",
20
+ message: `Invalid Master CSS emitted globals: ${message}`
21
+ });
22
+ }
23
+ const EMITTED_GLOBALS_FIELDS = /* @__PURE__ */ new Set(["variables", "keyframes"]);
24
+ /** Accepts what the engine's emitted globals schema accepts, as the Wasm engine binding does. */
25
+ function emittedGlobals(globals) {
26
+ if (globals === void 0) return;
27
+ for (const field of Object.keys(globals)) if (!EMITTED_GLOBALS_FIELDS.has(field)) invalidEmittedGlobals(`unknown field ${field}.`);
28
+ for (const field of ["variables", "keyframes"]) for (const [name, count] of Object.entries(globals[field] ?? {})) if (!Number.isInteger(count) || count < 0 || count > 4294967295) invalidEmittedGlobals(`${field}.${name} must be a count.`);
29
+ return globals;
30
+ }
31
+ /** Engine errors carry their diagnostic, as the Wasm engine reports them. */
32
+ function engineError(cause) {
33
+ if (!(cause instanceof EngineError)) return cause;
34
+ const diagnostic = {
35
+ version: MASTER_CSS_DIAGNOSTIC_VERSION,
36
+ code: cause.code,
37
+ domain: "engine",
38
+ severity: "error",
39
+ message: cause.message
40
+ };
41
+ return new MasterCSSError({
42
+ code: cause.code,
43
+ domain: "engine",
44
+ message: cause.message,
45
+ diagnostics: [diagnostic]
46
+ }, { cause });
47
+ }
48
+ function call(operation) {
49
+ try {
50
+ return operation();
51
+ } catch (cause) {
52
+ throw engineError(cause);
53
+ }
54
+ }
55
+ function bindSession(session) {
56
+ const dispose = () => session.dispose();
57
+ return bindEngineBindingSession("js", {
58
+ ensureClassRules: (classNames) => call(() => session.ensureClassRules(classNames)),
59
+ deleteClassRules: (classNames) => call(() => session.deleteClassRules(classNames)),
60
+ registerEmittedGlobals: (globals) => call(() => session.registerEmittedGlobals(emittedGlobals(globals))),
61
+ replaceEmittedGlobals: (globals) => call(() => session.replaceEmittedGlobals(emittedGlobals(globals))),
62
+ refresh: (source, globals) => call(() => session.refresh(program(source), emittedGlobals(globals))),
63
+ keyframeDefinitions: () => call(() => session.keyframeDefinitions()),
64
+ executionState: (classNames) => call(() => session.executionState(classNames)),
65
+ inspect: () => {
66
+ throw new MasterCSSError({
67
+ code: "FEATURE_UNAVAILABLE",
68
+ domain: "engine",
69
+ message: "Master CSS class inspection is unavailable in the JavaScript engine; use @master/css/node."
70
+ });
71
+ },
72
+ snapshot: () => call(() => session.snapshot()),
73
+ dispose,
74
+ [Symbol.dispose]: dispose
75
+ });
76
+ }
77
+ function createJavaScriptEngineBindingSession(options) {
78
+ const source = program(options.program ?? options.manifest);
79
+ return bindSession(call(() => createEngineSession(source, emittedGlobals(options.emittedGlobals))));
80
+ }
81
+ export { createJavaScriptEngineBindingSession, programRequired };
@@ -0,0 +1,9 @@
1
+ import { MasterCSSNativeBindingLoadOptions } from "./binding-options.js";
2
+ import { MasterCSSEngineSource } from "./engine-contract.js";
3
+ import { MasterCSSEngineBindingSession, MasterCSSEngineBindingSessionOptions, MasterCSSRenderBindingSession, MasterCSSRenderBindingSessionOptions } from "./engine-binding.js";
4
+ import { MasterCSSManifest } from "@master/css-schema/manifest";
5
+ declare function createEngineBindingSessionSync(options: MasterCSSEngineBindingSessionOptions, loadOptions?: MasterCSSNativeBindingLoadOptions): MasterCSSEngineBindingSession;
6
+ declare function createRenderBindingSessionSync(options: MasterCSSRenderBindingSessionOptions, loadOptions?: MasterCSSNativeBindingLoadOptions): MasterCSSRenderBindingSession;
7
+ /** Compiles a manifest into the runtime program that browsers execute. */
8
+ declare function compileRuntimeProgramSync(manifest: MasterCSSManifest, loadOptions?: MasterCSSNativeBindingLoadOptions): Uint8Array;
9
+ export { type MasterCSSEngineBindingSession, type MasterCSSEngineBindingSessionOptions, type MasterCSSEngineSource, type MasterCSSNativeBindingLoadOptions, type MasterCSSRenderBindingSession, type MasterCSSRenderBindingSessionOptions, compileRuntimeProgramSync, createEngineBindingSessionSync, createRenderBindingSessionSync };