cloesce 0.0.5-unstable.2 → 0.0.5-unstable.3

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.
@@ -1,7 +1,11 @@
1
1
  import { MediaType } from "../ast.js";
2
- type DeepPartialInner<T> = T extends (infer U)[] ? DeepPartialInner<U>[] : T extends object ? {
3
- [K in keyof T]?: DeepPartialInner<T[K]>;
4
- } : T | (null extends T ? null : never);
2
+ type DeepPartialInner<T> = T extends (infer U)[]
3
+ ? DeepPartialInner<U>[]
4
+ : T extends object
5
+ ? {
6
+ [K in keyof T]?: DeepPartialInner<T[K]>;
7
+ }
8
+ : T | (null extends T ? null : never);
5
9
  /**
6
10
  * Recursively makes all properties of a type optional — including nested objects and arrays.
7
11
  *
@@ -46,27 +50,30 @@ type DeepPartialInner<T> = T extends (infer U)[] ? DeepPartialInner<U>[] : T ext
46
50
  * ```
47
51
  */
48
52
  export type DeepPartial<T> = DeepPartialInner<T> & {
49
- __brand?: "Partial";
53
+ __brand?: "Partial";
50
54
  };
51
55
  export declare class Either<L, R> {
52
- private readonly inner;
53
- private constructor();
54
- get value(): L | R;
55
- static left<R>(): Either<void, R>;
56
- static left<L, R = never>(value: L): Either<L, R>;
57
- static right<R, L = never>(value: R): Either<L, R>;
58
- isLeft(): this is Either<L, never>;
59
- isRight(): this is Either<never, R>;
60
- unwrap(): R;
61
- unwrapLeft(): L;
62
- map<B>(fn: (val: R) => B): Either<L, B>;
63
- mapLeft<B>(fn: (val: L) => B): Either<B, R>;
56
+ private readonly inner;
57
+ private constructor();
58
+ get value(): L | R;
59
+ static left<R>(): Either<void, R>;
60
+ static left<L, R = never>(value: L): Either<L, R>;
61
+ static right<R, L = never>(value: R): Either<L, R>;
62
+ isLeft(): this is Either<L, never>;
63
+ isRight(): this is Either<never, R>;
64
+ unwrap(): R;
65
+ unwrapLeft(): L;
66
+ map<B>(fn: (val: R) => B): Either<L, B>;
67
+ mapLeft<B>(fn: (val: L) => B): Either<B, R>;
64
68
  }
65
69
  /**
66
70
  * Given a media type and some data, converts to a proper
67
71
  * `RequestInit` body,
68
72
  */
69
- export declare function requestBody(mediaType: MediaType, data: any | string | undefined): undefined | string | FormData;
73
+ export declare function requestBody(
74
+ mediaType: MediaType,
75
+ data: any | string | undefined,
76
+ ): undefined | string | FormData;
70
77
  /**
71
78
  * The result of a Workers endpoint.
72
79
  *
@@ -80,24 +87,40 @@ export declare function requestBody(mediaType: MediaType, data: any | string | u
80
87
  *
81
88
  */
82
89
  export declare class HttpResult<T = unknown> {
83
- ok: boolean;
84
- status: number;
85
- headers: Headers;
86
- data?: T | undefined;
87
- message?: string | undefined;
88
- mediaType?: MediaType | undefined;
89
- constructor(ok: boolean, status: number, headers: Headers, data?: T | undefined, message?: string | undefined, mediaType?: MediaType | undefined);
90
- static ok<T>(status: number, data?: T, init?: HeadersInit): HttpResult;
91
- static fail(status: number, message?: string, init?: HeadersInit): HttpResult<never>;
92
- toResponse(): Response;
93
- setMediaType(mediaType: MediaType): this;
94
- static fromResponse(response: Response, mediaType: MediaType, ctor?: any, array?: boolean): Promise<HttpResult<any>>;
90
+ ok: boolean;
91
+ status: number;
92
+ headers: Headers;
93
+ data?: T | undefined;
94
+ message?: string | undefined;
95
+ mediaType?: MediaType | undefined;
96
+ constructor(
97
+ ok: boolean,
98
+ status: number,
99
+ headers: Headers,
100
+ data?: T | undefined,
101
+ message?: string | undefined,
102
+ mediaType?: MediaType | undefined,
103
+ );
104
+ static ok<T>(status: number, data?: T, init?: HeadersInit): HttpResult;
105
+ static fail(
106
+ status: number,
107
+ message?: string,
108
+ init?: HeadersInit,
109
+ ): HttpResult<never>;
110
+ toResponse(): Response;
111
+ setMediaType(mediaType: MediaType): this;
112
+ static fromResponse(
113
+ response: Response,
114
+ mediaType: MediaType,
115
+ ctor?: any,
116
+ array?: boolean,
117
+ ): Promise<HttpResult<any>>;
95
118
  }
