silgi 0.29.15 → 0.29.16

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
  #!/usr/bin/env node
2
2
  import { defineCommand, runMain } from 'citty';
3
3
 
4
- const version = "0.29.15";
4
+ const version = "0.29.16";
5
5
  const packageJson = {
6
6
  version: version};
7
7
 
@@ -1,16 +1,15 @@
1
1
  import { execSync } from 'node:child_process';
2
- import { readFileSync } from 'node:fs';
3
2
  import { defineCommand, runCommand } from 'citty';
4
3
  import { consola } from 'consola';
5
- import { resolve } from 'pathe';
6
4
  import { version } from 'silgi/meta';
7
5
  import { addNPMPackage, addTemplate } from 'silgi/kit';
8
6
  import { u as useSilgiCLI } from '../_chunks/silgiApp.mjs';
9
7
  import { c as commonArgs, p as prepare } from './prepare.mjs';
10
- import { l as loadOptions } from './types.mjs';
11
8
  import 'unctx';
9
+ import 'pathe';
12
10
  import './silgi.mjs';
13
11
  import 'apiful/openapi';
12
+ import 'node:fs';
14
13
  import 'node:fs/promises';
15
14
  import 'knitwork';
16
15
  import 'mlly';
@@ -18,17 +17,25 @@ import 'pathe/utils';
18
17
  import 'silgi/runtime/meta';
19
18
  import 'unimport';
20
19
  import 'untyped';
20
+ import './types.mjs';
21
+ import 'c12';
22
+ import 'compatx';
23
+ import 'klona/full';
24
+ import 'std-env';
25
+ import 'consola/utils';
26
+ import 'escape-string-regexp';
27
+ import 'pkg-types';
28
+ import 'ufo';
29
+ import 'defu';
21
30
  import 'hookable';
22
31
  import 'silgi';
23
32
  import '../_chunks/routeRules.mjs';
24
- import 'ufo';
25
33
  import '@clack/prompts';
26
34
  import 'dotenv';
27
35
  import 'dev-jiti';
28
36
  import './compatibility.mjs';
29
37
  import 'semver/functions/satisfies.js';
30
38
  import 'node:url';
31
- import 'defu';
32
39
  import 'exsolve';
33
40
  import 'globby';
34
41
  import 'ignore';
@@ -37,13 +44,6 @@ import 'klona';
37
44
  import 'silgi/runtime';
38
45
  import 'unstorage';
39
46
  import 'scule';
40
- import 'c12';
41
- import 'compatx';
42
- import 'klona/full';
43
- import 'std-env';
44
- import 'consola/utils';
45
- import 'escape-string-regexp';
46
- import 'pkg-types';
47
47
 
