silgi 0.37.20 → 0.37.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { consola } from 'consola';
2
2
  import { createHooks, createDebugger } from 'hookable';
3
3
  import { resolve, join, relative, extname, basename, dirname, isAbsolute } from 'pathe';
4
- import { useSilgiCLI, replaceRuntimeValues, silgiCLICtx, autoImportTypes } from 'silgi';
4
+ import { useSilgiCLI, replaceRuntimeValues, silgiCLICtx, asyncRuntimeStorage, autoImportTypes } from 'silgi';
5
5
  import { isPresents, addTemplate, addCoreFile, genEnsureSafeVar, writeFile, relativeWithDot, hash, removeExtension, resolveAlias, directoryToURL, addImports, baseHeaderBannerComment, 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';
@@ -1491,6 +1491,7 @@ async function createSilgiCLI(config = {}, opts = {}) {
1491
1491
  await framework(silgi);
1492
1492
  }
1493
1493
  await writeScanFiles(silgi);
1494
+ asyncRuntimeStorage.set(silgi.options.runtimeConfig);
1494
1495
  silgi.storage = await createStorageCLI(silgi);
1495
1496
  silgi.hooks.hook("close", async () => {
1496
1497
  await silgi.storage.dispose();
@@ -1527,6 +1528,7 @@ async function createSilgiCLI(config = {}, opts = {}) {
1527
1528
  }
1528
1529
  await registerModuleExportScan(silgi);
1529
1530
  await writeScanFiles(silgi);
1531
+ asyncRuntimeStorage.set(silgi.options.runtimeConfig);
1530
1532
  return silgi;
1531
1533
  }
1532
1534
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { defineCommand, runMain } from 'citty';
3
3
 
4
- const version = "0.37.20";
4
+ const version = "0.37.21";
5
5
  const packageJson = {
6
6
  version: version};
7
7
 
@@ -70,10 +70,6 @@ const command$1 = defineCommand({
70
70
  throw new Error("Silgi is not initialized");
71
71
  }
72
72
  const commands = silgi.options.commands;
73
- globalThis.__silgi__ = globalThis.__silgi__ || {};
74
- globalThis.__silgi__.useRuntimeConfig = function() {
75
- return silgi?.options?.runtimeConfig || {};
76
- };
77
73
  const tags = args.tag?.split(",").map((t) => t.trim());
78
74
  const silgiConfig = await loadOptions({});
79
75
  await prepareEnv(silgiConfig);
@@ -1,4 +1,4 @@
1
- import { SilgiConfig, Silgi, SilgiEvent, SilgiSchema, ServiceSetup, CustomRequestInit, SilgiRuntimeContext, AllPrefixes, NamespacesForPrefix, RoutesForPrefixAndNamespace, MethodSchemas, MergeAll, ServiceMethods, SilgiRuntimeShareds, RouteConfig, SilgiURL, StorageConfig, SilgiCLI, SilgiStorageBase } from 'silgi/types';
1
+ import { SilgiConfig, Silgi, SilgiEvent, SilgiSchema, ServiceSetup, CustomRequestInit, SilgiRuntimeContext, AllPrefixes, NamespacesForPrefix, RoutesForPrefixAndNamespace, MethodSchemas, MergeAll, ServiceMethods, SilgiRuntimeShareds, RouteConfig, SilgiURL, StorageConfig, SilgiCLI, SilgiStorageBase, SilgiRuntimeConfig } from 'silgi/types';
2
2
  import { StandardSchemaV1 } from '@standard-schema/spec';
3
3
  import { Storage, StorageValue } from 'unstorage';
4
4
  import { UseContext } from 'unctx';
@@ -278,6 +278,34 @@ declare function tryUseSilgiCLI(): SilgiCLI | null;
278
278
 
279
279
  declare function storageMount<T extends Storage = Storage>(silgi?: Silgi): (base: keyof SilgiStorageBase, driver: Parameters<Storage['mount']>[1]) => T;
280
280
 
281
+ /** async local storage for the name of the current silgi instance */
282
+ declare const asyncRuntimeStorage: UseContext<SilgiRuntimeConfig>;
283
+ /** Direct access to the silgi context with asyncLocalStorage - see https://github.com/unjs/unctx. */
284
+ declare const getRuntimeCtx: () => SilgiRuntimeConfig | null;
285
+ /**
286
+ * Get access to silgi instance.
287
+ *
288
+ * Throws an error if silgi instance is unavailable.
289
+ * @example
290
+ * ```js
291
+ * const runtime = useRuntime()
292
+ * ```
293
+ */
294
+ declare function useRuntime(): SilgiRuntimeConfig;
295
+ /**
296
+ * Get access to Runtime instance.
297
+ *
298
+ * Returns null if Runtime instance is unavailable.
299
+ * @example
300
+ * ```js
301
+ * const runtime = tryUseRuntime()
302
+ * if (runtime) {
303
+ * // Do something
304
+ * }
305
+ * ```
306
+ */
307
+ declare function tryUseRuntime(): SilgiRuntimeConfig | null;
308
+
281
309
  declare const autoImportTypes: string[];
282
310
 
283
- export { SilgiError, autoImportTypes, createError, createRoute, createSchema, createService, createShared, createSilgi, createSilgiCore, createStorage, deepMergeObjects, getEvent, getEventContext, getUrlPrefix, handleResponse, isError, replaceRuntimeValues, silgiCLICtx, silgiCtx, silgiFetch, storageMount, tryUseSilgi, tryUseSilgiCLI, useSilgi, useSilgiCLI, useSilgiStorage };
311
+ export { SilgiError, asyncRuntimeStorage, autoImportTypes, createError, createRoute, createSchema, createService, createShared, createSilgi, createSilgiCore, createStorage, deepMergeObjects, getEvent, getEventContext, getRuntimeCtx, getUrlPrefix, handleResponse, isError, replaceRuntimeValues, silgiCLICtx, silgiCtx, silgiFetch, storageMount, tryUseRuntime, tryUseSilgi, tryUseSilgiCLI, useRuntime, useSilgi, useSilgiCLI, useSilgiStorage };
@@ -2,7 +2,8 @@ import { createConsola } from 'consola';
2
2
  import { defu } from 'defu';
3
3
  import { createHooks } from 'hookable';
4
4
  import { createRouter, addRoute, findRoute } from 'rou3';
5
- import { getContext } from 'unctx';
5
+ import { AsyncLocalStorage } from 'node:async_hooks';
6
+ import { createContext, getContext } from 'unctx';
6
7
  import { Buffer } from 'node:buffer';
7
8
  import { klona } from 'klona';
8
9
  import { useSilgiRuntimeConfig } from 'silgi/runtime';
@@ -10,6 +11,22 @@ import { createStorage as createStorage$1, builtinDrivers, prefixStorage } from
10
11
  import { FastURL, FastResponse } from 'srvx';
11
12
  export { s as silgiCLICtx, t as tryUseSilgiCLI, u as useSilgiCLI } from '../_chunks/silgiApp.mjs';
12
13
 
14
+ const asyncRuntimeStorage = createContext({
15
+ asyncContext: true,
16
+ AsyncLocalStorage
17
+ });
18
+ const getRuntimeCtx = () => asyncRuntimeStorage.tryUse();
19
+ function useRuntime() {
20
+ const instance = asyncRuntimeStorage.tryUse();
21
+ if (!instance) {
22
+ throw new Error("Runtime instance is unavailable!");
23
+ }
24
+ return instance;
25
+ }
26
+ function tryUseRuntime() {
27
+ return asyncRuntimeStorage.tryUse();
28
+ }
29
+
13
30
  const silgiCtx = getContext("silgi");
14
31
  function useSilgi() {
15
32
  const instance = silgiCtx.tryUse();
@@ -282,10 +299,7 @@ async function createSilgi(config) {
282
299
  captureError: config.captureError ?? (() => {
283
300
  })
284
301
  };
285
- globalThis.__silgi__ = globalThis.__silgi__ || {};
286
- globalThis.__silgi__.useRuntimeConfig = function() {
287
- return silgi?.options?.runtimeConfig || {};
288
- };
302
+ asyncRuntimeStorage.set(silgi.options.runtimeConfig);
289
303
  if (!silgi.router) {
290
304
  silgi.router = createRouter();
291
305
  }
@@ -973,4 +987,4 @@ const autoImportTypes = [
973
987
  "ExtractQueryParamsFromURI"
974
988
  ];
975
989
 
976
- export { SilgiError, autoImportTypes, createError, createRoute, createSchema, createService, createShared, createSilgi, createSilgiCore, createStorage, deepMergeObjects, getEvent, getEventContext, getUrlPrefix, handleResponse, isError, replaceRuntimeValues, silgiCtx, silgiFetch, storageMount, tryUseSilgi, useSilgi, useSilgiStorage };
990
+ export { SilgiError, asyncRuntimeStorage, autoImportTypes, createError, createRoute, createSchema, createService, createShared, createSilgi, createSilgiCore, createStorage, deepMergeObjects, getEvent, getEventContext, getRuntimeCtx, getUrlPrefix, handleResponse, isError, replaceRuntimeValues, silgiCtx, silgiFetch, storageMount, tryUseRuntime, tryUseSilgi, useRuntime, useSilgi, useSilgiStorage };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- export { SilgiError, autoImportTypes, createError, createRoute, createSchema, createService, createShared, createSilgi, createSilgiCore, createStorage, deepMergeObjects, getEvent, getEventContext, getUrlPrefix, handleResponse, isError, replaceRuntimeValues, silgiCLICtx, silgiCtx, silgiFetch, storageMount, tryUseSilgi, tryUseSilgiCLI, useSilgi, useSilgiCLI, useSilgiStorage } from './core/index.mjs';
1
+ export { SilgiError, asyncRuntimeStorage, autoImportTypes, createError, createRoute, createSchema, createService, createShared, createSilgi, createSilgiCore, createStorage, deepMergeObjects, getEvent, getEventContext, getRuntimeCtx, getUrlPrefix, handleResponse, isError, replaceRuntimeValues, silgiCLICtx, silgiCtx, silgiFetch, storageMount, tryUseRuntime, tryUseSilgi, tryUseSilgiCLI, useRuntime, useSilgi, useSilgiCLI, useSilgiStorage } from './core/index.mjs';
2
2
  import 'silgi/types';
3
3
  import '@standard-schema/spec';
4
4
  import 'unstorage';
package/dist/index.mjs CHANGED
@@ -1,9 +1,10 @@
1
- export { SilgiError, autoImportTypes, createError, createRoute, createSchema, createService, createShared, createSilgi, createSilgiCore, createStorage, deepMergeObjects, getEvent, getEventContext, getUrlPrefix, handleResponse, isError, replaceRuntimeValues, silgiCtx, silgiFetch, storageMount, tryUseSilgi, useSilgi, useSilgiStorage } from './core/index.mjs';
1
+ export { SilgiError, asyncRuntimeStorage, autoImportTypes, createError, createRoute, createSchema, createService, createShared, createSilgi, createSilgiCore, createStorage, deepMergeObjects, getEvent, getEventContext, getRuntimeCtx, getUrlPrefix, handleResponse, isError, replaceRuntimeValues, silgiCtx, silgiFetch, storageMount, tryUseRuntime, tryUseSilgi, useRuntime, useSilgi, useSilgiStorage } from './core/index.mjs';
2
2
  export { s as silgiCLICtx, t as tryUseSilgiCLI, u as useSilgiCLI } from './_chunks/silgiApp.mjs';
3
3
  import 'consola';
4
4
  import 'defu';
5
5
  import 'hookable';
6
6
  import 'rou3';
7
+ import 'node:async_hooks';
7
8
  import 'unctx';
8
9
  import 'node:buffer';
9
10
  import 'klona';
@@ -1,9 +1,5 @@
1
1
  import type { EnvOptions, SilgiEvent, SilgiRuntimeConfig } from 'silgi/types';
2
- /**
3
- * Access 'resolved' Nuxt runtime configuration, with values updated from environment.
4
- *
5
- * This mirrors the runtime behavior of Nitro.
6
- */
2
+ export declare function updateEnvOptions(): EnvOptions;
7
3
  export declare function useSilgiRuntimeConfig<T extends SilgiRuntimeConfig>(event?: SilgiEvent, inlineRuntimeConfig?: Record<string, any>): SilgiRuntimeConfig;
8
4
  export declare function initRuntimeConfig(envOptions?: EnvOptions, inlineRuntimeConfig?: Record<string, any>): Readonly<Record<string, any>>;
9
5
  export declare function updateRuntimeConfig(runtimeConfig: Record<string, unknown>): void;
@@ -2,62 +2,42 @@ import { defu } from "defu";
2
2
  import destr from "destr";
3
3
  import { klona } from "klona";
4
4
  import { snakeCase } from "scule";
5
- import { tryUseSilgi, useSilgi } from "silgi";
6
- let _inlineSilgiRuntimeConfig = globalThis.__silgi__?.useRuntimeConfig?.() || globalThis._silgi_runtime || process.env.RUNTIME_CONFIG;
7
- let envOptions = {
8
- prefix: "NITRO_",
9
- altPrefix: _inlineSilgiRuntimeConfig?.nitro?.envPrefix ?? process.env.NITRO_ENV_PREFIX ?? "_",
10
- silgiPrefix: "SILGI_",
11
- envExpansion: _inlineSilgiRuntimeConfig?.nitro?.envExpansion ?? process.env.NITRO_ENV_EXPANSION ?? false
12
- };
13
- let _sharedRuntimeConfig = _deepFreeze(
14
- applyEnv(klona(_inlineSilgiRuntimeConfig ?? {}), envOptions)
15
- );
5
+ import { asyncRuntimeStorage, useRuntime, useSilgi } from "silgi";
6
+ export function updateEnvOptions() {
7
+ const runtime = useRuntime();
8
+ const envOptions = {
9
+ prefix: "NITRO_",
10
+ altPrefix: runtime?.silgi?.envPrefix ?? process.env.NITRO_ENV_PREFIX ?? "_",
11
+ silgiPrefix: "SILGI_",
12
+ envExpansion: runtime?.silgi?.envExpansion ?? process.env.NITRO_ENV_EXPANSION ?? false
13
+ };
14
+ const _sharedRuntimeConfig = _deepFreeze(
15
+ applyEnv(klona(runtime ?? {}), envOptions)
16
+ );
17
+ asyncRuntimeStorage.set(_sharedRuntimeConfig);
18
+ return envOptions;
19
+ }
16
20
  export function useSilgiRuntimeConfig(event, inlineRuntimeConfig = {}) {
17
- if (!_inlineSilgiRuntimeConfig) {
18
- _inlineSilgiRuntimeConfig = globalThis.__silgi__?.useRuntimeConfig?.();
19
- envOptions = {
20
- prefix: "NITRO_",
21
- altPrefix: _inlineSilgiRuntimeConfig?.nitro?.envPrefix ?? process.env.NITRO_ENV_PREFIX ?? "_",
22
- silgiPrefix: "SILGI_",
23
- envExpansion: _inlineSilgiRuntimeConfig?.nitro?.envExpansion ?? process.env.NITRO_ENV_EXPANSION ?? false
24
- };
25
- _sharedRuntimeConfig = _deepFreeze(
26
- applyEnv(klona(_inlineSilgiRuntimeConfig ?? {}), envOptions)
27
- );
28
- }
29
- const silgi = tryUseSilgi();
30
- if (!silgi) {
31
- if (globalThis._silgi_runtime) {
32
- inlineRuntimeConfig = globalThis._silgi_runtime;
33
- }
34
- if (!_inlineSilgiRuntimeConfig) {
35
- _sharedRuntimeConfig = initRuntimeConfig(envOptions, inlineRuntimeConfig);
36
- }
37
- if (!event) {
38
- return _sharedRuntimeConfig;
39
- }
40
- const runtimeConfig2 = klona(_inlineSilgiRuntimeConfig);
41
- applyEnv(runtimeConfig2, envOptions);
42
- return runtimeConfig2;
43
- }
44
- if (!_inlineSilgiRuntimeConfig) {
45
- _sharedRuntimeConfig = initRuntimeConfig(envOptions, inlineRuntimeConfig);
46
- }
21
+ const runtime = useRuntime();
47
22
  if (!event) {
48
- return _sharedRuntimeConfig;
23
+ return runtime;
24
+ }
25
+ if (event.context.nitro.runtimeConfig) {
26
+ return event.context.nitro.runtimeConfig;
49
27
  }
50
- const runtimeConfig = klona(_inlineSilgiRuntimeConfig);
28
+ const runtimeConfig = klona(runtime);
29
+ const envOptions = updateEnvOptions();
51
30
  applyEnv(runtimeConfig, envOptions);
31
+ event.context.nitro.runtimeConfig = runtimeConfig;
52
32
  return runtimeConfig;
53
33
  }
54
- export function initRuntimeConfig(envOptions2 = {}, inlineRuntimeConfig = {}) {
34
+ export function initRuntimeConfig(envOptions = {}, inlineRuntimeConfig = {}) {
55
35
  const finalEnvOptions = {
56
36
  prefix: "NITRO_",
57
37
  altPrefix: inlineRuntimeConfig?.nitro?.envPrefix ?? process.env.NITRO_ENV_PREFIX ?? "_",
58
38
  silgiPrefix: "SILGI_",
59
39
  envExpansion: inlineRuntimeConfig?.nitro?.envExpansion ?? process.env.NITRO_ENV_EXPANSION ?? false,
60
- ...envOptions2
40
+ ...envOptions
61
41
  };
62
42
  return _deepFreeze(
63
43
  applyEnv(klona(inlineRuntimeConfig), finalEnvOptions)
@@ -484,7 +484,13 @@ interface StorageKeyParams<TInput = unknown> {
484
484
  storageOptions?: Pick<StorageConfig<TInput>, 'base' | 'options' | 'scope'>;
485
485
  }
486
486
 
487
- interface SilgiRuntimeConfig {
487
+ interface SilgiRuntimeDefaultConfig {
488
+ silgi?: {
489
+ envPrefix?: string;
490
+ envExpansion?: boolean;
491
+ };
492
+ }
493
+ interface SilgiRuntimeConfig extends SilgiRuntimeDefaultConfig {
488
494
  }
489
495
  interface SilgiOptions {
490
496
  consolaOptions?: Partial<ConsolaOptions>;
@@ -1198,4 +1204,4 @@ interface GraphQLJSON {
1198
1204
  references: any;
1199
1205
  }
1200
1206
 
1201
- 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, 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, RouteConfigService, 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 };
1207
+ 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, 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, RouteConfigService, 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, SilgiRuntimeDefaultConfig, 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.37.20",
4
+ "version": "0.37.21",
5
5
  "private": false,
6
6
  "sideEffects": false,
7
7
  "exports": {