silgi 0.34.11 → 0.34.13

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/dist/build.mjs CHANGED
@@ -14,6 +14,7 @@ import 'unimport';
14
14
  import '@clack/prompts';
15
15
  import 'node:fs';
16
16
  import 'dotenv';
17
+ import 'knitwork';
17
18
  import 'mlly';
18
19
  import 'dev-jiti';
19
20
  import './cli/compatibility.mjs';
@@ -26,7 +27,6 @@ import 'ufo';
26
27
  import 'node:fs/promises';
27
28
  import 'globby';
28
29
  import 'ignore';
29
- import 'knitwork';
30
30
  import 'klona';
31
31
  import 'silgi/runtime';
32
32
  import 'unstorage';
@@ -2,12 +2,13 @@ import { consola } from 'consola';
2
2
  import { createHooks, createDebugger } from 'hookable';
3
3
  import { resolve, join, relative, extname, basename, dirname, isAbsolute } from 'pathe';
4
4
  import { useSilgiCLI, replaceRuntimeValues, silgiCLICtx, autoImportTypes } from 'silgi';
5
- import { isPresents, addTemplate, addCoreFile, relativeWithDot, hash, removeExtension, resolveAlias, directoryToURL, addImports, baseHeaderBannerComment, writeFile, normalizeTemplate, useLogger, resolveSilgiPath, hasSilgiModule, genEnsureSafeVar, toArray, isDirectory } from 'silgi/kit';
5
+ import { isPresents, addTemplate, addCoreFile, genEnsureSafeVar, relativeWithDot, hash, removeExtension, resolveAlias, directoryToURL, addImports, baseHeaderBannerComment, writeFile, normalizeTemplate, useLogger, resolveSilgiPath, hasSilgiModule, toArray, isDirectory } from 'silgi/kit';
6
6
  import { runtimeDir } from 'silgi/runtime/meta';
7
7
  import { scanExports, createUnimport, toExports } from 'unimport';
8
8
  import * as p from '@clack/prompts';
9
9
  import { existsSync, promises, readFileSync, mkdirSync, writeFileSync } from 'node:fs';
10
10
  import * as dotenv from 'dotenv';
11
+ import { genImport, genTypeImport, genObjectFromRawEntries, genAugmentation } from 'knitwork';
11
12
  import { findTypeExports, findExports, resolvePath, parseNodeModulePath, lookupNodeModuleSubpath } from 'mlly';
12
13
  import { createJiti } from 'dev-jiti';
13
14
  import { h as hasInstalledModule } from './compatibility.mjs';
@@ -18,7 +19,6 @@ import { withTrailingSlash, isRelative } from 'ufo';
18
19
  import { readFile, readdir } from 'node:fs/promises';
19
20
  import { globby } from 'globby';
20
21
  import ignore from 'ignore';
21
- import { genImport, genTypeImport, genAugmentation, genObjectFromRawEntries } from 'knitwork';
22
22
  import { klona } from 'klona';
23
23
  import { useSilgiRuntimeConfig, initRuntimeConfig } from 'silgi/runtime';
24
24
  import { createStorage, builtinDrivers } from 'unstorage';
@@ -223,6 +223,52 @@ async function h3Framework(silgi, skip = false) {
223
223
  }
224
224
  }
225
225
 