48
48
  async function installPackages(silgi = useSilgiCLI()) {
49
49
  await addNPMPackage([
@@ -75,12 +75,15 @@ async function installPackages(silgi = useSilgiCLI()) {
75
75
  };
76
76
  packages.dependencies = {};
77
77
  }
78
- addTemplate({
79
- filename: "install.json",
80
- where: ".silgi",
81
- write: true,
82
- getContents: () => JSON.stringify(packages, null, 2)
83
- });
78
+ if (silgi.options.debug === true || silgi.options.debug.install) {
79
+ addTemplate({
80
+ filename: "install.json",
81
+ where: ".silgi",
82
+ write: true,
83
+ getContents: () => JSON.stringify(packages, null, 2)
84
+ });
85
+ }
86
+ return packages;
84
87
  }
85
88
 
86
89
  const install = defineCommand({
@@ -101,14 +104,10 @@ const install = defineCommand({
101
104
  rawArgs: ["--commandType", "install"]
102
105
  }).catch(() => {
103
106
  });
104
- await installPackages();
105
- const silgiConfig = await loadOptions({});
107
+ const packages = await installPackages();
106
108
  const commandArgs = process.argv.slice(process.argv.indexOf("install") + 1);
107
109
  const extraArgs = commandArgs.length ? ` ${commandArgs.join(" ")}` : "";
108
- const getCli = resolve(silgiConfig.build.dir, "install.json");
109
- const cli = readFileSync(getCli, "utf-8");
110
- const cliJson = JSON.parse(cli);
111
- if (Object.keys(cliJson).length === 0) {
110
+ if (Object.keys(packages).length === 0) {
112
111
  consola.info("Empty command list, maybe forgot pnpm silgi prepare?");
113
112
  return;
114
113
  }
@@ -116,8 +115,8 @@ const install = defineCommand({
116
115
  const cleanVersion = version.replace(/^[>=]+\s*/, "^");
117
116
  return `${name}@${cleanVersion}`;
118
117
  };
119
- const deps = Object.entries(cliJson.dependencies || {}).map(([name, version]) => cleanPackageName(name, version)).join(" ");
120
- const devDeps = Object.entries(cliJson.devDependencies || {}).map(([name, version]) => cleanPackageName(name, version)).join(" ");
118
+ const deps = Object.entries(packages.dependencies || {}).map(([name, version]) => cleanPackageName(name, version)).join(" ");
119
+ const devDeps = Object.entries(packages.devDependencies || {}).map(([name, version]) => cleanPackageName(name, version)).join(" ");
121
120
  if (deps) {
122
121
  consola.info("Installing dependencies...");
123
122
  execSync(`ni ${deps}${extraArgs}`, { stdio: "inherit" });
@@ -1,7 +1,7 @@
1
1
  import { generateDTS } from 'apiful/openapi';
2
2
  import consola$1, { consola } from 'consola';
3
3
  import { join, resolve, dirname, isAbsolute, relative, basename, extname } from 'pathe';
4
- import { hasSilgiModule, addTemplate, normalizeTemplate, useLogger, genEnsureSafeVar, addImports, hash, toArray, writeFile, relativeWithDot, isDirectory, addCoreFile, resolveAlias as resolveAlias$1, directoryToURL, hasError, parseServices, resolveSilgiPath } from 'silgi/kit';
4
+ import { hasSilgiModule, addTemplate, normalizeTemplate, useLogger, genEnsureSafeVar, baseHeaderBannerComment, addImports, hash, toArray, writeFile, relativeWithDot, isDirectory, addCoreFile, resolveAlias as resolveAlias$1, directoryToURL, hasError, parseServices, resolveSilgiPath } from 'silgi/kit';
5
5
  import { mkdirSync, existsSync, writeFileSync, promises, readFileSync } from 'node:fs';
6
6
  import { readdir, readFile } from 'node:fs/promises';
7
7
  import { genObjectFromRawEntries, genImport, genTypeImport, genObjectFromRaw, genObjectFromValues } from 'knitwork';
@@ -230,6 +230,7 @@ async function prepareConfigs(silgi) {
230
230
  ]
231
231
  )
232
232
  )}`);
233
+ importData.unshift(...baseHeaderBannerComment);
233
234
  return importData;
234
235
  }
235
236
 
@@ -378,6 +379,7 @@ async function prepareCoreFile(silgi) {
378
379
  ];
379
380
  await silgi.callHook("after:core.ts", importData);
380
381
  importData.unshift(...importsContent);
382
+ importData.unshift(...baseHeaderBannerComment);
381
383
  return importData;
382
384
  }
383
385
 
@@ -1949,36 +1951,39 @@ ${injectedResult.code}`;
1949
1951
  }
1950
1952
 
1951
1953
  async function prepareServerFiles(silgi) {
1952
- const importItems = {
1953
- "silgi": {
1954
- import: [
1955
- { name: "createSilgi", key: "createSilgi" },
1956
- { name: "createShared", key: "createShared" }
1957
- ],
1958
- from: "silgi"
1959
- },
1960
- "silgi/types": {
1961
- import: [
1962
- { name: "SilgiRuntimeOptions", type: true, key: "SilgiRuntimeOptions" },
1963
- { name: "FrameworkContext", type: true, key: "FrameworkContext" }
1964
- ],
1965
- from: "silgi/types"
1966
- },
1967
- "#silgi/vfs": {
1968
- import: [],
1969
- from: "./vfs"
1970
- },
1971
- "configs.ts": {
1972
- import: [
1973
- {
1974
- name: "cliConfigs",
1975
- type: false,
1976
- key: "cliConfigs"
1977
- }
1978
- ],
1979
- from: "./configs.ts"
1980
- }
1981
- };
1954
+ const { genImports, genTypeImports, addImportItem, addImportItemType } = addImports({
1955
+ imports: [
1956
+ {
1957
+ specifier: "silgi",
1958
+ imports: [
1959
+ {
1960
+ name: "createSilgi"
1961
+ }
1962
+ ]
1963
+ },
1964
+ {
1965
+ specifier: "./configs",
1966
+ imports: [
1967
+ {
1968
+ name: "cliConfigs"
1969
+ }
1970
+ ]
1971
+ }
1972
+ ],
1973
+ typeImports: [
1974
+ {
1975
+ specifier: "silgi/types",
1976
+ imports: [
1977
+ {
1978
+ name: "SilgiRuntimeOptions"
1979
+ },
1980
+ {
1981
+ name: "FrameworkContext"
1982
+ }
1983
+ ]
1984
+ }
1985
+ ]
1986
+ });
1982
1987
  const scanned = {
1983
1988
  uris: {},
1984
1989
  services: [],
@@ -1989,8 +1994,8 @@ async function prepareServerFiles(silgi) {
1989
1994
  ],
1990
1995
  schemas: [],
1991
1996
  modulesURIs: {},
1992
- customImports: [],
1993
- importItems
1997
+ addImportItem,
1998
+ addImportItemType
1994
1999
  };
1995
2000
  if (silgi.uris) {
1996
2001
  defu(scanned.uris, silgi.uris);
@@ -1999,30 +2004,37 @@ async function prepareServerFiles(silgi) {
1999
2004
  defu(scanned.modulesURIs, silgi.modulesURIs);
2000
2005
  }
2001
2006
  await silgi.callHook("prepare:scan.ts", scanned);
2002
- if (importItems["#silgi/vfs"].import.length === 0) {
2003
- delete importItems["#silgi/vfs"];
2004
- }
2005
2007
  if (scanned.services.length > 0) {
2006
- importItems.silgi.import.push({ name: "mergeServices", key: "mergeServices" });
2008
+ addImportItem({
2009
+ specifier: "silgi",
2010
+ imports: {
2011
+ name: "mergeServices"
2012
+ }
2013
+ });
2007
2014
  }
2008
2015
  if (scanned.shareds.length > 0) {
2009
- importItems.silgi.import.push({ name: "mergeShared", key: "mergeShared" });
2016
+ addImportItem({
2017
+ specifier: "silgi",
2018
+ imports: {
2019
+ name: "mergeShared"
2020
+ }
2021
+ });
2010
2022
  }
2011
2023
  if (scanned.schemas.length > 0) {
2012
- importItems.silgi.import.push({ name: "mergeSchemas", key: "mergeSchemas" });
2013
- }
2014
- for (const key in importItems) {
2015
- importItems[key].import = deduplicateImportsByKey(importItems[key].import);
2024
+ addImportItem({
2025
+ specifier: "silgi",
2026
+ imports: {
2027
+ name: "mergeSchemas"
2028
+ }
2029
+ });
2016
2030
  }
2017
2031
  const importsContent = [
2018
- ...Object.entries(importItems).map(([_name, { from, import: imports }]) => {
2019
- if (silgi.options.typescript.removeFileExtension) {
2020
- from = from.replace(/\.(js|ts|mjs|cjs|jsx|tsx)$/, "");
2021
- }
2022
- return `import { ${imports.map(({ type, name }) => type ? `type ${name}` : name).join(", ")} } from '${from}'`;
2032
+ ...genImports.map(({ specifier, imports, options }) => {
2033
+ return genImport(specifier, imports, options);
2034
+ }),
2035
+ ...genTypeImports.map(({ specifier, imports }) => {
2036
+ return genTypeImport(specifier, Array.isArray(imports) ? imports : [imports]);
2023
2037
  }),
2024
- "",
2025
- ...scanned.customImports,
2026
2038
  ""
2027
2039
  ];
2028
2040
  const importData = [
@@ -2051,18 +2063,9 @@ async function prepareServerFiles(silgi) {
2051
2063
  ];
2052
2064
  await silgi.callHook("after:prepare:scan.ts", importData);
2053
2065
  importData.unshift(...importsContent);
2066
+ importData.unshift(...baseHeaderBannerComment);
2054
2067
  return importData;
2055
2068
  }
2056
- function deduplicateImportsByKey(imports) {
2057
- const seenKeys = /* @__PURE__ */ new Map();
2058
- return imports.filter((item) => {
2059
- if (seenKeys.has(item.key)) {
2060
- return false;
2061
- }
2062
- seenKeys.set(item.key, true);
2063
- return true;
2064
- });
2065
- }
2066
2069
 
2067
2070
  async function writeScanFiles(silgi) {
2068
2071
  const data = await prepareServerFiles(silgi);
@@ -12,7 +12,7 @@ declare function addCoreFile(data: {
12
12
  after?: SilgiCLIHooks['after:core.ts'];
13
13
  }): Promise<void>;
14
14
 
15
- declare function addImports(data: {
15
+ declare function addImports(data?: {
16
16
  imports?: GenImport[];
17
17
  typeImports?: GenImport[];
18
18
  }): {
@@ -81,10 +81,10 @@ async function addCoreFile(data) {
81
81
 
82
82
  function addImports(data) {
83
83
  const genImports = [
84
- ...data.imports ?? []
84
+ ...data?.imports ?? []
85
85
  ];
86
86
  const genTypeImports = [
87
- ...data.typeImports ?? []
87
+ ...data?.typeImports ?? []
88
88
  ];
89
89
  function addImportItem(data2) {
90
90
  for (const item of toArray$1(data2)) {
@@ -203,14 +203,29 @@ interface SilgiCLIHooks extends SilgiHooks {
203
203
  declarations: string[];
204
204
  tsConfig: TSConfig;
205
205
  }) => HookResult;
206
- 'before:core.ts': (data: PrepareCore) => HookResult;
206
+ 'before:core.ts': (data: {
207
+ silgiConfigs: Record<string, any>[];
208
+ addImportItem: (data: GenImport | GenImport[]) => void;
209
+ addImportItemType: (data: GenImport | GenImport[]) => void;
210
+ addBuildFunction: (data: {
211
+ name: string;
212
+ params?: string[];
213
+ where: 'before' | 'after';
214
+ }[] | {
215
+ name: string;
216
+ params?: string[];
217
+ where: 'before' | 'after';
218
+ }) => void;
219
+ }) => HookResult;
207
220
  'after:core.ts': (content: string[]) => HookResult;
208
- 'prepare:scan.ts': (data: Pick<ImportItem, 'customImports' | 'importItems'> & {
221
+ 'prepare:scan.ts': (data: {
209
222
  uris: Record<string, string>;
210
223
  services: string[];
211
224
  shareds: string[];
212
225
  schemas: string[];
213
226
  modulesURIs: Record<string, string>;
227
+ addImportItem: (data: GenImport | GenImport[]) => void;
228
+ addImportItemType: (data: GenImport | GenImport[]) => void;
214
229
  }) => HookResult;
215
230
  'after:prepare:scan.ts': (content: string[]) => HookResult;
216
231
  'prepare:schema.ts': (options: {
@@ -293,20 +308,6 @@ interface SilgiHooks {
293
308
  interface GenerateAppOptions {
294
309
  filter?: (template: ResolvedSilgiTemplate<any>) => boolean;
295
310
  }
296
- interface PrepareCore {
297
- silgiConfigs: Record<string, any>[];
298
- addImportItem: (data: GenImport | GenImport[]) => void;
299
- addImportItemType: (data: GenImport | GenImport[]) => void;
300
- addBuildFunction: (data: {
301
- name: string;
302
- params?: string[];
303
- where: 'before' | 'after';
304
- }[] | {
305
- name: string;
306
- params?: string[];
307
- where: 'before' | 'after';
308
- }) => void;
309
- }
310
311
 
311
312
  /**
312
313
  * Bu nitrojs, h3 event or request context.
@@ -621,6 +622,7 @@ interface SilgiCLIOptions extends PresetOptions {
621
622
  isPreparingModules: boolean;
622
623
  debug: true | {
623
624
  command?: boolean;
625
+ install?: boolean;
624
626
  };
625
627
  preset: PresetName;
626
628
  static: boolean;
@@ -1194,4 +1196,4 @@ interface ServiceParseModule {
1194
1196
  (params: ServiceParse): Awaited<void> | void;
1195
1197
  }
1196
1198
 
1197
- export type { AllPaths, AppConfig, Awaitable, BaseNamespaceType, BaseSchemaType, BaseSilgiMethodType, BuildSilgi, CaptureError, CapturedErrorContext, CommandType, Commands, CreateScope, DeepPartial, DeepRequired, DefaultHooks, DefaultNamespaces, DefaultRouteConfig, DefaultRouteRules, DotenvOptions, EnvOptions, EventHandlerResponse, ExtendContext, ExtendShared, ExtractInputFromURI, ExtractOutputFromURI, ExtractPathParams, ExtractPathParamsFromURI, ExtractQueryParamsFromURI, ExtractSourceFromURI, FrameworkContext, GenImport, GenerateAppOptions, GraphQLJSON, HookResult, HttpMethod, ImportItem, LoadConfigOptions, MergedSilgiSchema, MethodHandlerType, ModuleDefinition, ModuleHookContext, ModuleMeta, ModuleOptionsCustom, ModuleSetupInstallResult, ModuleSetupReturn, Namespaces, NitroBuildInfo, PrepareCore, RequiredServiceType, ResolvedMethodHandlerType, ResolvedModuleMeta, ResolvedModuleOptions, ResolvedServiceType, ResolvedSilgiTemplate, RouteRules, RouterParams, ScanFile, ServiceParse, ServiceParseModule, ServiceType, Silgi, SilgiAppPlugin, SilgiCLI, SilgiCLIConfig, SilgiCLIDynamicConfig, SilgiCLIHooks, SilgiCLIOptions, SilgiCommands, SilgiCompatibility, SilgiCompatibilityIssue, SilgiCompatibilityIssues, SilgiConfig, SilgiEvents, SilgiFetchClient, SilgiFetchOptions, SilgiFrameworkInfo, SilgiFunction, SilgiHooks, SilgiModule, SilgiModuleInput, SilgiModuleOptions, SilgiNamespaces, SilgiOperation, SilgiOptions, SilgiPreset, SilgiPresetMeta, SilgiRouteRules, SilgiRouterTypes, SilgiRuntimeActions, SilgiRuntimeConfig, SilgiRuntimeContext, SilgiRuntimeHooks, SilgiRuntimeMethods, SilgiRuntimeOptions, SilgiRuntimeRouteRules, SilgiRuntimeRouteRulesConfig, SilgiRuntimeShareds, SilgiRuntimeSharedsExtend, SilgiSchema, SilgiServiceInterface, SilgiStorageBase, SilgiTemplate, SilgiURIs, StorageConfig, StorageKeyGenerator, StorageKeyParams, StorageMounts, TSReference, TrimAfterFourSlashes, URIsTypes };
1199
+ export type { AllPaths, AppConfig, Awaitable, BaseNamespaceType, BaseSchemaType, BaseSilgiMethodType, BuildSilgi, CaptureError, CapturedErrorContext, CommandType, Commands, CreateScope, DeepPartial, DeepRequired, DefaultHooks, DefaultNamespaces, DefaultRouteConfig, DefaultRouteRules, DotenvOptions, EnvOptions, EventHandlerResponse, ExtendContext, ExtendShared, ExtractInputFromURI, ExtractOutputFromURI, ExtractPathParams, ExtractPathParamsFromURI, ExtractQueryParamsFromURI, ExtractSourceFromURI, FrameworkContext, GenImport, GenerateAppOptions, GraphQLJSON, HookResult, HttpMethod, ImportItem, LoadConfigOptions, MergedSilgiSchema, MethodHandlerType, ModuleDefinition, ModuleHookContext, ModuleMeta, ModuleOptionsCustom, ModuleSetupInstallResult, ModuleSetupReturn, Namespaces, NitroBuildInfo, RequiredServiceType, ResolvedMethodHandlerType, ResolvedModuleMeta, ResolvedModuleOptions, ResolvedServiceType, ResolvedSilgiTemplate, RouteRules, RouterParams, ScanFile, ServiceParse, ServiceParseModule, ServiceType, Silgi, SilgiAppPlugin, SilgiCLI, SilgiCLIConfig, SilgiCLIDynamicConfig, SilgiCLIHooks, SilgiCLIOptions, SilgiCommands, SilgiCompatibility, SilgiCompatibilityIssue, SilgiCompatibilityIssues, SilgiConfig, SilgiEvents, SilgiFetchClient, SilgiFetchOptions, SilgiFrameworkInfo, SilgiFunction, SilgiHooks, SilgiModule, SilgiModuleInput, SilgiModuleOptions, SilgiNamespaces, SilgiOperation, SilgiOptions, SilgiPreset, SilgiPresetMeta, SilgiRouteRules, SilgiRouterTypes, SilgiRuntimeActions, SilgiRuntimeConfig, SilgiRuntimeContext, SilgiRuntimeHooks, SilgiRuntimeMethods, SilgiRuntimeOptions, SilgiRuntimeRouteRules, SilgiRuntimeRouteRulesConfig, SilgiRuntimeShareds, SilgiRuntimeSharedsExtend, SilgiSchema, SilgiServiceInterface, SilgiStorageBase, SilgiTemplate, SilgiURIs, StorageConfig, StorageKeyGenerator, StorageKeyParams, StorageMounts, TSReference, TrimAfterFourSlashes, URIsTypes };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "silgi",
3
3
  "type": "module",
4
- "version": "0.29.15",
4
+ "version": "0.29.16",
5
5
  "private": false,
6
6
  "sideEffects": false,
7
7
  "exports": {