@sjcx/vorma 0.0.0-pre.2 → 0.0.0-pre.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/build/assemble-artifacts.d.ts +1 -1
  2. package/dist/build/bundle-client.d.ts +1 -1
  3. package/dist/build/cli.js +53 -44
  4. package/dist/build/compile-application.d.ts +2 -2
  5. package/dist/build/development-artifacts.d.ts +1 -1
  6. package/dist/build/development-build.d.ts +3 -6
  7. package/dist/build/development-server-process.d.ts +3 -3
  8. package/dist/build/development-work.d.ts +4 -3
  9. package/dist/build/generate-application.d.ts +4 -4
  10. package/dist/build/index.d.ts +2 -3
  11. package/dist/build/index.js +1 -1
  12. package/dist/build/inspect-projects.d.ts +3 -3
  13. package/dist/build/load-config.d.ts +17 -16
  14. package/dist/build/publish-artifacts.d.ts +1 -4
  15. package/dist/build/render-client-transport.d.ts +1 -1
  16. package/dist/build/render-server-generated.d.ts +1 -12
  17. package/dist/build/render-types.d.ts +1 -1
  18. package/dist/build/resolve-config.d.ts +6 -9
  19. package/dist/build/source-layout.d.ts +2 -2
  20. package/dist/build/typescript-projects.d.ts +5 -0
  21. package/dist/{build-DcP5_DUV.js → build-BeUTL6eX.js} +104 -301
  22. package/package.json +5 -36
  23. package/dist/build/compile-server.d.ts +0 -42
  24. package/dist/client/assembly.d.ts +0 -40
  25. package/dist/client/browser-http-client.d.ts +0 -10
  26. package/dist/client/client-loaders.d.ts +0 -93
  27. package/dist/client/commit.d.ts +0 -41
  28. package/dist/client/contracts.d.ts +0 -192
  29. package/dist/client/core.d.ts +0 -45
  30. package/dist/client/development.d.ts +0 -16
  31. package/dist/client/document-recovery.d.ts +0 -4
  32. package/dist/client/endpoints.d.ts +0 -54
  33. package/dist/client/errors.d.ts +0 -87
  34. package/dist/client/freshness.d.ts +0 -51
  35. package/dist/client/head.d.ts +0 -14
  36. package/dist/client/history.d.ts +0 -25
  37. package/dist/client/index.d.ts +0 -80
  38. package/dist/client/index.js +0 -150
  39. package/dist/client/links.d.ts +0 -48
  40. package/dist/client/materialize.d.ts +0 -21
  41. package/dist/client/modules.d.ts +0 -2
  42. package/dist/client/navigation.d.ts +0 -47
  43. package/dist/client/payload.d.ts +0 -54
  44. package/dist/client/prefetch.d.ts +0 -28
  45. package/dist/client/prepare.d.ts +0 -47
  46. package/dist/client/projections.d.ts +0 -26
  47. package/dist/client/queries.d.ts +0 -33
  48. package/dist/client/react/application.d.ts +0 -87
  49. package/dist/client/react/hooks.d.ts +0 -36
  50. package/dist/client/react/index.d.ts +0 -5
  51. package/dist/client/react/index.js +0 -3237
  52. package/dist/client/react/link.d.ts +0 -27
  53. package/dist/client/react/view.d.ts +0 -86
  54. package/dist/client/request.d.ts +0 -16
  55. package/dist/client/route-context.d.ts +0 -31
  56. package/dist/client/route-matching.d.ts +0 -22
  57. package/dist/client/route-synchronization.d.ts +0 -30
  58. package/dist/client/route-url.d.ts +0 -5
  59. package/dist/client/runtime.d.ts +0 -82
  60. package/dist/client/scroll.d.ts +0 -16
  61. package/dist/client/services.d.ts +0 -34
  62. package/dist/client/state.d.ts +0 -102
  63. package/dist/client/static-assets.d.ts +0 -3
  64. package/dist/client/stylesheets.d.ts +0 -7
  65. package/dist/client/transport-type-entries.d.ts +0 -2
  66. package/dist/client/types.d.ts +0 -152
  67. package/dist/client/view-definition.d.ts +0 -24
  68. package/dist/client/work-indicator.d.ts +0 -18
  69. package/dist/compile-Me8EOyMK.js +0 -870
  70. package/dist/development-B_rxuwY7.js +0 -128
  71. package/dist/hash-set-BPx3iXec.js +0 -141
  72. package/dist/href-Cqyax8Y0.js +0 -357
  73. package/dist/materialize-DZ7VSLFk.js +0 -739
  74. package/dist/metadata-BoPKo-G2.js +0 -32
  75. package/dist/primitives/tasks/index.d.ts +0 -1
  76. package/dist/primitives/tasks/index.js +0 -1
  77. package/dist/route-context-CtY_9U_W.js +0 -559
  78. package/dist/route-matching-D_uSG2P9.js +0 -33
  79. package/dist/search-parse-0f7oqVsG.js +0 -375
  80. package/dist/server/config/index.d.ts +0 -36
  81. package/dist/server/config/index.js +0 -30
  82. package/dist/server/development/metadata.d.ts +0 -11
  83. package/dist/server/document.d.ts +0 -37
  84. package/dist/server/form-data.d.ts +0 -21
  85. package/dist/server/graph/compile.d.ts +0 -118
  86. package/dist/server/graph/declarations.d.ts +0 -117
  87. package/dist/server/graph/literal-error-tag.d.ts +0 -14
  88. package/dist/server/graph/pattern-conflicts.d.ts +0 -36
  89. package/dist/server/graph/search-schema.d.ts +0 -13
  90. package/dist/server/graph/transport-schema.d.ts +0 -11
  91. package/dist/server/index.d.ts +0 -310
  92. package/dist/server/index.js +0 -2311
  93. package/dist/server/public-assets.d.ts +0 -18
  94. package/dist/server/runtime/application.d.ts +0 -15
  95. package/dist/server/runtime/assets.d.ts +0 -15
  96. package/dist/server/runtime/context.d.ts +0 -96
  97. package/dist/server/runtime/domain-errors.d.ts +0 -11
  98. package/dist/server/runtime/effects.d.ts +0 -83
  99. package/dist/server/runtime/execute.d.ts +0 -13
  100. package/dist/server/runtime/finalize.d.ts +0 -44
  101. package/dist/server/runtime/handler.d.ts +0 -106
  102. package/dist/server/runtime/head.d.ts +0 -22
  103. package/dist/server/runtime/payload.d.ts +0 -50
  104. package/dist/server/runtime/pipeline.d.ts +0 -27
  105. package/dist/server/runtime/plan.d.ts +0 -98
  106. package/dist/server/runtime/render-document.d.ts +0 -16
  107. package/dist/server/runtime/startup-error.d.ts +0 -11
  108. package/dist/server/runtime/transport-type-entries.d.ts +0 -2
  109. package/dist/server/runtime/vercel-deployment.d.ts +0 -2
  110. package/dist/server/url-pathname.d.ts +0 -13
  111. package/dist/static-assets-BrH3O0M8.js +0 -199
  112. package/dist/universal/generated-types.d.ts +0 -9
  113. package/dist/universal/href.d.ts +0 -17
  114. package/dist/universal/http-method.d.ts +0 -4
  115. package/dist/universal/json-transport.d.ts +0 -14
  116. package/dist/universal/null-prototype-record.d.ts +0 -7
  117. package/dist/universal/path-wire.d.ts +0 -71
  118. package/dist/universal/pattern-language.d.ts +0 -4
  119. package/dist/universal/protocol-schemas.d.ts +0 -99
  120. package/dist/universal/protocol.d.ts +0 -162
  121. package/dist/universal/search-grammar.d.ts +0 -7
  122. package/dist/universal/search-parse.d.ts +0 -22
  123. package/dist/universal/search-serialize.d.ts +0 -16
  124. package/dist/universal/search-shape.d.ts +0 -32
  125. package/dist/universal/static-assets.d.ts +0 -2
  126. package/dist/universal/transport-types/big-decimal.d.ts +0 -13
  127. package/dist/universal/transport-types/chunk.d.ts +0 -8
  128. package/dist/universal/transport-types/date-time-utc.d.ts +0 -13
  129. package/dist/universal/transport-types/date-time-zoned.d.ts +0 -13
  130. package/dist/universal/transport-types/duration.d.ts +0 -13
  131. package/dist/universal/transport-types/hash-map.d.ts +0 -8
  132. package/dist/universal/transport-types/hash-set.d.ts +0 -8
  133. package/dist/universal/transport-types/option.d.ts +0 -10
  134. package/dist/universal/transport-types/redacted.d.ts +0 -9
  135. package/dist/universal/value-transport.d.ts +0 -117
  136. package/dist/value-transport-Bst4Hk-n.js +0 -864
  137. /package/dist/{universal → build}/content-digest.d.ts +0 -0