226
+ async function nextJS(silgi, skip = false) {
227
+ if (!isPresents(["next"]) && skip === false)
228
+ return;
229
+ if (isPresents(["next"])) {
230
+ silgi.hook("after:schema.ts", (data) => {
231
+ data.unshift("type FrameworkContextExtends = {}");
232
+ });
233
+ }
234
+ const defaultConfig = {
235
+ serverExternalPackages: [
236
+ "mlly",
237
+ "silgi",
238
+ "h3",
239
+ "@silgi/openapi",
240
+ "@silgi/scalar",
241
+ "@silgi/ecosystem"
242
+ ],
243
+ eslint: {
244
+ ignoreDuringBuilds: true
245
+ },
246
+ output: "standalone"
247
+ };
248
+ await silgi.callHook("nextjs:prepare", {
249
+ config: defaultConfig
250
+ });
251
+ const template = [
252
+ genImport("defu", ["defu"]),
253
+ genTypeImport("next", ["NextConfig"]),
254
+ "export function withNextConfig(config: NextConfig) {",
255
+ "return defu(config,",
256
+ // TODO: make the output code more properly intend.
257
+ genObjectFromRawEntries(
258
+ Object.entries(defaultConfig).map(([key, value]) => [key, genEnsureSafeVar(value)]),
259
+ ""
260
+ ),
261
+ ")}",
262
+ ""
263
+ ];
264
+ addTemplate({
265
+ filename: "next.config.ts",
266
+ where: ".silgi",
267
+ write: true,
268
+ getContents: () => template.join("\n")
269
+ });
270
+ }
271
+
226
272
  async function nitroFramework(silgi, skip = false) {
227
273
  if (!isPresents(["nitro"]) && skip === false)
228
274
  return;
@@ -276,7 +322,8 @@ const frameworkSetup = [
276
322
  emptyFramework,
277
323
  h3Framework,
278
324
  nitroFramework,
279
- nuxtFramework
325
+ nuxtFramework,
326
+ nextJS
280
327
  ];
281
328
 
282
329
  async function registerModuleExportScan(silgi) {
@@ -1382,14 +1429,14 @@ async function createSilgiCLI(config = {}, opts = {}) {
1382
1429
  packageImport: "silgi/runtime/internal/debug"
1383
1430
  });
1384
1431
  }
1385
- for (const framework of frameworkSetup) {
1386
- await framework(silgi);
1387
- }
1388
1432
  await scanAndSyncOptions(silgi);
1389
1433
  await scanModules$1(silgi);
1390
1434
  await scanSilgiExports();
1391
1435
  await installModules(silgi, true);
1392
1436
  useCLIRuntimeConfig(silgi);
1437
+ for (const framework of frameworkSetup) {
1438
+ await framework(silgi);
1439
+ }
1393
1440
  await writeScanFiles(silgi);
1394
1441
  silgi.storage = await createStorageCLI(silgi);
