elegance-js 2.1.37 → 3.0.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.
Files changed (138) hide show
  1. package/README.md +90 -4
  2. package/bin/bootstrap.js +18 -0
  3. package/bin/run.js +2 -0
  4. package/dist/build/common.d.ts +147 -0
  5. package/dist/build/common.d.ts.map +1 -0
  6. package/dist/build/common.js +599 -0
  7. package/dist/build/dev.d.ts +2 -0
  8. package/dist/build/dev.d.ts.map +1 -0
  9. package/dist/build/dev.js +234 -0
  10. package/dist/build/prod.d.ts +2 -0
  11. package/dist/build/prod.d.ts.map +1 -0
  12. package/dist/build/prod.js +212 -0
  13. package/dist/build/render.d.ts +29 -0
  14. package/dist/build/render.d.ts.map +1 -0
  15. package/dist/build/render.js +234 -0
  16. package/dist/client.d.ts +13 -0
  17. package/dist/client.d.ts.map +1 -0
  18. package/dist/client.js +677 -0
  19. package/dist/config.d.ts +7 -0
  20. package/dist/config.d.ts.map +1 -0
  21. package/dist/config.js +80 -0
  22. package/dist/constants.d.ts +10 -0
  23. package/dist/constants.d.ts.map +1 -0
  24. package/dist/constants.js +20 -0
  25. package/dist/elements.d.ts +2 -0
  26. package/dist/elements.d.ts.map +1 -0
  27. package/dist/elements.js +14 -0
  28. package/dist/error.d.ts +20 -0
  29. package/dist/error.d.ts.map +1 -0
  30. package/dist/error.js +123 -0
  31. package/dist/globals.d.ts +6 -0
  32. package/dist/globals.d.ts.map +1 -0
  33. package/dist/globals.js +106 -0
  34. package/dist/logger.d.ts +32 -0
  35. package/dist/logger.d.ts.map +1 -0
  36. package/dist/logger.js +72 -0
  37. package/dist/page-tools.d.ts +19 -0
  38. package/dist/page-tools.d.ts.map +1 -0
  39. package/dist/page-tools.js +141 -0
  40. package/dist/processing/oxc.d.ts +17 -0
  41. package/dist/processing/oxc.d.ts.map +1 -0
  42. package/dist/processing/oxc.js +938 -0
  43. package/dist/processing/taglist.d.ts +2 -0
  44. package/dist/processing/taglist.d.ts.map +1 -0
  45. package/dist/processing/taglist.js +215 -0
  46. package/dist/processing/tsx.d.ts +2 -0
  47. package/dist/processing/tsx.d.ts.map +1 -0
  48. package/dist/processing/tsx.js +131 -0
  49. package/dist/run.d.ts +3 -0
  50. package/dist/run.d.ts.map +1 -0
  51. package/dist/run.js +147 -0
  52. package/dist/server/dev.d.ts +2 -0
  53. package/dist/server/dev.d.ts.map +1 -0
  54. package/dist/server/dev.js +10 -0
  55. package/dist/server/prod.d.ts +2 -0
  56. package/dist/server/prod.d.ts.map +1 -0
  57. package/dist/server/prod.js +42 -0
  58. package/dist/server/security.d.ts +64 -0
  59. package/dist/server/security.d.ts.map +1 -0
  60. package/dist/server/security.js +120 -0
  61. package/dist/server/server.d.ts +73 -99
  62. package/dist/server/server.d.ts.map +1 -0
  63. package/dist/server/server.js +830 -680
  64. package/dist/types/component.d.ts +85 -0
  65. package/dist/types/component.d.ts.map +1 -0
  66. package/dist/types/component.js +0 -0
  67. package/dist/types/config.d.ts +12 -0
  68. package/dist/types/config.d.ts.map +1 -0
  69. package/dist/types/config.js +0 -0
  70. package/dist/types/elements.d.ts +412 -0
  71. package/dist/types/elements.d.ts.map +1 -0
  72. package/dist/types/elements.js +0 -0
  73. package/dist/types/index.d.ts +9 -0
  74. package/dist/types/index.d.ts.map +1 -0
  75. package/dist/types/index.js +5 -0
  76. package/dist/types/jsx.d.ts +976 -0
  77. package/dist/types/jsx.d.ts.map +1 -0
  78. package/dist/types/jsx.js +0 -0
  79. package/dist/types/server-actions.d.ts +60 -0
  80. package/dist/types/server-actions.d.ts.map +1 -0
  81. package/dist/types/server-actions.js +0 -0
  82. package/dist/user-utils.d.ts +23 -0
  83. package/dist/user-utils.d.ts.map +1 -0
  84. package/dist/user-utils.js +61 -0
  85. package/package.json +48 -27
  86. package/dist/client/effect.d.ts +0 -27
  87. package/dist/client/effect.js +0 -37
  88. package/dist/client/eventListener.d.ts +0 -39
  89. package/dist/client/eventListener.js +0 -52
  90. package/dist/client/loadHook.d.ts +0 -34
  91. package/dist/client/loadHook.js +0 -52
  92. package/dist/client/observer.d.ts +0 -36
  93. package/dist/client/observer.js +0 -66
  94. package/dist/client/runtime.d.ts +0 -105
  95. package/dist/client/runtime.js +0 -624
  96. package/dist/client/state.d.ts +0 -40
  97. package/dist/client/state.js +0 -110
  98. package/dist/compilation/compiler.d.ts +0 -163
  99. package/dist/compilation/compiler.js +0 -1164
  100. package/dist/components/ClientComponent.d.ts +0 -22
  101. package/dist/components/ClientComponent.js +0 -55
  102. package/dist/components/Link.d.ts +0 -16
  103. package/dist/components/Link.js +0 -21
  104. package/dist/components/Portal.d.ts +0 -2
  105. package/dist/components/Portal.js +0 -2
  106. package/dist/elements/element.d.ts +0 -87
  107. package/dist/elements/element.js +0 -33
  108. package/dist/elements/element_list.d.ts +0 -7
  109. package/dist/elements/element_list.js +0 -65
  110. package/dist/elements/raw.d.ts +0 -14
  111. package/dist/elements/raw.js +0 -78
  112. package/dist/elements/specific_props.d.ts +0 -750
  113. package/dist/elements/specific_props.js +0 -1
  114. package/dist/global.d.ts +0 -229
  115. package/dist/global.js +0 -1
  116. package/dist/index.d.ts +0 -16
  117. package/dist/index.js +0 -12
  118. package/dist/server/layout.d.ts +0 -34
  119. package/dist/server/layout.js +0 -6
  120. package/dist/server/log.d.ts +0 -12
  121. package/dist/server/log.js +0 -64
  122. package/dist/server/page.d.ts +0 -32
  123. package/dist/server/page.js +0 -6
  124. package/dist/server/runtime.d.ts +0 -6
  125. package/dist/server/runtime.js +0 -92
  126. package/scripts/bootstrap.js +0 -95
  127. package/scripts/bootstrap_files/elegance.txt +0 -40
  128. package/scripts/bootstrap_files/index.txt +0 -3
  129. package/scripts/bootstrap_files/layout.txt +0 -46
  130. package/scripts/bootstrap_files/middleware.txt +0 -18
  131. package/scripts/bootstrap_files/page.txt +0 -123
  132. package/scripts/bootstrap_files/route.txt +0 -6
  133. package/scripts/elegance_dev.ts +0 -42
  134. package/scripts/elegance_prod.ts +0 -42
  135. package/scripts/elegance_static.ts +0 -26
  136. package/scripts/prod.js +0 -13
  137. package/scripts/run.js +0 -13
  138. package/scripts/static.js +0 -13
