raktajs 0.1.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/README.md +90 -0
- package/dist/auto-import/generator.d.ts +4 -0
- package/dist/auto-import/generator.d.ts.map +1 -0
- package/dist/auto-import/index.d.ts +5 -0
- package/dist/auto-import/index.d.ts.map +1 -0
- package/dist/auto-import/index.js +153 -0
- package/dist/auto-import/index.js.map +11 -0
- package/dist/auto-import/scanner.d.ts +9 -0
- package/dist/auto-import/scanner.d.ts.map +1 -0
- package/dist/auto-import/types.d.ts +20 -0
- package/dist/auto-import/types.d.ts.map +1 -0
- package/dist/cli/build.d.ts +2 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/dev.d.ts +2 -0
- package/dist/cli/dev.d.ts.map +1 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/imports.d.ts +2 -0
- package/dist/cli/imports.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/make.d.ts +4 -0
- package/dist/cli/make.d.ts.map +1 -0
- package/dist/cli/rakta.d.ts +3 -0
- package/dist/cli/rakta.d.ts.map +1 -0
- package/dist/cli/rakta.js +1511 -0
- package/dist/cli/rakta.js.map +33 -0
- package/dist/cli/routes.d.ts +2 -0
- package/dist/cli/routes.d.ts.map +1 -0
- package/dist/cli/rpcTypes.d.ts +2 -0
- package/dist/cli/rpcTypes.d.ts.map +1 -0
- package/dist/cli/seo.d.ts +2 -0
- package/dist/cli/seo.d.ts.map +1 -0
- package/dist/cli/start.d.ts +2 -0
- package/dist/cli/start.d.ts.map +1 -0
- package/dist/components/Click.d.ts +11 -0
- package/dist/components/Click.d.ts.map +1 -0
- package/dist/components/Picture.d.ts +22 -0
- package/dist/components/Picture.d.ts.map +1 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +1383 -0
- package/dist/components/index.js.map +15 -0
- package/dist/config/defineConfig.d.ts +64 -0
- package/dist/config/defineConfig.d.ts.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +104 -0
- package/dist/config/index.js.map +11 -0
- package/dist/config/loadConfig.d.ts +4 -0
- package/dist/config/loadConfig.d.ts.map +1 -0
- package/dist/forge/build.d.ts +7 -0
- package/dist/forge/build.d.ts.map +1 -0
- package/dist/forge/devServer.d.ts +7 -0
- package/dist/forge/devServer.d.ts.map +1 -0
- package/dist/forge/index.d.ts +6 -0
- package/dist/forge/index.d.ts.map +1 -0
- package/dist/forge/index.js +579 -0
- package/dist/forge/index.js.map +17 -0
- package/dist/forge/inspect.d.ts +9 -0
- package/dist/forge/inspect.d.ts.map +1 -0
- package/dist/forge/types.d.ts +55 -0
- package/dist/forge/types.d.ts.map +1 -0
- package/dist/http/errors.d.ts +17 -0
- package/dist/http/errors.d.ts.map +1 -0
- package/dist/http/index.d.ts +4 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +154 -0
- package/dist/http/index.js.map +11 -0
- package/dist/http/panturaFetch.d.ts +33 -0
- package/dist/http/panturaFetch.d.ts.map +1 -0
- package/dist/http/types.d.ts +24 -0
- package/dist/http/types.d.ts.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3872 -0
- package/dist/index.js.map +50 -0
- package/dist/pwa/cache.d.ts +6 -0
- package/dist/pwa/cache.d.ts.map +1 -0
- package/dist/pwa/index.d.ts +5 -0
- package/dist/pwa/index.d.ts.map +1 -0
- package/dist/pwa/index.js +136 -0
- package/dist/pwa/index.js.map +12 -0
- package/dist/pwa/manifest.d.ts +11 -0
- package/dist/pwa/manifest.d.ts.map +1 -0
- package/dist/pwa/serviceWorker.d.ts +11 -0
- package/dist/pwa/serviceWorker.d.ts.map +1 -0
- package/dist/pwa/types.d.ts +45 -0
- package/dist/pwa/types.d.ts.map +1 -0
- package/dist/render/index.d.ts +5 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +183 -0
- package/dist/render/index.js.map +11 -0
- package/dist/render/modes.d.ts +13 -0
- package/dist/render/modes.d.ts.map +1 -0
- package/dist/render/renderer.d.ts +15 -0
- package/dist/render/renderer.d.ts.map +1 -0
- package/dist/render/types.d.ts +72 -0
- package/dist/render/types.d.ts.map +1 -0
- package/dist/router/index.d.ts +5 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +228 -0
- package/dist/router/index.js.map +12 -0
- package/dist/router/manifest.d.ts +6 -0
- package/dist/router/manifest.d.ts.map +1 -0
- package/dist/router/matcher.d.ts +5 -0
- package/dist/router/matcher.d.ts.map +1 -0
- package/dist/router/scanner.d.ts +6 -0
- package/dist/router/scanner.d.ts.map +1 -0
- package/dist/router/types.d.ts +45 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/rpc/client.d.ts +24 -0
- package/dist/rpc/client.d.ts.map +1 -0
- package/dist/rpc/index.d.ts +6 -0
- package/dist/rpc/index.d.ts.map +1 -0
- package/dist/rpc/index.js +179 -0
- package/dist/rpc/index.js.map +13 -0
- package/dist/rpc/procedure.d.ts +28 -0
- package/dist/rpc/procedure.d.ts.map +1 -0
- package/dist/rpc/router.d.ts +12 -0
- package/dist/rpc/router.d.ts.map +1 -0
- package/dist/rpc/types.d.ts +48 -0
- package/dist/rpc/types.d.ts.map +1 -0
- package/dist/schema/array.d.ts +15 -0
- package/dist/schema/array.d.ts.map +1 -0
- package/dist/schema/boolean.d.ts +7 -0
- package/dist/schema/boolean.d.ts.map +1 -0
- package/dist/schema/errors.d.ts +21 -0
- package/dist/schema/errors.d.ts.map +1 -0
- package/dist/schema/index.d.ts +11 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +393 -0
- package/dist/schema/index.js.map +16 -0
- package/dist/schema/number.d.ts +17 -0
- package/dist/schema/number.d.ts.map +1 -0
- package/dist/schema/object.d.ts +19 -0
- package/dist/schema/object.d.ts.map +1 -0
- package/dist/schema/string.d.ts +18 -0
- package/dist/schema/string.d.ts.map +1 -0
- package/dist/schema/types.d.ts +27 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/seo/head.d.ts +8 -0
- package/dist/seo/head.d.ts.map +1 -0
- package/dist/seo/index.d.ts +9 -0
- package/dist/seo/index.d.ts.map +1 -0
- package/dist/seo/index.js +1578 -0
- package/dist/seo/index.js.map +17 -0
- package/dist/seo/metadata.d.ts +106 -0
- package/dist/seo/metadata.d.ts.map +1 -0
- package/dist/seo/robots.d.ts +14 -0
- package/dist/seo/robots.d.ts.map +1 -0
- package/dist/seo/sitemap.d.ts +27 -0
- package/dist/seo/sitemap.d.ts.map +1 -0
- package/dist/store/createStore.d.ts +18 -0
- package/dist/store/createStore.d.ts.map +1 -0
- package/dist/store/index.d.ts +3 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +925 -0
- package/dist/store/index.js.map +12 -0
- package/dist/store/types.d.ts +14 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/tide/adapter.d.ts +8 -0
- package/dist/tide/adapter.d.ts.map +1 -0
- package/dist/tide/index.d.ts +4 -0
- package/dist/tide/index.d.ts.map +1 -0
- package/dist/tide/index.js +477 -0
- package/dist/tide/index.js.map +16 -0
- package/dist/tide/runtime.d.ts +8 -0
- package/dist/tide/runtime.d.ts.map +1 -0
- package/dist/tide/types.d.ts +40 -0
- package/dist/tide/types.d.ts.map +1 -0
- package/package.json +128 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RenderConfig } from "../render/types";
|
|
2
|
+
import type { ForgeInspectReport } from "./types";
|
|
3
|
+
export interface InspectOptions {
|
|
4
|
+
readonly outDir: string;
|
|
5
|
+
readonly renderConfig: RenderConfig;
|
|
6
|
+
}
|
|
7
|
+
export declare function inspectBuild(options: InspectOptions): ForgeInspectReport;
|
|
8
|
+
export declare function printInspectReport(report: ForgeInspectReport): void;
|
|
9
|
+
//# sourceMappingURL=inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/forge/inspect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAGX,kBAAkB,EAElB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACpC;AAuCD,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,kBAAkB,CA8BxE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CA4CnE"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { RenderConfig, RenderMode } from "../render/types.js";
|
|
2
|
+
import type { RouteManifest } from "../router/types.js";
|
|
3
|
+
export interface ForgeDevServerOptions {
|
|
4
|
+
readonly port: number;
|
|
5
|
+
readonly host: string;
|
|
6
|
+
readonly appDir: string;
|
|
7
|
+
readonly publicDir: string;
|
|
8
|
+
readonly appName: string;
|
|
9
|
+
readonly renderConfig: RenderConfig;
|
|
10
|
+
}
|
|
11
|
+
export interface ForgeBuildOptions {
|
|
12
|
+
readonly entryPoint: string;
|
|
13
|
+
readonly outDir: string;
|
|
14
|
+
readonly appDir: string;
|
|
15
|
+
readonly publicDir: string;
|
|
16
|
+
readonly appName: string;
|
|
17
|
+
readonly sourcemap: boolean;
|
|
18
|
+
readonly minify: boolean;
|
|
19
|
+
readonly splitting: boolean;
|
|
20
|
+
readonly target: "browser" | "bun" | "node";
|
|
21
|
+
readonly renderConfig: RenderConfig;
|
|
22
|
+
}
|
|
23
|
+
export type ArtifactKind = "script" | "stylesheet" | "asset" | "manifest";
|
|
24
|
+
export interface ForgeBuildArtifact {
|
|
25
|
+
readonly outputPath: string;
|
|
26
|
+
readonly sizeBytes: number;
|
|
27
|
+
readonly kind: ArtifactKind;
|
|
28
|
+
}
|
|
29
|
+
export interface ForgeBuildResult {
|
|
30
|
+
readonly success: boolean;
|
|
31
|
+
readonly artifacts: ReadonlyArray<ForgeBuildArtifact>;
|
|
32
|
+
readonly manifest: RouteManifest;
|
|
33
|
+
readonly buildMs: number;
|
|
34
|
+
readonly errors: ReadonlyArray<string>;
|
|
35
|
+
}
|
|
36
|
+
export interface ForgeRouteModeEntry {
|
|
37
|
+
readonly pattern: string;
|
|
38
|
+
readonly mode: RenderMode;
|
|
39
|
+
readonly source: "route-override" | "default";
|
|
40
|
+
}
|
|
41
|
+
export interface ForgeInspectReport {
|
|
42
|
+
readonly buildDir: string;
|
|
43
|
+
readonly artifacts: ReadonlyArray<ForgeBuildArtifact>;
|
|
44
|
+
readonly manifest: RouteManifest;
|
|
45
|
+
readonly routeModes: ReadonlyArray<ForgeRouteModeEntry>;
|
|
46
|
+
readonly totalSizeBytes: number;
|
|
47
|
+
readonly inspectedAt: string;
|
|
48
|
+
}
|
|
49
|
+
export interface ForgeDevServerHandle {
|
|
50
|
+
readonly port: number;
|
|
51
|
+
readonly host: string;
|
|
52
|
+
readonly url: string;
|
|
53
|
+
readonly stop: () => void;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/forge/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACpC;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACtD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACtD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;CAC1B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class HttpResponseError extends Error {
|
|
2
|
+
readonly status: number;
|
|
3
|
+
readonly statusText: string;
|
|
4
|
+
readonly url: string;
|
|
5
|
+
constructor(response: Response);
|
|
6
|
+
}
|
|
7
|
+
export declare class HttpTimeoutError extends Error {
|
|
8
|
+
readonly url: string;
|
|
9
|
+
readonly timeoutMs: number;
|
|
10
|
+
constructor(url: string, timeoutMs: number);
|
|
11
|
+
}
|
|
12
|
+
export declare class HttpNetworkError extends Error {
|
|
13
|
+
readonly url: string;
|
|
14
|
+
readonly originalError: Error;
|
|
15
|
+
constructor(url: string, originalError: Error);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/http/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAkB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAET,QAAQ,EAAE,QAAQ;CAQ9B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAO1C;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC;gBAElB,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK;CAO7C"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { HttpNetworkError, HttpResponseError, HttpTimeoutError, } from "./errors";
|
|
2
|
+
export { createRaktaHttp, RaktaHttpClient, } from "./panturaFetch";
|
|
3
|
+
export type { HttpClientConfig, HttpJsonArray, HttpJsonObject, HttpJsonPrimitive, HttpJsonValue, HttpMethod, HttpQueryParams, HttpQueryValue, HttpRequestBody, HttpRequestConfig, RequestInterceptorFn, ResponseInterceptorFn, } from "./types";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EACN,eAAe,EACf,eAAe,GACf,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACX,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACrB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/http/errors.ts
|
|
3
|
+
class HttpResponseError extends Error {
|
|
4
|
+
status;
|
|
5
|
+
statusText;
|
|
6
|
+
url;
|
|
7
|
+
constructor(response) {
|
|
8
|
+
super(`HTTP ${response.status} ${response.statusText} - ${response.url}`);
|
|
9
|
+
this.name = "HttpResponseError";
|
|
10
|
+
this.status = response.status;
|
|
11
|
+
this.statusText = response.statusText;
|
|
12
|
+
this.url = response.url;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
class HttpTimeoutError extends Error {
|
|
17
|
+
url;
|
|
18
|
+
timeoutMs;
|
|
19
|
+
constructor(url, timeoutMs) {
|
|
20
|
+
super(`Request to ${url} timed out after ${timeoutMs}ms`);
|
|
21
|
+
this.name = "HttpTimeoutError";
|
|
22
|
+
this.url = url;
|
|
23
|
+
this.timeoutMs = timeoutMs;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
class HttpNetworkError extends Error {
|
|
28
|
+
url;
|
|
29
|
+
originalError;
|
|
30
|
+
constructor(url, originalError) {
|
|
31
|
+
super(`Network error for ${url}: ${originalError.message}`);
|
|
32
|
+
this.name = "HttpNetworkError";
|
|
33
|
+
this.url = url;
|
|
34
|
+
this.originalError = originalError;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// src/http/panturaFetch.ts
|
|
38
|
+
function buildUrl(baseUrl, path, params) {
|
|
39
|
+
const base = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
|
|
40
|
+
const fullUrl = path.startsWith("http") ? path : `${base}${path}`;
|
|
41
|
+
const parsedUrl = new URL(fullUrl);
|
|
42
|
+
if (params) {
|
|
43
|
+
for (const [key, value] of Object.entries(params)) {
|
|
44
|
+
parsedUrl.searchParams.set(key, String(value));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return parsedUrl.toString();
|
|
48
|
+
}
|
|
49
|
+
function canSendBody(method) {
|
|
50
|
+
return method !== "GET" && method !== "HEAD";
|
|
51
|
+
}
|
|
52
|
+
function createRequestInit(method, headers, body) {
|
|
53
|
+
const requestInit = {
|
|
54
|
+
method,
|
|
55
|
+
headers
|
|
56
|
+
};
|
|
57
|
+
if (body !== undefined && canSendBody(method)) {
|
|
58
|
+
requestInit.body = JSON.stringify(body);
|
|
59
|
+
}
|
|
60
|
+
return requestInit;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
class RaktaHttpClient {
|
|
64
|
+
clientConfig;
|
|
65
|
+
requestInterceptors = [];
|
|
66
|
+
responseInterceptors = [];
|
|
67
|
+
constructor(config) {
|
|
68
|
+
this.clientConfig = {
|
|
69
|
+
baseUrl: config.baseUrl,
|
|
70
|
+
headers: config.headers ?? {
|
|
71
|
+
"Content-Type": "application/json"
|
|
72
|
+
},
|
|
73
|
+
timeout: config.timeout ?? 30000
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
addRequestInterceptor(interceptorFn) {
|
|
77
|
+
this.requestInterceptors.push(interceptorFn);
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
addResponseInterceptor(interceptorFn) {
|
|
81
|
+
const wrappedInterceptor = async (response, data) => {
|
|
82
|
+
return await Promise.resolve(interceptorFn(response, data));
|
|
83
|
+
};
|
|
84
|
+
this.responseInterceptors.push(wrappedInterceptor);
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
async execute(method, path, body, requestConfig) {
|
|
88
|
+
let resolvedUrl = buildUrl(this.clientConfig.baseUrl, path, requestConfig?.params);
|
|
89
|
+
let requestInit = createRequestInit(method, {
|
|
90
|
+
...this.clientConfig.headers,
|
|
91
|
+
...requestConfig?.headers ?? {}
|
|
92
|
+
}, body);
|
|
93
|
+
for (const interceptorFn of this.requestInterceptors) {
|
|
94
|
+
[resolvedUrl, requestInit] = await Promise.resolve(interceptorFn(resolvedUrl, requestInit));
|
|
95
|
+
}
|
|
96
|
+
const timeoutMs = requestConfig?.timeout ?? this.clientConfig.timeout;
|
|
97
|
+
const abortController = new AbortController;
|
|
98
|
+
const timeoutHandle = setTimeout(() => abortController.abort(), timeoutMs);
|
|
99
|
+
requestInit = { ...requestInit, signal: abortController.signal };
|
|
100
|
+
let response;
|
|
101
|
+
try {
|
|
102
|
+
response = await fetch(resolvedUrl, requestInit);
|
|
103
|
+
} catch (caughtError) {
|
|
104
|
+
clearTimeout(timeoutHandle);
|
|
105
|
+
if (caughtError instanceof DOMException && caughtError.name === "AbortError") {
|
|
106
|
+
throw new HttpTimeoutError(resolvedUrl, timeoutMs);
|
|
107
|
+
}
|
|
108
|
+
throw new HttpNetworkError(resolvedUrl, caughtError instanceof Error ? caughtError : new Error(String(caughtError)));
|
|
109
|
+
}
|
|
110
|
+
clearTimeout(timeoutHandle);
|
|
111
|
+
if (!response.ok) {
|
|
112
|
+
throw new HttpResponseError(response);
|
|
113
|
+
}
|
|
114
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
115
|
+
let responseData;
|
|
116
|
+
if (contentType.includes("application/json")) {
|
|
117
|
+
responseData = await response.json();
|
|
118
|
+
} else {
|
|
119
|
+
responseData = await response.text();
|
|
120
|
+
}
|
|
121
|
+
let interceptedData = responseData;
|
|
122
|
+
for (const interceptorFn of this.responseInterceptors) {
|
|
123
|
+
interceptedData = await Promise.resolve(interceptorFn(response, interceptedData));
|
|
124
|
+
}
|
|
125
|
+
return interceptedData;
|
|
126
|
+
}
|
|
127
|
+
get(path, config) {
|
|
128
|
+
return this.execute("GET", path, undefined, config);
|
|
129
|
+
}
|
|
130
|
+
post(path, body, config) {
|
|
131
|
+
return this.execute("POST", path, body, config);
|
|
132
|
+
}
|
|
133
|
+
put(path, body, config) {
|
|
134
|
+
return this.execute("PUT", path, body, config);
|
|
135
|
+
}
|
|
136
|
+
patch(path, body, config) {
|
|
137
|
+
return this.execute("PATCH", path, body, config);
|
|
138
|
+
}
|
|
139
|
+
delete(path, config) {
|
|
140
|
+
return this.execute("DELETE", path, undefined, config);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function createRaktaHttp(config) {
|
|
144
|
+
return new RaktaHttpClient(config);
|
|
145
|
+
}
|
|
146
|
+
export {
|
|
147
|
+
createRaktaHttp,
|
|
148
|
+
RaktaHttpClient,
|
|
149
|
+
HttpTimeoutError,
|
|
150
|
+
HttpResponseError,
|
|
151
|
+
HttpNetworkError
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
//# debugId=08F182A3A26CE5FA64756E2164756E21
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["..\\..\\src\\http\\errors.ts", "..\\..\\src\\http\\panturaFetch.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export class HttpResponseError extends Error {\n\treadonly status: number;\n\treadonly statusText: string;\n\treadonly url: string;\n\n\tconstructor(response: Response) {\n\t\tsuper(`HTTP ${response.status} ${response.statusText} - ${response.url}`);\n\n\t\tthis.name = \"HttpResponseError\";\n\t\tthis.status = response.status;\n\t\tthis.statusText = response.statusText;\n\t\tthis.url = response.url;\n\t}\n}\n\nexport class HttpTimeoutError extends Error {\n\treadonly url: string;\n\treadonly timeoutMs: number;\n\n\tconstructor(url: string, timeoutMs: number) {\n\t\tsuper(`Request to ${url} timed out after ${timeoutMs}ms`);\n\n\t\tthis.name = \"HttpTimeoutError\";\n\t\tthis.url = url;\n\t\tthis.timeoutMs = timeoutMs;\n\t}\n}\n\nexport class HttpNetworkError extends Error {\n\treadonly url: string;\n\treadonly originalError: Error;\n\n\tconstructor(url: string, originalError: Error) {\n\t\tsuper(`Network error for ${url}: ${originalError.message}`);\n\n\t\tthis.name = \"HttpNetworkError\";\n\t\tthis.url = url;\n\t\tthis.originalError = originalError;\n\t}\n}\n",
|
|
6
|
+
"import {\n\tHttpNetworkError,\n\tHttpResponseError,\n\tHttpTimeoutError,\n} from \"./errors\";\nimport type {\n\tHttpClientConfig,\n\tHttpMethod,\n\tHttpRequestBody,\n\tHttpRequestConfig,\n\tRequestInterceptorFn,\n\tResponseInterceptorFn,\n} from \"./types\";\n\ntype HttpJsonResponse = HttpRequestBody | string;\n\nfunction buildUrl(\n\tbaseUrl: string,\n\tpath: string,\n\tparams?: HttpRequestConfig[\"params\"],\n): string {\n\tconst base = baseUrl.endsWith(\"/\") ? baseUrl.slice(0, -1) : baseUrl;\n\tconst fullUrl = path.startsWith(\"http\") ? path : `${base}${path}`;\n\tconst parsedUrl = new URL(fullUrl);\n\n\tif (params) {\n\t\tfor (const [key, value] of Object.entries(params)) {\n\t\t\tparsedUrl.searchParams.set(key, String(value));\n\t\t}\n\t}\n\n\treturn parsedUrl.toString();\n}\n\nfunction canSendBody(method: HttpMethod): boolean {\n\treturn method !== \"GET\" && method !== \"HEAD\";\n}\n\nfunction createRequestInit(\n\tmethod: HttpMethod,\n\theaders: Record<string, string>,\n\tbody?: HttpRequestBody,\n): RequestInit {\n\tconst requestInit: RequestInit = {\n\t\tmethod,\n\t\theaders,\n\t};\n\n\tif (body !== undefined && canSendBody(method)) {\n\t\trequestInit.body = JSON.stringify(body);\n\t}\n\n\treturn requestInit;\n}\n\n/**\n * PanturaFetch — Rakta.js built-in type-safe HTTP client.\n *\n * Named after the Pantura (Pantai Utara) highway: fast, reliable, coastal.\n *\n * Usage:\n * const http = createRaktaHttp({ baseUrl: \"http://localhost:4000\" });\n * const users = await http.get<User[]>(\"/users\");\n */\nexport class RaktaHttpClient {\n\tprivate readonly clientConfig: Required<Omit<HttpClientConfig, \"headers\">> & {\n\t\treadonly headers: Record<string, string>;\n\t};\n\n\tprivate readonly requestInterceptors: RequestInterceptorFn[] = [];\n\tprivate readonly responseInterceptors: ResponseInterceptorFn<HttpJsonResponse>[] =\n\t\t[];\n\n\tconstructor(config: HttpClientConfig) {\n\t\tthis.clientConfig = {\n\t\t\tbaseUrl: config.baseUrl,\n\t\t\theaders: config.headers ?? {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t},\n\t\t\ttimeout: config.timeout ?? 30_000,\n\t\t};\n\t}\n\n\taddRequestInterceptor(interceptorFn: RequestInterceptorFn): this {\n\t\tthis.requestInterceptors.push(interceptorFn);\n\t\treturn this;\n\t}\n\n\taddResponseInterceptor<TData>(\n\t\tinterceptorFn: ResponseInterceptorFn<TData>,\n\t): this {\n\t\tconst wrappedInterceptor: ResponseInterceptorFn<HttpJsonResponse> = async (\n\t\t\tresponse: Response,\n\t\t\tdata: HttpJsonResponse,\n\t\t): Promise<HttpJsonResponse> => {\n\t\t\treturn (await Promise.resolve(\n\t\t\t\tinterceptorFn(response, data as TData),\n\t\t\t)) as HttpJsonResponse;\n\t\t};\n\n\t\tthis.responseInterceptors.push(wrappedInterceptor);\n\t\treturn this;\n\t}\n\n\tprivate async execute<TData>(\n\t\tmethod: HttpMethod,\n\t\tpath: string,\n\t\tbody?: HttpRequestBody,\n\t\trequestConfig?: HttpRequestConfig,\n\t): Promise<TData> {\n\t\tlet resolvedUrl = buildUrl(\n\t\t\tthis.clientConfig.baseUrl,\n\t\t\tpath,\n\t\t\trequestConfig?.params,\n\t\t);\n\n\t\tlet requestInit = createRequestInit(\n\t\t\tmethod,\n\t\t\t{\n\t\t\t\t...this.clientConfig.headers,\n\t\t\t\t...(requestConfig?.headers ?? {}),\n\t\t\t},\n\t\t\tbody,\n\t\t);\n\n\t\tfor (const interceptorFn of this.requestInterceptors) {\n\t\t\t[resolvedUrl, requestInit] = await Promise.resolve(\n\t\t\t\tinterceptorFn(resolvedUrl, requestInit),\n\t\t\t);\n\t\t}\n\n\t\tconst timeoutMs = requestConfig?.timeout ?? this.clientConfig.timeout;\n\t\tconst abortController = new AbortController();\n\t\tconst timeoutHandle = setTimeout(() => abortController.abort(), timeoutMs);\n\n\t\trequestInit = { ...requestInit, signal: abortController.signal };\n\n\t\tlet response: Response;\n\n\t\ttry {\n\t\t\tresponse = await fetch(resolvedUrl, requestInit);\n\t\t} catch (caughtError) {\n\t\t\tclearTimeout(timeoutHandle);\n\n\t\t\tif (\n\t\t\t\tcaughtError instanceof DOMException &&\n\t\t\t\tcaughtError.name === \"AbortError\"\n\t\t\t) {\n\t\t\t\tthrow new HttpTimeoutError(resolvedUrl, timeoutMs);\n\t\t\t}\n\n\t\t\tthrow new HttpNetworkError(\n\t\t\t\tresolvedUrl,\n\t\t\t\tcaughtError instanceof Error\n\t\t\t\t\t? caughtError\n\t\t\t\t\t: new Error(String(caughtError)),\n\t\t\t);\n\t\t}\n\n\t\tclearTimeout(timeoutHandle);\n\n\t\tif (!response.ok) {\n\t\t\tthrow new HttpResponseError(response);\n\t\t}\n\n\t\tconst contentType = response.headers.get(\"content-type\") ?? \"\";\n\t\tlet responseData: HttpJsonResponse;\n\n\t\tif (contentType.includes(\"application/json\")) {\n\t\t\tresponseData = (await response.json()) as HttpJsonResponse;\n\t\t} else {\n\t\t\tresponseData = await response.text();\n\t\t}\n\n\t\tlet interceptedData: HttpJsonResponse = responseData;\n\n\t\tfor (const interceptorFn of this.responseInterceptors) {\n\t\t\tinterceptedData = await Promise.resolve(\n\t\t\t\tinterceptorFn(response, interceptedData),\n\t\t\t);\n\t\t}\n\n\t\treturn interceptedData as TData;\n\t}\n\n\tget<TData>(path: string, config?: HttpRequestConfig): Promise<TData> {\n\t\treturn this.execute<TData>(\"GET\", path, undefined, config);\n\t}\n\n\tpost<TData>(\n\t\tpath: string,\n\t\tbody?: HttpRequestBody,\n\t\tconfig?: HttpRequestConfig,\n\t): Promise<TData> {\n\t\treturn this.execute<TData>(\"POST\", path, body, config);\n\t}\n\n\tput<TData>(\n\t\tpath: string,\n\t\tbody?: HttpRequestBody,\n\t\tconfig?: HttpRequestConfig,\n\t): Promise<TData> {\n\t\treturn this.execute<TData>(\"PUT\", path, body, config);\n\t}\n\n\tpatch<TData>(\n\t\tpath: string,\n\t\tbody?: HttpRequestBody,\n\t\tconfig?: HttpRequestConfig,\n\t): Promise<TData> {\n\t\treturn this.execute<TData>(\"PATCH\", path, body, config);\n\t}\n\n\tdelete<TData>(path: string, config?: HttpRequestConfig): Promise<TData> {\n\t\treturn this.execute<TData>(\"DELETE\", path, undefined, config);\n\t}\n}\n\n/**\n * Creates a PanturaFetch HTTP client instance.\n *\n * Usage:\n * const http = createRaktaHttp({ baseUrl: \"http://localhost:4000\" });\n * const users = await http.get<User[]>(\"/users\");\n */\nexport function createRaktaHttp(config: HttpClientConfig): RaktaHttpClient {\n\treturn new RaktaHttpClient(config);\n}\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "08F182A3A26CE5FA64756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { HttpClientConfig, HttpRequestBody, HttpRequestConfig, RequestInterceptorFn, ResponseInterceptorFn } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* PanturaFetch — Rakta.js built-in type-safe HTTP client.
|
|
4
|
+
*
|
|
5
|
+
* Named after the Pantura (Pantai Utara) highway: fast, reliable, coastal.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* const http = createRaktaHttp({ baseUrl: "http://localhost:4000" });
|
|
9
|
+
* const users = await http.get<User[]>("/users");
|
|
10
|
+
*/
|
|
11
|
+
export declare class RaktaHttpClient {
|
|
12
|
+
private readonly clientConfig;
|
|
13
|
+
private readonly requestInterceptors;
|
|
14
|
+
private readonly responseInterceptors;
|
|
15
|
+
constructor(config: HttpClientConfig);
|
|
16
|
+
addRequestInterceptor(interceptorFn: RequestInterceptorFn): this;
|
|
17
|
+
addResponseInterceptor<TData>(interceptorFn: ResponseInterceptorFn<TData>): this;
|
|
18
|
+
private execute;
|
|
19
|
+
get<TData>(path: string, config?: HttpRequestConfig): Promise<TData>;
|
|
20
|
+
post<TData>(path: string, body?: HttpRequestBody, config?: HttpRequestConfig): Promise<TData>;
|
|
21
|
+
put<TData>(path: string, body?: HttpRequestBody, config?: HttpRequestConfig): Promise<TData>;
|
|
22
|
+
patch<TData>(path: string, body?: HttpRequestBody, config?: HttpRequestConfig): Promise<TData>;
|
|
23
|
+
delete<TData>(path: string, config?: HttpRequestConfig): Promise<TData>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Creates a PanturaFetch HTTP client instance.
|
|
27
|
+
*
|
|
28
|
+
* Usage:
|
|
29
|
+
* const http = createRaktaHttp({ baseUrl: "http://localhost:4000" });
|
|
30
|
+
* const users = await http.get<User[]>("/users");
|
|
31
|
+
*/
|
|
32
|
+
export declare function createRaktaHttp(config: HttpClientConfig): RaktaHttpClient;
|
|
33
|
+
//# sourceMappingURL=panturaFetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panturaFetch.d.ts","sourceRoot":"","sources":["../../src/http/panturaFetch.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACX,gBAAgB,EAEhB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,SAAS,CAAC;AA2CjB;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAE3B;IAEF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA8B;IAClE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CACjC;gBAEQ,MAAM,EAAE,gBAAgB;IAUpC,qBAAqB,CAAC,aAAa,EAAE,oBAAoB,GAAG,IAAI;IAKhE,sBAAsB,CAAC,KAAK,EAC3B,aAAa,EAAE,qBAAqB,CAAC,KAAK,CAAC,GACzC,IAAI;YAcO,OAAO;IAiFrB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IAIpE,IAAI,CAAC,KAAK,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,iBAAiB,GACxB,OAAO,CAAC,KAAK,CAAC;IAIjB,GAAG,CAAC,KAAK,EACR,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,iBAAiB,GACxB,OAAO,CAAC,KAAK,CAAC;IAIjB,KAAK,CAAC,KAAK,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,iBAAiB,GACxB,OAAO,CAAC,KAAK,CAAC;IAIjB,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;CAGvE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CAEzE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD";
|
|
2
|
+
export type HttpQueryValue = string | number | boolean;
|
|
3
|
+
export type HttpQueryParams = Record<string, HttpQueryValue>;
|
|
4
|
+
export type HttpJsonPrimitive = string | number | boolean;
|
|
5
|
+
export type HttpJsonValue = HttpJsonPrimitive | HttpJsonObject | HttpJsonArray;
|
|
6
|
+
export interface HttpJsonObject {
|
|
7
|
+
readonly [key: string]: HttpJsonValue;
|
|
8
|
+
}
|
|
9
|
+
export interface HttpJsonArray extends ReadonlyArray<HttpJsonValue> {
|
|
10
|
+
}
|
|
11
|
+
export type HttpRequestBody = HttpJsonObject | HttpJsonArray;
|
|
12
|
+
export interface HttpClientConfig {
|
|
13
|
+
readonly baseUrl: string;
|
|
14
|
+
readonly headers?: Record<string, string>;
|
|
15
|
+
readonly timeout?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface HttpRequestConfig {
|
|
18
|
+
readonly headers?: Record<string, string>;
|
|
19
|
+
readonly params?: HttpQueryParams;
|
|
20
|
+
readonly timeout?: number;
|
|
21
|
+
}
|
|
22
|
+
export type RequestInterceptorFn = (url: string, init: RequestInit) => [string, RequestInit] | Promise<[string, RequestInit]>;
|
|
23
|
+
export type ResponseInterceptorFn<TData> = (response: Response, data: TData) => TData | Promise<TData>;
|
|
24
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/http/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,cAAc,GAAG,aAAa,CAAC;AAE/E,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;CACtC;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa,CAAC,aAAa,CAAC;CAAG;AAEtE,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,aAAa,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAAG,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,KACb,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAE5D,MAAM,MAAM,qBAAqB,CAAC,KAAK,IAAI,CAC1C,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,KAAK,KACP,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const RAKTA_NAME = "Rakta.js";
|
|
2
|
+
export declare const RAKTA_VERSION = "0.1.0";
|
|
3
|
+
export declare const RAKTA_TAGLINE = "Small in size. Fierce in speed. Alive in every route.";
|
|
4
|
+
export type { AutoImportGeneratorOptions, AutoImportKind, AutoImportManifest, DiscoveredExport, ScanForExportsOptions, } from "./auto-import/index";
|
|
5
|
+
export { generateAutoImports, printAutoImportSummary, scanForExports, } from "./auto-import/index";
|
|
6
|
+
export type { ClickProps, PictureProps, PictureProps as PhotoProps, } from "./components/index";
|
|
7
|
+
export { Click, Picture, Picture as Photo, } from "./components/index";
|
|
8
|
+
export type { AutoImportConfig, BuildConfig, CorsConfig, CssConfig, RaktaConfig, RpcConfig, SeoConfig, ServerConfig, } from "./config/index";
|
|
9
|
+
export { defaultConfig, defineConfig, defineRaktaConfig, loadConfig, mergeConfig, } from "./config/index";
|
|
10
|
+
export type { ArtifactKind, ForgeBuildArtifact, ForgeBuildOptions, ForgeBuildResult, ForgeDevServerHandle, ForgeDevServerOptions, ForgeInspectReport, ForgeRouteModeEntry, InspectOptions, } from "./forge/index";
|
|
11
|
+
export { buildProject, inspectBuild, printInspectReport, startDevServer, } from "./forge/index";
|
|
12
|
+
export type { HttpClientConfig, HttpJsonArray, HttpJsonObject, HttpJsonPrimitive, HttpJsonValue, HttpMethod, HttpQueryParams, HttpQueryValue, HttpRequestBody, HttpRequestConfig, RequestInterceptorFn, ResponseInterceptorFn, } from "./http/index";
|
|
13
|
+
export { createRaktaHttp, HttpNetworkError, HttpResponseError, HttpTimeoutError, RaktaHttpClient, } from "./http/index";
|
|
14
|
+
export type { CacheStrategyOptions, ManifestDisplayMode, ManifestIcon, ManifestOptions, ServiceWorkerOptions, } from "./pwa/index";
|
|
15
|
+
export { buildCacheName, createManifestHandler, generateManifest as generatePwaManifest, generateManifestJson, generateServiceWorkerSource, resolvePrecacheList, } from "./pwa/index";
|
|
16
|
+
export type { HybridRouteEntry, RenderConfig, RenderContext, RendererOptions, RenderFailure, RenderMode, RenderModeDescriptor, RenderResult, RenderSource, RenderSuccess, ResolvedRouteMode, RouteRenderMap, StaticEntry, } from "./render/index";
|
|
17
|
+
export { getModeDescriptor, isBuildTimeMode, isRoadmapMode, RENDER_MODE_DESCRIPTORS, render, renderNotFound, renderServerError, requiresServer, resolveRouteMode, } from "./render/index";
|
|
18
|
+
export type { ApiMethod, ApiRouteHandler, ApiRouteModule, GenerateMetadataFn, LayoutProps, MatchedRoute, PageProps, RouteContext, RouteKind, RouteManifest, RouteManifestEntry, RouteSegment, } from "./router/index";
|
|
19
|
+
export { findLayoutsForPathname, findSpecialRoute, generateManifest, matchRoute, printManifest, readManifest, scanRoutes, writeManifest, } from "./router/index";
|
|
20
|
+
export type { InferInput, InferOutput, ProcedureDefinition, ProcedureKind, RaktaClientConfig, RouterClient, RouterDefinition, RpcEnvelope, RpcErrorEnvelope, RpcPayload, RpcSuccessEnvelope, } from "./rpc/index";
|
|
21
|
+
export { createRaktaClient, createRaktaRouter, createRpcHandler, ProcedureBuilder, publicProcedure, RaktaRpcError, } from "./rpc/index";
|
|
22
|
+
export type { Infer, InferShape, ParseFailure, ParseResult, ParseSuccess, ShapeRecord, ValidationError, } from "./schema/index";
|
|
23
|
+
export { ArrayType, array, BooleanType, boolean, NumberType, number, ObjectType, OptionalType, object, preFixErrors, RaktaSchemaError, RaktaType, StringType, string, } from "./schema/index";
|
|
24
|
+
export type { AlternateLinks, HeadProps, JsonLd, JsonLdGraph, Metadata, OpenGraph, OpenGraphImage, Robots, RobotsOptions, RobotsRule, SitemapEntry, SitemapIndexEntry, SitemapOptions, TwitterCard, } from "./seo/index";
|
|
25
|
+
export { createRobotsHandler, createSitemapHandler, generateRobotsTxt, generateSitemapIndexXml, generateSitemapXml, mergeMetadata, RaktaHead, resolveRobotsContent, resolveTitle, } from "./seo/index";
|
|
26
|
+
export type { GetStateFn, ListenerFn, SelectorFn, SetStateArg, SetStateFn, StateCreator, StoreApi, UnsubscribeFn, } from "./store/index";
|
|
27
|
+
export { createRaktaStore } from "./store/index";
|
|
28
|
+
export type { TideAdapter, TideAdapterConfig, TideAdapterKind, TideRender, TideRenderStrategyResult, TideResponseBlueprint, TideRuntimeContext, } from "./tide/index";
|
|
29
|
+
export { buildErrorResponse, buildHtmlResponse, buildJsonResponse, buildTextResponse, createBunAdapter, createRuntimeContext, } from "./tide/index";
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|