1395
1442
  silgi.hooks.hook("close", async () => {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { defineCommand, runMain } from 'citty';
3
3
 
4
- const version = "0.34.11";
4
+ const version = "0.34.13";
5
5
  const packageJson = {
6
6
  version: version};
7
7
 
package/dist/cli/init.mjs CHANGED
@@ -13,6 +13,7 @@ import 'silgi/kit';
13
13
  import 'silgi/runtime/meta';
14
14
  import 'unimport';
15
15
  import 'dotenv';
16
+ import 'knitwork';
16
17
  import 'mlly';
17
18
  import 'dev-jiti';
18
19
  import './compatibility.mjs';
@@ -23,7 +24,6 @@ import 'exsolve';
23
24
  import 'ufo';
24
25
  import 'globby';
25
26
  import 'ignore';
26
- import 'knitwork';
27
27
  import 'klona';
28
28
  import 'silgi/runtime';
29
29
  import 'unstorage';
@@ -15,6 +15,7 @@ import 'unimport';
15
15
  import '@clack/prompts';
16
16
  import 'node:fs';
17
17
  import 'dotenv';
18
+ import 'knitwork';
18
19
  import 'mlly';
19
20
  import 'dev-jiti';
20
21
  import './compatibility.mjs';
@@ -26,7 +27,6 @@ import 'ufo';
26
27
  import 'node:fs/promises';
27
28
  import 'globby';
28
29
  import 'ignore';
29
- import 'knitwork';
30
30
  import 'klona';
31
31
  import 'silgi/runtime';
32
32
  import 'unstorage';
@@ -17,6 +17,7 @@ import 'unimport';
17
17
  import '@clack/prompts';
18
18
  import 'node:fs';
19
19
  import 'dotenv';
20
+ import 'knitwork';
20
21
  import 'mlly';
21
22
  import 'dev-jiti';
22
23
  import './compatibility.mjs';
@@ -28,7 +29,6 @@ import 'ufo';
28
29
  import 'node:fs/promises';
29
30
  import 'globby';
30
31
  import 'ignore';
31
- import 'knitwork';
32
32
  import 'klona';
33
33
  import 'silgi/runtime';
34
34
  import 'unstorage';
@@ -263,7 +263,7 @@ async function createSilgi(config) {
263
263
  routerPrefixs: [],
264
264
  schemas: config.schemas ?? {},
265
265
  services: config.services ?? {},
266
- shared: config.shared ?? void 0,
266
+ shared: config.shared ?? {},
267
267
  plugins: config.plugins ?? [],
268
268
  framework: config.framework ?? void 0,
269
269
  storage: config.options.putStorage ?? void 0,
@@ -1,4 +1,4 @@
1
- import type { NextApiRequest, NextApiResponse } from 'next';
1
+ import type { NextApiResponse } from 'next';
2
2
  import type { Silgi } from 'silgi/types';
3
- export declare function addNextApp(silgiContext?: Silgi): (req: NextApiRequest | Request, res?: NextApiResponse) => Promise<void | NextApiResponse<any> | Response>;
3
+ export declare function addNextApp(silgiContext?: Silgi): (request: Request) => Promise<void | NextApiResponse<any> | Response>;
4
4
  export default addNextApp;
@@ -1,71 +1,65 @@
1
- import { createError, handleResponse, isError, useSilgi } from "silgi";
2
- import { getQuery, withoutHost } from "ufo";
1
+ import { createError, getUrlPrefix, isError, silgiFetch, useSilgi } from "silgi";
3
2
  export function addNextApp(silgiContext = useSilgi()) {
4
- return async (req, res) => {
3
+ return async (request) => {
5
4
  if (!silgiContext) {
6
5
  throw new Error("Silgi context is not defined");
7
6
  }
8
- let operation;
7
+ const silgiURL = getUrlPrefix(request.url, request.method);
9
8
  try {
10
- const silgiConnect = silgi({
11
- req,
12
- res,
13
- context: {},
14
- url: new URL(req.url || "", "http://localhost")
15
- });
16
- const query = getQuery(req.url || "");
17
- const body = req.body;
18
- let newPath = withoutHost(req.url || "").replace(/\/srn/, "");
19
- if (newPath.includes("?")) {
20
- newPath = `${newPath}&method=${req.method}`;
21
- } else {
22
- newPath = `${newPath}?method=${req.method}`;
23
- }
24
- operation = parseURI(newPath, silgiContext.uris);
25
- if (!operation) {
9
+ const resolvedRoute = await silgiFetch(request);
10
+ if (!resolvedRoute.ok) {
11
+ await silgiContext.callHook("fetch:error", {
12
+ error: new Error(resolvedRoute.statusText),
13
+ url: silgiURL
14
+ });
15
+ silgiContext.captureError(
16
+ silgiContext,
17
+ createError({
18
+ message: resolvedRoute.statusText,
19
+ statusCode: resolvedRoute.status,
20
+ statusMessage: resolvedRoute.statusText
21
+ }),
22
+ {
23
+ url: silgiURL,
24
+ tags: ["execute"]
25
+ }
26
+ );
26
27
  throw createError({
27
- statusCode: 400,
28
- statusMessage: "Invalid URI"
28
+ statusCode: resolvedRoute.status,
29
+ statusMessage: resolvedRoute.statusText
29
30
  });
30
31
  }
31
- await silgiContext.callHook("event:init", req, {
32
- path: newPath,
33
- queryParams: query,
34
- operation
35
- });
36
- const data = await silgiConnect.execute(newPath, {
37
- ...body
38
- }, void 0, query);
39
- return handleResponse(data, {
40
- req,
41
- res,
42
- context: {},
43
- url: new URL(req.url || "", "http://localhost")
44
- }, {
45
- debug: false
46
- });
32
+ return resolvedRoute;
47
33
  } catch (err) {
48
34
  if (isError(err)) {
35
+ throw createError({
36
+ statusCode: 500,
37
+ statusMessage: "Internal Server Error",
38
+ cause: err
39
+ });
49
40
  }
50
- await silgiContext.callHook("execute:error", {
41
+ await silgiContext.callHook("fetch:error", {
51
42
  error: err instanceof Error ? err : new Error(String(err)),
52
- timestamp: Date.now(),
53
- operation
54
- // event: event as never,
43
+ url: silgiURL
55
44
  });
56
45
  silgiContext.captureError(
57
46
  silgiContext,
58
47
  createError({
59
48
  message: err instanceof Error ? err.message : String(err),
60
49
  statusCode: 500,
61
- statusMessage: "Internal Server Error"
50
+ statusMessage: "Internal Server Error",
51
+ cause: err
62
52
  }),
63
53
  {
64
- event,
65
- operation,
54
+ url: silgiURL,
66
55
  tags: ["execute"]
67
56
  }
68
57
  );
58
+ throw createError({
59
+ statusCode: 500,
60
+ message: "Internal Server Error",
61
+ cause: err
62
+ });
69
63
  }
70
64
  };
71
65
  }
@@ -7,7 +7,7 @@ import { Hookable, NestedHooks } from 'hookable';
7
7
  import { Ignore, Options } from 'ignore';
8
8
  import { TSConfig } from 'pkg-types';
9
9
  import { PresetName, PresetOptions, PresetNameInput } from 'silgi/presets';
10
- import { SilgiRuntimeShareds as SilgiRuntimeShareds$1, ModuleMeta as ModuleMeta$1, SilgiModule as SilgiModule$1, BuildSilgi as BuildSilgi$1, SilgiSchema as SilgiSchema$1, SilgiEvent as SilgiEvent$1, SilgiRuntimeActions as SilgiRuntimeActions$1, StorageConfig as StorageConfig$1, Commands as Commands$1, DotenvOptions as DotenvOptions$1, EnvOptions as EnvOptions$1, SilgiRuntimeConfig as SilgiRuntimeConfig$1, SilgiCLIHooks as SilgiCLIHooks$1, StorageMounts as StorageMounts$1, SilgiTemplate as SilgiTemplate$1, SilgiFrameworkInfo as SilgiFrameworkInfo$1 } from 'silgi/types';
10
+ import { ResolvedServiceDefinition as ResolvedServiceDefinition$1, SilgiRuntimeShareds as SilgiRuntimeShareds$1, ModuleMeta as ModuleMeta$1, SilgiModule as SilgiModule$1, BuildSilgi as BuildSilgi$1, SilgiSchema as SilgiSchema$1, SilgiEvent as SilgiEvent$1, SilgiRuntimeActions as SilgiRuntimeActions$1, StorageConfig as StorageConfig$1, Commands as Commands$1, DotenvOptions as DotenvOptions$1, EnvOptions as EnvOptions$1, SilgiRuntimeConfig as SilgiRuntimeConfig$1, SilgiCLIHooks as SilgiCLIHooks$1, StorageMounts as StorageMounts$1, SilgiTemplate as SilgiTemplate$1, SilgiFrameworkInfo as SilgiFrameworkInfo$1 } from 'silgi/types';
11
11
  import { Adapter, TablesSchema, InferModelTypes } from 'unadapter/types';
12
12
  import { UnimportPluginOptions } from 'unimport/unplugin';
13
13
  import * as h3 from 'h3';
@@ -15,8 +15,9 @@ import { H3Event, HTTPMethod as HTTPMethod$1, Session } from 'h3';
15
15
  import * as nitropack_types from 'nitropack/types';
16
16
  import { NitroRuntimeConfig } from 'nitropack/types';
17
17
  import { Defu } from 'defu';
18
- import { Stats } from 'node:fs';
19
18
  import * as next from 'next';
19
+ import { NextConfig } from 'next';
20
+ import { Stats } from 'node:fs';
20
21
  import { ESMImport, ESMCodeGenOptions } from 'knitwork';
21
22
  import { Unimport } from 'unimport';
22
23
  import { Storage, TransactionOptions, BuiltinDriverName, StorageValue } from 'unstorage';
@@ -72,7 +73,7 @@ interface SilgiCLI {
72
73
  type: 'Parser';
73
74
  path?: string;
74
75
  }[];
75
- services: ResolvedServiceDefinition;
76
+ services: ResolvedServiceDefinition$1;
76
77
  shareds: SilgiRuntimeShareds$1;
77
78
  schemas: Record<string, any>;
78
79
  scannedURIs: Map<string, string>;
@@ -304,6 +305,9 @@ interface SilgiCLIHooks extends SilgiHooks {
304
305
  'app:templatesGenerated': (app: SilgiCLI, templates: ResolvedSilgiTemplate[], options?: GenerateAppOptions) => HookResult;
305
306
  'scanFiles:done': (app: SilgiCLI) => HookResult;
306
307
  'prepare:commands': (commands: Commands[]) => HookResult;
308
+ 'nextjs:prepare': (data: {
309
+ config: NextConfig;
310
+ }) => HookResult;
307
311
  }
308
312
  type TSReference = {
309
313
  types: string;
@@ -377,7 +381,7 @@ interface ServiceSetup<Schema extends SilgiSchema$1 = SilgiSchema$1, Route exten
377
381
  * This interface is designed to be compatible with the structure created
378
382
  * by the createService function.
379
383
  */
380
- interface ResolvedServiceDefinition$1 {
384
+ interface ResolvedServiceDefinition {
381
385
  [routePath: string]: {
382
386
  [method: string]: {
383
387
  handler: (...args: any[]) => Promise<any>;
@@ -1009,7 +1013,7 @@ interface Silgi {
1009
1013
  router: RouterContext<SilgiRoute>;
1010
1014
  routerPrefixs: string[];
1011
1015
  schemas: ResolvedSchemaDefinition;
1012
- services: ResolvedServiceDefinition$1;
1016
+ services: ResolvedServiceDefinition;
1013
1017
  shared: SilgiRuntimeShareds;
1014
1018
  plugins: SilgiAppPlugin[];
1015
1019
  framework: FrameworkContext;
@@ -1184,4 +1188,4 @@ interface GraphQLJSON {
1184
1188
  references: any;
1185
1189
  }
1186
1190
 
1187
- export type { AllPaths, AllPrefixes, AppConfig, Awaitable, BuildSilgi, CaptureError, CapturedErrorContext, CommandType, Commands, CustomRequestInit, DeepPartial, DeepRequired, DefaultHooks, DefineFrameworkOptions, DotenvOptions, EnvOptions, EventHandlerResponse, ExtendContext, ExtendShared, ExtractNamespace, ExtractPathParamKeys, ExtractPathParams, ExtractPrefix, ExtractRoute, FrameworkContext, GenImport, GenerateAppOptions, GraphQLJSON, HTTPMethod, HookResult, HttpMethod, LoadConfigOptions, MergeAll, MergedSilgiSchema, MethodSchemas, ModuleDefinition, ModuleHookContext, ModuleMeta, ModuleOptionsCustom, ModuleSetupInstallResult, ModuleSetupReturn, NamespacesForPrefix, NitroBuildInfo, RequiredServiceType, ResolvedModuleMeta, ResolvedModuleOptions, ResolvedSchema, ResolvedSchemaDefinition, ResolvedServiceDefinition$1 as ResolvedServiceDefinition, ResolvedSilgiTemplate, RouteConfig, RouterParams, Routers, RoutesForPrefixAndNamespace, ScanFile, Schema, ServiceHandler, ServiceHandlerInput, ServiceHandlerOutput, ServiceHandlerSource, ServiceMethods, ServiceSetup, Silgi, SilgiAppPlugin, SilgiCLI, SilgiCLIConfig, SilgiCLIDynamicConfig, SilgiCLIHooks, SilgiCLIOptions, SilgiCommands, SilgiCompatibility, SilgiCompatibilityIssue, SilgiCompatibilityIssues, SilgiConfig, SilgiEvent, SilgiFetchClient, SilgiFetchOptions, SilgiFrameworkInfo, SilgiHooks, SilgiModule, SilgiModuleInput, SilgiModuleOptions, SilgiOptions, SilgiPreset, SilgiPresetMeta, SilgiRoute, SilgiRouterTypes, SilgiRuntimeActions, SilgiRuntimeConfig, SilgiRuntimeContext, SilgiRuntimeHooks, SilgiRuntimeMethods, SilgiRuntimeOptions, SilgiRuntimeShareds, SilgiRuntimeSharedsExtend, SilgiSchema, SilgiStorageBase, SilgiTemplate, SilgiURL, StandardHTTPMethod, StorageConfig, StorageKeyGenerator, StorageKeyParams, StorageMounts, TSReference, TrimAfterFourSlashes, WithPathParams };
1191
+ export type { AllPaths, AllPrefixes, AppConfig, Awaitable, BuildSilgi, CaptureError, CapturedErrorContext, CommandType, Commands, CustomRequestInit, DeepPartial, DeepRequired, DefaultHooks, DefineFrameworkOptions, DotenvOptions, EnvOptions, EventHandlerResponse, ExtendContext, ExtendShared, ExtractNamespace, ExtractPathParamKeys, ExtractPathParams, ExtractPrefix, ExtractRoute, FrameworkContext, GenImport, GenerateAppOptions, GraphQLJSON, HTTPMethod, HookResult, HttpMethod, LoadConfigOptions, MergeAll, MergedSilgiSchema, MethodSchemas, ModuleDefinition, ModuleHookContext, ModuleMeta, ModuleOptionsCustom, ModuleSetupInstallResult, ModuleSetupReturn, NamespacesForPrefix, NitroBuildInfo, RequiredServiceType, ResolvedModuleMeta, ResolvedModuleOptions, ResolvedSchema, ResolvedSchemaDefinition, ResolvedServiceDefinition, ResolvedSilgiTemplate, RouteConfig, RouterParams, Routers, RoutesForPrefixAndNamespace, ScanFile, Schema, ServiceHandler, ServiceHandlerInput, ServiceHandlerOutput, ServiceHandlerSource, ServiceMethods, ServiceSetup, Silgi, SilgiAppPlugin, SilgiCLI, SilgiCLIConfig, SilgiCLIDynamicConfig, SilgiCLIHooks, SilgiCLIOptions, SilgiCommands, SilgiCompatibility, SilgiCompatibilityIssue, SilgiCompatibilityIssues, SilgiConfig, SilgiEvent, SilgiFetchClient, SilgiFetchOptions, SilgiFrameworkInfo, SilgiHooks, SilgiModule, SilgiModuleInput, SilgiModuleOptions, SilgiOptions, SilgiPreset, SilgiPresetMeta, SilgiRoute, SilgiRouterTypes, SilgiRuntimeActions, SilgiRuntimeConfig, SilgiRuntimeContext, SilgiRuntimeHooks, SilgiRuntimeMethods, SilgiRuntimeOptions, SilgiRuntimeShareds, SilgiRuntimeSharedsExtend, SilgiSchema, SilgiStorageBase, SilgiTemplate, SilgiURL, StandardHTTPMethod, StorageConfig, StorageKeyGenerator, StorageKeyParams, StorageMounts, TSReference, TrimAfterFourSlashes, WithPathParams };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "silgi",
3
3
  "type": "module",
4
- "version": "0.34.11",
4
+ "version": "0.34.13",
5
5
  "private": false,
6
6
  "sideEffects": false,
7
7
  "exports": {