@@ -1,5 +1,5 @@
1
+ import { type ProductionBuildMetadata } from "@vorma/protocol";
1
2
  import { Effect } from "effect";
2
- import { type ProductionBuildMetadata } from "../universal/protocol.ts";
3
3
  import type { ClientBundle } from "./bundle-client.ts";
4
4
  import type { ApplicationGeneration } from "./generate-application.ts";
5
5
  export type ApplicationArtifact = {
@@ -1,7 +1,7 @@
1
+ import { type ClientModule, type ClientViewModule } from "@vorma/protocol";
1
2
  import { Effect } from "effect";
2
3
  import * as FileSystem from "effect/FileSystem";
3
4
  import * as Path from "effect/Path";
4
- import { type ClientModule, type ClientViewModule } from "../universal/protocol.ts";
5
5
  import type { ApplicationGeneration } from "./generate-application.ts";
6
6
  export type ClientBundleIssue = {
7
7
  readonly _tag: "ClientBundleIssue";
package/dist/build/cli.js CHANGED
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
- import { C as encodeCanonicalJson, S as projectBrowserContracts, _ as createClientPublicUrlPlugin, a as acquireOutputOwnership, b as CLIENT_SHARED_PACKAGES, c as writeAndCheckApplicationGeneration, d as readTypescriptProjectRoots, f as runTypescriptOperation, g as createCssPublicAssets, h as resolveVormaConfig, i as publishApplicationArtifacts, l as collectPublicAssets, m as getGeneratedSourceDirectories, n as loadApplicationSourceLayout, o as checkOutputPath, p as withTypescriptProjects, r as preparePublicOutput, s as assembleApplicationGeneration, t as buildApplication, u as inspectProjects, v as compileServerApplication, w as toContentDigest, x as getClientViewEntries, y as containsRelativePath } from "../build-DcP5_DUV.js";
3
- import { g as DEVELOPMENT_PROTOCOL, y as FRAMEWORK_IDENTITY_PROTOCOL } from "../value-transport-Bst4Hk-n.js";
2
+ import { C as projectBrowserContracts, S as getClientViewEntries, _ as createCssPublicAssets, a as acquireOutputOwnership, b as toContentDigest, c as writeAndCheckApplicationGeneration, d as readTypescriptProjectRoots, f as runTypescriptOperation, g as containsRelativePath, h as resolveVormaConfig, i as publishApplicationArtifacts, l as collectPublicAssets, m as getGeneratedSourceDirectories, n as loadApplicationSourceLayout, o as checkOutputPath, p as withTypescriptProjects, r as preparePublicOutput, s as assembleApplicationGeneration, t as buildApplication, u as inspectProjects, v as createClientPublicUrlPlugin, x as CLIENT_SHARED_PACKAGES, y as encodeCanonicalJson } from "../build-BeUTL6eX.js";
4
3
  import { t as VORMA_BUILD_PLUGIN_NAME } from "../build-invocation-D7Fu8gBK.js";
5
- import { VormaConfigSchema } from "../server/config/index.js";
6
4
  import { NodeChildProcessSpawner, NodeCrypto, NodeFileSystem, NodePath, NodeRuntime, NodeSocketServer, NodeStdio, NodeTerminal } from "@effect/platform-node-shared";
7
5
  import { Cause, Console, Deferred, Effect, Exit, Fiber, FileSystem, Layer, Path, Queue, Result, Schedule, Schema, ScopedRef, Stream } from "effect";
8
6
  import { Command, Flag } from "effect/unstable/cli";
9
7
  import { createFilter, createServer, loadConfigFromFile, normalizePath } from "vite";
10
- import { dirname, isAbsolute, posix, relative, sep } from "node:path";
8
+ import { DEVELOPMENT_PROTOCOL, FRAMEWORK_IDENTITY_PROTOCOL } from "@vorma/protocol";
11
9
  import { RolldownMagicString } from "rolldown";
10
+ import { dirname, isAbsolute, posix, relative, sep } from "node:path";
12
11
  import { createServer as createServer$1 } from "node:http";
12
+ import { VormaConfigSchema } from "@vorma/server/config";
13
13
  import { FetchHttpClient, HttpClient } from "effect/unstable/http";
14
14
  import { ChildProcess } from "effect/unstable/process";
15
15
  import { watch } from "chokidar";
@@ -136,7 +136,7 @@ function readDevelopmentStylesheet(input) {
136
136
  }
137
137
  //#endregion
138
138
  //#region src/build/development-build.ts
139
- /** Prepares server bytes and native CSS concurrently after their generated inputs exist. */
139
+ /** Prepares native CSS after the generation's public-asset inputs exist. */
140
140
  function prepareDevelopmentBuild(input) {
141
141
  return Effect.gen(function* () {
142
142
  const { generation, client, previous } = input;
@@ -144,24 +144,18 @@ function prepareDevelopmentBuild(input) {
144
144
  const inputsChanged = previous === void 0 || previous.work.inspectSources || previous.work.capturePublicAssets;
145
145
  return {
146
146
  generation,
147
- ...yield* Effect.all({
148
- server: previous === void 0 || previous.work.compileServer ? compileServerApplication({
149
- generation: application,
150
- sourcemap: "inline"
151
- }) : Effect.succeed(previous.build.server),
152
- stylesheet: Effect.gen(function* () {
153
- if (previous !== void 0 && inputsChanged) client.updateInputsFn(toDevelopmentClientInputs(application, generation.sources));
154
- if (previous !== void 0 && !previous.work.prepareCriticalCss) return previous.build.stylesheet;
155
- const filePath = application.config.criticalCssEntryFilePath;
156
- return filePath === void 0 ? {
157
- css: "",
158
- inputFilePaths: []
159
- } : yield* readDevelopmentStylesheet({
160
- server: client.server,
161
- filePath
162
- });
163
- })
164
- }, { concurrency: 2 })
147
+ stylesheet: yield* Effect.gen(function* () {
148
+ if (previous !== void 0 && inputsChanged) client.updateInputsFn(toDevelopmentClientInputs(application, generation.sources));
149
+ if (previous !== void 0 && !previous.work.prepareCriticalCss) return previous.build.stylesheet;
150
+ const filePath = application.config.criticalCssEntryFilePath;
151
+ return filePath === void 0 ? {
152
+ css: "",
153
+ inputFilePaths: []
154
+ } : yield* readDevelopmentStylesheet({
155
+ server: client.server,
156
+ filePath
157
+ });
158
+ })
165
159
  };
166
160
  });
167
161
  }
@@ -316,7 +310,10 @@ function startDevelopmentClient(inputs, port, recordChangeFn) {
316
310
  return new RegExp(`^${normalizePath(file).replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}(?:\\?.*)?$`);
317
311
  })]
318
312
  },