@@ -0,0 +1,120 @@
1
+ function makeCSPString(cspOptions) {
2
+ const parts = [];
3
+ const addDirective = (name, values) => {
4
+ if (values && values.length > 0) {
5
+ parts.push(`${name} ${values.join(" ")}`);
6
+ }
7
+ };
8
+ addDirective("default-src", cspOptions.defaultSrc);
9
+ addDirective("child-src", cspOptions.childSrc);
10
+ addDirective("connect-src", cspOptions.connectSrc);
11
+ addDirective("font-src", cspOptions.fontSrc);
12
+ addDirective("frame-src", cspOptions.frameSrc);
13
+ addDirective("img-src", cspOptions.imgSrc);
14
+ addDirective("manifest-src", cspOptions.manifestSrc);
15
+ addDirective("media-src", cspOptions.mediaSrc);
16
+ addDirective("object-src", cspOptions.objectSrc);
17
+ addDirective("prefetch-src", cspOptions.prefetchSrc);
18
+ addDirective("script-src", cspOptions.scriptSrc);
19
+ addDirective("script-src-elem", cspOptions.scriptSrcElem);
20
+ addDirective("script-src-attr", cspOptions.scriptSrcAttr);
21
+ addDirective("style-src", cspOptions.styleSrc);
22
+ addDirective("style-src-elem", cspOptions.styleSrcElem);
23
+ addDirective("style-src-attr", cspOptions.styleSrcAttr);
24
+ addDirective("worker-src", cspOptions.workerSrc);
25
+ addDirective("base-uri", cspOptions.baseUri);
26
+ addDirective("form-action", cspOptions.formAction);
27
+ addDirective("frame-ancestors", cspOptions.frameAncestors);
28
+ addDirective("navigate-to", cspOptions.navigateTo);
29
+ addDirective("sandbox", cspOptions.sandbox);
30
+ addDirective("report-uri", cspOptions.reportUri);
31
+ addDirective("require-trusted-types-for", cspOptions.requireTrustedTypesFor);
32
+ addDirective("trusted-types", cspOptions.trustedTypes);
33
+ if (cspOptions.reportTo) {
34
+ parts.push(`report-to ${cspOptions.reportTo}`);
35
+ }
36
+ if (cspOptions.upgradeInsecureRequests) {
37
+ parts.push("upgrade-insecure-requests");
38
+ }
39
+ if (cspOptions.blockAllMixedContent) {
40
+ parts.push("block-all-mixed-content");
41
+ }
42
+ return parts.join("; ");
43
+ }
44
+ function makeHSTSHeader(opts) {
45
+ let header = `max-age=${opts.maxAge}`;
46
+ if (opts.includeSubDomains) header += "; includeSubDomains";
47
+ if (opts.preload) header += "; preload";
48
+ return header;
49
+ }
50
+ function makeXFrameOptionsHeader(value) {
51
+ return value;
52
+ }
53
+ function makeXContentTypeOptionsHeader() {
54
+ return "nosniff";
55
+ }
56
+ function makeReferrerPolicyHeader(policy) {
57
+ return policy;
58
+ }
59
+ function makePermissionsPolicyHeader(policies) {
60
+ return Object.entries(policies).map(([feature, origins]) => `${feature}=${origins.join(" ")}`).join(", ");
61
+ }
62
+ function makeCrossOriginEmbedderPolicyHeader(value) {
63
+ return value;
64
+ }
65
+ function makeCrossOriginOpenerPolicyHeader(value) {
66
+ return value;
67
+ }
68
+ function makeCrossOriginResourcePolicyHeader(value) {
69
+ return value;
70
+ }
71
+ function makeXDNSPrefetchControlHeader(value) {
72
+ return value;
73
+ }
74
+ function makeXXSSProtectionHeader(opts) {
75
+ if (!opts.enable) return "0";
76
+ let header = "1";
77
+ if (opts.mode === "block") header += "; mode=block";
78
+ if (opts.report) header += `; report=${opts.report}`;
79
+ return header;
80
+ }
81
+ function createSecurityHeaders(opts) {
82
+ const headers = {};
83
+ if (opts.contentSecurityPolicy) {
84
+ headers["Content-Security-Policy"] = makeCSPString(opts.contentSecurityPolicy);
85
+ }
86
+ if (opts.strictTransportSecurity) {
87
+ headers["Strict-Transport-Security"] = makeHSTSHeader(opts.strictTransportSecurity);
88
+ }
89
+ if (opts.xFrameOptions) {
90
+ headers["X-Frame-Options"] = makeXFrameOptionsHeader(opts.xFrameOptions);
91
+ }
92
+ if (opts.xContentTypeOptions) {
93
+ headers["X-Content-Type-Options"] = makeXContentTypeOptionsHeader();
94
+ }
95
+ if (opts.referrerPolicy) {
96
+ headers["Referrer-Policy"] = makeReferrerPolicyHeader(opts.referrerPolicy);
97
+ }
98
+ if (opts.permissionsPolicy) {
99
+ headers["Permissions-Policy"] = makePermissionsPolicyHeader(opts.permissionsPolicy);
100
+ }
101
+ if (opts.crossOriginEmbedderPolicy) {
102
+ headers["Cross-Origin-Embedder-Policy"] = makeCrossOriginEmbedderPolicyHeader(opts.crossOriginEmbedderPolicy);
103
+ }
104
+ if (opts.crossOriginOpenerPolicy) {
105
+ headers["Cross-Origin-Opener-Policy"] = makeCrossOriginOpenerPolicyHeader(opts.crossOriginOpenerPolicy);
106
+ }
107
+ if (opts.crossOriginResourcePolicy) {
108
+ headers["Cross-Origin-Resource-Policy"] = makeCrossOriginResourcePolicyHeader(opts.crossOriginResourcePolicy);
109
+ }
110
+ if (opts.xDnsPrefetchControl) {
111
+ headers["X-DNS-Prefetch-Control"] = makeXDNSPrefetchControlHeader(opts.xDnsPrefetchControl);
112
+ }
113
+ if (opts.xXssProtection) {
114
+ headers["X-XSS-Protection"] = makeXXSSProtectionHeader(opts.xXssProtection);
115
+ }
116
+ return headers;
117
+ }
118
+ export {
119
+ createSecurityHeaders
120
+ };
@@ -1,103 +1,77 @@
1
- /**
2
- * The Elegance.JS server.
3
- * This server can be used to run your project.
4
- *
5
- * It's HTTP only, so if you want HTTPS, use a proxy.
6
- */
7
- import { CompiledLayout, CompiledPage } from "../compilation/compiler";
8
- import { LayoutInformation } from "./layout";
9
- import { PageInformation } from "./page";
10
- import { IncomingMessage, ServerResponse } from "http";
11
- import { URLSearchParams } from "url";
12
- type ServerOptions = {
13
- /** If a port is not available, it will increment the port +1 in a loop until it finds a valid one. */
14
- port: number;
15
- hostname: string;
16
- /** Whether or not to use the built-in api handler. */
1
+ import { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { CompiledRoute, Manifest, CacheKey } from "../build/common";
3
+ export type ServerOptions = {
17
4
  serveAPI: boolean;
18
- /**
19
- * Setting this to true allows dynamic pages to be compiled whenever a user requests them.
20
- */
21
- allowDynamic: boolean;
22
- /**
23
- * Setting this to true will make statuscode pages like 404.ts be returned in-favor of simple HTTP error codes.
24
- */
5
+ allowDynamicPages: boolean;
25
6
  allowStatusCodePages: boolean;
26
- /**
27
- * If basename is /my-website/, and the user makes a request to `/my-website/home`,
28
- * the page that we will look for will be `/home`.
29
- */
30
- base?: string;
31
- /** These are gathered by the compiler, you just need to pass them in. */
32
- allLayouts: Map<string, LayoutInformation>;
33
- /** These are gathered by the compiler, you just need to pass them in. */
34
- allPages: Map<string, PageInformation>;
35
- /** These are gathered by the compiler, you just need to pass them in. */
36
- allStatusCodePages: Map<string, PageInformation>;
37
- /** These are gathered by the compiler, you just need to pass them in. */
38
- builtStaticPages: Map<string, CompiledPage>;
39
- /** These are gathered by the compiler, you just need to pass them in. */
40
- builtStaticLayouts: Map<string, CompiledLayout>;
41
- };
42
- type ServerStartupResult = {
43
- /** The port that we ended up actually using (might differ from the one given, if it was not available) */
44
7
  port: number;
45
8
  };
46
- /**
47
- * Starts the Elegance server and distributes the DIST directory to the public.
48
- * If hot-reloading is enabled, this also tells the clients to refresh the page.
49
- */
50
- declare function serveProject(startupServerOptions: ServerOptions): Promise<ServerStartupResult>;
51
- /** Get the current query as `URLSearchParams` */
52
- declare function getQuery(): URLSearchParams;
53
- /** Get the current page's request and response. */
54
- declare function getRequest(): {
55
- req: IncomingMessage;
56
- res: ServerResponse;
57
- };
58
- /**
59
- * Get the cookies for the current request.
60
- * Requires a dynamic page.
61
- */
62
- declare function getCookieStore(): {
63
- /**
64
- * Get a cookie value by name
65
- */
66
- get(name: string): string | undefined;
67
- /**
68
- * Check if a cookie exists
69
- */
70
- has(name: string): boolean;
71
- /**
72
- * Get all cookies as a plain object
73
- */
74
- getAll(): Record<string, string>;
75
- /**
76
- * Set a cookie
77
- *
78
- * @param name Cookie name
79
- * @param value Cookie value
80
- * @param options Optional cookie attributes
81
- */
82
- set(name: string, value: string, options?: {
83
- maxAge?: number;
84
- expires?: Date;
85
- path?: string;
86
- domain?: string;
87
- secure?: boolean;
88
- httpOnly?: boolean;
89
- sameSite?: "Strict" | "Lax" | "None";
90
- }): void;
91
- /**
92
- * Delete a cookie (sets it to expire immediately)
93
- */
94
- delete(name: string, path?: string, domain?: string): void;
95
- };
96
- declare function redirect(location: string, statusCode?: number): void;
97
- declare const respondWith: {
98
- notFound(): Promise<void>;
99
- notAuthorized(): Promise<void>;
100
- forbidden(): Promise<void>;
101
- internalError(): Promise<void>;
102
- };
103
- export { serveProject, getQuery, getRequest, getCookieStore, redirect, respondWith };
9
+ interface ApiRouteModule {
10
+ GET?: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
11
+ POST?: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
12
+ PUT?: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
13
+ DELETE?: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
14
+ PATCH?: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
15
+ }
16
+ type MiddlewareFn = (req: IncomingMessage, res: ServerResponse, next: () => Promise<void>) => void | Promise<void>;
17
+ interface CachedFileHeaders {
18
+ raw: Record<string, string | number>;
19
+ gzip: Record<string, string | number>;
20
+ brotli: Record<string, string | number>;
21
+ }
22
+ interface CachedFile {
23
+ raw: Buffer;
24
+ gzip: Buffer;
25
+ brotli: Buffer;
26
+ mime: string;
27
+ etag: string;
28
+ headers: CachedFileHeaders;
29
+ }
30
+ export interface MatchedRoute {
31
+ pathname: string;
32
+ pageFile: string;
33
+ layouts: string[];
34
+ layoutCacheKeys: CacheKey[];
35
+ cacheKey: CacheKey;
36
+ sharedChunkPaths: string[];
37
+ isDynamic: boolean;
38
+ patternPathname?: string | undefined;
39
+ matcher: (pathname: string) => Record<string, string | string[] | undefined> | null;
40
+ }
41
+ declare class LRU<K, V> {
42
+ private readonly max;
43
+ private readonly map;
44
+ constructor(max: number);
45
+ get(key: K): V | undefined;
46
+ set(key: K, val: V): void;
47
+ has(key: K): boolean;
48
+ delete(key: K): void;
49
+ }
50
+ export declare const staticCache: Map<string, CachedFile>;
51
+ export declare const dynamicModuleCache: LRU<string, CompiledRoute>;
52
+ export declare const aotStaticCache: Map<string, CompiledRoute>;
53
+ export declare const statusCodePageCache: Map<string, {
54
+ compiled: CompiledRoute;
55
+ pageFile: string;
56
+ layouts: string[];
57
+ layoutCacheKeys: CacheKey[];
58
+ cacheKey: CacheKey;
59
+ }>;
60
+ export declare const middlewareChainCache: Map<string, MiddlewareFn[]>;
61
+ export declare const encCache: LRU<string, Encoding>;
62
+ export declare let staticRouteMap: Map<string, MatchedRoute> | null;
63
+ export declare let paramRoutes: MatchedRoute[] | null;
64
+ export declare let apiRoutesCache: Map<string, ApiRouteModule> | null;
65
+ export declare let middlewareMapCache: Map<string, MiddlewareFn[]> | null;
66
+ export declare function primeStaticCache(): Promise<void>;
67
+ export declare function compileRouteMatcher(pattern: string): (pathname: string) => Record<string, string | string[] | undefined> | null;
68
+ export declare function warmDynamicCaches(manifest: Manifest): Promise<{
69
+ staticRouteMap: Map<string, MatchedRoute>;
70
+ paramRoutes: MatchedRoute[];
71
+ }>;
72
+ export declare function loadApiRoutes(manifest: Manifest): Promise<Map<string, ApiRouteModule>>;
73
+ export declare function loadMiddlewareMap(manifest: Manifest): Promise<Map<string, MiddlewareFn[]>>;
74
+ type Encoding = "br" | "gzip" | null;
75
+ export declare function serve(): Promise<void>;
76
+ export {};
77
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}