@atria/server 0.0.9 → 0.0.12

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 (124) hide show
  1. package/README.md +26 -10
  2. package/dist/auth/cookies.d.ts +11 -0
  3. package/dist/auth/cookies.js +38 -0
  4. package/dist/auth/cookies.js.map +1 -0
  5. package/dist/auth/hash.d.ts +2 -0
  6. package/dist/auth/hash.js +36 -0
  7. package/dist/auth/hash.js.map +1 -0
  8. package/dist/auth/oauth.d.ts +5 -0
  9. package/dist/auth/oauth.js +215 -0
  10. package/dist/auth/oauth.js.map +1 -0
  11. package/dist/auth/runtime.d.ts +28 -0
  12. package/dist/auth/runtime.js +528 -0
  13. package/dist/auth/runtime.js.map +1 -0
  14. package/dist/auth/store.d.ts +33 -0
  15. package/dist/auth/store.js +49 -0
  16. package/dist/auth/store.js.map +1 -0
  17. package/dist/auth/types.d.ts +40 -0
  18. package/dist/auth/types.js +2 -0
  19. package/dist/auth/types.js.map +1 -0
  20. package/dist/auth/validation.d.ts +21 -0
  21. package/dist/auth/validation.js +97 -0
  22. package/dist/auth/validation.js.map +1 -0
  23. package/dist/dev/admin/assets.d.ts +2 -0
  24. package/dist/dev/admin/assets.js +30 -0
  25. package/dist/dev/admin/assets.js.map +1 -0
  26. package/dist/dev/admin/i18n.d.ts +2 -0
  27. package/dist/dev/admin/i18n.js +63 -0
  28. package/dist/dev/admin/i18n.js.map +1 -0
  29. package/dist/dev/admin/index.d.ts +3 -0
  30. package/dist/dev/admin/index.js +4 -0
  31. package/dist/dev/admin/index.js.map +1 -0
  32. package/dist/dev/admin/request.d.ts +14 -0
  33. package/dist/dev/admin/request.js +77 -0
  34. package/dist/dev/admin/request.js.map +1 -0
  35. package/dist/dev/admin/routing.d.ts +5 -0
  36. package/dist/dev/admin/routing.js +31 -0
  37. package/dist/dev/admin/routing.js.map +1 -0
  38. package/dist/dev/admin-assets.d.ts +2 -0
  39. package/dist/dev/admin-assets.js +30 -0
  40. package/dist/dev/admin-assets.js.map +1 -0
  41. package/dist/dev/admin.d.ts +2 -0
  42. package/dist/dev/admin.js +30 -0
  43. package/dist/dev/admin.js.map +1 -0
  44. package/dist/dev/constants.d.ts +11 -0
  45. package/dist/dev/constants.js +22 -0
  46. package/dist/dev/constants.js.map +1 -0
  47. package/dist/dev/health/index.d.ts +2 -0
  48. package/dist/dev/health/index.js +3 -0
  49. package/dist/dev/health/index.js.map +1 -0
  50. package/dist/dev/health/request.d.ts +14 -0
  51. package/dist/dev/health/request.js +22 -0
  52. package/dist/dev/health/request.js.map +1 -0
  53. package/dist/dev/health/state.d.ts +9 -0
  54. package/dist/dev/health/state.js +52 -0
  55. package/dist/dev/health/state.js.map +1 -0
  56. package/dist/dev/health.d.ts +9 -0
  57. package/dist/dev/health.js +52 -0
  58. package/dist/dev/health.js.map +1 -0
  59. package/dist/dev/http/errors.d.ts +2 -0
  60. package/dist/dev/http/errors.js +6 -0
  61. package/dist/dev/http/errors.js.map +1 -0
  62. package/dist/dev/http/routing.d.ts +3 -0
  63. package/dist/dev/http/routing.js +26 -0
  64. package/dist/dev/http/routing.js.map +1 -0
  65. package/dist/dev/i18n.d.ts +2 -0
  66. package/dist/dev/i18n.js +63 -0
  67. package/dist/dev/i18n.js.map +1 -0
  68. package/dist/dev/lifecycle.d.ts +2 -0
  69. package/dist/dev/lifecycle.js +10 -0
  70. package/dist/dev/lifecycle.js.map +1 -0
  71. package/dist/dev/public/index.d.ts +1 -0
  72. package/dist/dev/public/index.js +2 -0
  73. package/dist/dev/public/index.js.map +1 -0
  74. package/dist/dev/public/request.d.ts +9 -0
  75. package/dist/dev/public/request.js +29 -0
  76. package/dist/dev/public/request.js.map +1 -0
  77. package/dist/dev/public/responses.d.ts +3 -0
  78. package/dist/dev/public/responses.js +25 -0
  79. package/dist/dev/public/responses.js.map +1 -0
  80. package/dist/dev/public/routing.d.ts +1 -0
  81. package/dist/dev/public/routing.js +5 -0
  82. package/dist/dev/public/routing.js.map +1 -0
  83. package/dist/dev/responses.d.ts +2 -0
  84. package/dist/dev/responses.js +3 -0
  85. package/dist/dev/responses.js.map +1 -0
  86. package/dist/dev/routing.d.ts +3 -0
  87. package/dist/dev/routing.js +4 -0
  88. package/dist/dev/routing.js.map +1 -0
  89. package/dist/dev/setup/index.d.ts +2 -0
  90. package/dist/dev/setup/index.js +2 -0
  91. package/dist/dev/setup/index.js.map +1 -0
  92. package/dist/dev/setup/request.d.ts +5 -0
  93. package/dist/dev/setup/request.js +20 -0
  94. package/dist/dev/setup/request.js.map +1 -0
  95. package/dist/dev/setup/types.d.ts +5 -0
  96. package/dist/dev/setup/types.js +2 -0
  97. package/dist/dev/setup/types.js.map +1 -0
  98. package/dist/dev/static/files.d.ts +6 -0
  99. package/dist/dev/static/files.js +74 -0
  100. package/dist/dev/static/files.js.map +1 -0
  101. package/dist/dev/static/index.d.ts +4 -0
  102. package/dist/dev/static/index.js +5 -0
  103. package/dist/dev/static/index.js.map +1 -0
  104. package/dist/dev/static/paths.d.ts +1 -0
  105. package/dist/dev/static/paths.js +6 -0
  106. package/dist/dev/static/paths.js.map +1 -0
  107. package/dist/dev/static/publish.d.ts +1 -0
  108. package/dist/dev/static/publish.js +13 -0
  109. package/dist/dev/static/publish.js.map +1 -0
  110. package/dist/dev/static/resolver.d.ts +2 -0
  111. package/dist/dev/static/resolver.js +53 -0
  112. package/dist/dev/static/resolver.js.map +1 -0
  113. package/dist/dev/static/sender.d.ts +2 -0
  114. package/dist/dev/static/sender.js +11 -0
  115. package/dist/dev/static/sender.js.map +1 -0
  116. package/dist/dev/static-files.d.ts +6 -0
  117. package/dist/dev/static-files.js +74 -0
  118. package/dist/dev/static-files.js.map +1 -0
  119. package/dist/dev/types.d.ts +10 -0
  120. package/dist/dev/types.js +2 -0
  121. package/dist/dev/types.js.map +1 -0
  122. package/dist/server.js +65 -190
  123. package/dist/server.js.map +1 -1
  124. package/package.json +4 -2
