@hypequery/serve 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/LICENSE +201 -0
  2. package/package.json +10 -10
  3. package/dist/adapters/fetch.d.ts +0 -3
  4. package/dist/adapters/fetch.d.ts.map +0 -1
  5. package/dist/adapters/fetch.js +0 -26
  6. package/dist/adapters/node.d.ts +0 -8
  7. package/dist/adapters/node.d.ts.map +0 -1
  8. package/dist/adapters/node.js +0 -105
  9. package/dist/adapters/utils.d.ts +0 -39
  10. package/dist/adapters/utils.d.ts.map +0 -1
  11. package/dist/adapters/utils.js +0 -114
  12. package/dist/adapters/vercel.d.ts +0 -7
  13. package/dist/adapters/vercel.d.ts.map +0 -1
  14. package/dist/adapters/vercel.js +0 -13
  15. package/dist/auth.d.ts +0 -14
  16. package/dist/auth.d.ts.map +0 -1
  17. package/dist/auth.js +0 -37
  18. package/dist/client-config.d.ts +0 -44
  19. package/dist/client-config.d.ts.map +0 -1
  20. package/dist/client-config.js +0 -53
  21. package/dist/dev.d.ts +0 -9
  22. package/dist/dev.d.ts.map +0 -1
  23. package/dist/dev.js +0 -24
  24. package/dist/docs-ui.d.ts +0 -3
  25. package/dist/docs-ui.d.ts.map +0 -1
  26. package/dist/docs-ui.js +0 -34
  27. package/dist/endpoint.d.ts +0 -5
  28. package/dist/endpoint.d.ts.map +0 -1
  29. package/dist/endpoint.js +0 -59
  30. package/dist/index.d.ts +0 -13
  31. package/dist/index.d.ts.map +0 -1
  32. package/dist/index.js +0 -12
  33. package/dist/openapi.d.ts +0 -3
  34. package/dist/openapi.d.ts.map +0 -1
  35. package/dist/openapi.js +0 -189
  36. package/dist/queries.d.ts +0 -3
  37. package/dist/queries.d.ts.map +0 -1
  38. package/dist/queries.js +0 -1
  39. package/dist/query.d.ts +0 -4
  40. package/dist/query.d.ts.map +0 -1
  41. package/dist/query.js +0 -1
  42. package/dist/router.d.ts +0 -13
  43. package/dist/router.d.ts.map +0 -1
  44. package/dist/router.js +0 -56
  45. package/dist/sdk-generator.d.ts +0 -7
  46. package/dist/sdk-generator.d.ts.map +0 -1
  47. package/dist/sdk-generator.js +0 -143
  48. package/dist/server.d.ts +0 -9
  49. package/dist/server.d.ts.map +0 -1
  50. package/dist/server.js +0 -584
  51. package/dist/tenant.d.ts +0 -35
  52. package/dist/tenant.d.ts.map +0 -1
  53. package/dist/tenant.js +0 -49
  54. package/dist/type-tests/builder.test-d.d.ts +0 -13
  55. package/dist/type-tests/builder.test-d.d.ts.map +0 -1
  56. package/dist/type-tests/builder.test-d.js +0 -20
  57. package/dist/types.d.ts +0 -373
  58. package/dist/types.d.ts.map +0 -1
  59. package/dist/types.js +0 -1