319
- optimizeDeps: { entries: [inputs.clientEntryFilePath, ...inputs.clientViewModules] },
313
+ optimizeDeps: {
314
+ exclude: [FRAMEWORK_IDENTITY_PROTOCOL.moduleSpecifiers.clientTransportTypes],
315
+ entries: [inputs.clientEntryFilePath, ...inputs.clientViewModules]
316
+ },
320
317
  server: {
321
318
  middlewareMode: true,
322
319
  origin: listener.origin,
@@ -578,7 +575,10 @@ function prepareDevelopmentGeneration(input) {
578
575
  inspection: prepared.sources.inspection,
579
576
  publicAssets: prepared.publicAssets
580
577
  });
581
- if (previous === void 0 || previous.work.inspectSources || previous.work.capturePublicAssets) yield* writeAndCheckApplicationGeneration(application);
578
+ if (previous === void 0 || previous.work.inspectSources || previous.work.capturePublicAssets) yield* writeAndCheckApplicationGeneration(application, previous === void 0 || previous.work.inspectSources ? {
579
+ server: prepared.sources.inputs.serverRootFiles,
580
+ client: prepared.sources.inputs.clientRootFiles
581
+ } : void 0);
582
582
  return {
583
583
  application,
584
584
  sources: prepared.sources.inputs
@@ -636,10 +636,12 @@ function getDevelopmentServerPort() {
636
636
  return address.port;
637
637
  }));
638
638
  }
