@dreamkit/dev 0.0.13 → 0.0.14-next.1

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,6 +1,7 @@
1
1
  import { DreamkitPluginOptions, OutDreamkitPluginOptions } from "./options.js";
2
2
  import { VirtualShaking } from "./utils/shaking.js";
3
3
  import { App, Route } from "@dreamkit/app";
4
+ import { FSWatcher } from "chokidar";
4
5
  import { ViteDevServer } from "vite";
5
6
  import { ViteRuntime } from "vite/runtime";
6
7
  export type DreamkitDevExternalOptions = {
@@ -15,6 +16,7 @@ export declare class DreamkitDevServer {
15
16
  readonly entry: VirtualShaking;
16
17
  protected runtimeServer: ViteDevServer | undefined;
17
18
  protected runtime: ViteRuntime | undefined;
19
+ protected settingsFileWatcher: FSWatcher | undefined;
18
20
  readonly options: DreamkitDevOptions;
19
21
  constructor(inOptions: DreamkitDevInOptions);
20
22
  static instance(): DreamkitDevServer;
@@ -1 +1 @@
1
- {"version":3,"file":"DreamkitDevServer.d.ts","sourceRoot":"","sources":["../src/DreamkitDevServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAItB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMpD,OAAO,EAAE,GAAG,EAAW,KAAK,EAAU,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAmC,aAAa,EAAE,MAAM,MAAM,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,GACtD,0BAA0B,CAAC;AAC7B,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GACvD,0BAA0B,CAAC;AAE7B,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,WAAW,SAAmB;IACrC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,SAAS,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACnD,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBACzB,SAAS,EAAE,oBAAoB;IA6B3C,MAAM,CAAC,QAAQ,IAAI,iBAAiB;IAKpC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,iBAAiB;IAGzC,KAAK,CAAC,IAAI,EAAE,MAAM;IAMlB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAKxC,gBAAgB;IAyBhB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAIjD,OAAO,CAAC,uBAAuB,UAAO;IAoCtC,KAAK;IAIL,IAAI;CAKX"}
1
+ {"version":3,"file":"DreamkitDevServer.d.ts","sourceRoot":"","sources":["../src/DreamkitDevServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAItB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMpD,OAAO,EAAE,GAAG,EAAW,KAAK,EAA2B,MAAM,eAAe,CAAC;AAM7E,OAAO,EAAE,SAAS,EAAS,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAmC,aAAa,EAAE,MAAM,MAAM,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,GACtD,0BAA0B,CAAC;AAC7B,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GACvD,0BAA0B,CAAC;AAE7B,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,WAAW,SAAmB;IACrC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,SAAS,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACnD,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IAC3C,SAAS,CAAC,mBAAmB,EAAE,SAAS,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBACzB,SAAS,EAAE,oBAAoB;IA+B3C,MAAM,CAAC,QAAQ,IAAI,iBAAiB;IAKpC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,iBAAiB;IAGzC,KAAK,CAAC,IAAI,EAAE,MAAM;IAWlB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIxC,gBAAgB;IAyBhB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAIjD,OAAO,CAAC,uBAAuB,UAAO;IAiDtC,KAAK;IAGL,IAAI;CAMX"}
@@ -4,7 +4,10 @@ import { getExt, resolvePath } from "./utils/path.js";
4
4
  import { findFileRoutes } from "./utils/router.js";
5
5
  import { VirtualShaking } from "./utils/shaking.js";
6
6
  import { createTransformUrl, getUrlTransforms, transformAndGenerate, } from "./utils/transform.js";
7
- import { App, isRoute, $route } from "@dreamkit/app";
7
+ import { App, isRoute, $route, SettingsHandler } from "@dreamkit/app";
8
+ import { is } from "@dreamkit/kind";
9
+ import { NodeSettingsHandler, NodeSettingsHandlerOptions, } from "@dreamkit/node-app";
10
+ import { watch } from "chokidar";
8
11
  import { existsSync } from "fs";
9
12
  import { createServer, createViteRuntime } from "vite";
10
13
  import solidPlugin from "vite-plugin-solid";
@@ -15,6 +18,7 @@ export class DreamkitDevServer {
15
18
  entry;
16
19
  runtimeServer;
17
20
  runtime;
21
+ settingsFileWatcher;
18
22
  options;
19
23
  constructor(inOptions) {
20
24
  this.app = new App();
@@ -24,8 +28,10 @@ export class DreamkitDevServer {
24
28
  });
25
29
  const vars = { defaults: options.root, root: options.root };
26
30
  options.entry = resolvePath(options.entry, vars);
31
+ options.settingsPath = resolvePath(options.settingsPath, vars);
27
32
  options.metaGlobalOutput = resolvePath(options.metaGlobalOutput, vars);
28
33
  options.metaLocalOutput = resolvePath(options.metaLocalOutput, vars);
34
+ options.preEntries = options.preEntries?.map((v) => resolvePath(v, vars));
29
35
  this.entry = new VirtualShaking({
30
36
  entry: options.entry,
31
37
  onChange: async (changes) => {
@@ -57,17 +63,22 @@ export class DreamkitDevServer {
57
63
  async fetch(path) {
58
64
  //const mod = $server.moduleGraph.getModuleById(shaking.entry);
59
65
  //if (mod) $server.moduleGraph.invalidateModule(mod);
60
- const ext = getExt(path);
61
- return await this.runtime.executeUrl(`${path}?${Date.now()}&ext=${ext}`);
66
+ try {
67
+ const ext = getExt(path);
68
+ return await this.runtime.executeUrl(`${path}?${Date.now()}&ext=${ext}`);
69
+ }
70
+ catch (error) {
71
+ console.error(error);
72
+ return undefined;
73
+ }
62
74
  }
63
75
  async fetchDefault(path) {
64
76
  const result = await this.fetch(path);
65
- return result.default;
77
+ return result?.default;
66
78
  }
67
79
  async fetchRoute(path) {
68
80
  const url = createTransformUrl(path, { toSolidRoute: true });
69
- const result = await this.fetch(url);
70
- return result.default;
81
+ return await this.fetchDefault(url);
71
82
  }
72
83
  async findRouteObjects() {
73
84
  const files = await findFileRoutes(this.options.routeDir);
@@ -123,11 +134,25 @@ export class DreamkitDevServer {
123
134
  hmr: { logger: false },
124
135
  });
125
136
  this.entry.init();
126
- const objects = {
137
+ for (const path of this.options.preEntries || [])
138
+ await this.app.add(await this.fetch(path));
139
+ await this.app.add({
127
140
  ...(await this.fetchEntryObjects()),
128
141
  ...(includeRouteFileObjects && (await this.findRouteObjects())),
129
- };
130
- await this.app.add(objects);
142
+ });
143
+ if (is(this.app.settingsHandler, NodeSettingsHandler)) {
144
+ this.app.context.register(NodeSettingsHandlerOptions, {
145
+ value: new NodeSettingsHandlerOptions({
146
+ path: this.options.settingsPath,
147
+ }),
148
+ });
149
+ this.settingsFileWatcher = watch(this.options.settingsPath, {
150
+ ignoreInitial: false,
151
+ }).on("all", async () => {
152
+ log("settings file changed");
153
+ await this.app.context.resolve(SettingsHandler).load();
154
+ });
155
+ }
131
156
  }
132
157
  async start() {
133
158
  await this.app.start();
@@ -135,6 +160,7 @@ export class DreamkitDevServer {
135
160
  async stop() {
136
161
  if (this.app.started)
137
162
  await this.app.stop();
163
+ await this.settingsFileWatcher?.close();
138
164
  await this.runtimeServer?.close();
139
165
  await this.runtime?.destroy();
140
166
  }
@@ -0,0 +1,6 @@
1
+ import { DreamkitDevServer } from "../DreamkitDevServer.js";
2
+ export declare function generateMeta(server: DreamkitDevServer): Promise<{
3
+ path: string;
4
+ changed: boolean;
5
+ }>;
6
+ //# sourceMappingURL=generate-meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-meta.d.ts","sourceRoot":"","sources":["../../src/actions/generate-meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAY5D,wBAAsB,YAAY,CAAC,MAAM,EAAE,iBAAiB;;;GAwD3D"}
@@ -0,0 +1,62 @@
1
+ import { writeFileIfDifferent } from "../utils/fs.js";
2
+ import { createInterface, createModuleDeclaration, createType, } from "../utils/typescript.js";
3
+ import { mkdir } from "fs/promises";
4
+ import { dirname } from "path";
5
+ export async function generateMeta(server) {
6
+ const options = server.options;
7
+ const output = options.metaFormat === "global"
8
+ ? options.metaGlobalOutput
9
+ : options.metaLocalOutput;
10
+ const routeDef = [...server.app.routes]
11
+ .map((route) => ({
12
+ path: route.$options.path ?? "",
13
+ params: route.$options.params,
14
+ }))
15
+ .sort((a, b) => a.path.localeCompare(b.path));
16
+ const typeRoutes = await generateDefinition(routeDef);
17
+ let contents;
18
+ if (options.metaFormat === "global") {
19
+ const declarations = {
20
+ ["dreamkit/presets/global.override.js"]: createInterface("Routing", typeRoutes, 1),
21
+ };
22
+ contents =
23
+ Object.entries(declarations)
24
+ .map(([source, body]) => `// prettier-ignore\n` + createModuleDeclaration(source, [body]))
25
+ .join("\n\n") + "\n";
26
+ }
27
+ else {
28
+ contents = [
29
+ `// prettier-ignore`,
30
+ `import { defineRoutePath } from "dreamkit/presets/common.js";`,
31
+ `import { defineLink } from "dreamkit/presets/solid.js";`,
32
+ "",
33
+ ...(options.metaLocalExports
34
+ ? [
35
+ 'export * from "dreamkit/presets/common.js";',
36
+ 'export * from "dreamkit/presets/solid.js";',
37
+ ]
38
+ : []),
39
+ createInterface("Routing", typeRoutes, 0),
40
+ "export const routePath = defineRoutePath<Routing>();",
41
+ "export const Link = defineLink<Routing>();",
42
+ ].join("\n");
43
+ }
44
+ await mkdir(dirname(output), { recursive: true });
45
+ const changed = await writeFileIfDifferent(output, contents);
46
+ return {
47
+ path: output,
48
+ changed,
49
+ };
50
+ }
51
+ async function generateDefinition(routes) {
52
+ const result = {};
53
+ for (const route of routes) {
54
+ if (route.path.includes("*404"))
55
+ continue;
56
+ const params = route.params;
57
+ result[route.path] = Object.keys(params?.options.props || {}).length
58
+ ? createType(params)
59
+ : "never";
60
+ }
61
+ return result;
62
+ }
@@ -0,0 +1,4 @@
1
+ import { DreamkitDevServer } from "../DreamkitDevServer.js";
2
+ import { SettingsHandlerSaveResult } from "@dreamkit/app";
3
+ export declare function generateSettings(server: DreamkitDevServer): Promise<SettingsHandlerSaveResult>;
4
+ //# sourceMappingURL=generate-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-settings.d.ts","sourceRoot":"","sources":["../../src/actions/generate-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAO,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG/D,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,yBAAyB,CAAC,CAWpC"}
@@ -0,0 +1,12 @@
1
+ import { App } from "@dreamkit/app";
2
+ import { NodeSettingsHandlerOptions } from "@dreamkit/node-app";
3
+ export async function generateSettings(server) {
4
+ const $app = new App();
5
+ $app.context.register(NodeSettingsHandlerOptions, {
6
+ value: new NodeSettingsHandlerOptions({
7
+ path: server.options.settingsPath,
8
+ }),
9
+ });
10
+ await $app.add([...server.app.settings, server.app.settingsHandler].filter(Boolean));
11
+ return (await $app["registerAllSettings"]()) || {};
12
+ }
@@ -1,6 +1,6 @@
1
1
  import { DreamkitDevServer } from "../DreamkitDevServer.js";
2
- export declare function generate(server: DreamkitDevServer): Promise<{
3
- output: string;
2
+ export declare function generate(server: DreamkitDevServer): Promise<Record<string, {
3
+ path: string;
4
4
  changed: boolean;
5
- }>;
5
+ }>>;
6
6
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/actions/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAY5D,wBAAsB,QAAQ,CAAC,MAAM,EAAE,iBAAiB;;;GAwDvD"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/actions/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAI5D,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAS7D"}
@@ -1,62 +1,12 @@
1
- import { writeFileIfDifferent } from "../utils/fs.js";
2
- import { createInterface, createModuleDeclaration, createType, } from "../utils/typescript.js";
3
- import { mkdir } from "fs/promises";
4
- import { dirname } from "path";
1
+ import { generateMeta } from "./generate-meta.js";
2
+ import { generateSettings } from "./generate-settings.js";
5
3
  export async function generate(server) {
6
- const options = server.options;
7
- const output = options.metaFormat === "global"
8
- ? options.metaGlobalOutput
9
- : options.metaLocalOutput;
10
- const routeDef = [...server.app.routes]
11
- .map((route) => ({
12
- path: route.$options.path ?? "",
13
- params: route.$options.params,
14
- }))
15
- .sort((a, b) => a.path.localeCompare(b.path));
16
- const typeRoutes = await generateDefinition(routeDef);
17
- let contents;
18
- if (options.metaFormat === "global") {
19
- const declarations = {
20
- ["dreamkit/presets/global.override.js"]: createInterface("Routing", typeRoutes, 1),
21
- };
22
- contents =
23
- Object.entries(declarations)
24
- .map(([source, body]) => `// prettier-ignore\n` + createModuleDeclaration(source, [body]))
25
- .join("\n\n") + "\n";
26
- }
27
- else {
28
- contents = [
29
- `// prettier-ignore`,
30
- `import { defineRoutePath } from "dreamkit/presets/common.js";`,
31
- `import { defineLink } from "dreamkit/presets/solid.js";`,
32
- "",
33
- ...(options.metaLocalExports
34
- ? [
35
- 'export * from "dreamkit/presets/common.js";',
36
- 'export * from "dreamkit/presets/solid.js";',
37
- ]
38
- : []),
39
- createInterface("Routing", typeRoutes, 0),
40
- "export const routePath = defineRoutePath<Routing>();",
41
- "export const Link = defineLink<Routing>();",
42
- ].join("\n");
43
- }
44
- await mkdir(dirname(output), { recursive: true });
45
- const changed = await writeFileIfDifferent(output, contents);
4
+ const [meta, settings] = await Promise.all([
5
+ generateMeta(server),
6
+ generateSettings(server),
7
+ ]);
46
8
  return {
47
- output,
48
- changed,
9
+ meta,
10
+ ...settings,
49
11
  };
50
12
  }
51
- async function generateDefinition(routes) {
52
- const result = {};
53
- for (const route of routes) {
54
- if (route.path.includes("*404"))
55
- continue;
56
- const params = route.params;
57
- result[route.path] = Object.keys(params?.options.props || {}).length
58
- ? createType(params)
59
- : "never";
60
- }
61
- return result;
62
- }
@@ -1 +1 @@
1
- {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../../src/adapters/solid-start/dev-server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAKzD,OAAO,EAML,QAAQ,EAET,MAAM,sBAAsB,CAAC;AAsB9B,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqDhC;AAuCD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,qBAA0B,qBAiKtC"}
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../../src/adapters/solid-start/dev-server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAMzD,OAAO,EAML,QAAQ,EAET,MAAM,sBAAsB,CAAC;AAsB9B,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqDhC;AAuCD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,qBAA0B,qBAuLtC"}
@@ -1,11 +1,13 @@
1
1
  import { DreamkitDevServer, } from "../../DreamkitDevServer.js";
2
- import { generate } from "../../actions/generate.js";
2
+ import { generateMeta } from "../../actions/generate-meta.js";
3
+ import { generateSettings } from "../../actions/generate-settings.js";
3
4
  import { tryGenerate } from "../../utils/ast.js";
5
+ import { log } from "../../utils/log.js";
4
6
  import { execute } from "../../utils/runtime.js";
5
7
  import { createDelayedFunction } from "../../utils/timeout.js";
6
8
  import { transformCode } from "../../utils/transform.js";
7
9
  import { addVinxiPlugin, addVinxiRollupPlugin, isVinxiBuild, onChangeVinxiRoutes, } from "../../utils/vinxi.js";
8
- import { isRoute, $route, App } from "@dreamkit/app";
10
+ import { isRoute, $route, App, isSettings } from "@dreamkit/app";
9
11
  import { existsSync } from "fs";
10
12
  import { join, normalize, relative, resolve } from "path";
11
13
  import { fileURLToPath } from "url";
@@ -128,7 +130,8 @@ export function createDreamkitDevServer(vinxiApp, inOptions = {}) {
128
130
  await server.stop();
129
131
  }
130
132
  async function onDevStart() {
131
- const tryGenerate = createDelayedFunction(async () => {
133
+ const tryGenerateMeta = createDelayedFunction(async () => {
134
+ log("generating meta");
132
135
  const paths = new Set();
133
136
  server.app.routes.forEach(async (route) => {
134
137
  const path = route.$options.path;
@@ -139,12 +142,20 @@ export function createDreamkitDevServer(vinxiApp, inOptions = {}) {
139
142
  paths.add(path);
140
143
  }
141
144
  });
142
- await generate(server);
145
+ await generateMeta(server);
146
+ }, 300);
147
+ const tryGenerateSettings = createDelayedFunction(async () => {
148
+ log("generating settings");
149
+ await generateSettings(server);
143
150
  }, 300);
144
151
  server.app
145
152
  .on("change", (data) => {
153
+ log("change detected", { action: data.action, id: data.id });
146
154
  if (isRoute(data.value)) {
147
- tryGenerate();
155
+ tryGenerateMeta();
156
+ }
157
+ else if (isSettings(data.value)) {
158
+ tryGenerateSettings();
148
159
  }
149
160
  })
150
161
  .on("add", async ({ id, value }) => {
@@ -179,7 +190,7 @@ export function createDreamkitDevServer(vinxiApp, inOptions = {}) {
179
190
  if (router.name === "ssr" && server.app.objects.has(id))
180
191
  await server.app.remove([id]);
181
192
  if (action === "add" || action === "update") {
182
- const routeObject = await server.fetchDefault(vinxiRoute.filePath);
193
+ const routeObject = await server.fetchRoute(vinxiRoute.filePath);
183
194
  if (isRoute(routeObject))
184
195
  vinxiRoute.$$route = {
185
196
  pick: ["route"],
@@ -199,11 +210,13 @@ export function createDreamkitDevServer(vinxiApp, inOptions = {}) {
199
210
  });
200
211
  }
201
212
  }
213
+ await server.start();
202
214
  }
203
215
  const ssrRouter = vinxiApp.getRouter("ssr");
204
216
  ssrRouter.middleware = selfPath("middleware.js", true);
205
217
  if (isVinxiBuild()) {
206
218
  const dreamkitEntryId = "dk:entry";
219
+ const dreamkitPreEntriesId = "dk:pre-entries";
207
220
  const dreamkitEntry = join(server.options.root, "src/dreamkit.tsx").replaceAll("\\", "/");
208
221
  const existsDreamkitEntry = existsSync(dreamkitEntry);
209
222
  addVinxiPlugin(vinxiApp, selfPath("prod-server.js"));
@@ -213,10 +226,17 @@ export function createDreamkitDevServer(vinxiApp, inOptions = {}) {
213
226
  if (id === dreamkitEntryId) {
214
227
  return existsDreamkitEntry ? dreamkitEntry : `\0${dreamkitEntryId}`;
215
228
  }
229
+ else if (id === dreamkitPreEntriesId) {
230
+ return `\0${dreamkitPreEntriesId}`;
231
+ }
216
232
  },
217
233
  load(id) {
218
234
  if (!existsDreamkitEntry && id === `\0${dreamkitEntryId}`)
219
235
  return { code: "export {}" };
236
+ if (id === `\0${dreamkitPreEntriesId}`) {
237
+ const exports = server.options.preEntries?.map((entry, index) => `export * as entry_${index} from ${JSON.stringify(entry)};`);
238
+ return { code: [...exports, `export {};`].join("\n") };
239
+ }
220
240
  },
221
241
  });
222
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prod-server.d.ts","sourceRoot":"","sources":["../../../src/adapters/solid-start/prod-server.ts"],"names":[],"mappings":"AAIA,yBAA+B,MAAM,EAAE,GAAG,iBAKzC"}
1
+ {"version":3,"file":"prod-server.d.ts","sourceRoot":"","sources":["../../../src/adapters/solid-start/prod-server.ts"],"names":[],"mappings":"AAMA,yBAA+B,MAAM,EAAE,GAAG,iBAKzC"}
@@ -1,9 +1,12 @@
1
1
  import { App } from "@dreamkit/app";
2
2
  // @ts-ignore
3
3
  import * as objects from "dk:entry";
4
+ // @ts-ignore
5
+ import * as preEntries from "dk:pre-entries";
4
6
  export default async function (_nitro) {
5
- const app = new App();
6
- App.saveInstance(app);
7
+ const app = App.createGlobalInstance();
8
+ for (const id in preEntries)
9
+ await app.add(preEntries[id]);
7
10
  await app.add(objects);
8
11
  await app.start();
9
12
  }
package/lib/bin.js CHANGED
@@ -24,11 +24,11 @@ program
24
24
  try {
25
25
  await server.prepare();
26
26
  const result = await generate(server);
27
- const outputPath = relative(process.cwd(), result.output).replaceAll("\\", "/");
28
- console.info([
29
- `Generated: ${outputPath}`,
30
- !result.changed ? " (no changes)" : "",
31
- ].join(""));
27
+ const rel = (path) => relative(process.cwd(), path).replaceAll("\\", "/");
28
+ for (const key in result) {
29
+ const { changed, path } = result[key];
30
+ console.info([`Generated: ${rel(path)}`, !changed ? " (no changes)" : ""].join(""));
31
+ }
32
32
  }
33
33
  finally {
34
34
  await server.stop();
package/lib/options.d.ts CHANGED
@@ -1,18 +1,22 @@
1
1
  export type DreamkitPluginOptions = {
2
2
  entry?: string;
3
+ preEntries?: string[];
3
4
  metaFormat?: "global" | "local";
4
5
  metaRouting?: boolean;
5
6
  metaGlobalOutput?: string;
6
7
  metaLocalExports?: boolean;
7
8
  metaLocalOutput?: string;
9
+ settingsPath?: string;
8
10
  };
9
11
  export declare const dreamkitPluginOptions: {
10
12
  metaFormat: "global";
11
13
  metaRouting: true;
12
14
  entry: string;
15
+ preEntries: string[];
13
16
  metaGlobalOutput: string;
14
17
  metaLocalOutput: string;
15
18
  metaLocalExports: true;
19
+ settingsPath: string;
16
20
  };
17
21
  export type OutDreamkitPluginOptions = Required<Pick<DreamkitPluginOptions, keyof typeof dreamkitPluginOptions>> & Omit<DreamkitPluginOptions, keyof typeof dreamkitPluginOptions>;
18
22
  //# sourceMappingURL=options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;CAOD,CAAC;AAElC,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC7C,IAAI,CAAC,qBAAqB,EAAE,MAAM,OAAO,qBAAqB,CAAC,CAChE,GACC,IAAI,CAAC,qBAAqB,EAAE,MAAM,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;CASD,CAAC;AAElC,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC7C,IAAI,CAAC,qBAAqB,EAAE,MAAM,OAAO,qBAAqB,CAAC,CAChE,GACC,IAAI,CAAC,qBAAqB,EAAE,MAAM,OAAO,qBAAqB,CAAC,CAAC"}
package/lib/options.js CHANGED
@@ -2,7 +2,9 @@ export const dreamkitPluginOptions = {
2
2
  metaFormat: "global",
3
3
  metaRouting: true,
4
4
  entry: "./src/dreamkit.tsx",
5
+ preEntries: ["dreamkit/adapters/solid-entry.js"],
5
6
  metaGlobalOutput: "./src/dreamkit-global.d.ts",
6
7
  metaLocalOutput: "./src/dreamkit-local.ts",
7
8
  metaLocalExports: true,
9
+ settingsPath: "./settings.json",
8
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dreamkit.d.ts","sourceRoot":"","sources":["../../src/plugins/dreamkit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAItD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,wBAAgB,cAAc,CAAC,SAAS,GAAE,qBAA0B,GAAG,MAAM,CAuD5E"}
1
+ {"version":3,"file":"dreamkit.d.ts","sourceRoot":"","sources":["../../src/plugins/dreamkit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAItD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,wBAAgB,cAAc,CAAC,SAAS,GAAE,qBAA0B,GAAG,MAAM,CAqD5E"}
@@ -1,14 +1,11 @@
1
1
  import { createDreamkitDevServer } from "../adapters/solid-start/dev-server.js";
2
2
  import { tryGenerate } from "../utils/ast.js";
3
3
  import { transformCode } from "../utils/transform.js";
4
- import { isVinxiBuild, onVinxiApp } from "../utils/vinxi.js";
4
+ import { onVinxiApp } from "../utils/vinxi.js";
5
5
  export function dreamkitPlugin(inOptions = {}) {
6
6
  let isSolidStart = false;
7
- let server;
8
7
  const cleanup = onVinxiApp(async (app) => {
9
- server = createDreamkitDevServer(app, inOptions);
10
- if (!isVinxiBuild())
11
- await server.start();
8
+ createDreamkitDevServer(app, inOptions);
12
9
  });
13
10
  return {
14
11
  name: "dreamkit",
@@ -8,7 +8,7 @@ export function toSolidRoute(ast) {
8
8
  let routeImportName;
9
9
  const routeSpec = "$route";
10
10
  const routeSource = "dreamkit";
11
- const routeNewSource = "dreamkit/adapters/solid.js";
11
+ const routeNewSource = "dreamkit/adapters/solid-start/import.js";
12
12
  replaceImportSpec(ast, {
13
13
  newSource: routeNewSource,
14
14
  source: routeSource,
@@ -20,7 +20,7 @@ export function toSolidRoute(ast) {
20
20
  ImportDeclaration(importPath) {
21
21
  importPath.traverse({
22
22
  ImportSpecifier(path) {
23
- // import { route as ? } from "dreamkit/adapters/solid.js";
23
+ // import { route as ? } from "dreamkit/adapters/solid-start/import.js";
24
24
  const isRouteImport = path.node.imported.type === "Identifier" &&
25
25
  path.node.imported.name === routeSpec &&
26
26
  importPath.node.source.value === routeNewSource;
@@ -48,7 +48,7 @@ export function toSolidRoute(ast) {
48
48
  // import { $route } from "dreamkit";
49
49
  // export default route.params({}).create(() => {});
50
50
  // [output]
51
- // import { $route as _$route } from "dreamkit/adapters/solid.js"
51
+ // import { $route as _$route } from "dreamkit/adapters/solid-start/import.js"
52
52
  // import { useLocation, useRouter, useParams} from "@solidjs/router"
53
53
  // const selfRoute = _$route.params({}).clone({ deps: ? });
54
54
  // export const route = selfRoute.createRouteDefinition();
@@ -80,7 +80,7 @@ export function toSolidRoute(ast) {
80
80
  // export const route = $route.params({}).path('/path');
81
81
  // export default function Users() { useRoute(route); }
82
82
  // [output]
83
- // import { $route as _$route } from "dreamkit/adapters/solid.js"
83
+ // import { $route as _$route } from "dreamkit/adapters/solid-start/import.js"
84
84
  // import { useLocation, useRouter, useParams } from "@solidjs/router"
85
85
  // const selfRoute = _$route.params({}).path('/path').clone({ deps: ? });
86
86
  // export const route = selfRoute.createRouteDefinition();
@@ -1,4 +1,4 @@
1
- import { createCallChains, createConst, defineTransform, getFirstChain, parseCallsChain, } from "../utils/ast.js";
1
+ import { addImports, createCallChains, createConst, defineTransform, getFirstChain, parseCallsChain, } from "../utils/ast.js";
2
2
  import { traverse } from "../utils/babel.js";
3
3
  import { replaceImportSpec } from "./replace-import-spec.js";
4
4
  import * as t from "@babel/types";
@@ -9,7 +9,7 @@ export const toSolidServerAction = defineTransform({
9
9
  let changes = replaceImportSpec(ast, {
10
10
  spec: { $api: "$serverApi" },
11
11
  source: "dreamkit",
12
- newSource: "dreamkit/adapters/solid.js",
12
+ newSource: "dreamkit/adapters/solid-start/import.js",
13
13
  onRenameSpec(prev, next) {
14
14
  apiId = next;
15
15
  },
@@ -71,6 +71,27 @@ function createServerAction(program, name, call, exported = false) {
71
71
  const serverApi = program.scope.generateUid(`server_${name}`);
72
72
  const chain = parseCallsChain(call);
73
73
  const serverMethods = ["self", "create"];
74
+ const cache = chain.calls.find((call) => call.name === "cache");
75
+ let cacheImport = cache
76
+ ? addImports(program, ["query"], "@solidjs/router")
77
+ : undefined;
78
+ const serverCallback = t.arrowFunctionExpression([t.identifier("params")], t.blockStatement([
79
+ // const serverApi = $serverApi.clone(baseFetchData.options).self({}).create(() => {})
80
+ createConst(serverApi, createCallChains({
81
+ ...chain,
82
+ calls: [
83
+ {
84
+ name: "clone",
85
+ arguments: [
86
+ t.memberExpression(t.identifier(commonApi), t.identifier("options")),
87
+ ],
88
+ },
89
+ ...chain.calls.filter(({ name }) => serverMethods.includes(name)),
90
+ ],
91
+ })),
92
+ // return await serverApi(params);
93
+ t.returnStatement(t.awaitExpression(t.callExpression(t.identifier(serverApi), [t.identifier("params")]))),
94
+ ], [t.directive(t.directiveLiteral("use server"))]), true);
74
95
  return [
75
96
  // const baseFetchData = $api.params({});
76
97
  createConst(commonApi, createCallChains({
@@ -78,25 +99,12 @@ function createServerAction(program, name, call, exported = false) {
78
99
  calls: chain.calls.filter(({ name }) => !serverMethods.includes(name)),
79
100
  })),
80
101
  t.variableDeclaration("let", [
81
- t.variableDeclarator(t.identifier(name), t.arrowFunctionExpression([t.identifier("params")], t.blockStatement([
82
- // const serverApi = $serverApi.clone(baseFetchData.options).self({}).create(() => {})
83
- createConst(serverApi, createCallChains({
84
- ...chain,
85
- calls: [
86
- {
87
- name: "clone",
88
- arguments: [
89
- t.memberExpression(t.identifier(commonApi), t.identifier("options")),
90
- ],
91
- },
92
- ...chain.calls.filter(({ name }) => serverMethods.includes(name)),
93
- ],
94
- })),
95
- // return await serverApi(params);
96
- t.returnStatement(t.awaitExpression(t.callExpression(t.identifier(serverApi), [
97
- t.identifier("params"),
98
- ]))),
99
- ], [t.directive(t.directiveLiteral("use server"))]), true)),
102
+ t.variableDeclarator(t.identifier(name), cacheImport
103
+ ? t.callExpression(t.identifier(cacheImport.query), [
104
+ serverCallback,
105
+ ...(cache?.arguments.length ? [cache.arguments[0]] : []),
106
+ ])
107
+ : serverCallback),
100
108
  ]),
101
109
  // const originalFetchData = fetchData;
102
110
  createConst(originalFunc, t.identifier(name)),
@@ -28,7 +28,9 @@ export declare function defineTransform<T>(transform: Transform<T>): Transform<T
28
28
  export declare function createConst(name: string, value: t.Expression): t.VariableDeclaration;
29
29
  export declare function appendChainCall(input: t.Expression | string, method: string, args: t.Expression[]): t.CallExpression;
30
30
  export declare function prependChainCall(input: t.Expression | string, method: string, args?: t.Expression[]): t.CallExpression;
31
- export declare function addImports<T extends string>(program: NodePath<t.Program>, specifiers: T[], source: string): {
31
+ export declare function addImports<T extends string>(program: NodePath<t.Program> & {
32
+ __imports?: Record<string, Record<string, string>>;
33
+ }, specifiers: T[], source: string): {
32
34
  [K in T]: string;
33
35
  };
34
36
  //# sourceMappingURL=ast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/utils/ast.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAIzC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,iBAIjD;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAElD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,uBAKrC;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,eAAe,GAAG,SAAS,EAChC,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,0DAavB;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,EAAE,CAAA;KAAE,EAAE,CAAC;CAC7C,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc,GAAG,KAAK,CAwB9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,mCAS5C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,oBAaxE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI;gBAGrB,MAAM;WACX,CAAC,CAAC,gBAAgB;cAgBhC;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,uJAQ/C;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,YAoBrD;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM,qBAG3D;AACD,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAExE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,yBAI5D;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,oBAiBrB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,CAAC,CAAC,UAAU,EAAO,oBAqB1B;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAC5B,UAAU,EAAE,CAAC,EAAE,EACf,MAAM,EAAE,MAAM,GACb;KAAG,CAAC,IAAI,CAAC,GAAG,MAAM;CAAE,CAkBtB"}
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/utils/ast.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAIzC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,iBAIjD;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAElD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,uBAKrC;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,eAAe,GAAG,SAAS,EAChC,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,0DAavB;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,EAAE,CAAA;KAAE,EAAE,CAAC;CAC7C,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc,GAAG,KAAK,CAwB9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,mCAS5C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,oBAaxE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI;gBAGrB,MAAM;WACX,CAAC,CAAC,gBAAgB;cAgBhC;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,uJAQ/C;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,YAoBrD;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM,qBAG3D;AACD,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAExE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,yBAI5D;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,oBAiBrB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,CAAC,CAAC,UAAU,EAAO,oBAqB1B;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD,EACD,UAAU,EAAE,CAAC,EAAE,EACf,MAAM,EAAE,MAAM,GACb;KAAG,CAAC,IAAI,CAAC,GAAG,MAAM;CAAE,CAwBtB"}
package/lib/utils/ast.js CHANGED
@@ -167,10 +167,17 @@ export function prependChainCall(input, method, args = []) {
167
167
  }
168
168
  }
169
169
  export function addImports(program, specifiers, source) {
170
+ const cacheKey = [...[...specifiers].sort(), source].join("|");
171
+ if (!program.__imports)
172
+ program.__imports = {};
173
+ if (program.__imports?.[cacheKey])
174
+ return program.__imports?.[cacheKey];
170
175
  const id = specifiers.map((name) => program.scope.generateUid(name));
171
176
  program.node.body.unshift(t.importDeclaration(specifiers.map((spec, index) => t.importSpecifier(t.identifier(id[index]), t.identifier(spec))), t.stringLiteral(source)));
172
- return specifiers.reduce((result, name, index) => {
177
+ const result = specifiers.reduce((result, name, index) => {
173
178
  result[name] = id[index];
174
179
  return result;
175
180
  }, {});
181
+ program.__imports[cacheKey] = result;
182
+ return result;
176
183
  }
@@ -1,3 +1,4 @@
1
+ export declare function isRelative(input: string): boolean;
1
2
  export declare function resolvePath(inPath: string, vars: Record<string, string> & {
2
3
  defaults: string;
3
4
  }): string;
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,UAKpD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,sBAIlC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAS3D"}
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,WAEvC;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,UAKpD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,sBAIlC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAS3D"}
package/lib/utils/path.js CHANGED
@@ -1,9 +1,12 @@
1
- import { basename, dirname, isAbsolute, join } from "path";
1
+ import { basename, dirname, join } from "path";
2
+ export function isRelative(input) {
3
+ return input.startsWith("./");
4
+ }
2
5
  export function resolvePath(inPath, vars) {
3
6
  let path = inPath;
4
7
  for (const name in vars)
5
8
  path = path.replace(`{${name}}`, vars[name]);
6
- return isAbsolute(path) ? path : join(vars.defaults, path);
9
+ return isRelative(path) ? join(vars.defaults, path) : path;
7
10
  }
8
11
  export function getExt(path) {
9
12
  const name = basename(path);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreamkit/dev",
3
- "version": "0.0.13",
3
+ "version": "0.0.14-next.1",
4
4
  "description": "Development tools for DreamKit.",
5
5
  "homepage": "https://dreamkit.dev",
6
6
  "repository": {
@@ -37,6 +37,7 @@
37
37
  "@babel/types": "^7.26.0",
38
38
  "@types/babel__generator": "^7.6.8",
39
39
  "@types/babel__traverse": "^7.20.6",
40
+ "chokidar": "^4.0.1",
40
41
  "commander": "^12.1.0",
41
42
  "debug": "^4.3.7",
42
43
  "es-module-lexer": "^1.5.4",
@@ -45,8 +46,11 @@
45
46
  "rollup": "^4.26.0",
46
47
  "vite-plugin-solid": "^2.10.2",
47
48
  "vite-tsconfig-paths": "^5.1.2",
48
- "@dreamkit/app": "0.0.6",
49
- "@dreamkit/schema": "0.0.4"
49
+ "@dreamkit/app": "0.0.7-next.1",
50
+ "@dreamkit/kind": "0.0.2",
51
+ "@dreamkit/node-app": "0.0.2-next.0",
52
+ "@dreamkit/schema": "0.0.5-next.0",
53
+ "@dreamkit/utils": "0.0.5-next.0"
50
54
  },
51
55
  "devDependencies": {
52
56
  "@types/debug": "^4.1.12",
@@ -1,4 +0,0 @@
1
- export type Obj = Record<string, any>;
2
- export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
3
- export declare function merge(object: Obj, patch: Obj): Obj;
4
- //# sourceMappingURL=object.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMlC;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,CAYlD"}
@@ -1,20 +0,0 @@
1
- export function isPlainObject(value) {
2
- return (!!value &&
3
- !!(value = Object.getPrototypeOf(value)) &&
4
- !Object.getPrototypeOf(value));
5
- }
6
- export function merge(object, patch) {
7
- for (const key in patch) {
8
- const value = patch[key];
9
- if (isPlainObject(object[key]) && isPlainObject(value)) {
10
- merge(object[key], value);
11
- }
12
- else if (value === undefined) {
13
- delete object[key];
14
- }
15
- else {
16
- object[key] = value;
17
- }
18
- }
19
- return object;
20
- }