encore.dev 1.35.3 → 1.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/api/mod.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  /* eslint-disable */
2
2
 
3
+ import type { IncomingMessage, ServerResponse } from "http";
4
+
3
5
  export type Method =
4
6
  | "GET"
5
7
  | "POST"
@@ -22,14 +24,10 @@ export type Query<
22
24
  > = TypeOrName extends string ? string : TypeOrName;
23
25
 
24
26
  export interface APIOptions {
25
- method?: Method | Method[];
27
+ method?: Method | Method[] | "*";
26
28
  path?: string;
27
29
  expose?: boolean;
28
30
  auth?: boolean;
29
-
30
- // access?: "public" | "auth" | "private";
31
- // tags?: string[];
32
- // raw?: boolean;
33
31
  }
34
32
 
35
33
  export type Handler<
@@ -49,5 +47,11 @@ export function api<
49
47
  return fn;
50
48
  }
51
49
 
50
+ export type RawHandler = (req: IncomingMessage, resp: ServerResponse) => void;
51
+
52
+ api.raw = function raw(options: APIOptions, fn: RawHandler) {
53
+ return fn;
54
+ };
55
+
52
56
  export { APIError, ErrCode } from "./error";
53
57
  export { Gateway, type GatewayConfig } from "./gateway";
@@ -4,7 +4,7 @@ import * as runtime from "./internal/runtime/mod";
4
4
  export interface AppMeta {
5
5
  // The Encore application ID. If the application is not linked to the Encore platform this will be an empty string.
6
6
  // To link to the Encore platform run `encore app link` from your terminal in the root directory of the Encore app.
7
- appID: string;
7
+ appId: string;
8
8
 
9
9
  // The base URL which can be used to call the API of this running application.
10
10
  //
@@ -12,7 +12,7 @@ export interface AppMeta {
12
12
  //
13
13
  // If a custom domain is used for this environment it is returned here, but note that
14
14
  // changes only take effect at the time of deployment while custom domains can be updated at any time.
15
- apiBaseURL: string;
15
+ apiBaseUrl: string;
16
16
 
17
17
  // Information about the environment the app is running in.
18
18
  environment: EnvironmentMeta;
@@ -82,8 +82,8 @@ export function appMeta(): AppMeta {
82
82
  if (cached === null) {
83
83
  let rt = runtime.RT.appMeta();
84
84
  cached = {
85
- appID: rt.appId,
86
- apiBaseURL: rt.apiBaseUrl,
85
+ appId: rt.appId,
86
+ apiBaseUrl: rt.apiBaseUrl,
87
87
  environment: {
88
88
  name: rt.environment.name,
89
89
  type: envType(rt.environment.type),
package/dist/api/mod.d.ts CHANGED
@@ -1,13 +1,19 @@
1
+ /// <reference types="node" />
2
+ import type { IncomingMessage, ServerResponse } from "http";
1
3
  export type Method = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS" | "TRACE" | "CONNECT";
2
4
  export type Header<TypeOrName extends string | number | boolean = string, Name extends string = ""> = TypeOrName extends string ? string : TypeOrName;
3
5
  export type Query<TypeOrName extends string | number | boolean = string, Name extends string = ""> = TypeOrName extends string ? string : TypeOrName;
4
6
  export interface APIOptions {
5
- method?: Method | Method[];
7
+ method?: Method | Method[] | "*";
6
8
  path?: string;
7
9
  expose?: boolean;
8
10
  auth?: boolean;
9
11
  }
10
12
  export type Handler<Params extends object | void = void, Response extends object | void = void> = Params extends void ? () => Promise<Response> : (params: Params) => Promise<Response>;
11
13
  export declare function api<Params extends object | void = void, Response extends object | void = void>(options: APIOptions, fn: Handler<Params, Response>): Handler<Params, Response>;
14
+ export declare namespace api {
15
+ var raw: (options: APIOptions, fn: RawHandler) => RawHandler;
16
+ }
17
+ export type RawHandler = (req: IncomingMessage, resp: ServerResponse) => void;
12
18
  export { APIError, ErrCode } from "./error.js";
13
19
  export { Gateway, type GatewayConfig } from "./gateway.js";
package/dist/api/mod.js CHANGED
@@ -2,6 +2,9 @@
2
2
  export function api(options, fn) {
3
3
  return fn;
4
4
  }
5
+ api.raw = function raw(options, fn) {
6
+ return fn;
7
+ };
5
8
  export { APIError, ErrCode } from "./error.js";
6
9
  export { Gateway } from "./gateway.js";
7
10
  //# sourceMappingURL=mod.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../api/mod.ts"],"names":[],"mappings":"AAAA,oBAAoB;AAyCpB,MAAM,UAAU,GAAG,CAIjB,OAAmB,EACnB,EAA6B;IAE7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAsB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../api/mod.ts"],"names":[],"mappings":"AAAA,oBAAoB;AAuCpB,MAAM,UAAU,GAAG,CAIjB,OAAmB,EACnB,EAA6B;IAE7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAID,GAAG,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,OAAmB,EAAE,EAAc;IACxD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAsB,MAAM,WAAW,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export interface AppMeta {
2
- appID: string;
3
- apiBaseURL: string;
2
+ appId: string;
3
+ apiBaseUrl: string;
4
4
  environment: EnvironmentMeta;
5
5
  build: BuildMeta;
6
6
  deploy: DeployMeta;
@@ -8,8 +8,8 @@ export function appMeta() {
8
8
  if (cached === null) {
9
9
  let rt = runtime.RT.appMeta();
10
10
  cached = {
11
- appID: rt.appId,
12
- apiBaseURL: rt.apiBaseUrl,
11
+ appId: rt.appId,
12
+ apiBaseUrl: rt.apiBaseUrl,
13
13
  environment: {
14
14
  name: rt.environment.name,
15
15
  type: envType(rt.environment.type),
@@ -58,4 +58,4 @@ function cloudProvider(rtType) {
58
58
  }
59
59
  // The cached app metadata. Set on first use.
60
60
  let cached = null;
61
- //# sourceMappingURL=meta.js.map
61
+ //# sourceMappingURL=app_meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_meta.js","sourceRoot":"","sources":["../app_meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AA2ElD,yDAAyD;AACzD,EAAE;AACF,2DAA2D;AAC3D,oDAAoD;AACpD,MAAM,UAAU,OAAO;IACrB,qCAAqC;IACrC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,GAAG;YACP,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,WAAW,EAAE;gBACX,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI;gBACzB,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;gBAClC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;aAC3C;YACD,KAAK,EAAE;gBACL,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ;gBAC3B,kBAAkB,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB;aAChD;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE;aACjB;SACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,OAAO,CAAC,MAA+B;IAC9C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,eAAe,CAAC,UAAU;YACrC,OAAO,YAAY,CAAC;QACtB,KAAK,OAAO,CAAC,eAAe,CAAC,WAAW;YACtC,OAAO,aAAa,CAAC;QACvB,KAAK,OAAO,CAAC,eAAe,CAAC,SAAS;YACpC,OAAO,WAAW,CAAC;QACrB,KAAK,OAAO,CAAC,eAAe,CAAC,IAAI;YAC/B,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,aAAa,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAA6B;IAClD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG;YAC5B,OAAO,KAAK,CAAC;QACf,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG;YAC5B,OAAO,KAAK,CAAC;QACf,KAAK,OAAO,CAAC,aAAa,CAAC,KAAK;YAC9B,OAAO,OAAO,CAAC;QACjB,KAAK,OAAO,CAAC,aAAa,CAAC,MAAM;YAC/B,OAAO,QAAQ,CAAC;QAClB,KAAK,OAAO,CAAC,aAAa,CAAC,KAAK;YAC9B,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED,6CAA6C;AAC7C,IAAI,MAAM,GAAmB,IAAI,CAAC"}
@@ -0,0 +1,68 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
4
+ /// <reference types="node" />
5
+ /// <reference types="node" />
6
+ import type { IncomingHttpHeaders, OutgoingHttpHeader, OutgoingHttpHeaders } from "node:http";
7
+ import type { Socket } from "node:net";
8
+ import * as stream from "node:stream";
9
+ import * as runtime from "../runtime/mod.js";
10
+ export declare class RawRequest extends stream.Readable {
11
+ complete: boolean;
12
+ trailers: NodeJS.Dict<string>;
13
+ trailersDistinct: NodeJS.Dict<string[]>;
14
+ rawTrailers: string[];
15
+ private body;
16
+ private req;
17
+ constructor(req: runtime.Request, body: runtime.BodyReader);
18
+ get method(): string;
19
+ _url: string | undefined;
20
+ get url(): string;
21
+ set url(value: string);
22
+ get headers(): IncomingHttpHeaders;
23
+ _headersDistinct: NodeJS.Dict<string[]> | undefined;
24
+ get headersDistinct(): NodeJS.Dict<string[]>;
25
+ _rawHeaders: string[] | undefined;
26
+ get rawHeaders(): string[];
27
+ private _meta;
28
+ private get meta();
29
+ _read(size: number): void;
30
+ setTimeout(msecs: number, callback?: () => void): this;
31
+ }
32
+ export declare class RawResponse extends stream.Writable {
33
+ readonly req: RawRequest;
34
+ chunkedEncoding: boolean;
35
+ shouldKeepAlive: boolean;
36
+ sendDate: boolean;
37
+ statusCode: number;
38
+ statusMessage: string | undefined;
39
+ finished: boolean;
40
+ headersSent: boolean;
41
+ strictContentLength: boolean;
42
+ readonly connection: Socket | null;
43
+ readonly socket: Socket | null;
44
+ private w;
45
+ private headers;
46
+ constructor(req: RawRequest, w: runtime.ResponseWriter);
47
+ write(chunk: any, callback?: ((error: Error | null | undefined) => void) | undefined): boolean;
48
+ write(chunk: any, encoding: BufferEncoding, callback?: ((error: Error | null | undefined) => void) | undefined): boolean;
49
+ _implicitHeader(): void;
50
+ _writeHeaderIfNeeded(): void;
51
+ _write(chunk: Buffer, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
52
+ _writev(chunks: Array<{
53
+ chunk: Buffer;
54
+ }>, callback: (error?: Error | null) => void): void;
55
+ _final(callback: (error?: Error | null | undefined) => void): void;
56
+ setTimeout(msecs: number, callback?: () => void): this;
57
+ setHeader(name: string, value: number | string | string[]): this;
58
+ appendHeader(name: string, value: number | string | string[]): this;
59
+ getHeader(name: string): number | string | string[] | undefined;
60
+ getHeaders(): OutgoingHttpHeaders;
61
+ getHeaderNames(): string[];
62
+ hasHeader(name: string): boolean;
63
+ removeHeader(name: string): void;
64
+ addTrailers(headers: OutgoingHttpHeaders | readonly [string, string][]): void;
65
+ flushHeaders(): void;
66
+ writeHead(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]): this;
67
+ writeHead(statusCode: number, statusMessage?: string, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]): this;
68
+ }
@@ -0,0 +1,204 @@
1
+ import * as stream from "node:stream";
2
+ export class RawRequest extends stream.Readable {
3
+ complete;
4
+ trailers;
5
+ trailersDistinct;
6
+ rawTrailers;
7
+ body;
8
+ req;
9
+ constructor(req, body) {
10
+ super({});
11
+ this.req = req;
12
+ this.complete = false;
13
+ this.trailers = {};
14
+ this.trailersDistinct = {};
15
+ this.rawTrailers = [];
16
+ this.body = body;
17
+ this.body.start(this.push.bind(this), this.destroy.bind(this));
18
+ }
19
+ get method() {
20
+ return this.meta.apiCall.method;
21
+ }
22
+ _url;
23
+ get url() {
24
+ if (!this._url) {
25
+ this._url = this.meta.apiCall.pathAndQuery;
26
+ }
27
+ return this._url;
28
+ }
29
+ set url(value) {
30
+ this._url = value;
31
+ }
32
+ get headers() {
33
+ return this.meta.apiCall.headers;
34
+ }
35
+ _headersDistinct;
36
+ get headersDistinct() {
37
+ if (this._headersDistinct) {
38
+ return this._headersDistinct;
39
+ }
40
+ const headers = {};
41
+ for (const [key, value] of Object.entries(this.headers)) {
42
+ if (value !== undefined) {
43
+ const val = Array.isArray(value) ? value : [value];
44
+ headers[key] = val;
45
+ }
46
+ }
47
+ this._headersDistinct = headers;
48
+ return headers;
49
+ }
50
+ _rawHeaders;
51
+ get rawHeaders() {
52
+ if (this._rawHeaders) {
53
+ return this._rawHeaders;
54
+ }
55
+ this._rawHeaders = Object.keys(this.headers);
56
+ return this._rawHeaders;
57
+ }
58
+ _meta;
59
+ get meta() {
60
+ if (this._meta === undefined) {
61
+ this._meta = this.req.meta();
62
+ }
63
+ return this._meta;
64
+ }
65
+ _read(size) {
66
+ this.body.read();
67
+ }
68
+ setTimeout(msecs, callback) {
69
+ // Not yet implemented.
70
+ return this;
71
+ }
72
+ }
73
+ export class RawResponse extends stream.Writable {
74
+ req;
75
+ chunkedEncoding;
76
+ shouldKeepAlive;
77
+ // useChunkedEncodingByDefault: boolean;
78
+ sendDate;
79
+ statusCode;
80
+ statusMessage;
81
+ finished; // deprecated
82
+ headersSent;
83
+ strictContentLength;
84
+ connection; // deprecated
85
+ socket;
86
+ w;
87
+ headers;
88
+ constructor(req, w) {
89
+ super({ highWaterMark: 1024 * 1024 }); // TODO?
90
+ this.req = req;
91
+ this.chunkedEncoding = false; // TODO
92
+ this.shouldKeepAlive = true;
93
+ this.sendDate = true;
94
+ this.statusCode = 200;
95
+ this.statusMessage = undefined;
96
+ this.finished = false;
97
+ this.strictContentLength = false;
98
+ this.headersSent = false;
99
+ this.headers = {};
100
+ this.connection = null;
101
+ this.socket = null;
102
+ this.w = w;
103
+ }
104
+ write(chunk, encoding, callback) {
105
+ const res = super.write(chunk, encoding, callback);
106
+ // HACK: Work around pipe deadlock in Node.js when writing a large response.
107
+ return true;
108
+ }
109
+ // Needed for Next.js compatibility.
110
+ _implicitHeader() {
111
+ this._writeHeaderIfNeeded();
112
+ }
113
+ _writeHeaderIfNeeded() {
114
+ if (!this.headersSent) {
115
+ this.w.writeHead(this.statusCode, this.headers);
116
+ this.headersSent = true;
117
+ }
118
+ }
119
+ _write(chunk, _encoding, callback) {
120
+ this._writeHeaderIfNeeded();
121
+ this.w.writeBody(chunk, callback);
122
+ }
123
+ _writev(chunks, callback) {
124
+ this._writeHeaderIfNeeded();
125
+ this.w.writeBodyMulti(chunks.map((ch) => ch.chunk), callback);
126
+ }
127
+ _final(callback) {
128
+ this.w.close(undefined, callback);
129
+ }
130
+ setTimeout(msecs, callback) {
131
+ // Not implemented yet.
132
+ return this;
133
+ }
134
+ setHeader(name, value) {
135
+ this.headers[name] = value;
136
+ return this;
137
+ }
138
+ appendHeader(name, value) {
139
+ const existing = this.headers[name];
140
+ const existingIsArr = Array.isArray(existing);
141
+ const valIsArr = Array.isArray(value);
142
+ if (existingIsArr && valIsArr) {
143
+ existing.push(...value);
144
+ }
145
+ else if (existingIsArr) {
146
+ existing.push("" + value);
147
+ }
148
+ else if (existing !== undefined) {
149
+ this.headers[name] = ["" + existing, "" + value];
150
+ }
151
+ else {
152
+ this.headers[name] = value;
153
+ }
154
+ return this;
155
+ }
156
+ getHeader(name) {
157
+ return this.headers[name];
158
+ }
159
+ getHeaders() {
160
+ return this.headers;
161
+ }
162
+ getHeaderNames() {
163
+ return Object.keys(this.headers);
164
+ }
165
+ hasHeader(name) {
166
+ return this.headers[name] !== undefined;
167
+ }
168
+ removeHeader(name) {
169
+ delete this.headers[name];
170
+ }
171
+ addTrailers(headers) {
172
+ // Not implemented yet.
173
+ }
174
+ flushHeaders() {
175
+ this._writeHeaderIfNeeded();
176
+ }
177
+ writeHead(statusCode, statusMessageOrHeaders, headers) {
178
+ this.statusCode = statusCode;
179
+ const headersIn = typeof statusMessageOrHeaders === "string"
180
+ ? headers
181
+ : statusMessageOrHeaders;
182
+ // Merge headers, if provided.
183
+ if (headersIn) {
184
+ if (Array.isArray(headersIn)) {
185
+ for (let i = 0; i < headersIn.length; i += 2) {
186
+ const key = headersIn[i];
187
+ const value = headersIn[i + 1];
188
+ if (typeof key === "string" && typeof value === "string") {
189
+ this.headers[key] = value;
190
+ }
191
+ }
192
+ }
193
+ else {
194
+ for (const key in headersIn) {
195
+ const value = headersIn[key];
196
+ this.headers[key] = value;
197
+ }
198
+ }
199
+ }
200
+ this._writeHeaderIfNeeded();
201
+ return this;
202
+ }
203
+ }
204
+ //# sourceMappingURL=node_http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node_http.js","sourceRoot":"","sources":["../../../internal/api/node_http.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import * as runtime from "../runtime/mod.js";
2
1
  import { Gateway } from "../../api/gateway.js";
2
+ import * as runtime from "../runtime/mod.js";
3
3
  export type Handler = runtime.ApiRoute;
4
4
  export declare function registerHandlers(handlers: Handler[]): void;
5
5
  export declare function registerTestHandler(handler: Handler): void;
@@ -1,5 +1,6 @@
1
- import * as runtime from "../runtime/mod.js";
1
+ import { RawRequest, RawResponse } from "../api/node_http.js";
2
2
  import { setCurrentRequest } from "../reqtrack/mod.js";
3
+ import * as runtime from "../runtime/mod.js";
3
4
  export function registerHandlers(handlers) {
4
5
  runtime.RT.registerHandlers(handlers.map((h) => transformHandler(h)));
5
6
  }
@@ -14,6 +15,17 @@ export async function run() {
14
15
  return runtime.RT.runForever();
15
16
  }
16
17
  function transformHandler(h) {
18
+ if (h.raw) {
19
+ return {
20
+ ...h,
21
+ handler: (req, resp, body) => {
22
+ setCurrentRequest(req);
23
+ const rawReq = new RawRequest(req, body);
24
+ const rawResp = new RawResponse(rawReq, resp);
25
+ h.handler(rawReq, rawResp);
26
+ },
27
+ };
28
+ }
17
29
  return {
18
30
  ...h,
19
31
  handler: (req) => {
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../internal/appinit/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAKpD,MAAM,UAAU,gBAAgB,CAAC,QAAmB;IAClD,OAAO,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO,CAAC,EAAE,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAmB;IAClD,qEAAqE;IACrE,gDAAgD;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,OAAO,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAClC,OAAO;QACL,GAAG,CAAC;QACJ,OAAO,EAAE,CAAC,GAAoB,EAAE,EAAE;YAChC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../internal/appinit/mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAI1C,MAAM,UAAU,gBAAgB,CAAC,QAAmB;IAClD,OAAO,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO,CAAC,EAAE,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAmB;IAClD,qEAAqE;IACrE,gDAAgD;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,OAAO,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAClC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACV,OAAO;YACL,GAAG,CAAC;YACJ,OAAO,EAAE,CACP,GAAoB,EACpB,IAA4B,EAC5B,IAAwB,EACxB,EAAE;gBACF,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBACvB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC9C,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7B,CAAC;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,CAAC;QACJ,OAAO,EAAE,CAAC,GAAoB,EAAE,EAAE;YAChC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // The version of the runtime this JS bundle was generated for.
2
- const version = "v1.35.3";
2
+ const version = "v1.36.0";
3
3
 
4
4
  // Load the native module.
5
5
  const nativeModulePath = process.env.ENCORE_RUNTIME_LIB;
@@ -12,6 +12,7 @@ const nativeModule = require(nativeModulePath);
12
12
 
13
13
  // Load the exported objects from the native module.
14
14
  const {
15
+ BodyReader,
15
16
  CloudProvider,
16
17
  Cursor,
17
18
  EnvironmentType,
@@ -22,6 +23,7 @@ const {
22
23
  PubSubTopic,
23
24
  QueryArgs,
24
25
  Request,
26
+ ResponseWriter,
25
27
  Row,
26
28
  Runtime,
27
29
  SQLDatabase,
@@ -31,6 +33,7 @@ const {
31
33
 
32
34
  // Export the objects from the native module.
33
35
  module.exports = {
36
+ BodyReader,
34
37
  CloudProvider,
35
38
  Cursor,
36
39
  EnvironmentType,
@@ -41,6 +44,7 @@ module.exports = {
41
44
  PubSubTopic,
42
45
  QueryArgs,
43
46
  Request,
47
+ ResponseWriter,
44
48
  Row,
45
49
  Runtime,
46
50
  SQLDatabase,
@@ -2,9 +2,26 @@
2
2
  /* eslint:disable */
3
3
  // Automatically generated by gen_type_defs. Do not edit.
4
4
 
5
+ export interface ApiCallData {
6
+ api: APIDesc
7
+ method: string
8
+ path: string
9
+ pathAndQuery: string
10
+ pathParams?: any
11
+ parsedPayload?: any
12
+ headers: Record<string, any>
13
+ }
14
+
15
+ export interface ApiDesc {
16
+ service: string
17
+ endpoint: string
18
+ raw: boolean
19
+ }
20
+
5
21
  export interface ApiRoute {
6
22
  service: string
7
23
  name: string
24
+ raw: boolean
8
25
  handler: (...args: any[]) => any
9
26
  }
10
27
 
@@ -16,6 +33,11 @@ export interface AppMeta {
16
33
  deploy: DeployMeta
17
34
  }
18
35
 
36
+ export class BodyReader {
37
+ start(push: (...args: any[]) => any, destroy: (...args: any[]) => any): void
38
+ read(): void
39
+ }
40
+
19
41
  export interface BuildMeta {
20
42
  revision: string
21
43
  uncommittedChanges: boolean
@@ -79,6 +101,16 @@ export class Logger {
79
101
  with(fields: Record<string, unknown>): this
80
102
  }
81
103
 
104
+ export interface PubSubMessageData {
105
+ service: string
106
+ topic: string
107
+ subscription: string
108
+ id: string
109
+ publishedAt: string
110
+ deliveryAttempt: number
111
+ parsedPayload?: any
112
+ }
113
+
82
114
  export class PubSubSubscription {
83
115
  subscribe(): Promise<void>
84
116
  }
@@ -99,9 +131,24 @@ export class QueryArgs {
99
131
 
100
132
  export class Request {
101
133
  payload(): unknown
134
+ meta(): RequestMeta
102
135
  getAuthData(): unknown
103
136
  }
104
137
 
138
+ export interface RequestMeta {
139
+ startedAt: string
140
+ trace?: TraceData
141
+ apiCall?: APICallData
142
+ pubsubMessage?: PubSubMessageData
143
+ }
144
+
145
+ export class ResponseWriter {
146
+ writeHead(status: number, headers: Array<string> | Record<string, string | number | Array<string>>): void
147
+ writeBody(buf: Buffer, callback?: (...args: any[]) => any | undefined | null): void
148
+ writeBodyMulti(bufs: Array<Buffer>, callback?: (...args: any[]) => any | undefined | null): void
149
+ close(buf?: Buffer | undefined | null, callback?: (...args: any[]) => any | undefined | null): void
150
+ }
151
+
105
152
  export class Row {
106
153
  values(): Record<string, unknown>
107
154
  }
@@ -140,3 +187,11 @@ export class SqlDatabase {
140
187
  }
141
188
  export type SQLDatabase = SqlDatabase
142
189
 
190
+ export interface TraceData {
191
+ traceId: string
192
+ spanId: string
193
+ parentTraceId?: string
194
+ parentSpanId?: string
195
+ extCorrelationId?: string
196
+ }
197
+
package/dist/mod.d.ts CHANGED
@@ -1,2 +1,4 @@
1
- export { appMeta } from "./meta.js";
2
- export type { AppMeta, BuildMeta, CloudProvider, DeployMeta, EnvironmentMeta, EnvironmentType, } from "./meta.js";
1
+ export { appMeta } from "./app_meta.js";
2
+ export type { AppMeta, BuildMeta, CloudProvider, DeployMeta, EnvironmentMeta, EnvironmentType, } from "./app_meta.js";
3
+ export { currentRequest } from "./req_meta.js";
4
+ export type { APICallMeta, APIDesc, Method, PubSubMessageMeta, RequestMeta, TraceData, } from "./req_meta.js";
package/dist/mod.js CHANGED
@@ -1,2 +1,3 @@
1
- export { appMeta } from "./meta.js";
1
+ export { appMeta } from "./app_meta.js";
2
+ export { currentRequest } from "./req_meta.js";
2
3
  //# sourceMappingURL=mod.js.map
package/dist/mod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAUrC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,38 @@
1
+ export interface APIDesc {
2
+ service: string;
3
+ endpoint: string;
4
+ raw: boolean;
5
+ }
6
+ export type Method = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS" | "CONNECT" | "TRACE";
7
+ export interface APICallMeta {
8
+ type: "api-call";
9
+ api: APIDesc;
10
+ method: Method;
11
+ path: string;
12
+ pathAndQuery: string;
13
+ pathParams: Record<string, any>;
14
+ headers: Record<string, string | string[]>;
15
+ parsedPayload?: Record<string, any>;
16
+ }
17
+ export interface PubSubMessageMeta {
18
+ type: "pubsub-message";
19
+ service: string;
20
+ topic: string;
21
+ subscription: string;
22
+ messageId: string;
23
+ deliveryAttempt: number;
24
+ parsedPayload?: Record<string, any>;
25
+ }
26
+ export interface TraceData {
27
+ traceId: string;
28
+ spanId: string;
29
+ parentTraceId?: string;
30
+ parentSpanId?: string;
31
+ extCorrelationId?: string;
32
+ }
33
+ interface BaseRequestMeta {
34
+ trace?: TraceData;
35
+ }
36
+ export type RequestMeta = (APICallMeta | PubSubMessageMeta) & BaseRequestMeta;
37
+ export declare function currentRequest(): RequestMeta | undefined;
38
+ export {};