639
- /** Runs the authored server entry; its Effect scope owns process termination. */
639
+ /** Runs the configured server command; its Effect scope owns process termination. */
640
640
  function startDevelopmentServerProcess(input) {
641
641
  return Effect.gen(function* () {
642
- const process = yield* ChildProcess.make(globalThis.process.execPath, ["--enable-source-maps", input.layout.compiledServerEntryFilePath], {
642
+ const [executable, ...args] = input.command;
643
+ const process = yield* ChildProcess.make(executable, args, {
644
+ cwd: input.configDirectory,
643
645
  env: { [DEVELOPMENT_PROTOCOL.serverPortEnvironmentVariable]: String(input.port) },
644
646
  extendEnv: true,
645
647
  stdin: "ignore",
@@ -823,7 +825,8 @@ function classifyDevelopmentChanges(input) {
823
825
  const revalidate = compileDevelopmentPatterns(layout.dev?.revalidateClientOnChange ?? []);
824
826
  let restartConfiguration = false;
825
827
  let inspectSources = false;
826
- let compileServer = false;
828
+ let restartServer = false;
829
+ let restartVite = false;
827
830
  let capturePublicAssets = false;
828
831
  let prepareCriticalCss = false;
829
832
  let revalidateClient = false;
@@ -835,7 +838,8 @@ function classifyDevelopmentChanges(input) {
835
838
  const clientSource = inputs.sources.clientFiles.has(filePath) || inputs.sources.clientRootFiles.has(filePath);
836
839
  const resolutionSource = inputs.sources.resolutionFiles.has(filePath);
837
840
  inspectSources ||= serverSource || clientSource || resolutionSource;
838
- compileServer ||= serverSource || resolutionSource || inputs.serverFiles.has(filePath);
841
+ restartServer ||= serverSource || resolutionSource;
842
+ restartVite ||= resolutionSource;
839
843
  capturePublicAssets ||= containsFilePath({
840
844
  path,
841
845
  directory: layout.publicAssetsSourceDirectory,
@@ -855,12 +859,13 @@ function classifyDevelopmentChanges(input) {
855
859
  const serverMembershipChanged = differsFromPreviousFiles(inputs.sources.serverRootFiles, roots.server);
856
860
  const clientMembershipChanged = differsFromPreviousFiles(inputs.sources.clientRootFiles, roots.client);
857
861
  inspectSources ||= serverMembershipChanged || clientMembershipChanged;
858
- compileServer ||= serverMembershipChanged;
862
+ restartServer ||= serverMembershipChanged;
859
863
  }
860
864
  return {
861
865
  restartConfiguration,
862
866
  inspectSources,
863
- compileServer,
867
+ restartServer,
868
+ restartVite,
864
869
  capturePublicAssets,
865
870
  prepareCriticalCss: layout.criticalCssEntryFilePath !== void 0 && (prepareCriticalCss || capturePublicAssets),
866
871
  revalidateClient
@@ -896,8 +901,16 @@ function loadDevelopmentConfig(configPath) {
896
901
  };
897
902
  }
898
903
  });
904
+ const config = yield* Schema.decodeUnknownEffect(VormaConfigSchema)(loaded?.config);
905
+ if (config.dev === void 0) return yield* Effect.fail({
906
+ _tag: "ConfigLoadError",
907
+ message: "vorma dev requires dev.serverCommand in the Vorma configuration"
908
+ });
899
909
  return {
900
- config: yield* Schema.decodeUnknownEffect(VormaConfigSchema)(loaded?.config),
910
+ config: {
911
+ ...config,
912
+ dev: config.dev
913
+ },
901
914
  configFilePath,
902
915
  dependencies: loaded?.dependencies ?? []
903
916
  };
@@ -990,7 +1003,6 @@ function runDevelopmentSession(input) {
990
1003
  yield* input.watcher.watchPathsFn({
991
1004
  paths: [
992
1005
  ...input.loaded.dependencies,
993
- path.dirname(resolved.serverEntryFilePath),
994
1006
  path.dirname(resolved.clientEntryFilePath),
995
1007
  path.dirname(resolved.serverTsconfigFilePath),
996
1008
  path.dirname(resolved.clientTsconfigFilePath),
@@ -1062,7 +1074,8 @@ function runDevelopmentSession(input) {
1062
1074
  };
1063
1075
  const fiber = yield* Effect.scoped(Effect.gen(function* () {
1064
1076
  const server = yield* startDevelopmentServerProcess({
1065
- layout,
1077
+ command: input.loaded.config.dev.serverCommand,
1078
+ configDirectory: layout.configDirectory,
1066
1079
  port: input.port
1067
1080
  });
1068
1081
  announced = true;
@@ -1096,7 +1109,6 @@ function runDevelopmentSession(input) {
1096
1109
  return Effect.gen(function* () {
1097
1110
  inputs = {
1098
1111
  sources: next.generation.sources,
1099
- serverFiles: new Set(next.server.inputFilePaths.map(normalizePath)),
1100
1112
  criticalCssFiles: new Set(next.stylesheet.inputFilePaths.map(normalizePath)),
1101
1113
  configurationFiles: new Set(input.loaded.dependencies.map(normalizePath)),
1102
1114
  viteConfigurationFiles: new Set(client.server.config.configFileDependencies)
@@ -1109,7 +1121,6 @@ function runDevelopmentSession(input) {
1109
1121
  yield* input.watcher.watchPathsFn({
1110
1122
  paths: [
1111
1123
  ...sourcePaths,
1112
- ...inputs.serverFiles,
1113
1124
  ...inputs.criticalCssFiles,
1114
1125
  ...inputs.configurationFiles,
1115
1126
  layout.configFilePath,
@@ -1123,7 +1134,6 @@ function runDevelopmentSession(input) {
1123
1134
  }
1124
1135
  yield* publishApplicationArtifacts({
1125
1136
  generation: generation.application,
1126
- server: build.server,
1127
1137
  artifacts
1128
1138
  });
1129
1139
  yield* startApplication;
@@ -1150,7 +1160,7 @@ function runDevelopmentSession(input) {
1150
1160
  if (preparingRevision === revision) pendingPaths.clear();
1151
1161
  return;
1152
1162
  }
1153
- if (work.compileServer || work.restartConfiguration) notifyFn({ kind: "rebuilding" });
1163
+ if (work.restartServer || work.restartConfiguration) notifyFn({ kind: "rebuilding" });
1154
1164
  if (work.restartConfiguration) {
1155
1165
  const next = yield* loadDevelopmentConfig(layout.configFilePath);
1156
1166
  const nextLayout = yield* resolveVormaConfig(next).pipe(Effect.flatMap(loadApplicationSourceLayout));
@@ -1174,7 +1184,7 @@ function runDevelopmentSession(input) {
1174
1184
  work
1175
1185
  }
1176
1186
  });
1177
- })), work.compileServer ? stopApplication : Effect.void], { concurrency: 2 });
1187
+ })), work.restartServer ? stopApplication : Effect.void], { concurrency: 2 });
1178
1188
  const previousArtifacts = artifacts;
1179
1189
  head = yield* client.readHeadHtml;
1180
1190
  const nextArtifacts = assembleDevelopmentArtifacts({
@@ -1182,14 +1192,13 @@ function runDevelopmentSession(input) {
1182
1192
  client,
1183
1193
  developmentHeadHtml: head
1184
1194
  });
1185
- const restartVite = work.compileServer || JSON.stringify(previousArtifacts.metadata.clientViews) !== JSON.stringify(nextArtifacts.metadata.clientViews);
1186
- const reload = restartVite || previousArtifacts.metadata.clientBuildId !== nextArtifacts.metadata.clientBuildId;
1195
+ const restartVite = work.restartVite || JSON.stringify(previousArtifacts.metadata.clientViews) !== JSON.stringify(nextArtifacts.metadata.clientViews);
1196
+ const reload = work.restartServer || restartVite || previousArtifacts.metadata.clientBuildId !== nextArtifacts.metadata.clientBuildId;
1187
1197
  yield* publishApplicationArtifacts({
1188
1198
  generation: next.generation.application,
1189
- artifacts: nextArtifacts,
1190
- ...work.compileServer ? { server: next.server } : {}
1199
+ artifacts: nextArtifacts
1191
1200
  });
1192
- if (work.compileServer) yield* startApplication;
1201
+ if (work.restartServer) yield* startApplication;
1193
1202
  client.resumeInspectionFn(reload);
1194
1203
  if (restartVite) {
1195
1204
  yield* client.restart;
@@ -1,7 +1,7 @@
1
1
  import type { CompiledNestedPattern, PatternCompileError } from "@vorma/primitives/matcher";
2
+ import { type ConflictingDynamicParameterNameError } from "@vorma/protocol/path";
3
+ import { type PathWireError } from "@vorma/protocol/path";
2
4
  import { Result } from "effect";
3
- import { type ConflictingDynamicParameterNameError } from "../server/graph/pattern-conflicts.ts";
4
- import { type PathWireError } from "../universal/path-wire.ts";
5
5
  import type { DeclarationSource, InspectedClientView, InspectedEndpoint, InspectedProjects, InspectedServerDeclaration, InspectedUiLoader } from "./inspect-projects.ts";
6
6
  export type ApplicationSegment = {
7
7
  /** The authored pattern, as the loader or the view wrote it. */
@@ -1,4 +1,4 @@
1
- import type { ClientModule } from "../universal/protocol.ts";
1
+ import type { ClientModule } from "@vorma/protocol";
2
2
  import type { DevelopmentBuild, DevelopmentClient } from "./development-build.ts";
3
3
  export declare function toDevelopmentModuleUrl(input: {
4
4
  readonly origin: string;
@@ -1,18 +1,16 @@
1
1
  import { Effect } from "effect";
2
- import { type CompiledServer } from "./compile-server.ts";
3
2
  import type { startDevelopmentClient } from "./development-client.ts";
4
3
  import type { DevelopmentGeneration } from "./development-generation.ts";
5
4
  import type { DevelopmentWork } from "./development-work.ts";
6
5
  export type DevelopmentClient = Effect.Success<ReturnType<typeof startDevelopmentClient>>;
7
6
  export type DevelopmentBuild = {
8
7
  readonly generation: DevelopmentGeneration;
9
- readonly server: CompiledServer;
10
8
  readonly stylesheet: {
11
9
  readonly css: string;
12
10
  readonly inputFilePaths: ReadonlyArray<string>;
13
11
  };
14
12
  };
15
- /** Prepares server bytes and native CSS concurrently after their generated inputs exist. */
13
+ /** Prepares native CSS after the generation's public-asset inputs exist. */
16
14
  export declare function prepareDevelopmentBuild(input: {
17
15
  readonly generation: DevelopmentGeneration;
18
16
  readonly client: DevelopmentClient;
@@ -21,10 +19,9 @@ export declare function prepareDevelopmentBuild(input: {
21
19
  readonly work: DevelopmentWork;
22
20
  };
23
21
  }): Effect.Effect<{
24
- server: CompiledServer;
22
+ generation: DevelopmentGeneration;
25
23
  stylesheet: {
26
24
  readonly css: string;
27
25
  readonly inputFilePaths: ReadonlyArray<string>;
28
26
  };
29
- generation: DevelopmentGeneration;
30
- }, import("./development-stylesheet.ts").DevelopmentStylesheetIssue | import("./compile-server.ts").ServerCompilationIssue, never>;
27
+ }, import("./development-stylesheet.ts").DevelopmentStylesheetIssue, never>;
@@ -1,5 +1,4 @@
1
1
  import { Effect } from "effect";
2
- import type { ApplicationSourceLayout } from "./source-layout.ts";
3
2
  export type DevelopmentServerExit = {
4
3
  readonly _tag: "DevelopmentServerExit";
5
4
  readonly exitCode: number;
@@ -10,9 +9,10 @@ export type DevelopmentServerReadinessIssue = {
10
9
  };
11
10
  /** Reserves a port until the enclosing allocation scope closes. */
12
11
  export declare function getDevelopmentServerPort(): Effect.Effect<number, import("effect/unstable/socket/SocketServer").SocketServerError, import("effect/Scope").Scope>;
13
- /** Runs the authored server entry; its Effect scope owns process termination. */
12
+ /** Runs the configured server command; its Effect scope owns process termination. */
14
13
  export declare function startDevelopmentServerProcess(input: {
15
- readonly layout: ApplicationSourceLayout;
14
+ readonly command: readonly [string, ...Array<string>];
15
+ readonly configDirectory: string;
16
16
  readonly port: number;
17
17
  }): Effect.Effect<{
18
18
  process: import("effect/unstable/process/ChildProcessSpawner").ChildProcessHandle;
@@ -5,14 +5,14 @@ import type { ApplicationSourceLayout } from "./source-layout.ts";
5
5
  export type DevelopmentWork = {
6
6
  readonly restartConfiguration: boolean;
7
7
  readonly inspectSources: boolean;
8
- readonly compileServer: boolean;
8
+ readonly restartServer: boolean;
9
+ readonly restartVite: boolean;
9
10
  readonly capturePublicAssets: boolean;
10
11
  readonly prepareCriticalCss: boolean;
11
12
  readonly revalidateClient: boolean;
12
13
  };
13
14
  export type DevelopmentInputs = {
14
15
  readonly sources: DevelopmentSourceInputs;
15
- readonly serverFiles: ReadonlySet<string>;
16
16
  readonly configurationFiles: ReadonlySet<string>;
17
17
  readonly viteConfigurationFiles: ReadonlySet<string>;
18
18
  readonly criticalCssFiles: ReadonlySet<string>;
@@ -25,7 +25,8 @@ export declare function classifyDevelopmentChanges(input: {
25
25
  }): Effect.Effect<{
26
26
  restartConfiguration: boolean;
27
27
  inspectSources: boolean;
28
- compileServer: boolean;
28
+ restartServer: boolean;
29
+ restartVite: boolean;
29
30
  capturePublicAssets: boolean;
30
31
  prepareCriticalCss: boolean;
31
32
  revalidateClient: boolean;
@@ -7,7 +7,7 @@ import { type PublicAssetIssue, type PublicAssetProjection } from "./public-asse
7
7
  import type { GeneratedSource } from "./render-source-text.ts";
8
8
  import type { ConfigResolutionError } from "./resolve-config.ts";
9
9
  import type { ApplicationSourceLayout, ApplicationSourceLayoutIssues } from "./source-layout.ts";
10
- import { type TypescriptProjectError } from "./typescript-projects.ts";
10
+ import { type TypescriptProjectRoots, type TypescriptProjectError } from "./typescript-projects.ts";
11
11
  export type ApplicationModelIssues = {
12
12
  readonly _tag: "ApplicationModelIssues";
13
13
  readonly issues: ReadonlyArray<ApplicationModelIssue>;
@@ -29,14 +29,14 @@ export type ApplicationGeneration = {
29
29
  readonly config: ApplicationSourceLayout;
30
30
  readonly model: ApplicationModel;
31
31
  readonly inspection: InspectedProjects;
32
- /** The declaration augmenting `vorma/client` with this application's contracts: types only. */
32
+ /** The declaration augmenting `@vorma/client` with this application's contracts: types only. */
33
33
  readonly clientContracts: GeneratedSource;
34
34
  /** Runtime adapters for the Effect data types that occur in this application's contracts. */
35
35
  readonly clientTransport: GeneratedSource;
36
36
  readonly publicAssets: PublicAssetProjection;
37
37
  };
38
38
  /** Writes correlated generated sources and verifies their native TypeScript inclusion. */
39
- export declare function writeAndCheckApplicationGeneration(generation: ApplicationGeneration): Effect.Effect<void, GeneratedApplicationWriteError | TypescriptProjectError, FileSystem.FileSystem | Path.Path>;
39
+ export declare function writeAndCheckApplicationGeneration(generation: ApplicationGeneration, knownRootFiles?: TypescriptProjectRoots): Effect.Effect<void, GeneratedApplicationWriteError | TypescriptProjectError, FileSystem.FileSystem | Path.Path>;
40
40
  /** Reads both projects through the checker, captures public assets, and prepares generated build inputs without publishing them. */
41
41
  export declare function prepareApplicationGeneration(sourceLayout: ApplicationSourceLayout): Effect.Effect<ApplicationGeneration, ApplicationGenerationError, FileSystem.FileSystem | Path.Path>;
42
42
  /** Reads declarations and public URL call sites independently of public asset hashing. */
@@ -55,7 +55,7 @@ export declare function assembleApplicationGeneration(input: {
55
55
  export declare function writeApplicationGeneration(generation: ApplicationGeneration): Effect.Effect<void, GeneratedApplicationWriteError, FileSystem.FileSystem | Path.Path>;
56
56
  /**
57
57
  * Writes the internal registration module and the application
58
- * contract types before server compilation.
58
+ * contract types before application startup.
59
59
  */
60
60
  export declare function writeGeneratedServerApplication(input: {
61
61
  readonly generation: ApplicationGeneration;
@@ -1,5 +1,5 @@
1
+ import type { VormaConfig } from "@vorma/server/config";
1
2
  import { Effect } from "effect";
2
- import type { VormaConfig } from "../server/config/index.ts";
3
3
  /**
4
4
  * Builds and publishes one production application while holding all generated
5
5
  * output ownership. `configFilePath` is the absolute path of the configuration
@@ -11,5 +11,4 @@ export declare function buildApplication(input: {
11
11
  }): Effect.Effect<{
12
12
  clientBuildId: string;
13
13
  publicDirectory: string;
14
- serverEntryPath: string;
15
- }, import("./assemble-artifacts.ts").ArtifactAssemblyIssue | import("./publish-artifacts.ts").ArtifactPublicationIssue | import("./bundle-client.ts").ClientBundleIssue | import("./generate-application.ts").GeneratedApplicationWriteError | import("./output-ownership.ts").OutputOwnershipIssue | import("effect/PlatformError").PlatformError | import("./compile-server.ts").ServerCompilationIssue | import("./generate-application.ts").ApplicationGenerationError, import("effect/FileSystem").FileSystem | import("effect/Path").Path>;
14
+ }, import("./assemble-artifacts.ts").ArtifactAssemblyIssue | import("./publish-artifacts.ts").ArtifactPublicationIssue | import("./bundle-client.ts").ClientBundleIssue | import("./generate-application.ts").GeneratedApplicationWriteError | import("./output-ownership.ts").OutputOwnershipIssue | import("effect/PlatformError").PlatformError | import("./generate-application.ts").ApplicationGenerationError, import("effect/FileSystem").FileSystem | import("effect/Path").Path>;
@@ -1,2 +1,2 @@
1
- import { t as buildApplication } from "../build-DcP5_DUV.js";
1
+ import { t as buildApplication } from "../build-BeUTL6eX.js";
2
2
  export { buildApplication };
@@ -1,7 +1,7 @@
1
+ import type { HttpMethod, InputTransportKind } from "@vorma/protocol";
2
+ import type { EffectTransportMarkKind } from "@vorma/protocol/transport";
1
3
  import { Effect } from "effect";
2
4
  import * as Path from "effect/Path";
3
- import type { HttpMethod, InputTransport } from "../server/graph/declarations.ts";
4
- import type { EffectTransportMarkKind } from "../universal/value-transport.ts";
5
5
  import type { ApplicationSourceLayout } from "./source-layout.ts";
6
6
  import { type TypescriptProjectError, type TypescriptProjects } from "./typescript-projects.ts";
7
7
  export type DeclarationSource = {
@@ -26,7 +26,7 @@ export type InspectedEndpoint = DeclarationSource & {
26
26
  readonly method: HttpMethod;
27
27
  readonly pattern: string;
28
28
  readonly input: string | undefined;
29
- readonly inputTransport: InputTransport["kind"];
29
+ readonly inputTransport: InputTransportKind;
30
30
  readonly output: string | undefined;
31
31
  readonly event: string | undefined;
32
32
  readonly errors: ReadonlyArray<InspectedEndpointError>;
@@ -2,31 +2,33 @@ import { Effect, Path, Schema } from "effect";
2
2
  type ConfigLoadError = {
3
3
  readonly _tag: "ConfigLoadError";
4
4
  readonly message: string;
5
- readonly cause: unknown;
5
+ readonly cause?: unknown;
6
6
  };
7
7
  /** Vite's configuration loader recompiles configuration dependencies on each development restart. */
8
8
  export declare function loadDevelopmentConfig(configPath: string): Effect.Effect<{
9
9
  config: {
10
- readonly importMeta: {
10
+ importMeta: {
11
11
  readonly url: string;
12
12
  };
13
- readonly serverEntry: string;
14
- readonly serverTsconfigFile: string;
15
- readonly clientEntry: string;
16
- readonly clientTsconfigFile: string;
17
- readonly publicAssetsDir: string;
18
- readonly viteConfigFile: string;
19
- readonly criticalCssEntry?: string;
20
- readonly serverExternalPackages?: readonly string[];
21
- readonly publicAssetsBasePath: string;
22
- readonly bodySsr?: boolean;
23
- readonly dev?: {
13
+ serverTsconfigFile: string;
14
+ clientEntry: string;
15
+ clientTsconfigFile: string;
16
+ publicAssetsDir: string;
17
+ viteConfigFile: string;
18
+ criticalCssEntry?: string;
19
+ publicAssetsBasePath: string;
20
+ bodySsr?: boolean;
21
+ dev: {
22
+ readonly serverCommand: readonly [string, ...string[]];
24
23
  readonly revalidateClientOnChange?: readonly string[];
25
24
  };
26
25
  };
27
26
  configFilePath: string;
28
27
  dependencies: string[];
29
- }, ConfigLoadError | Schema.SchemaError, Path.Path>;
28
+ }, ConfigLoadError | Schema.SchemaError | {
29
+ _tag: "ConfigLoadError";
30
+ message: string;
31
+ }, Path.Path>;
30
32
  /**
31
33
  * Imports the explicitly selected configuration using the CLI host's module
32
34
  * loader and reports the absolute path of the file it was loaded from,
@@ -37,17 +39,16 @@ export declare function loadVormaConfig(configPath: string): Effect.Effect<{
37
39
  readonly importMeta: {
38
40
  readonly url: string;
39
41
  };
40
- readonly serverEntry: string;
41
42
  readonly serverTsconfigFile: string;
42
43
  readonly clientEntry: string;
43
44
  readonly clientTsconfigFile: string;
44
45
  readonly publicAssetsDir: string;
45
46
  readonly viteConfigFile: string;
46
47
  readonly criticalCssEntry?: string;
47
- readonly serverExternalPackages?: readonly string[];
48
48
  readonly publicAssetsBasePath: string;
49
49
  readonly bodySsr?: boolean;
50
50
  readonly dev?: {
51
+ readonly serverCommand: readonly [string, ...string[]];
51
52
  readonly revalidateClientOnChange?: readonly string[];
52
53
  };
53
54
  };
@@ -2,7 +2,6 @@ import { Effect } from "effect";
2
2
  import * as FileSystem from "effect/FileSystem";
3
3
  import * as Path from "effect/Path";
4
4
  import type { ApplicationArtifacts } from "./assemble-artifacts.ts";
5
- import type { CompiledServer } from "./compile-server.ts";
6
5
  import type { ApplicationGeneration } from "./generate-application.ts";
7
6
  import type { ApplicationSourceLayout } from "./source-layout.ts";
8
7
  export type ArtifactPublicationIssue = {
@@ -11,13 +10,11 @@ export type ArtifactPublicationIssue = {
11
10
  };
12
11
  /** Prepares one public output before Vite adds its browser files to it. */
13
12
  export declare function preparePublicOutput(config: ApplicationSourceLayout): Effect.Effect<void, import("./output-ownership.ts").OutputOwnershipIssue | import("effect/PlatformError").PlatformError, FileSystem.FileSystem | Path.Path>;
14
- /** Publishes compiled server modules and private metadata for the completed browser build. */
13
+ /** Publishes private metadata for the completed browser build. */
15
14
  export declare function publishApplicationArtifacts(input: {
16
15
  readonly artifacts: ApplicationArtifacts;
17
- readonly server?: CompiledServer;
18
16
  readonly generation: ApplicationGeneration;
19
17
  }): Effect.Effect<{
20
18
  clientBuildId: string;
21
19
  publicDirectory: string;
22
- serverEntryPath: string;
23
20
  }, ArtifactPublicationIssue, FileSystem.FileSystem | Path.Path>;
@@ -1,4 +1,4 @@
1
- import { type EffectTransportMarkKind } from "../universal/value-transport.ts";
1
+ import { type EffectTransportMarkKind } from "@vorma/protocol/transport";
2
2
  import type { GeneratedSource } from "./render-source-text.ts";
3
3
  /**
4
4
  * Selects generic value adapters without generating application schemas or route
@@ -3,24 +3,13 @@ import type { ApplicationModel } from "./compile-application.ts";
3
3
  import type { DeclarationSource } from "./inspect-projects.ts";
4
4
  import { type PublicAssetProjection } from "./public-assets.ts";
5
5
  import { type GeneratedSource } from "./render-source-text.ts";
6
- /**
7
- * The URL of the published public directory relative to a compiled server
8
- * module. Every compiled module sits directly in the server entry's Vorma
9
- * directory, so one relative URL locates the bytes from all of them.
10
- */
11
- export declare function getPublicDirectoryRelativeUrl(input: {
12
- readonly path: Path.Path;
13
- readonly serverGeneratedDirectory: string;
14
- readonly publicDirectory: string;
15
- }): string;
16
6
  /** Renders registration imports independently of final browser output. */
17
7
  export declare function renderGeneratedBuildModule(input: {
18
8
  readonly declarations: ReadonlyArray<DeclarationSource>;
19
- readonly publicDirectoryRelativeUrl: string;
20
9
  readonly filePath: string;
21
10
  readonly path: Path.Path;
22
11
  }): GeneratedSource;
23
- /** Renders the declaration that augments `vorma/server` with this application's patterns, search types, and asset keys. */
12
+ /** Renders the declaration that augments `@vorma/server` with this application's patterns, search types, and asset keys. */
24
13
  export declare function renderGeneratedServerContracts(input: {
25
14
  readonly model: ApplicationModel;
26
15
  readonly publicAssets: PublicAssetProjection;
@@ -1,6 +1,6 @@
1
+ import type { EffectTransportMarkKind } from "@vorma/protocol/transport";
1
2
  import { Result } from "effect";
2
3
  import { type Checker, type Emitter, type Program, type Symbol as TypeSymbol, type Type } from "typescript/unstable/async";
3
- import type { EffectTransportMarkKind } from "../universal/value-transport.ts";
4
4
  export type TypeRenderIssue = {
5
5
  readonly _tag: "UnrenderableContractType";
6
6
  readonly reason: string;
@@ -1,12 +1,11 @@
1
+ import { type VormaConfig } from "@vorma/server/config";
1
2
  import { Effect } from "effect";
2
3
  import * as Path from "effect/Path";
3
- import { type VormaConfig } from "../server/config/index.ts";
4
4
  export type PublicAssetsBasePath = "/" | `/${string}/`;
5
5
  export type ResolvedVormaConfig = {
6
6
  readonly configFilePath: string;
7
7
  /** The directory of the configuration file; every configured path is relative to it. */
8
8
  readonly configDirectory: string;
9
- readonly serverEntryFilePath: string;
10
9
  readonly serverTsconfigFilePath: string;
11
10
  /** The directory containing the server tsconfig, used as the compiler's working directory. */
12
11
  readonly serverProjectDirectory: string;
@@ -15,7 +14,6 @@ export type ResolvedVormaConfig = {
15
14
  readonly publicAssetsSourceDirectory: string;
16
15
  readonly viteConfigFilePath: string;
17
16
  readonly criticalCssEntryFilePath?: string;
18
- readonly serverExternalPackages: ReadonlyArray<string>;
19
17
  readonly publicAssetsBasePath: PublicAssetsBasePath;
20
18
  readonly bodySsr: VormaConfig["bodySsr"];
21
19
  readonly dev: VormaConfig["dev"];
@@ -25,17 +23,16 @@ export type VormaOwnedPaths = {
25
23
  readonly ignoreFilePaths: ReadonlyArray<string>;
26
24
  readonly serverGeneratedDirectory: string;
27
25
  readonly clientGeneratedDirectory: string;
28
- readonly generatedBuildFilePath: string;
26
+ readonly generatedRegistrationFilePath: string;
29
27
  readonly generatedServerContractsFilePath: string;
30
- readonly compiledServerEntryFilePath: string;
31
28
  };
32
- /** The build reads no Vorma directory, in either entry directory, as application source. */
29
+ /** The build excludes both projects' generated directories from application source. */
33
30
  export declare function getGeneratedSourceDirectories(config: VormaOwnedPaths): ReadonlyArray<string>;
34
- /** Derives generated source, public assets, and build coordination from the entry directories. */
31
+ /** Derives generated source, public assets, and build coordination from the tsconfig directories. */
35
32
  export declare function getVormaOwnedPaths(input: {
36
33
  readonly path: Path.Path;
37
- readonly serverEntryDirectory: string;
38
- readonly clientEntryDirectory: string;
34
+ readonly serverProjectDirectory: string;
35
+ readonly clientProjectDirectory: string;
39
36
  }): VormaOwnedPaths;
40
37
  export type ConfigResolutionError = {
41
38
  readonly _tag: "ConfigResolutionError";
@@ -1,12 +1,12 @@
1
1
  import { Effect } from "effect";
2
2
  import * as FileSystem from "effect/FileSystem";
3
3
  import * as Path from "effect/Path";
4
- import { type ResolvedVormaConfig } from "./resolve-config.ts";
4
+ import type { ResolvedVormaConfig } from "./resolve-config.ts";
5
5
  declare const APPLICATION_SOURCE_LAYOUT_BRAND: unique symbol;
6
6
  export type ApplicationSourceLayout = ResolvedVormaConfig & {
7
7
  readonly [APPLICATION_SOURCE_LAYOUT_BRAND]: true;
8
8
  };
9
- export type ApplicationSourcePathField = "serverEntry" | "serverTsconfigFile" | "clientEntry" | "clientTsconfigFile" | "publicAssetsDir" | "viteConfigFile" | "criticalCssEntry";
9
+ export type ApplicationSourcePathField = "serverTsconfigFile" | "clientEntry" | "clientTsconfigFile" | "publicAssetsDir" | "viteConfigFile" | "criticalCssEntry";
10
10
  export type ApplicationSourceLayoutIssue = {
11
11
  readonly field: ApplicationSourcePathField;
12
12
  readonly path: string;