@@ -1,143 +0,0 @@
1
- import { mkdir, readFile, writeFile } from "node:fs/promises";
2
- import { dirname, isAbsolute, join, resolve } from "node:path";
3
- import openapiTS, { astToString } from "openapi-typescript";
4
- const TEMPLATE_CLIENT = (clientName) => [
5
- 'import type { paths } from "./types";',
6
- '',
7
- 'type FetchImpl = typeof fetch;',
8
- '',
9
- 'type ExtractJsonResponse<T> = T extends { responses: infer Responses }',
10
- ' ? Responses extends Record<string, any>',
11
- ' ? Responses[200] extends { content: { "application/json": infer R } }',
12
- ' ? R',
13
- ' : Responses[201] extends { content: { "application/json": infer R } }',
14
- ' ? R',
15
- ' : unknown',
16
- ' : unknown',
17
- ' : unknown;',
18
- '',
19
- 'type ExtractBody<T> = T extends { requestBody: { content: { "application/json": infer Body } } }',
20
- ' ? Body',
21
- ' : undefined;',
22
- '',
23
- 'type ExtractQuery<T> = T extends { parameters: { query: infer Params } }',
24
- ' ? Params',
25
- ' : undefined;',
26
- '',
27
- 'type RequestOptions<Path extends keyof paths, Method extends keyof paths[Path]> = {',
28
- ' path: Path;',
29
- ' method: Method;',
30
- ' query?: ExtractQuery<paths[Path][Method]>;',
31
- ' body?: ExtractBody<paths[Path][Method]>;',
32
- ' headers?: Record<string, string>;',
33
- ' fetch?: FetchImpl;',
34
- '} & Omit<RequestInit, "body" | "method">;',
35
- '',
36
- 'interface ClientConfig {',
37
- ' baseUrl: string;',
38
- ' headers?: Record<string, string>;',
39
- ' fetch?: FetchImpl;',
40
- '}',
41
- '',
42
- 'const encodeQueryValue = (value: unknown) =>',
43
- ' Array.isArray(value)',
44
- ' ? value.map((v) => encodeURIComponent(String(v))).join(",")',
45
- ' : encodeURIComponent(String(value));',
46
- '',
47
- 'const buildUrl = (baseUrl: string, path: string, query?: Record<string, unknown>) => {',
48
- ' const url = new URL(path, baseUrl);',
49
- '',
50
- ' if (query) {',
51
- ' Object.entries(query).forEach(([key, value]) => {',
52
- ' if (value === undefined || value === null) {',
53
- ' return;',
54
- ' }',
55
- '',
56
- ' if (Array.isArray(value)) {',
57
- ' value.forEach((entry) => url.searchParams.append(key, String(entry)));',
58
- ' } else if (typeof value === "object") {',
59
- ' url.searchParams.append(key, encodeQueryValue(JSON.stringify(value)));',
60
- ' } else {',
61
- ' url.searchParams.append(key, encodeQueryValue(value));',
62
- ' }',
63
- ' });',
64
- ' }',
65
- '',
66
- ' return url;',
67
- '};',
68
- '',
69
- `export class ${clientName} {`,
70
- ' constructor(private readonly config: ClientConfig) {}',
71
- '',
72
- ' async request<Path extends keyof paths, Method extends keyof paths[Path]>(',
73
- ' options: RequestOptions<Path, Method>',
74
- ' ): Promise<ExtractJsonResponse<paths[Path][Method]>> {',
75
- ' const target = buildUrl(this.config.baseUrl, options.path as string, options.query);',
76
- ' const fetchImpl = options.fetch ?? this.config.fetch ?? globalThis.fetch;',
77
- '',
78
- ' if (!fetchImpl) {',
79
- ' throw new Error("No fetch implementation available. Provide one via config.fetch.");',
80
- ' }',
81
- '',
82
- ' const headers = {',
83
- ' "content-type": "application/json",',
84
- ' ...(this.config.headers ?? {}),',
85
- ' ...(options.headers ?? {}),',
86
- ' };',
87
- '',
88
- ' const response = await fetchImpl(target.toString(), {',
89
- ' ...options,',
90
- ' method: options.method as string,',
91
- ' headers,',
92
- ' body: options.body !== undefined ? JSON.stringify(options.body) : undefined,',
93
- ' });',
94
- '',
95
- ' if (!response.ok) {',
96
- ' const errorText = await response.text();',
97
- ' throw new Error(`Request failed with status ${response.status}: ${errorText}`);',
98
- ' }',
99
- '',
100
- ' const text = await response.text();',
101
- ' if (!text) {',
102
- ' return undefined as ExtractJsonResponse<paths[Path][Method]>;',
103
- ' }',
104
- '',
105
- ' return JSON.parse(text);',
106
- ' }',
107
- '}',
108
- '',
109
- `export const createClient = (config: ClientConfig) => new ${clientName}(config);`,
110
- '',
111
- ].join("\n");
112
- const TEMPLATE_INDEX = `export * from "./client";
113
- export * from "./types";
114
- `;
115
- const isHttpUrl = (value) => /^https?:\/\//i.test(value);
116
- const loadDocument = async (input) => {
117
- if (isHttpUrl(input)) {
118
- const response = await fetch(input);
119
- if (!response.ok) {
120
- throw new Error(`Failed to fetch OpenAPI spec from ${input}: ${response.status}`);
121
- }
122
- return response.json();
123
- }
124
- const absolutePath = isAbsolute(input) ? input : resolve(process.cwd(), input);
125
- const contents = await readFile(absolutePath, "utf8");
126
- return JSON.parse(contents);
127
- };
128
- const writeFileSafe = async (filePath, contents) => {
129
- await mkdir(dirname(filePath), { recursive: true });
130
- await writeFile(filePath, contents, "utf8");
131
- };
132
- export const generateSdkClient = async (options) => {
133
- const document = await loadDocument(options.input);
134
- const typesAst = await openapiTS(document, {
135
- exportType: true,
136
- });
137
- const types = astToString(typesAst);
138
- const outputDir = isAbsolute(options.output) ? options.output : resolve(process.cwd(), options.output);
139
- const clientName = options.clientName ?? "HypeQueryClient";
140
- await writeFileSafe(join(outputDir, "types.ts"), types);
141
- await writeFileSafe(join(outputDir, "client.ts"), TEMPLATE_CLIENT(clientName));
142
- await writeFileSafe(join(outputDir, "index.ts"), TEMPLATE_INDEX);
143
- };
package/dist/server.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import type { AuthContext, ServeBuilder, ServeConfig, ServeContextFactory, ServeEndpointMap, ServeInitializer, ServeQueriesMap } from "./types.js";
2
- export declare const defineServe: <TContext extends Record<string, unknown> = Record<string, unknown>, TAuth extends AuthContext = AuthContext, const TQueries extends ServeQueriesMap<TContext, TAuth> = ServeQueriesMap<TContext, TAuth>>(config: ServeConfig<TContext, TAuth, TQueries>) => ServeBuilder<ServeEndpointMap<TQueries, TContext, TAuth>, TContext, TAuth>;
3
- type InferInitializerContext<TFactory, TAuth extends AuthContext> = TFactory extends ServeContextFactory<infer TContext, TAuth> ? TContext : never;
4
- type ServeInitializerOptions<TFactory extends ServeContextFactory<any, TAuth>, TAuth extends AuthContext> = Omit<ServeConfig<InferInitializerContext<TFactory, TAuth>, TAuth, ServeQueriesMap<InferInitializerContext<TFactory, TAuth>, TAuth>>, "queries" | "context"> & {
5
- context: TFactory;
6
- };
7
- export declare const initServe: <TFactory extends ServeContextFactory<any, TAuth>, TAuth extends AuthContext = AuthContext>(options: ServeInitializerOptions<TFactory, TAuth>) => ServeInitializer<InferInitializerContext<TFactory, TAuth>, TAuth>;
8
- export {};
9
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,WAAW,EAaX,YAAY,EACZ,WAAW,EACX,mBAAmB,EAEnB,gBAAgB,EAEhB,gBAAgB,EAGhB,eAAe,EAShB,MAAM,YAAY,CAAC;AA0iBpB,eAAO,MAAM,WAAW,GACtB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,KAAK,SAAS,WAAW,GAAG,WAAW,EACvC,KAAK,CAAC,QAAQ,SAAS,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,EAE1F,QAAQ,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAC7C,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,CAkM3E,CAAC;AA8BF,KAAK,uBAAuB,CAC1B,QAAQ,EACR,KAAK,SAAS,WAAW,IACvB,QAAQ,SAAS,mBAAmB,CAAC,MAAM,QAAQ,EAAE,KAAK,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnF,KAAK,uBAAuB,CAC1B,QAAQ,SAAS,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,EAChD,KAAK,SAAS,WAAW,IACvB,IAAI,CACN,WAAW,CACT,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,EACxC,KAAK,EACL,eAAe,CAAC,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CACjE,EACD,SAAS,GAAG,SAAS,CACtB,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAQ1B,eAAO,MAAM,SAAS,GACpB,QAAQ,SAAS,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,EAChD,KAAK,SAAS,WAAW,GAAG,WAAW,EACvC,SAAS,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAG,gBAAgB,CACpE,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,EACxC,KAAK,CAsBN,CAAC"}