@@ -0,0 +1,2 @@
1
+ import type { ResolveRequestMode, ResolveRequestResult } from "../types.js";
2
+ export declare const resolveRequestFile: (rootDir: string, requestPath: string, mode: ResolveRequestMode) => Promise<ResolveRequestResult>;
@@ -0,0 +1,53 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import { isInsideDirectory } from "./paths.js";
4
+ const resolveRootIndexFile = async (rootDir) => {
5
+ const rootIndexPath = path.join(rootDir, "index.html");
6
+ try {
7
+ const rootIndexStats = await fs.stat(rootIndexPath);
8
+ if (rootIndexStats.isFile()) {
9
+ return { type: "file", filePath: rootIndexPath };
10
+ }
11
+ }
12
+ catch {
13
+ // fall through to not found
14
+ }
15
+ return { type: "not-found" };
16
+ };
17
+ export const resolveRequestFile = async (rootDir, requestPath, mode) => {
18
+ const normalizedPath = requestPath === "/" ? "index.html" : requestPath.replace(/^\/+/, "");
19
+ const filePath = path.join(rootDir, normalizedPath);
20
+ if (!isInsideDirectory(rootDir, filePath)) {
21
+ return { type: "forbidden" };
22
+ }
23
+ try {
24
+ const fileStats = await fs.stat(filePath);
25
+ if (fileStats.isDirectory()) {
26
+ const directoryIndexPath = path.join(filePath, "index.html");
27
+ if (!isInsideDirectory(rootDir, directoryIndexPath)) {
28
+ return { type: "forbidden" };
29
+ }
30
+ try {
31
+ const directoryIndexStats = await fs.stat(directoryIndexPath);
32
+ if (directoryIndexStats.isFile()) {
33
+ return { type: "file", filePath: directoryIndexPath };
34
+ }
35
+ }
36
+ catch {
37
+ // fall through to not found/fallback response
38
+ }
39
+ return mode === "spa-fallback" ? resolveRootIndexFile(rootDir) : { type: "not-found" };
40
+ }
41
+ if (fileStats.isFile()) {
42
+ return { type: "file", filePath };
43
+ }
44
+ return { type: "not-found" };
45
+ }
46
+ catch {
47
+ if (mode === "spa-fallback" && !path.extname(normalizedPath)) {
48
+ return resolveRootIndexFile(rootDir);
49
+ }
50
+ return { type: "not-found" };
51
+ }
52
+ };
53
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/dev/static/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,oBAAoB,GAAG,KAAK,EAAE,OAAe,EAAiC,EAAE;IACpF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,OAAe,EACf,WAAmB,EACnB,IAAwB,EACO,EAAE;IACjC,MAAM,cAAc,GAAG,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAEpD,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5B,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC7D,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;gBACpD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YAC/B,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,mBAAmB,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC9D,IAAI,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC;oBACjC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;gBACxD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,8CAA8C;YAChD,CAAC;YAED,OAAO,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACzF,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,IAAI,KAAK,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7D,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ServerResponse } from "node:http";
2
+ export declare const sendFileResponse: (response: ServerResponse, filePath: string) => Promise<void>;
@@ -0,0 +1,11 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import { MIME_TYPES } from "../constants.js";
4
+ export const sendFileResponse = async (response, filePath) => {
5
+ const fileBuffer = await fs.readFile(filePath);
6
+ const extension = path.extname(filePath);
7
+ const contentType = MIME_TYPES[extension] ?? "application/octet-stream";
8
+ response.writeHead(200, { "content-type": contentType });
9
+ response.end(fileBuffer);
10
+ };
11
+ //# sourceMappingURL=sender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sender.js","sourceRoot":"","sources":["../../../src/dev/static/sender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,QAAwB,EAAE,QAAgB,EAAiB,EAAE;IAClG,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,0BAA0B,CAAC;IAExE,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC3B,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ServerResponse } from "node:http";
2
+ import type { ResolveRequestMode, ResolveRequestResult } from "./types.js";
3
+ export declare const isInsideDirectory: (basePath: string, targetPath: string) => boolean;
4
+ export declare const isPublicOutputPublished: (publicDir: string) => Promise<boolean>;
5
+ export declare const resolveRequestFile: (rootDir: string, requestPath: string, mode: ResolveRequestMode) => Promise<ResolveRequestResult>;
6
+ export declare const sendFileResponse: (response: ServerResponse, filePath: string) => Promise<void>;
@@ -0,0 +1,74 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import { MIME_TYPES } from "./constants.js";
4
+ export const isInsideDirectory = (basePath, targetPath) => {
5
+ const relativePath = path.relative(basePath, targetPath);
6
+ return relativePath !== "" && !relativePath.startsWith("..") && !path.isAbsolute(relativePath);
7
+ };
8
+ export const isPublicOutputPublished = async (publicDir) => {
9
+ const publicIndexPath = path.join(publicDir, "index.html");
10
+ try {
11
+ const indexStats = await fs.stat(publicIndexPath);
12
+ return indexStats.isFile() || indexStats.isSymbolicLink();
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ };
18
+ const resolveRootIndexFile = async (rootDir) => {
19
+ const rootIndexPath = path.join(rootDir, "index.html");
20
+ try {
21
+ const rootIndexStats = await fs.stat(rootIndexPath);
22
+ if (rootIndexStats.isFile()) {
23
+ return { type: "file", filePath: rootIndexPath };
24
+ }
25
+ }
26
+ catch {
27
+ // fall through to not found
28
+ }
29
+ return { type: "not-found" };
30
+ };
31
+ export const resolveRequestFile = async (rootDir, requestPath, mode) => {
32
+ const normalizedPath = requestPath === "/" ? "index.html" : requestPath.replace(/^\/+/, "");
33
+ const filePath = path.join(rootDir, normalizedPath);
34
+ if (!isInsideDirectory(rootDir, filePath)) {
35
+ return { type: "forbidden" };
36
+ }
37
+ try {
38
+ const fileStats = await fs.stat(filePath);
39
+ if (fileStats.isDirectory()) {
40
+ const directoryIndexPath = path.join(filePath, "index.html");
41
+ if (!isInsideDirectory(rootDir, directoryIndexPath)) {
42
+ return { type: "forbidden" };
43
+ }
44
+ try {
45
+ const directoryIndexStats = await fs.stat(directoryIndexPath);
46
+ if (directoryIndexStats.isFile()) {
47
+ return { type: "file", filePath: directoryIndexPath };
48
+ }
49
+ }
50
+ catch {
51
+ // fall through to not found/fallback response
52
+ }
53
+ return mode === "spa-fallback" ? resolveRootIndexFile(rootDir) : { type: "not-found" };
54
+ }
55
+ if (fileStats.isFile()) {
56
+ return { type: "file", filePath };
57
+ }
58
+ return { type: "not-found" };
59
+ }
60
+ catch {
61
+ if (mode === "spa-fallback" && !path.extname(normalizedPath)) {
62
+ return resolveRootIndexFile(rootDir);
63
+ }
64
+ return { type: "not-found" };
65
+ }
66
+ };
67
+ export const sendFileResponse = async (response, filePath) => {
68
+ const fileBuffer = await fs.readFile(filePath);
69
+ const extension = path.extname(filePath);
70
+ const contentType = MIME_TYPES[extension] ?? "application/octet-stream";
71
+ response.writeHead(200, { "content-type": contentType });
72
+ response.end(fileBuffer);
73
+ };
74
+ //# sourceMappingURL=static-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-files.js","sourceRoot":"","sources":["../../src/dev/static-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type SiteTarget = "public" | "admin";
2
+ export type ResolveRequestMode = "strict" | "spa-fallback";
3
+ export type ResolveRequestResult = {
4
+ type: "file";
5
+ filePath: string;
6
+ } | {
7
+ type: "not-found";
8
+ } | {
9
+ type: "forbidden";
10
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dev/types.ts"],"names":[],"mappings":""}
package/dist/server.js CHANGED
@@ -2,157 +2,39 @@ import { createServer } from "node:http";
2
2
  import { promises as fs } from "node:fs";
3
3
  import path from "node:path";
4
4
  import { ATRIA_RUNTIME_DIR, PUBLIC_OUTPUT_DIR } from "@atria/shared";
5
- const DEV_PUBLIC_HOST = "localhost";
6
- const DEV_ADMIN_HOST = "admin.localhost";
7
- const MIME_TYPES = {
8
- ".html": "text/html; charset=utf-8",
9
- ".js": "text/javascript; charset=utf-8",
10
- ".css": "text/css; charset=utf-8",
11
- ".json": "application/json; charset=utf-8",
12
- ".svg": "image/svg+xml",
13
- ".ico": "image/x-icon",
14
- ".txt": "text/plain; charset=utf-8"
15
- };
16
- const DEFAULT_NOT_FOUND_TEXT = "404: The requested page was not found.";
17
- const DEFAULT_PUBLIC_UNAVAILABLE_TEXT = "503: Public site output is not published yet.";
18
- // Keep this switch isolated so LIVE unpublished<->published behavior is easy to remove later.
19
- const ENABLE_LIVE_PUBLISH_TRANSITION = true;
20
- const PUBLIC_HOST_ALIASES = new Set(["localhost", "127.0.0.1", "[::1]", "::1"]);
21
- const ADMIN_HOST_ALIASES = new Set(["admin.localhost"]);
22
- const isInsideDirectory = (basePath, targetPath) => {
23
- const relativePath = path.relative(basePath, targetPath);
24
- return relativePath !== "" && !relativePath.startsWith("..") && !path.isAbsolute(relativePath);
25
- };
26
- const isPublicOutputPublished = async (publicDir) => {
27
- const publicIndexPath = path.join(publicDir, "index.html");
28
- try {
29
- const indexStats = await fs.stat(publicIndexPath);
30
- return indexStats.isFile() || indexStats.isSymbolicLink();
31
- }
32
- catch {
33
- return false;
34
- }
35
- };
36
- const parseRequestHostname = (hostHeader) => {
37
- if (!hostHeader) {
38
- return null;
39
- }
40
- const firstHost = hostHeader.split(",")[0]?.trim();
41
- if (!firstHost) {
42
- return null;
43
- }
44
- try {
45
- return new URL(`http://${firstHost}`).hostname.toLowerCase();
46
- }
47
- catch {
48
- return firstHost.replace(/:\d+$/, "").toLowerCase();
49
- }
50
- };
51
- const resolveSiteTarget = (hostname) => {
52
- if (hostname === null || PUBLIC_HOST_ALIASES.has(hostname)) {
53
- return "public";
54
- }
55
- if (ADMIN_HOST_ALIASES.has(hostname)) {
56
- return "admin";
57
- }
58
- return null;
59
- };
60
- const resolveRootIndexFile = async (rootDir) => {
61
- const rootIndexPath = path.join(rootDir, "index.html");
62
- try {
63
- const rootIndexStats = await fs.stat(rootIndexPath);
64
- if (rootIndexStats.isFile()) {
65
- return { type: "file", filePath: rootIndexPath };
66
- }
67
- }
68
- catch {
69
- // fall through to not found
70
- }
71
- return { type: "not-found" };
72
- };
73
- const resolveRequestFile = async (rootDir, requestPath, mode) => {
74
- const normalizedPath = requestPath === "/" ? "index.html" : requestPath.replace(/^\/+/, "");
75
- const filePath = path.join(rootDir, normalizedPath);
76
- if (!isInsideDirectory(rootDir, filePath)) {
77
- return { type: "forbidden" };
78
- }
79
- try {
80
- const fileStats = await fs.stat(filePath);
81
- if (fileStats.isDirectory()) {
82
- const directoryIndexPath = path.join(filePath, "index.html");
83
- if (!isInsideDirectory(rootDir, directoryIndexPath)) {
84
- return { type: "forbidden" };
85
- }
86
- try {
87
- const directoryIndexStats = await fs.stat(directoryIndexPath);
88
- if (directoryIndexStats.isFile()) {
89
- return { type: "file", filePath: directoryIndexPath };
90
- }
91
- }
92
- catch {
93
- // fall through to not found/fallback response
94
- }
95
- return mode === "spa-fallback" ? resolveRootIndexFile(rootDir) : { type: "not-found" };
96
- }
97
- if (fileStats.isFile()) {
98
- return { type: "file", filePath };
99
- }
100
- return { type: "not-found" };
101
- }
102
- catch {
103
- if (mode === "spa-fallback" && !path.extname(normalizedPath)) {
104
- return resolveRootIndexFile(rootDir);
105
- }
106
- return { type: "not-found" };
107
- }
108
- };
109
- const respondWithPublicNotFound = async (response, publicDir) => {
110
- const notFoundPagePath = path.join(publicDir, "404.html");
111
- try {
112
- const notFoundPage = await fs.readFile(notFoundPagePath);
113
- response.writeHead(404, { "content-type": MIME_TYPES[".html"] });
114
- response.end(notFoundPage);
115
- return;
116
- }
117
- catch {
118
- // Fall back to plain text when public/404.html is unavailable.
119
- }
120
- response.writeHead(404, { "content-type": MIME_TYPES[".txt"] });
121
- response.end(DEFAULT_NOT_FOUND_TEXT);
122
- };
123
- const respondWithDefaultNotFound = (response) => {
124
- response.writeHead(404, { "content-type": MIME_TYPES[".txt"] });
125
- response.end(DEFAULT_NOT_FOUND_TEXT);
126
- };
127
- const respondWithPublicUnavailable = (response) => {
128
- response.writeHead(503, {
129
- "content-type": MIME_TYPES[".txt"],
130
- "retry-after": "60"
131
- });
132
- response.end(DEFAULT_PUBLIC_UNAVAILABLE_TEXT);
133
- };
134
- const isRootPublicPath = (requestPath) => {
135
- const normalizedPath = requestPath.replace(/\/+$/, "");
136
- return normalizedPath.length === 0 || normalizedPath === "/index.html";
137
- };
138
- const closeServer = async (server) => new Promise((resolve, reject) => {
139
- server.close((error) => {
140
- if (error) {
141
- reject(error);
142
- return;
143
- }
144
- resolve();
145
- });
146
- });
5
+ import { createAuthRuntime } from "./auth/runtime.js";
6
+ import { DEV_PUBLIC_HOST, DEV_STUDIO_HOST, ENABLE_LIVE_PUBLISH_TRANSITION } from "./dev/constants.js";
7
+ import { closeServer } from "./dev/lifecycle.js";
8
+ import { respondWithDefaultNotFound } from "./dev/http/errors.js";
9
+ import { parseRequestHostname, resolveSiteTarget } from "./dev/http/routing.js";
10
+ import { isPublicOutputPublished } from "./dev/static/index.js";
11
+ import { handleAdminRequest, resolveAdminDistDir } from "./dev/admin/index.js";
12
+ import { handlePublicRequest } from "./dev/public/index.js";
13
+ import { handleSetupStatusRequest, isSetupStatusRequest } from "./dev/setup/index.js";
14
+ import { handleHealthRequest, isHealthRequest, readDatabaseHealthState } from "./dev/health/index.js";
147
15
  export const startDevServer = async (options) => {
148
- const host = options.host ?? "localhost";
16
+ const host = options.host ?? DEV_PUBLIC_HOST;
149
17
  const runtimeDir = path.join(options.projectRoot, ATRIA_RUNTIME_DIR);
150
18
  const publicDir = path.join(options.projectRoot, PUBLIC_OUTPUT_DIR);
19
+ const adminDistDir = resolveAdminDistDir();
20
+ const authRuntime = createAuthRuntime({
21
+ projectRoot: options.projectRoot,
22
+ port: options.port
23
+ });
151
24
  await fs.access(runtimeDir);
25
+ await fs.access(path.join(adminDistDir, "app.js"));
152
26
  let publicOutputPublished = await isPublicOutputPublished(publicDir);
27
+ let ownerSetupState = await authRuntime.getOwnerSetupState();
28
+ let databaseHealthState = await readDatabaseHealthState(options.projectRoot);
153
29
  const refreshPublicPublishState = async () => {
154
30
  publicOutputPublished = await isPublicOutputPublished(publicDir);
155
31
  };
32
+ const refreshOwnerSetupState = async () => {
33
+ ownerSetupState = await authRuntime.getOwnerSetupState();
34
+ };
35
+ const refreshDatabaseHealthState = async () => {
36
+ databaseHealthState = await readDatabaseHealthState(options.projectRoot);
37
+ };
156
38
  const server = createServer(async (request, response) => {
157
39
  try {
158
40
  const hostname = parseRequestHostname(request.headers.host);
@@ -163,76 +45,69 @@ export const startDevServer = async (options) => {
163
45
  }
164
46
  const requestHost = hostname ?? DEV_PUBLIC_HOST;
165
47
  const requestUrl = new URL(request.url ?? "/", `http://${requestHost}:${options.port}`);
166
- if (ENABLE_LIVE_PUBLISH_TRANSITION &&
167
- (siteTarget === "public" || requestUrl.pathname === "/api/health")) {
48
+ if (ENABLE_LIVE_PUBLISH_TRANSITION && (siteTarget === "public" || isHealthRequest(requestUrl))) {
168
49
  await refreshPublicPublishState();
169
50
  }
170
- if (requestUrl.pathname === "/api/health") {
171
- response.writeHead(200, { "content-type": MIME_TYPES[".json"] });
172
- response.end(JSON.stringify({
173
- ok: true,
174
- site: siteTarget,
175
- publicOutputPublished
176
- }));
177
- return;
51
+ if (siteTarget === "admin" || isSetupStatusRequest(requestUrl)) {
52
+ await refreshOwnerSetupState();
178
53
  }
179
- if (siteTarget === "public" && !publicOutputPublished) {
180
- if (isRootPublicPath(requestUrl.pathname)) {
181
- respondWithPublicUnavailable(response);
182
- }
183
- else {
184
- respondWithDefaultNotFound(response);
185
- }
54
+ if (isHealthRequest(requestUrl)) {
55
+ await refreshDatabaseHealthState();
56
+ handleHealthRequest({
57
+ response,
58
+ siteTarget,
59
+ publicOutputPublished,
60
+ ownerSetupState,
61
+ databaseHealthState
62
+ });
186
63
  return;
187
64
  }
188
- const rootDir = siteTarget === "admin" ? runtimeDir : publicDir;
189
- const mode = siteTarget === "admin" ? "spa-fallback" : "strict";
190
- const targetFile = await resolveRequestFile(rootDir, decodeURIComponent(requestUrl.pathname), mode);
191
- if (targetFile.type === "forbidden") {
192
- response.writeHead(403, { "content-type": MIME_TYPES[".txt"] });
193
- response.end("Forbidden");
65
+ if (handleSetupStatusRequest(requestUrl, response, siteTarget, ownerSetupState)) {
194
66
  return;
195
67
  }
196
- if (targetFile.type === "not-found") {
197
- if (siteTarget === "public") {
198
- await respondWithPublicNotFound(response, publicDir);
199
- return;
200
- }
201
- respondWithDefaultNotFound(response);
68
+ if (siteTarget === "admin") {
69
+ await handleAdminRequest({
70
+ request,
71
+ response,
72
+ requestUrl,
73
+ runtimeDir,
74
+ adminDistDir,
75
+ ownerSetupState,
76
+ authRuntime
77
+ });
202
78
  return;
203
79
  }
204
- const fileBuffer = await fs.readFile(targetFile.filePath);
205
- const extension = path.extname(targetFile.filePath);
206
- const contentType = MIME_TYPES[extension] ?? "application/octet-stream";
207
- response.writeHead(200, { "content-type": contentType });
208
- response.end(fileBuffer);
80
+ await handlePublicRequest({
81
+ requestUrl,
82
+ response,
83
+ publicDir,
84
+ publicOutputPublished
85
+ });
209
86
  }
210
87
  catch {
211
88
  respondWithDefaultNotFound(response);
212
89
  }
213
90
  });
214
- try {
215
- await new Promise((resolve, reject) => {
216
- server.once("error", reject);
217
- server.listen(options.port, host, () => {
218
- server.off("error", reject);
219
- resolve();
220
- });
91
+ await new Promise((resolve, reject) => {
92
+ server.once("error", reject);
93
+ server.listen(options.port, host, () => {
94
+ server.off("error", reject);
95
+ resolve();
221
96
  });
222
- }
223
- catch (error) {
224
- throw error;
225
- }
97
+ });
226
98
  return {
227
99
  url: `http://${DEV_PUBLIC_HOST}:${options.port}`,
228
100
  publicUrl: `http://${DEV_PUBLIC_HOST}:${options.port}`,
229
- adminUrl: `http://${DEV_ADMIN_HOST}:${options.port}`,
101
+ adminUrl: `http://${DEV_STUDIO_HOST}:${options.port}`,
230
102
  servingPublicDir: publicDir,
231
103
  servingAdminDir: runtimeDir,
232
104
  get publicOutputPublished() {
233
105
  return publicOutputPublished;
234
106
  },
235
- close: async () => closeServer(server)
107
+ close: async () => {
108
+ await closeServer(server);
109
+ await authRuntime.close();
110
+ }
236
111
  };
237
112
  };
238
113
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAErE,MAAM,eAAe,GAAG,WAAW,CAAC;AACpC,MAAM,cAAc,GAAG,iBAAiB,CAAC;AA0BzC,MAAM,UAAU,GAA2B;IACzC,OAAO,EAAE,0BAA0B;IACnC,KAAK,EAAE,gCAAgC;IACvC,MAAM,EAAE,yBAAyB;IACjC,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,2BAA2B;CACpC,CAAC;AAEF,MAAM,sBAAsB,GAAG,wCAAwC,CAAC;AACxE,MAAM,+BAA+B,GAAG,+CAA+C,CAAC;AACxF,8FAA8F;AAC9F,MAAM,8BAA8B,GAAG,IAAI,CAAC;AAE5C,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAExD,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,UAAkB,EAAW,EAAE;IAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACzD,OAAO,YAAY,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjG,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,KAAK,EAAE,SAAiB,EAAoB,EAAE;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,UAA8B,EAAiB,EAAE;IAC7E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,QAAuB,EAAqB,EAAE;IACvE,IAAI,QAAQ,KAAK,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,EAAE,OAAe,EAAiC,EAAE;IACpF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAC9B,OAAe,EACf,WAAmB,EACnB,IAAwB,EACO,EAAE;IACjC,MAAM,cAAc,GAAG,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAEpD,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5B,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC7D,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;gBACpD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YAC/B,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,mBAAmB,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC9D,IAAI,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC;oBACjC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;gBACxD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,8CAA8C;YAChD,CAAC;YAED,OAAO,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACzF,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,IAAI,KAAK,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7D,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,KAAK,EACrC,QAAwB,EACxB,SAAiB,EACF,EAAE;IACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACzD,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;IACjE,CAAC;IAED,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChE,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,QAAwB,EAAQ,EAAE;IACpE,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChE,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,4BAA4B,GAAG,CAAC,QAAwB,EAAQ,EAAE;IACtE,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;QACtB,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC;QAClC,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,WAAmB,EAAW,EAAE;IACxD,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvD,OAAO,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,KAAK,aAAa,CAAC;AACzE,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE,CAC1D,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,OAA8B,EACJ,EAAE;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAEpE,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5B,IAAI,qBAAqB,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAErE,MAAM,yBAAyB,GAAG,KAAK,IAAmB,EAAE;QAC1D,qBAAqB,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,0BAA0B,CAAC,QAAQ,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ,IAAI,eAAe,CAAC;YAChD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAExF,IACE,8BAA8B;gBAC9B,CAAC,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,QAAQ,KAAK,aAAa,CAAC,EAClE,CAAC;gBACD,MAAM,yBAAyB,EAAE,CAAC;YACpC,CAAC;YAED,IAAI,UAAU,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAC1C,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACjE,QAAQ,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;oBACb,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,UAAU;oBAChB,qBAAqB;iBACtB,CAAC,CACH,CAAC;gBACF,OAAO;YACT,CAAC;YAED,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACtD,IAAI,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1C,4BAA4B,CAAC,QAAQ,CAAC,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACN,0BAA0B,CAAC,QAAQ,CAAC,CAAC;gBACvC,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,MAAM,IAAI,GAAG,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;YAChE,MAAM,UAAU,GAAG,MAAM,kBAAkB,CACzC,OAAO,EACP,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,EACvC,IAAI,CACL,CAAC;YAEF,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAChE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;oBAC5B,MAAM,yBAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACrD,OAAO;gBACT,CAAC;gBAED,0BAA0B,CAAC,QAAQ,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,0BAA0B,CAAC;YAExE,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;YACzD,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;gBACrC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO;QACL,GAAG,EAAE,UAAU,eAAe,IAAI,OAAO,CAAC,IAAI,EAAE;QAChD,SAAS,EAAE,UAAU,eAAe,IAAI,OAAO,CAAC,IAAI,EAAE;QACtD,QAAQ,EAAE,UAAU,cAAc,IAAI,OAAO,CAAC,IAAI,EAAE;QACpD,gBAAgB,EAAE,SAAS;QAC3B,eAAe,EAAE,UAAU;QAC3B,IAAI,qBAAqB;YACvB,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;KACvC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atria/server",
3
- "version": "0.0.9",
3
+ "version": "0.0.12",
4
4
  "description": "HTTP server and runtime delivery for atria",
5
5
  "keywords": [
6
6
  "atria",
@@ -24,7 +24,9 @@
24
24
  "dist"
25
25
  ],
26
26
  "dependencies": {
27
- "@atria/shared": "0.0.8"
27
+ "@atria/admin": "0.1.1",
28
+ "@atria/db": "0.0.6",
29
+ "@atria/shared": "0.0.10"
28
30
  },
29
31
  "publishConfig": {
30
32
  "access": "public"