96
119
  export type Stream = ReadableStream<Uint8Array>;
97
120
  export declare function b64ToU8(b64: string): Uint8Array;
98
121
  export declare function u8ToB64(u8: Uint8Array): string;
99
122
  export type KeysOfType<T, U> = {
100
- [K in keyof T]: T[K] extends U ? (K extends string ? K : never) : never;
123
+ [K in keyof T]: T[K] extends U ? (K extends string ? K : never) : never;
101
124
  }[keyof T];
102
125
  export {};
103
- //# sourceMappingURL=common.d.ts.map
126
+ //# sourceMappingURL=common.d.ts.map
package/dist/ui/common.js CHANGED
@@ -1,62 +1,64 @@
1
1
  import { MediaType } from "../ast.js";
2
2
  export class Either {
3
- inner;
4
- constructor(inner) {
5
- this.inner = inner;
6
- }
7
- get value() {
8
- return this.inner.ok ? this.inner.right : this.inner.left;
9
- }
10
- static left(value) {
11
- return new Either({ ok: false, left: value });
12
- }
13
- static right(value) {
14
- return new Either({ ok: true, right: value });
15
- }
16
- isLeft() {
17
- return !this.inner.ok;
18
- }
19
- isRight() {
20
- return this.inner.ok;
21
- }
22
- unwrap() {
23
- if (!this.inner.ok) {
24
- throw new Error("Tried to unwrap a Left value");
25
- }
26
- return this.inner.right;
27
- }
28
- unwrapLeft() {
29
- if (this.inner.ok) {
30
- throw new Error("Tried to unwrapLeft a Right value");
31
- }
32
- return this.inner.left;
33
- }
34
- map(fn) {
35
- return this.inner.ok
36
- ? Either.right(fn(this.inner.right))
37
- : Either.left(this.inner.left);
38
- }
39
- mapLeft(fn) {
40
- return this.inner.ok
41
- ? Either.right(this.inner.right)
42
- : Either.left(fn(this.inner.left));
43
- }
3
+ inner;
4
+ constructor(inner) {
5
+ this.inner = inner;
6
+ }
7
+ get value() {
8
+ return this.inner.ok ? this.inner.right : this.inner.left;
9
+ }
10
+ static left(value) {
11
+ return new Either({ ok: false, left: value });
12
+ }
13
+ static right(value) {
14
+ return new Either({ ok: true, right: value });
15
+ }
16
+ isLeft() {
17
+ return !this.inner.ok;
18
+ }
19
+ isRight() {
20
+ return this.inner.ok;
21
+ }
22
+ unwrap() {
23
+ if (!this.inner.ok) {
24
+ throw new Error("Tried to unwrap a Left value");
25
+ }
26
+ return this.inner.right;
27
+ }
28
+ unwrapLeft() {
29
+ if (this.inner.ok) {
30
+ throw new Error("Tried to unwrapLeft a Right value");
31
+ }
32
+ return this.inner.left;
33
+ }
34
+ map(fn) {
35
+ return this.inner.ok
36
+ ? Either.right(fn(this.inner.right))
37
+ : Either.left(this.inner.left);
38
+ }
39
+ mapLeft(fn) {
40
+ return this.inner.ok
41
+ ? Either.right(this.inner.right)
42
+ : Either.left(fn(this.inner.left));
43
+ }
44
44
  }
45
45
  /**
46
46
  * Given a media type and some data, converts to a proper
47
47
  * `RequestInit` body,
48
48
  */
