aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/api')
-rw-r--r--src/api/schema.d.ts344
-rw-r--r--src/api/schema.js295
-rw-r--r--src/api/schema.peechy46
-rw-r--r--src/api/schema.ts184
-rw-r--r--src/api/schema.zig525
5 files changed, 1050 insertions, 344 deletions
diff --git a/src/api/schema.d.ts b/src/api/schema.d.ts
index f89eb0e40..ff4b54a30 100644
--- a/src/api/schema.d.ts
+++ b/src/api/schema.d.ts
@@ -1,4 +1,4 @@
-import type { ByteBuffer } from "peechy";
+import type {ByteBuffer} from "peechy";
type byte = number;
type float = number;
@@ -12,177 +12,191 @@ type int32 = number;
type float32 = number;
type uint16 = number;
type uint32 = number;
-export enum Loader {
- jsx = 1,
- js = 2,
- ts = 3,
- tsx = 4,
- css = 5,
- file = 6,
- json = 7,
-}
-export const LoaderKeys = {
- 1: "jsx",
- jsx: "jsx",
- 2: "js",
- js: "js",
- 3: "ts",
- ts: "ts",
- 4: "tsx",
- tsx: "tsx",
- 5: "css",
- css: "css",
- 6: "file",
- file: "file",
- 7: "json",
- json: "json",
-};
-export enum JSXRuntime {
- automatic = 1,
- classic = 2,
-}
-export const JSXRuntimeKeys = {
- 1: "automatic",
- automatic: "automatic",
- 2: "classic",
- classic: "classic",
-};
-export enum TransformResponseStatus {
- success = 1,
- fail = 2,
-}
-export const TransformResponseStatusKeys = {
- 1: "success",
- success: "success",
- 2: "fail",
- fail: "fail",
-};
-export enum MessageKind {
- err = 1,
- warn = 2,
- note = 3,
- debug = 4,
-}
-export const MessageKindKeys = {
- 1: "err",
- err: "err",
- 2: "warn",
- warn: "warn",
- 3: "note",
- note: "note",
- 4: "debug",
- debug: "debug",
-};
-export interface JSX {
- factory: string;
- runtime: JSXRuntime;
- fragment: string;
- production: boolean;
- import_source: string;
- react_fast_refresh: boolean;
- loader_keys: string[];
- loader_values: Loader[];
-}
+ export enum Loader {
+ jsx = 1,
+ js = 2,
+ ts = 3,
+ tsx = 4,
+ css = 5,
+ file = 6,
+ json = 7
+ }
+ export const LoaderKeys = {
+ 1: "jsx",
+ jsx: "jsx",
+ 2: "js",
+ js: "js",
+ 3: "ts",
+ ts: "ts",
+ 4: "tsx",
+ tsx: "tsx",
+ 5: "css",
+ css: "css",
+ 6: "file",
+ file: "file",
+ 7: "json",
+ json: "json"
+ }
+ export enum ResolveMode {
+ disable = 1,
+ lazy = 2,
+ dev = 3,
+ bundle = 4
+ }
+ export const ResolveModeKeys = {
+ 1: "disable",
+ disable: "disable",
+ 2: "lazy",
+ lazy: "lazy",
+ 3: "dev",
+ dev: "dev",
+ 4: "bundle",
+ bundle: "bundle"
+ }
+ export enum Platform {
+ browser = 1,
+ node = 2
+ }
+ export const PlatformKeys = {
+ 1: "browser",
+ browser: "browser",
+ 2: "node",
+ node: "node"
+ }
+ export enum JSXRuntime {
+ automatic = 1,
+ classic = 2
+ }
+ export const JSXRuntimeKeys = {
+ 1: "automatic",
+ automatic: "automatic",
+ 2: "classic",
+ classic: "classic"
+ }
+ export enum TransformResponseStatus {
+ success = 1,
+ fail = 2
+ }
+ export const TransformResponseStatusKeys = {
+ 1: "success",
+ success: "success",
+ 2: "fail",
+ fail: "fail"
+ }
+ export enum MessageKind {
+ err = 1,
+ warn = 2,
+ note = 3,
+ debug = 4
+ }
+ export const MessageKindKeys = {
+ 1: "err",
+ err: "err",
+ 2: "warn",
+ warn: "warn",
+ 3: "note",
+ note: "note",
+ 4: "debug",
+ debug: "debug"
+ }
+ export interface JSX {
+ factory: string;
+ runtime: JSXRuntime;
+ fragment: string;
+ development: boolean;
+ import_source: string;
+ react_fast_refresh: boolean;
+ }
-export interface TransformOptions {
- jsx: JSX;
- ts: boolean;
- base_path: string;
- define_keys: string[];
- define_values: string[];
-}
+ export interface TransformOptions {
+ jsx?: JSX;
+ tsconfig_override?: string;
+ resolve?: ResolveMode;
+ public_url?: string;
+ absolute_working_dir?: string;
+ define_keys?: string[];
+ define_values?: string[];
+ preserve_symlinks?: boolean;
+ entry_points?: string[];
+ write?: boolean;
+ inject?: string[];
+ output_dir?: string;
+ external?: string[];
+ loader_keys?: string[];
+ loader_values?: Loader[];
+ main_fields?: string[];
+ platform?: Platform;
+ }
-export interface FileHandle {
- path: string;
- size: uint;
- fd: uint;
-}
+ export interface FileHandle {
+ path: string;
+ size: uint;
+ fd: uint;
+ }
-export interface Transform {
- handle?: FileHandle;
- path?: string;
- contents?: string;
- loader?: Loader;
- options?: TransformOptions;
-}
+ export interface Transform {
+ handle?: FileHandle;
+ path?: string;
+ contents?: Uint8Array;
+ loader?: Loader;
+ options?: TransformOptions;
+ }
-export interface OutputFile {
- data: Uint8Array;
- path: string;
-}
+ export interface OutputFile {
+ data: Uint8Array;
+ path: string;
+ }
-export interface TransformResponse {
- status: TransformResponseStatus;
- files: OutputFile[];
- errors: Message[];
-}
+ export interface TransformResponse {
+ status: TransformResponseStatus;
+ files: OutputFile[];
+ errors: Message[];
+ }
-export interface Location {
- file: string;
- namespace: string;
- line: int32;
- column: int32;
- line_text: string;
- suggestion: string;
- offset: uint;
-}
+ export interface Location {
+ file: string;
+ namespace: string;
+ line: int32;
+ column: int32;
+ line_text: string;
+ suggestion: string;
+ offset: uint;
+ }
-export interface MessageData {
- text?: string;
- location?: Location;
-}
+ export interface MessageData {
+ text?: string;
+ location?: Location;
+ }
-export interface Message {
- kind: MessageKind;
- data: MessageData;
- notes: MessageData[];
-}
+ export interface Message {
+ kind: MessageKind;
+ data: MessageData;
+ notes: MessageData[];
+ }
-export interface Log {
- warnings: uint32;
- errors: uint32;
- msgs: Message[];
-}
+ export interface Log {
+ warnings: uint32;
+ errors: uint32;
+ msgs: Message[];
+ }
-export declare function encodeJSX(message: JSX, bb: ByteBuffer): void;
-export declare function decodeJSX(buffer: ByteBuffer): JSX;
-export declare function encodeTransformOptions(
- message: TransformOptions,
- bb: ByteBuffer
-): void;
-export declare function decodeTransformOptions(
- buffer: ByteBuffer
-): TransformOptions;
-export declare function encodeFileHandle(
- message: FileHandle,
- bb: ByteBuffer
-): void;
-export declare function decodeFileHandle(buffer: ByteBuffer): FileHandle;
-export declare function encodeTransform(
- message: Transform,
- bb: ByteBuffer
-): void;
-export declare function decodeTransform(buffer: ByteBuffer): Transform;
-export declare function encodeOutputFile(
- message: OutputFile,
- bb: ByteBuffer
-): void;
-export declare function decodeOutputFile(buffer: ByteBuffer): OutputFile;
-export declare function encodeTransformResponse(
- message: TransformResponse,
- bb: ByteBuffer
-): void;
-export declare function decodeTransformResponse(
- buffer: ByteBuffer
-): TransformResponse;
-export declare function encodeLocation(message: Location, bb: ByteBuffer): void;
-export declare function decodeLocation(buffer: ByteBuffer): Location;
-export declare function encodeMessageData(
- message: MessageData,
- bb: ByteBuffer
-): void;
-export declare function decodeMessageData(buffer: ByteBuffer): MessageData;
-export declare function encodeMessage(message: Message, bb: ByteBuffer): void;
-export declare function decodeMessage(buffer: ByteBuffer): Message;
-export declare function encodeLog(message: Log, bb: ByteBuffer): void;
-export declare function decodeLog(buffer: ByteBuffer): Log;
+ export declare function encodeJSX(message: JSX, bb: ByteBuffer): void;
+ export declare function decodeJSX(buffer: ByteBuffer): JSX;
+ export declare function encodeTransformOptions(message: TransformOptions, bb: ByteBuffer): void;
+ export declare function decodeTransformOptions(buffer: ByteBuffer): TransformOptions;
+ export declare function encodeFileHandle(message: FileHandle, bb: ByteBuffer): void;
+ export declare function decodeFileHandle(buffer: ByteBuffer): FileHandle;
+ export declare function encodeTransform(message: Transform, bb: ByteBuffer): void;
+ export declare function decodeTransform(buffer: ByteBuffer): Transform;
+ export declare function encodeOutputFile(message: OutputFile, bb: ByteBuffer): void;
+ export declare function decodeOutputFile(buffer: ByteBuffer): OutputFile;
+ export declare function encodeTransformResponse(message: TransformResponse, bb: ByteBuffer): void;
+ export declare function decodeTransformResponse(buffer: ByteBuffer): TransformResponse;
+ export declare function encodeLocation(message: Location, bb: ByteBuffer): void;
+ export declare function decodeLocation(buffer: ByteBuffer): Location;
+ export declare function encodeMessageData(message: MessageData, bb: ByteBuffer): void;
+ export declare function decodeMessageData(buffer: ByteBuffer): MessageData;
+ export declare function encodeMessage(message: Message, bb: ByteBuffer): void;
+ export declare function decodeMessage(buffer: ByteBuffer): Message;
+ export declare function encodeLog(message: Log, bb: ByteBuffer): void;
+ export declare function decodeLog(buffer: ByteBuffer): Log;
diff --git a/src/api/schema.js b/src/api/schema.js
index 484ced1df..0986f0d0b 100644
--- a/src/api/schema.js
+++ b/src/api/schema.js
@@ -30,6 +30,38 @@ const LoaderKeys = {
"file": "file",
"json": "json"
};
+const ResolveMode = {
+ "1": 1,
+ "2": 2,
+ "3": 3,
+ "4": 4,
+ "disable": 1,
+ "lazy": 2,
+ "dev": 3,
+ "bundle": 4
+};
+const ResolveModeKeys = {
+ "1": "disable",
+ "2": "lazy",
+ "3": "dev",
+ "4": "bundle",
+ "disable": "disable",
+ "lazy": "lazy",
+ "dev": "dev",
+ "bundle": "bundle"
+};
+const Platform = {
+ "1": 1,
+ "2": 2,
+ "browser": 1,
+ "node": 2
+};
+const PlatformKeys = {
+ "1": "browser",
+ "2": "node",
+ "browser": "browser",
+ "node": "node"
+};
const JSXRuntime = {
"1": 1,
"2": 2,
@@ -49,15 +81,9 @@ function decodeJSX(bb) {
result["factory"] = bb.readString();
result["runtime"] = JSXRuntime[bb.readByte()];
result["fragment"] = bb.readString();
- result["production"] = !!bb.readByte();
+ result["development"] = !!bb.readByte();
result["import_source"] = bb.readString();
result["react_fast_refresh"] = !!bb.readByte();
- var length = bb.readVarUint();
- var values = result["loader_keys"] = Array(length);
- for (var i = 0; i < length; i++) values[i] = bb.readString();
- var length = bb.readVarUint();
- var values = result["loader_values"] = Array(length);
- for (var i = 0; i < length; i++) values[i] = Loader[bb.readByte()];
return result;
}
@@ -86,11 +112,11 @@ bb.writeByte(encoded);
throw new Error("Missing required field \"fragment\"");
}
- var value = message["production"];
+ var value = message["development"];
if (value != null) {
bb.writeByte(value);
} else {
- throw new Error("Missing required field \"production\"");
+ throw new Error("Missing required field \"development\"");
}
var value = message["import_source"];
@@ -107,96 +133,257 @@ bb.writeByte(encoded);
throw new Error("Missing required field \"react_fast_refresh\"");
}
- var value = message["loader_keys"];
+}
+
+function decodeTransformOptions(bb) {
+ var result = {};
+
+ while (true) {
+ switch (bb.readByte()) {
+ case 0:
+ return result;
+
+ case 1:
+ result["jsx"] = decodeJSX(bb);
+ break;
+
+ case 2:
+ result["tsconfig_override"] = bb.readString();
+ break;
+
+ case 3:
+ result["resolve"] = ResolveMode[bb.readByte()];
+ break;
+
+ case 4:
+ result["public_url"] = bb.readString();
+ break;
+
+ case 5:
+ result["absolute_working_dir"] = bb.readString();
+ break;
+
+ case 6:
+ var length = bb.readVarUint();
+ var values = result["define_keys"] = Array(length);
+ for (var i = 0; i < length; i++) values[i] = bb.readString();
+ break;
+
+ case 7:
+ var length = bb.readVarUint();
+ var values = result["define_values"] = Array(length);
+ for (var i = 0; i < length; i++) values[i] = bb.readString();
+ break;
+
+ case 8:
+ result["preserve_symlinks"] = !!bb.readByte();
+ break;
+
+ case 9:
+ var length = bb.readVarUint();
+ var values = result["entry_points"] = Array(length);
+ for (var i = 0; i < length; i++) values[i] = bb.readString();
+ break;
+
+ case 10:
+ result["write"] = !!bb.readByte();
+ break;
+
+ case 11:
+ var length = bb.readVarUint();
+ var values = result["inject"] = Array(length);
+ for (var i = 0; i < length; i++) values[i] = bb.readString();
+ break;
+
+ case 12:
+ result["output_dir"] = bb.readString();
+ break;
+
+ case 13:
+ var length = bb.readVarUint();
+ var values = result["external"] = Array(length);
+ for (var i = 0; i < length; i++) values[i] = bb.readString();
+ break;
+
+ case 14:
+ var length = bb.readVarUint();
+ var values = result["loader_keys"] = Array(length);
+ for (var i = 0; i < length; i++) values[i] = bb.readString();
+ break;
+
+ case 15:
+ var length = bb.readVarUint();
+ var values = result["loader_values"] = Array(length);
+ for (var i = 0; i < length; i++) values[i] = Loader[bb.readByte()];
+ break;
+
+ case 16:
+ var length = bb.readVarUint();
+ var values = result["main_fields"] = Array(length);
+ for (var i = 0; i < length; i++) values[i] = bb.readString();
+ break;
+
+ case 17:
+ result["platform"] = Platform[bb.readByte()];
+ break;
+
+ default:
+ throw new Error("Attempted to parse invalid message");
+ }
+ }
+}
+
+function encodeTransformOptions(message, bb) {
+
+ var value = message["jsx"];
+ if (value != null) {
+ bb.writeByte(1);
+ encodeJSX(value, bb);
+ }
+
+ var value = message["tsconfig_override"];
+ if (value != null) {
+ bb.writeByte(2);
+ bb.writeString(value);
+ }
+
+ var value = message["resolve"];
+ if (value != null) {
+ bb.writeByte(3);
+ var encoded = ResolveMode[value];
+if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + " for enum \"ResolveMode\"");
+bb.writeByte(encoded);
+ }
+
+ var value = message["public_url"];
+ if (value != null) {
+ bb.writeByte(4);
+ bb.writeString(value);
+ }
+
+ var value = message["absolute_working_dir"];
+ if (value != null) {
+ bb.writeByte(5);
+ bb.writeString(value);
+ }
+
+ var value = message["define_keys"];
if (value != null) {
+ bb.writeByte(6);
var values = value, n = values.length;
bb.writeVarUint(n);
for (var i = 0; i < n; i++) {
value = values[i];
bb.writeString(value);
}
- } else {
- throw new Error("Missing required field \"loader_keys\"");
}
- var value = message["loader_values"];
+ var value = message["define_values"];
if (value != null) {
+ bb.writeByte(7);
var values = value, n = values.length;
bb.writeVarUint(n);
for (var i = 0; i < n; i++) {
value = values[i];
- var encoded = Loader[value];
-if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + " for enum \"Loader\"");
-bb.writeByte(encoded);
+ bb.writeString(value);
}
- } else {
- throw new Error("Missing required field \"loader_values\"");
}
-}
-
-function decodeTransformOptions(bb) {
- var result = {};
-
- result["jsx"] = decodeJSX(bb);
- result["ts"] = !!bb.readByte();
- result["base_path"] = bb.readString();
- var length = bb.readVarUint();
- var values = result["define_keys"] = Array(length);
- for (var i = 0; i < length; i++) values[i] = bb.readString();
- var length = bb.readVarUint();
- var values = result["define_values"] = Array(length);
- for (var i = 0; i < length; i++) values[i] = bb.readString();
- return result;
-}
-
-function encodeTransformOptions(message, bb) {
+ var value = message["preserve_symlinks"];
+ if (value != null) {
+ bb.writeByte(8);
+ bb.writeByte(value);
+ }
- var value = message["jsx"];
+ var value = message["entry_points"];
if (value != null) {
- encodeJSX(value, bb);
- } else {
- throw new Error("Missing required field \"jsx\"");
+ bb.writeByte(9);
+ var values = value, n = values.length;
+ bb.writeVarUint(n);
+ for (var i = 0; i < n; i++) {
+ value = values[i];
+ bb.writeString(value);
+ }
}
- var value = message["ts"];
+ var value = message["write"];
if (value != null) {
+ bb.writeByte(10);
bb.writeByte(value);
- } else {
- throw new Error("Missing required field \"ts\"");
}
- var value = message["base_path"];
+ var value = message["inject"];
if (value != null) {
+ bb.writeByte(11);
+ var values = value, n = values.length;
+ bb.writeVarUint(n);
+ for (var i = 0; i < n; i++) {
+ value = values[i];
+ bb.writeString(value);
+ }
+ }
+
+ var value = message["output_dir"];
+ if (value != null) {
+ bb.writeByte(12);
bb.writeString(value);
- } else {
- throw new Error("Missing required field \"base_path\"");
}
- var value = message["define_keys"];
+ var value = message["external"];
if (value != null) {
+ bb.writeByte(13);
var values = value, n = values.length;
bb.writeVarUint(n);
for (var i = 0; i < n; i++) {
value = values[i];
bb.writeString(value);
}
- } else {
- throw new Error("Missing required field \"define_keys\"");
}
- var value = message["define_values"];
+ var value = message["loader_keys"];
if (value != null) {
+ bb.writeByte(14);
var values = value, n = values.length;
bb.writeVarUint(n);
for (var i = 0; i < n; i++) {
value = values[i];
bb.writeString(value);
}
- } else {
- throw new Error("Missing required field \"define_values\"");
}
+ var value = message["loader_values"];
+ if (value != null) {
+ bb.writeByte(15);
+ var values = value, n = values.length;
+ bb.writeVarUint(n);
+ for (var i = 0; i < n; i++) {
+ value = values[i];
+ var encoded = Loader[value];
+if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + " for enum \"Loader\"");
+bb.writeByte(encoded);
+ }
+ }
+
+ var value = message["main_fields"];
+ if (value != null) {
+ bb.writeByte(16);
+ var values = value, n = values.length;
+ bb.writeVarUint(n);
+ for (var i = 0; i < n; i++) {
+ value = values[i];
+ bb.writeString(value);
+ }
+ }
+
+ var value = message["platform"];
+ if (value != null) {
+ bb.writeByte(17);
+ var encoded = Platform[value];
+if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + " for enum \"Platform\"");
+bb.writeByte(encoded);
+ }
+ bb.writeByte(0);
+
}
function decodeFileHandle(bb) {
@@ -603,6 +790,10 @@ function encodeLog(message, bb) {
export { Loader }
export { LoaderKeys }
+export { ResolveMode }
+export { ResolveModeKeys }
+export { Platform }
+export { PlatformKeys }
export { JSXRuntime }
export { JSXRuntimeKeys }
export { decodeJSX }
diff --git a/src/api/schema.peechy b/src/api/schema.peechy
index 1a5a8cc00..442dd3f84 100644
--- a/src/api/schema.peechy
+++ b/src/api/schema.peechy
@@ -10,6 +10,17 @@ smol Loader {
json = 7;
}
+smol ResolveMode {
+ disable = 1;
+ lazy = 2;
+ dev = 3;
+ bundle = 4;
+}
+
+smol Platform {
+ browser = 1;
+ node = 2;
+}
smol JSXRuntime {
automatic = 1;
@@ -20,25 +31,42 @@ struct JSX {
string factory;
JSXRuntime runtime;
string fragment;
- bool production;
+ bool development;
// Probably react
string import_source;
bool react_fast_refresh;
- string[] loader_keys;
- Loader[] loader_values;
}
-struct TransformOptions {
- JSX jsx;
- bool ts;
+message TransformOptions {
+ JSX jsx = 1;
+ string tsconfig_override = 2;
+ ResolveMode resolve = 3;
+
+ string public_url = 4;
+ string absolute_working_dir = 5;
+
+ string[] define_keys = 6;
+ string[] define_values = 7;
+
+ bool preserve_symlinks = 8;
+
+ string[] entry_points = 9;
+ bool write = 10;
+
+ string[] inject = 11;
+ string output_dir = 12;
+
+ string[] external = 13;
+
+ string[] loader_keys = 14;
+ Loader[] loader_values = 15;
- string base_path;
- string[] define_keys;
- string[] define_values;
+ string[] main_fields = 16;
+ Platform platform = 17;
}
struct FileHandle {
diff --git a/src/api/schema.ts b/src/api/schema.ts
new file mode 100644
index 000000000..9d1c44c51
--- /dev/null
+++ b/src/api/schema.ts
@@ -0,0 +1,184 @@
+import type {ByteBuffer} from "peechy";
+
+type byte = number;
+type float = number;
+type int = number;
+type alphanumeric = string;
+type uint = number;
+type int8 = number;
+type lowp = number;
+type int16 = number;
+type int32 = number;
+type float32 = number;
+type uint16 = number;
+type uint32 = number;
+ export enum Loader {
+ jsx = 1,
+ js = 2,
+ ts = 3,
+ tsx = 4,
+ css = 5,
+ file = 6,
+ json = 7
+ }
+ export const LoaderKeys = {
+ 1: "jsx",
+ jsx: "jsx",
+ 2: "js",
+ js: "js",
+ 3: "ts",
+ ts: "ts",
+ 4: "tsx",
+ tsx: "tsx",
+ 5: "css",
+ css: "css",
+ 6: "file",
+ file: "file",
+ 7: "json",
+ json: "json"
+ }
+ export enum ResolveMode {
+ disable = 1,
+ lazy = 2
+ }
+ export const ResolveModeKeys = {
+ 1: "disable",
+ disable: "disable",
+ 2: "lazy",
+ lazy: "lazy"
+ }
+ export enum JSXRuntime {
+ automatic = 1,
+ classic = 2
+ }
+ export const JSXRuntimeKeys = {
+ 1: "automatic",
+ automatic: "automatic",
+ 2: "classic",
+ classic: "classic"
+ }
+ export enum TransformResponseStatus {
+ success = 1,
+ fail = 2
+ }
+ export const TransformResponseStatusKeys = {
+ 1: "success",
+ success: "success",
+ 2: "fail",
+ fail: "fail"
+ }
+ export enum MessageKind {
+ err = 1,
+ warn = 2,
+ note = 3,
+ debug = 4
+ }
+ export const MessageKindKeys = {
+ 1: "err",
+ err: "err",
+ 2: "warn",
+ warn: "warn",
+ 3: "note",
+ note: "note",
+ 4: "debug",
+ debug: "debug"
+ }
+ export interface JSX {
+ factory: string;
+ runtime: JSXRuntime;
+ fragment: string;
+ development: boolean;
+ import_source: string;
+ react_fast_refresh: boolean;
+ loader_keys: string[];
+ loader_values: Loader[];
+ }
+
+ export interface TransformOptions {
+ jsx?: JSX;
+ tsconfig_override?: string;
+ resolve?: ResolveMode;
+ public_url?: string;
+ absolute_working_dir?: string;
+ define_keys?: string[];
+ define_values?: string[];
+ preserve_symlinks?: boolean;
+ entry_points?: string[];
+ write?: boolean;
+ inject?: string[];
+ output_dir?: string;
+ externals?: string[];
+ }
+
+ export interface FileHandle {
+ path: string;
+ size: uint;
+ fd: uint;
+ }
+
+ export interface Transform {
+ handle?: FileHandle;
+ path?: string;
+ contents?: Uint8Array;
+ loader?: Loader;
+ options?: TransformOptions;
+ }
+
+ export interface OutputFile {
+ data: Uint8Array;
+ path: string;
+ }
+
+ export interface TransformResponse {
+ status: TransformResponseStatus;
+ files: OutputFile[];
+ errors: Message[];
+ }
+
+ export interface Location {
+ file: string;
+ namespace: string;
+ line: int32;
+ column: int32;
+ line_text: string;
+ suggestion: string;
+ offset: uint;
+ }
+
+ export interface MessageData {
+ text?: string;
+ location?: Location;
+ }
+
+ export interface Message {
+ kind: MessageKind;
+ data: MessageData;
+ notes: MessageData[];
+ }
+
+ export interface Log {
+ warnings: uint32;
+ errors: uint32;
+ msgs: Message[];
+ }
+
+ export declare function encodeJSX(message: JSX, bb: ByteBuffer): void;
+ export declare function decodeJSX(buffer: ByteBuffer): JSX;
+ export declare function encodeTransformOptions(message: TransformOptions, bb: ByteBuffer): void;
+ export declare function decodeTransformOptions(buffer: ByteBuffer): TransformOptions;
+ export declare function encodeFileHandle(message: FileHandle, bb: ByteBuffer): void;
+ export declare function decodeFileHandle(buffer: ByteBuffer): FileHandle;
+ export declare function encodeTransform(message: Transform, bb: ByteBuffer): void;
+ export declare function decodeTransform(buffer: ByteBuffer): Transform;
+ export declare function encodeOutputFile(message: OutputFile, bb: ByteBuffer): void;
+ export declare function decodeOutputFile(buffer: ByteBuffer): OutputFile;
+ export declare function encodeTransformResponse(message: TransformResponse, bb: ByteBuffer): void;
+ export declare function decodeTransformResponse(buffer: ByteBuffer): TransformResponse;
+ export declare function encodeLocation(message: Location, bb: ByteBuffer): void;
+ export declare function decodeLocation(buffer: ByteBuffer): Location;
+ export declare function encodeMessageData(message: MessageData, bb: ByteBuffer): void;
+ export declare function decodeMessageData(buffer: ByteBuffer): MessageData;
+ export declare function encodeMessage(message: Message, bb: ByteBuffer): void;
+ export declare function decodeMessage(buffer: ByteBuffer): Message;
+ export declare function encodeLog(message: Log, bb: ByteBuffer): void;
+ export declare function decodeLog(buffer: ByteBuffer): Log;
diff --git a/src/api/schema.zig b/src/api/schema.zig
index 5931158df..b6f1a47f0 100644
--- a/src/api/schema.zig
+++ b/src/api/schema.zig
@@ -31,6 +31,42 @@ pub const Api = struct {
}
};
+ pub const ResolveMode = enum(u8) {
+ _none,
+ /// disable
+ disable,
+
+ /// lazy
+ lazy,
+
+ /// dev
+ dev,
+
+ /// bundle
+ bundle,
+
+ _,
+
+ pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void {
+ return try std.json.stringify(@tagName(self), opts, o);
+ }
+ };
+
+ pub const Platform = enum(u8) {
+ _none,
+ /// browser
+ browser,
+
+ /// node
+ node,
+
+ _,
+
+ pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void {
+ return try std.json.stringify(@tagName(self), opts, o);
+ }
+ };
+
pub const JsxRuntime = enum(u8) {
_none,
/// automatic
@@ -48,29 +84,23 @@ pub const Api = struct {
pub const Jsx = struct {
/// factory
- factory: []u8,
+ factory: []const u8,
/// runtime
runtime: JsxRuntime,
/// fragment
- fragment: []u8,
+ fragment: []const u8,
- /// production
- production: bool = false,
+ /// development
+ development: bool = false,
/// import_source
- import_source: []u8,
+ import_source: []const u8,
/// react_fast_refresh
react_fast_refresh: bool = false,
- /// loader_keys
- loader_keys: [][]u8,
-
- /// loader_values
- loader_values: []Loader,
-
pub fn decode(allocator: *std.mem.Allocator, reader: anytype) anyerror!Jsx {
var obj = std.mem.zeroes(Jsx);
try update(&obj, allocator, reader);
@@ -89,39 +119,17 @@ pub const Api = struct {
result.fragment = try allocator.alloc(u8, length);
}
_ = try reader.readAll(result.fragment);
- result.production = (try reader.readByte()) == @as(u8, 1);
+ result.development = (try reader.readByte()) == @as(u8, 1);
length = try reader.readIntNative(u32);
if (result.import_source.len != length) {
result.import_source = try allocator.alloc(u8, length);
}
_ = try reader.readAll(result.import_source);
result.react_fast_refresh = (try reader.readByte()) == @as(u8, 1);
- {
- var array_count = try reader.readIntNative(u32);
- if (array_count != result.loader_keys.len) {
- result.loader_keys = try allocator.alloc([]u8, array_count);
- }
- length = try reader.readIntNative(u32);
- for (result.loader_keys) |content, j| {
- if (result.loader_keys[j].len != length and length > 0) {
- result.loader_keys[j] = try allocator.alloc(u8, length);
- }
- _ = try reader.readAll(result.loader_keys[j]);
- }
- }
- length = try reader.readIntNative(u32);
- result.loader_values = try allocator.alloc(Loader, length);
- {
- var j: usize = 0;
- while (j < length) : (j += 1) {
- result.loader_values[j] = try reader.readEnum(Loader, .Little);
- }
- }
return;
}
pub fn encode(result: *const @This(), writer: anytype) anyerror!void {
- var n: usize = 0;
try writer.writeIntNative(u32, @intCast(u32, result.factory.len));
try writer.writeAll(std.mem.sliceAsBytes(result.factory));
@@ -130,50 +138,67 @@ pub const Api = struct {
try writer.writeIntNative(u32, @intCast(u32, result.fragment.len));
try writer.writeAll(std.mem.sliceAsBytes(result.fragment));
- try writer.writeByte(@boolToInt(result.production));
+ try writer.writeByte(@boolToInt(result.development));
try writer.writeIntNative(u32, @intCast(u32, result.import_source.len));
try writer.writeAll(std.mem.sliceAsBytes(result.import_source));
try writer.writeByte(@boolToInt(result.react_fast_refresh));
-
- n = result.loader_keys.len;
- _ = try writer.writeIntNative(u32, @intCast(u32, n));
- {
- var j: usize = 0;
- while (j < n) : (j += 1) {
- _ = try writer.writeIntNative(u32, @intCast(u32, result.loader_keys[j].len));
- try writer.writeAll(std.mem.sliceAsBytes(result.loader_keys[j]));
- }
- }
-
- n = result.loader_values.len;
- _ = try writer.writeIntNative(u32, @intCast(u32, n));
- {
- var j: usize = 0;
- while (j < n) : (j += 1) {
- try writer.writeByte(@enumToInt(result.loader_values[j]));
- }
- }
return;
}
};
pub const TransformOptions = struct {
/// jsx
- jsx: Jsx,
+ jsx: ?Jsx = null,
- /// ts
- ts: bool = false,
+ /// tsconfig_override
+ tsconfig_override: ?[]const u8 = null,
+
+ /// resolve
+ resolve: ?ResolveMode = null,
+
+ /// public_url
+ public_url: ?[]const u8 = null,
- /// base_path
- base_path: []u8,
+ /// absolute_working_dir
+ absolute_working_dir: ?[]const u8 = null,
/// define_keys
- define_keys: [][]u8,
+ define_keys: []const []const u8,
/// define_values
- define_values: [][]u8,
+ define_values: []const []const u8,
+
+ /// preserve_symlinks
+ preserve_symlinks: ?bool = null,
+
+ /// entry_points
+ entry_points: []const []const u8,
+
+ /// write
+ write: ?bool = null,
+
+ /// inject
+ inject: []const []const u8,
+
+ /// output_dir
+ output_dir: ?[]const u8 = null,
+
+ /// external
+ external: []const []const u8,
+
+ /// loader_keys
+ loader_keys: []const []const u8,
+
+ /// loader_values
+ loader_values: []const Loader,
+
+ /// main_fields
+ main_fields: []const []const u8,
+
+ /// platform
+ platform: ?Platform = null,
pub fn decode(allocator: *std.mem.Allocator, reader: anytype) anyerror!TransformOptions {
var obj = std.mem.zeroes(TransformOptions);
@@ -182,77 +207,341 @@ pub const Api = struct {
}
pub fn update(result: *TransformOptions, allocator: *std.mem.Allocator, reader: anytype) anyerror!void {
var length: usize = 0;
- result.jsx = try Jsx.decode(allocator, reader);
- result.ts = (try reader.readByte()) == @as(u8, 1);
- length = try reader.readIntNative(u32);
- if (result.base_path.len != length) {
- result.base_path = try allocator.alloc(u8, length);
+ while (true) {
+ const field_type: u8 = try reader.readByte();
+ switch (field_type) {
+ 0 => {
+ return;
+ },
+
+ 1 => {
+ result.jsx = try Jsx.decode(allocator, reader);
+ },
+ 2 => {
+ length = try reader.readIntNative(u32);
+ if ((result.tsconfig_override orelse &([_]u8{})).len != length) {
+ result.tsconfig_override = try allocator.alloc(u8, length);
+ }
+ _ = try reader.readAll(result.tsconfig_override.?);
+ },
+ 3 => {
+ result.resolve = try reader.readEnum(ResolveMode, .Little);
+ },
+ 4 => {
+ length = try reader.readIntNative(u32);
+ if ((result.public_url orelse &([_]u8{})).len != length) {
+ result.public_url = try allocator.alloc(u8, length);
+ }
+ _ = try reader.readAll(result.public_url.?);
+ },
+ 5 => {
+ length = try reader.readIntNative(u32);
+ if ((result.absolute_working_dir orelse &([_]u8{})).len != length) {
+ result.absolute_working_dir = try allocator.alloc(u8, length);
+ }
+ _ = try reader.readAll(result.absolute_working_dir.?);
+ },
+ 6 => {
+ {
+ var array_count = try reader.readIntNative(u32);
+ if (array_count != result.define_keys.len) {
+ result.define_keys = try allocator.alloc([]const u8, array_count);
+ }
+ length = try reader.readIntNative(u32);
+ for (result.define_keys) |content, j| {
+ if (result.define_keys[j].len != length and length > 0) {
+ result.define_keys[j] = try allocator.alloc(u8, length);
+ }
+ _ = try reader.readAll(result.define_keys[j].?);
+ }
+ }
+ },
+ 7 => {
+ {
+ var array_count = try reader.readIntNative(u32);
+ if (array_count != result.define_values.len) {
+ result.define_values = try allocator.alloc([]const u8, array_count);
+ }
+ length = try reader.readIntNative(u32);
+ for (result.define_values) |content, j| {
+ if (result.define_values[j].len != length and length > 0) {
+ result.define_values[j] = try allocator.alloc(u8, length);
+ }
+ _ = try reader.readAll(result.define_values[j].?);
+ }
+ }
+ },
+ 8 => {
+ result.preserve_symlinks = (try reader.readByte()) == @as(u8, 1);
+ },
+ 9 => {
+ {
+ var array_count = try reader.readIntNative(u32);
+ if (array_count != result.entry_points.len) {
+ result.entry_points = try allocator.alloc([]const u8, array_count);
+ }
+ length = try reader.readIntNative(u32);
+ for (result.entry_points) |content, j| {
+ if (result.entry_points[j].len != length and length > 0) {
+ result.entry_points[j] = try allocator.alloc(u8, length);
+ }
+ _ = try reader.readAll(result.entry_points[j].?);
+ }
+ }
+ },
+ 10 => {
+ result.write = (try reader.readByte()) == @as(u8, 1);
+ },
+ 11 => {
+ {
+ var array_count = try reader.readIntNative(u32);
+ if (array_count != result.inject.len) {
+ result.inject = try allocator.alloc([]const u8, array_count);
+ }
+ length = try reader.readIntNative(u32);
+ for (result.inject) |content, j| {
+ if (result.inject[j].len != length and length > 0) {
+ result.inject[j] = try allocator.alloc(u8, length);
+ }
+ _ = try reader.readAll(result.inject[j].?);
+ }
+ }
+ },
+ 12 => {
+ length = try reader.readIntNative(u32);
+ if ((result.output_dir orelse &([_]u8{})).len != length) {
+ result.output_dir = try allocator.alloc(u8, length);
+ }
+ _ = try reader.readAll(result.output_dir.?);
+ },
+ 13 => {
+ {
+ var array_count = try reader.readIntNative(u32);
+ if (array_count != result.external.len) {
+ result.external = try allocator.alloc([]const u8, array_count);
+ }
+ length = try reader.readIntNative(u32);
+ for (result.external) |content, j| {
+ if (result.external[j].len != length and length > 0) {
+ result.external[j] = try allocator.alloc(u8, length);
+ }
+ _ = try reader.readAll(result.external[j].?);
+ }
+ }
+ },
+ 14 => {
+ {
+ var array_count = try reader.readIntNative(u32);
+ if (array_count != result.loader_keys.len) {
+ result.loader_keys = try allocator.alloc([]const u8, array_count);
+ }
+ length = try reader.readIntNative(u32);
+ for (result.loader_keys) |content, j| {
+ if (result.loader_keys[j].len != length and length > 0) {
+ result.loader_keys[j] = try allocator.alloc(u8, length);
+ }
+ _ = try reader.readAll(result.loader_keys[j].?);
+ }
+ }
+ },
+ 15 => {
+ length = try reader.readIntNative(u32);
+ if (result.loader_values != length) {
+ result.loader_values = try allocator.alloc(Loader, length);
+ }
+ {
+ var j: usize = 0;
+ while (j < length) : (j += 1) {
+ result.loader_values[j] = try reader.readEnum(Loader, .Little);
+ }
+ }
+ },
+ 16 => {
+ {
+ var array_count = try reader.readIntNative(u32);
+ if (array_count != result.main_fields.len) {
+ result.main_fields = try allocator.alloc([]const u8, array_count);
+ }
+ length = try reader.readIntNative(u32);
+ for (result.main_fields) |content, j| {
+ if (result.main_fields[j].len != length and length > 0) {
+ result.main_fields[j] = try allocator.alloc(u8, length);
+ }
+ _ = try reader.readAll(result.main_fields[j].?);
+ }
+ }
+ },
+ 17 => {
+ result.platform = try reader.readEnum(Platform, .Little);
+ },
+ else => {
+ return error.InvalidMessage;
+ },
+ }
}
- _ = try reader.readAll(result.base_path);
- {
- var array_count = try reader.readIntNative(u32);
- if (array_count != result.define_keys.len) {
- result.define_keys = try allocator.alloc([]u8, array_count);
+ }
+
+ pub fn encode(result: *const @This(), writer: anytype) anyerror!void {
+ var n: usize = 0;
+ if (result.jsx) |jsx| {
+ try writer.writeByte(1);
+ try jsx.encode(writer);
+ }
+
+ if (result.tsconfig_override) |tsconfig_override| {
+ try writer.writeByte(2);
+ try writer.writeIntNative(u32, @intCast(u32, tsconfig_override.len));
+ try writer.writeAll(std.mem.sliceAsBytes(tsconfig_override));
+ }
+
+ if (result.resolve) |resolve| {
+ try writer.writeByte(3);
+ try writer.writeIntNative(@TypeOf(@enumToInt(result.resolve orelse unreachable)), @enumToInt(result.resolve orelse unreachable));
+ }
+
+ if (result.public_url) |public_url| {
+ try writer.writeByte(4);
+ try writer.writeIntNative(u32, @intCast(u32, public_url.len));
+ try writer.writeAll(std.mem.sliceAsBytes(public_url));
+ }
+
+ if (result.absolute_working_dir) |absolute_working_dir| {
+ try writer.writeByte(5);
+ try writer.writeIntNative(u32, @intCast(u32, absolute_working_dir.len));
+ try writer.writeAll(std.mem.sliceAsBytes(absolute_working_dir));
+ }
+
+ if (result.define_keys) |define_keys| {
+ try writer.writeByte(6);
+ n = result.define_keys.len;
+ _ = try writer.writeIntNative(u32, @intCast(u32, n));
+ {
+ var j: usize = 0;
+ while (j < n) : (j += 1) {
+ _ = try writer.writeIntNative(u32, @intCast(u32, result.define_keys[j].len));
+ try writer.writeAll(std.mem.sliceAsBytes(define_keys[j]));
+ }
}
- length = try reader.readIntNative(u32);
- for (result.define_keys) |content, j| {
- if (result.define_keys[j].len != length and length > 0) {
- result.define_keys[j] = try allocator.alloc(u8, length);
+ }
+
+ if (result.define_values) |define_values| {
+ try writer.writeByte(7);
+ n = result.define_values.len;
+ _ = try writer.writeIntNative(u32, @intCast(u32, n));
+ {
+ var j: usize = 0;
+ while (j < n) : (j += 1) {
+ _ = try writer.writeIntNative(u32, @intCast(u32, result.define_values[j].len));
+ try writer.writeAll(std.mem.sliceAsBytes(define_values[j]));
}
- _ = try reader.readAll(result.define_keys[j]);
}
}
- {
- var array_count = try reader.readIntNative(u32);
- if (array_count != result.define_values.len) {
- result.define_values = try allocator.alloc([]u8, array_count);
+
+ if (result.preserve_symlinks) |preserve_symlinks| {
+ try writer.writeByte(8);
+ try writer.writeByte(@boolToInt(preserve_symlinks));
+ }
+
+ if (result.entry_points) |entry_points| {
+ try writer.writeByte(9);
+ n = result.entry_points.len;
+ _ = try writer.writeIntNative(u32, @intCast(u32, n));
+ {
+ var j: usize = 0;
+ while (j < n) : (j += 1) {
+ _ = try writer.writeIntNative(u32, @intCast(u32, result.entry_points[j].len));
+ try writer.writeAll(std.mem.sliceAsBytes(entry_points[j]));
+ }
}
- length = try reader.readIntNative(u32);
- for (result.define_values) |content, j| {
- if (result.define_values[j].len != length and length > 0) {
- result.define_values[j] = try allocator.alloc(u8, length);
+ }
+
+ if (result.write) |write| {
+ try writer.writeByte(10);
+ try writer.writeByte(@boolToInt(write));
+ }
+
+ if (result.inject) |inject| {
+ try writer.writeByte(11);
+ n = result.inject.len;
+ _ = try writer.writeIntNative(u32, @intCast(u32, n));
+ {
+ var j: usize = 0;
+ while (j < n) : (j += 1) {
+ _ = try writer.writeIntNative(u32, @intCast(u32, result.inject[j].len));
+ try writer.writeAll(std.mem.sliceAsBytes(inject[j]));
}
- _ = try reader.readAll(result.define_values[j]);
}
}
- return;
- }
- pub fn encode(result: *const @This(), writer: anytype) anyerror!void {
- var n: usize = 0;
- try result.jsx.encode(writer);
+ if (result.output_dir) |output_dir| {
+ try writer.writeByte(12);
+ try writer.writeIntNative(u32, @intCast(u32, output_dir.len));
+ try writer.writeAll(std.mem.sliceAsBytes(output_dir));
+ }
- try writer.writeByte(@boolToInt(result.ts));
+ if (result.external) |external| {
+ try writer.writeByte(13);
+ n = result.external.len;
+ _ = try writer.writeIntNative(u32, @intCast(u32, n));
+ {
+ var j: usize = 0;
+ while (j < n) : (j += 1) {
+ _ = try writer.writeIntNative(u32, @intCast(u32, result.external[j].len));
+ try writer.writeAll(std.mem.sliceAsBytes(external[j]));
+ }
+ }
+ }
- try writer.writeIntNative(u32, @intCast(u32, result.base_path.len));
- try writer.writeAll(std.mem.sliceAsBytes(result.base_path));
+ if (result.loader_keys) |loader_keys| {
+ try writer.writeByte(14);
+ n = result.loader_keys.len;
+ _ = try writer.writeIntNative(u32, @intCast(u32, n));
+ {
+ var j: usize = 0;
+ while (j < n) : (j += 1) {
+ _ = try writer.writeIntNative(u32, @intCast(u32, result.loader_keys[j].len));
+ try writer.writeAll(std.mem.sliceAsBytes(loader_keys[j]));
+ }
+ }
+ }
- n = result.define_keys.len;
- _ = try writer.writeIntNative(u32, @intCast(u32, n));
- {
- var j: usize = 0;
- while (j < n) : (j += 1) {
- _ = try writer.writeIntNative(u32, @intCast(u32, result.define_keys[j].len));
- try writer.writeAll(std.mem.sliceAsBytes(result.define_keys[j]));
+ if (result.loader_values) |loader_values| {
+ try writer.writeByte(15);
+ n = result.loader_values.len;
+ _ = try writer.writeIntNative(u32, @intCast(u32, n));
+ {
+ var j: usize = 0;
+ while (j < n) : (j += 1) {
+ try writer.writeByte(@enumToInt(result.loader_values[j] orelse unreachable));
+ }
}
}
- n = result.define_values.len;
- _ = try writer.writeIntNative(u32, @intCast(u32, n));
- {
- var j: usize = 0;
- while (j < n) : (j += 1) {
- _ = try writer.writeIntNative(u32, @intCast(u32, result.define_values[j].len));
- try writer.writeAll(std.mem.sliceAsBytes(result.define_values[j]));
+ if (result.main_fields) |main_fields| {
+ try writer.writeByte(16);
+ n = result.main_fields.len;
+ _ = try writer.writeIntNative(u32, @intCast(u32, n));
+ {
+ var j: usize = 0;
+ while (j < n) : (j += 1) {
+ _ = try writer.writeIntNative(u32, @intCast(u32, result.main_fields[j].len));
+ try writer.writeAll(std.mem.sliceAsBytes(main_fields[j]));
+ }
}
}
+
+ if (result.platform) |platform| {
+ try writer.writeByte(17);
+ try writer.writeIntNative(@TypeOf(@enumToInt(result.platform orelse unreachable)), @enumToInt(result.platform orelse unreachable));
+ }
+ try writer.writeByte(0);
return;
}
};
pub const FileHandle = struct {
/// path
- path: []u8,
+ path: []const u8,
/// size
size: u32 = 0,
@@ -293,10 +582,10 @@ pub const Api = struct {
handle: ?FileHandle = null,
/// path
- path: ?[]u8 = null,
+ path: ?[]const u8 = null,
/// contents
- contents: []u8,
+ contents: []const u8,
/// loader
loader: ?Loader = null,
@@ -330,7 +619,7 @@ pub const Api = struct {
},
3 => {
length = @intCast(usize, try reader.readIntNative(u32));
- if (result.contents.len != length) {
+ if (result.contents != length) {
result.contents = try allocator.alloc(u8, length);
}
_ = try reader.readAll(result.contents);
@@ -397,10 +686,10 @@ pub const Api = struct {
pub const OutputFile = struct {
/// data
- data: []u8,
+ data: []const u8,
/// path
- path: []u8,
+ path: []const u8,
pub fn decode(allocator: *std.mem.Allocator, reader: anytype) anyerror!OutputFile {
var obj = std.mem.zeroes(OutputFile);
@@ -517,10 +806,10 @@ pub const Api = struct {
pub const Location = struct {
/// file
- file: []u8,
+ file: []const u8,
/// namespace
- namespace: []u8,
+ namespace: []const u8,
/// line
line: i32 = 0,
@@ -529,10 +818,10 @@ pub const Api = struct {
column: i32 = 0,
/// line_text
- line_text: []u8,
+ line_text: []const u8,
/// suggestion
- suggestion: []u8,
+ suggestion: []const u8,
/// offset
offset: u32 = 0,
@@ -594,7 +883,7 @@ pub const Api = struct {
pub const MessageData = struct {
/// text
- text: ?[]u8 = null,
+ text: ?[]const u8 = null,
/// location
location: ?Location = null,