49
49
  export function requestBody(mediaType, data) {
50
- switch (mediaType) {
51
- case MediaType.Json: {
52
- return JSON.stringify(data ?? {}, (_, v) => v instanceof Uint8Array ? u8ToB64(v) : v);
53
- }
54
- case MediaType.Octet: {
55
- // JSON structure isn't needed; assume the first
56
- // value is the stream data
57
- return Object.values(data)[0];
58
- }
59
- }
50
+ switch (mediaType) {
51
+ case MediaType.Json: {
52
+ return JSON.stringify(data ?? {}, (_, v) =>
53
+ v instanceof Uint8Array ? u8ToB64(v) : v,
54
+ );
55
+ }
56
+ case MediaType.Octet: {
57
+ // JSON structure isn't needed; assume the first
58
+ // value is the stream data
59
+ return Object.values(data)[0];
60
+ }
61
+ }
60
62
  }
61
63
  /**
62
64
  * The result of a Workers endpoint.
@@ -71,121 +73,131 @@ export function requestBody(mediaType, data) {
71
73
  *
72
74
  */
73
75
  export class HttpResult {
74
- ok;
75
- status;
76
- headers;
77
- data;
78
- message;
79
- mediaType;
80
- constructor(ok, status, headers, data, message, mediaType) {
81
- this.ok = ok;
82
- this.status = status;
83
- this.headers = headers;
84
- this.data = data;
85
- this.message = message;
86
- this.mediaType = mediaType;
87
- }
88
- static ok(status, data, init) {
89
- const headers = new Headers(init);
90
- return new HttpResult(true, status, headers, data, undefined);
91
- }
92
- static fail(status, message, init) {
93
- const headers = new Headers(init);
94
- return new HttpResult(false, status, headers, undefined, message);
95
- }
96
- toResponse() {
97
- switch (this.mediaType) {
98
- case MediaType.Json: {
99
- this.headers.set("Content-Type", "application/json");
100
- break;
101
- }
102
- case MediaType.Octet: {
103
- this.headers.set("Content-Type", "application/octet-stream");
104
- break;
105
- }
106
- case undefined: {
107
- // Errors are always text.
108
- this.headers.set("Content-Type", "text/plain");
109
- return new Response(this.message, {
110
- status: this.status,
111
- headers: this.headers,
112
- });
113
- }
114
- }
115
- return new Response(requestBody(this.mediaType, this.data), {
116
- status: this.status,
117
- headers: this.headers,
76
+ ok;
77
+ status;
78
+ headers;
79
+ data;
80
+ message;
81
+ mediaType;
82
+ constructor(ok, status, headers, data, message, mediaType) {
83
+ this.ok = ok;
84
+ this.status = status;
85
+ this.headers = headers;
86
+ this.data = data;
87
+ this.message = message;
88
+ this.mediaType = mediaType;
89
+ }
90
+ static ok(status, data, init) {
91
+ const headers = new Headers(init);
92
+ return new HttpResult(true, status, headers, data, undefined);
93
+ }
94
+ static fail(status, message, init) {
95
+ const headers = new Headers(init);
96
+ return new HttpResult(false, status, headers, undefined, message);
97
+ }
98
+ toResponse() {
99
+ switch (this.mediaType) {
100
+ case MediaType.Json: {
101
+ this.headers.set("Content-Type", "application/json");
102
+ break;
103
+ }
104
+ case MediaType.Octet: {
105
+ this.headers.set("Content-Type", "application/octet-stream");
106
+ break;
107
+ }
108
+ case undefined: {
109
+ // Errors are always text.
110
+ this.headers.set("Content-Type", "text/plain");
111
+ return new Response(this.message, {
112
+ status: this.status,
113
+ headers: this.headers,
118
114
  });
119
- }
120
- setMediaType(mediaType) {
121
- this.mediaType = mediaType;
122
- return this;
123
- }
124
- static async fromResponse(response, mediaType, ctor, array = false) {
125
- if (response.status >= 400) {
126
- return new HttpResult(false, response.status, response.headers, undefined, await response.text());
115
+ }
116
+ }
117
+ return new Response(requestBody(this.mediaType, this.data), {
118
+ status: this.status,
119
+ headers: this.headers,
120
+ });
121
+ }
122
+ setMediaType(mediaType) {
123
+ this.mediaType = mediaType;
124
+ return this;
125
+ }
126
+ static async fromResponse(response, mediaType, ctor, array = false) {
127
+ if (response.status >= 400) {
128
+ return new HttpResult(
129
+ false,
130
+ response.status,
131
+ response.headers,
132
+ undefined,
133
+ await response.text(),
134
+ );
135
+ }
136
+ function instantiate(json, ctor) {
137
+ switch (ctor) {
138
+ case Date: {
139
+ return new Date(json);
127
140
  }
128
- function instantiate(json, ctor) {
129
- switch (ctor) {
130
- case Date: {
131
- return new Date(json);
132
- }
133
- case Uint8Array: {
134
- return b64ToU8(json);
135
- }
136
- case undefined: {
137
- return json;
138
- }
139
- default: {
140
- return ctor.fromJson(json);
141
- }
142
- }
141
+ case Uint8Array: {
142
+ return b64ToU8(json);
143
143
  }
144
- async function data() {
145
- switch (mediaType) {
146
- case MediaType.Json: {
147
- let json = await response.json();
148
- if (array) {
149
- for (let i = 0; i < json.length; i++) {
150
- json[i] = instantiate(json[i], ctor);
151
- }
152
- }
153
- else {
154
- json = instantiate(json, ctor);
155
- }
156
- return json;
157
- }
158
- case MediaType.Octet: {
159
- return response.body;
160
- }
161
- }
144
+ case undefined: {
145
+ return json;
146
+ }
147
+ default: {
148
+ return ctor.fromJson(json);
162
149
  }
163
- return new HttpResult(true, response.status, response.headers, await data());
150
+ }
164
151
  }
152
+ async function data() {
153
+ switch (mediaType) {
154
+ case MediaType.Json: {
155
+ let json = await response.json();
156
+ if (array) {
157
+ for (let i = 0; i < json.length; i++) {
158
+ json[i] = instantiate(json[i], ctor);
159
+ }
160
+ } else {
161
+ json = instantiate(json, ctor);
162
+ }
163
+ return json;
164
+ }
165
+ case MediaType.Octet: {
166
+ return response.body;
167
+ }
168
+ }
169
+ }
170
+ return new HttpResult(
171
+ true,
172
+ response.status,
173
+ response.headers,
174
+ await data(),
175
+ );
176
+ }
165
177
  }
166
178
  export function b64ToU8(b64) {
167
- // Prefer Buffer in Node.js environments
168
- if (typeof Buffer !== "undefined") {
169
- const buffer = Buffer.from(b64, "base64");
170
- return new Uint8Array(buffer);
171
- }
172
- // Use atob only in browser environments
173
- const s = atob(b64);
174
- const u8 = new Uint8Array(s.length);
175
- for (let i = 0; i < s.length; i++) {
176
- u8[i] = s.charCodeAt(i);
177
- }
178
- return u8;
179
+ // Prefer Buffer in Node.js environments
180
+ if (typeof Buffer !== "undefined") {
181
+ const buffer = Buffer.from(b64, "base64");
182
+ return new Uint8Array(buffer);
183
+ }
184
+ // Use atob only in browser environments
185
+ const s = atob(b64);
186
+ const u8 = new Uint8Array(s.length);
187
+ for (let i = 0; i < s.length; i++) {
188
+ u8[i] = s.charCodeAt(i);
189
+ }
190
+ return u8;
179
191
  }
180
192
  export function u8ToB64(u8) {
181
- // Prefer Buffer in Node.js environments
182
- if (typeof Buffer !== "undefined") {
183
- return Buffer.from(u8).toString("base64");
184
- }
185
- // Use btoa only in browser environments
186
- let s = "";
187
- for (let i = 0; i < u8.length; i++) {
188
- s += String.fromCharCode(u8[i]);
189
- }
190
- return btoa(s);
193
+ // Prefer Buffer in Node.js environments
194
+ if (typeof Buffer !== "undefined") {
195
+ return Buffer.from(u8).toString("base64");
196
+ }
197
+ // Use btoa only in browser environments
198
+ let s = "";
199
+ for (let i = 0; i < u8.length; i++) {
200
+ s += String.fromCharCode(u8[i]);
201
+ }
202
+ return btoa(s);
191
203
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cloesce",
3
- "version": "0.0.5-unstable.2",
3
+ "version": "0.0.5-unstable.3",
4
4
  "description": "A tool to extract and compile TypeScript code into something wrangler can consume and deploy for D1 Databases and Cloudflare Workers",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",