elegance-js 2.1.37 → 3.0.0

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/bin/bootstrap.js +18 -0
  2. package/bin/run.js +2 -0
  3. package/dist/build/common.d.ts +147 -0
  4. package/dist/build/common.d.ts.map +1 -0
  5. package/dist/build/common.js +599 -0
  6. package/dist/build/dev.d.ts +2 -0
  7. package/dist/build/dev.d.ts.map +1 -0
  8. package/dist/build/dev.js +234 -0
  9. package/dist/build/prod.d.ts +2 -0
  10. package/dist/build/prod.d.ts.map +1 -0
  11. package/dist/build/prod.js +212 -0
  12. package/dist/build/render.d.ts +29 -0
  13. package/dist/build/render.d.ts.map +1 -0
  14. package/dist/build/render.js +234 -0
  15. package/dist/client.d.ts +13 -0
  16. package/dist/client.d.ts.map +1 -0
  17. package/dist/client.js +677 -0
  18. package/dist/config.d.ts +7 -0
  19. package/dist/config.d.ts.map +1 -0
  20. package/dist/config.js +80 -0
  21. package/dist/constants.d.ts +10 -0
  22. package/dist/constants.d.ts.map +1 -0
  23. package/dist/constants.js +20 -0
  24. package/dist/elements.d.ts +2 -0
  25. package/dist/elements.d.ts.map +1 -0
  26. package/dist/elements.js +14 -0
  27. package/dist/error.d.ts +20 -0
  28. package/dist/error.d.ts.map +1 -0
  29. package/dist/error.js +123 -0
  30. package/dist/globals.d.ts +6 -0
  31. package/dist/globals.d.ts.map +1 -0
  32. package/dist/globals.js +106 -0
  33. package/dist/logger.d.ts +32 -0
  34. package/dist/logger.d.ts.map +1 -0
  35. package/dist/logger.js +72 -0
  36. package/dist/page-tools.d.ts +19 -0
  37. package/dist/page-tools.d.ts.map +1 -0
  38. package/dist/page-tools.js +141 -0
  39. package/dist/processing/oxc.d.ts +17 -0
  40. package/dist/processing/oxc.d.ts.map +1 -0
  41. package/dist/processing/oxc.js +938 -0
  42. package/dist/processing/taglist.d.ts +2 -0
  43. package/dist/processing/taglist.d.ts.map +1 -0
  44. package/dist/processing/taglist.js +215 -0
  45. package/dist/processing/tsx.d.ts +2 -0
  46. package/dist/processing/tsx.d.ts.map +1 -0
  47. package/dist/processing/tsx.js +131 -0
  48. package/dist/run.d.ts +3 -0
  49. package/dist/run.d.ts.map +1 -0
  50. package/dist/run.js +147 -0
  51. package/dist/server/dev.d.ts +2 -0
  52. package/dist/server/dev.d.ts.map +1 -0
  53. package/dist/server/dev.js +10 -0
  54. package/dist/server/prod.d.ts +2 -0
  55. package/dist/server/prod.d.ts.map +1 -0
  56. package/dist/server/prod.js +42 -0
  57. package/dist/server/security.d.ts +64 -0
  58. package/dist/server/security.d.ts.map +1 -0
  59. package/dist/server/security.js +120 -0
  60. package/dist/server/server.d.ts +73 -99
  61. package/dist/server/server.d.ts.map +1 -0
  62. package/dist/server/server.js +830 -680
  63. package/dist/types/component.d.ts +85 -0
  64. package/dist/types/component.d.ts.map +1 -0
  65. package/dist/types/component.js +0 -0
  66. package/dist/types/config.d.ts +12 -0
  67. package/dist/types/config.d.ts.map +1 -0
  68. package/dist/types/config.js +0 -0
  69. package/dist/types/elements.d.ts +412 -0
  70. package/dist/types/elements.d.ts.map +1 -0
  71. package/dist/types/elements.js +0 -0
  72. package/dist/types/index.d.ts +9 -0
  73. package/dist/types/index.d.ts.map +1 -0
  74. package/dist/types/index.js +5 -0
  75. package/dist/types/jsx.d.ts +976 -0
  76. package/dist/types/jsx.d.ts.map +1 -0
  77. package/dist/types/jsx.js +0 -0
  78. package/dist/types/server-actions.d.ts +60 -0
  79. package/dist/types/server-actions.d.ts.map +1 -0
  80. package/dist/types/server-actions.js +0 -0
  81. package/dist/user-utils.d.ts +23 -0
  82. package/dist/user-utils.d.ts.map +1 -0
  83. package/dist/user-utils.js +61 -0
  84. package/package.json +47 -28
  85. package/README.md +0 -4
  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
@@ -1 +0,0 @@
1
- export {};
package/dist/global.d.ts DELETED
@@ -1,229 +0,0 @@
1
- import { AnyElement, EleganceElementBuilder, SpecialElementOption } from "./elements/element";
2
- import { StateManager, ObserverManager, LoadHookManager, EventListenerManager, EffectManager } from "./client/runtime";
3
- declare global {
4
- /**
5
- * **IMPORTANT** These values are only available in the *browser* runtime.
6
- */
7
- var eleganceClient: {
8
- createHTMLElementFromElement: (element: AnyElement) => {
9
- root: Node;
10
- specialElementOptions: {
11
- elementKey: string;
12
- optionName: string;
13
- optionValue: SpecialElementOption;
14
- }[];
15
- };
16
- fetchPage: (targetURL: URL) => Promise<Document | void>;
17
- navigateLocally: (target: string, pushState: boolean) => Promise<void>;
18
- /**
19
- * Listen to local navigation events in the browser.
20
- *
21
- * Local navigations are triggered by the Link() component, or anything that uses `eleganceClient.navigateLocally`, eg. the window popstate event's override.
22
- * @param callback Will be called whenever we navigate locally.
23
- * @returns The index of the callback, use `eleganceClient.removeNavigationCallback(idx)` to ensure there are no duplicate listeners.
24
- */
25
- onNavigate: (callback: (pathname: string) => any) => number;
26
- removeNavigationCallback: (idx: number) => void;
27
- /**
28
- * Generate a non-deterministic unique id that can be used for browser specific things like custom client observers.
29
- * Unique, but may change between builds; depends on order of creation.
30
- * @returns A unique id
31
- */
32
- genLocalID: () => number;
33
- };
34
- /**
35
- * **IMPORTANT** These values are only available in the *browser* runtime.
36
- *
37
- * **IMPORTANT** These values are only available in dev builds, and are stripped out from production builds for security reasons.
38
- */
39
- var devtools: {
40
- pageData: Record<string, any>;
41
- stateManager: StateManager;
42
- eventListenerManager: EventListenerManager;
43
- observerManager: ObserverManager;
44
- loadHookManager: LoadHookManager;
45
- effectManager: EffectManager;
46
- };
47
- var area: EleganceElementBuilder<"area">;
48
- var base: EleganceElementBuilder<"base">;
49
- var br: EleganceElementBuilder<"br">;
50
- var col: EleganceElementBuilder<"col">;
51
- var embed: EleganceElementBuilder<"embed">;
52
- var hr: EleganceElementBuilder<"hr">;
53
- var img: EleganceElementBuilder<"img">;
54
- var input: EleganceElementBuilder<"input">;
55
- var link: EleganceElementBuilder<"link">;
56
- var meta: EleganceElementBuilder<"meta">;
57
- var param: EleganceElementBuilder<"param">;
58
- var source: EleganceElementBuilder<"source">;
59
- var track: EleganceElementBuilder<"track">;
60
- var wbr: EleganceElementBuilder<"wbr">;
61
- var a: EleganceElementBuilder<"a">;
62
- var abbr: EleganceElementBuilder<"abbr">;
63
- var address: EleganceElementBuilder<"address">;
64
- var article: EleganceElementBuilder<"article">;
65
- var aside: EleganceElementBuilder<"aside">;
66
- var audio: EleganceElementBuilder<"audio">;
67
- var b: EleganceElementBuilder<"b">;
68
- var bdi: EleganceElementBuilder<"bdi">;
69
- var bdo: EleganceElementBuilder<"bdo">;
70
- var blockquote: EleganceElementBuilder<"blockquote">;
71
- var body: EleganceElementBuilder<"body">;
72
- var button: EleganceElementBuilder<"button">;
73
- var canvas: EleganceElementBuilder<"canvas">;
74
- var caption: EleganceElementBuilder<"caption">;
75
- var cite: EleganceElementBuilder<"cite">;
76
- var code: EleganceElementBuilder<"code">;
77
- var colgroup: EleganceElementBuilder<"colgroup">;
78
- var data: EleganceElementBuilder<"data">;
79
- var datalist: EleganceElementBuilder<"datalist">;
80
- var dd: EleganceElementBuilder<"dd">;
81
- var del: EleganceElementBuilder<"del">;
82
- var details: EleganceElementBuilder<"details">;
83
- var dfn: EleganceElementBuilder<"dfn">;
84
- var dialog: EleganceElementBuilder<"dialog">;
85
- var div: EleganceElementBuilder<"div">;
86
- var dl: EleganceElementBuilder<"dl">;
87
- var dt: EleganceElementBuilder<"dt">;
88
- var em: EleganceElementBuilder<"em">;
89
- var fieldset: EleganceElementBuilder<"fieldset">;
90
- var figcaption: EleganceElementBuilder<"figcaption">;
91
- var figure: EleganceElementBuilder<"figure">;
92
- var footer: EleganceElementBuilder<"footer">;
93
- var form: EleganceElementBuilder<"form">;
94
- var h1: EleganceElementBuilder<"h1">;
95
- var h2: EleganceElementBuilder<"h2">;
96
- var h3: EleganceElementBuilder<"h3">;
97
- var h4: EleganceElementBuilder<"h4">;
98
- var h5: EleganceElementBuilder<"h5">;
99
- var h6: EleganceElementBuilder<"h6">;
100
- var head: EleganceElementBuilder<"head">;
101
- var header: EleganceElementBuilder<"header">;
102
- var hgroup: EleganceElementBuilder<"hgroup">;
103
- var html: EleganceElementBuilder<"html">;
104
- var i: EleganceElementBuilder<"i">;
105
- var iframe: EleganceElementBuilder<"iframe">;
106
- var ins: EleganceElementBuilder<"ins">;
107
- var kbd: EleganceElementBuilder<"kbd">;
108
- var label: EleganceElementBuilder<"label">;
109
- var legend: EleganceElementBuilder<"legend">;
110
- var li: EleganceElementBuilder<"li">;
111
- var main: EleganceElementBuilder<"main">;
112
- var map: EleganceElementBuilder<"map">;
113
- var mark: EleganceElementBuilder<"mark">;
114
- var menu: EleganceElementBuilder<"menu">;
115
- var meter: EleganceElementBuilder<"meter">;
116
- var nav: EleganceElementBuilder<"nav">;
117
- var noscript: EleganceElementBuilder<"noscript">;
118
- var object: EleganceElementBuilder<"object">;
119
- var ol: EleganceElementBuilder<"ol">;
120
- var optgroup: EleganceElementBuilder<"optgroup">;
121
- var option: EleganceElementBuilder<"option">;
122
- var output: EleganceElementBuilder<"output">;
123
- var p: EleganceElementBuilder<"p">;
124
- var picture: EleganceElementBuilder<"picture">;
125
- var pre: EleganceElementBuilder<"pre">;
126
- var progress: EleganceElementBuilder<"progress">;
127
- var q: EleganceElementBuilder<"q">;
128
- var rp: EleganceElementBuilder<"rp">;
129
- var rt: EleganceElementBuilder<"rt">;
130
- var ruby: EleganceElementBuilder<"ruby">;
131
- var s: EleganceElementBuilder<"s">;
132
- var samp: EleganceElementBuilder<"samp">;
133
- var script: EleganceElementBuilder<"script">;
134
- var search: EleganceElementBuilder<"search">;
135
- var section: EleganceElementBuilder<"section">;
136
- var select: EleganceElementBuilder<"select">;
137
- var slot: EleganceElementBuilder<"slot">;
138
- var small: EleganceElementBuilder<"small">;
139
- var span: EleganceElementBuilder<"span">;
140
- var strong: EleganceElementBuilder<"strong">;
141
- var style: EleganceElementBuilder<"style">;
142
- var sub: EleganceElementBuilder<"sub">;
143
- var summary: EleganceElementBuilder<"summary">;
144
- var sup: EleganceElementBuilder<"sup">;
145
- var table: EleganceElementBuilder<"table">;
146
- var tbody: EleganceElementBuilder<"tbody">;
147
- var td: EleganceElementBuilder<"td">;
148
- var template: EleganceElementBuilder<"template">;
149
- var textarea: EleganceElementBuilder<"textarea">;
150
- var tfoot: EleganceElementBuilder<"tfoot">;
151
- var th: EleganceElementBuilder<"th">;
152
- var thead: EleganceElementBuilder<"thead">;
153
- var time: EleganceElementBuilder<"time">;
154
- var title: EleganceElementBuilder<"title">;
155
- var tr: EleganceElementBuilder<"tr">;
156
- var u: EleganceElementBuilder<"u">;
157
- var ul: EleganceElementBuilder<"ul">;
158
- var varElement: EleganceElementBuilder<"varElement">;
159
- var video: EleganceElementBuilder<"video">;
160
- var path: EleganceElementBuilder<"path">;
161
- var circle: EleganceElementBuilder<"circle">;
162
- var ellipse: EleganceElementBuilder<"ellipse">;
163
- var line: EleganceElementBuilder<"line">;
164
- var polygon: EleganceElementBuilder<"polygon">;
165
- var polyline: EleganceElementBuilder<"polyline">;
166
- var stopElement: EleganceElementBuilder<"stop">;
167
- var svg: EleganceElementBuilder<"svg">;
168
- var g: EleganceElementBuilder<"g">;
169
- var text: EleganceElementBuilder<"text">;
170
- var tspan: EleganceElementBuilder<"tspan">;
171
- var textPath: EleganceElementBuilder<"textPath">;
172
- var defs: EleganceElementBuilder<"defs">;
173
- var symbol: EleganceElementBuilder<"symbol">;
174
- var use: EleganceElementBuilder<"use">;
175
- var image: EleganceElementBuilder<"image">;
176
- var clipPath: EleganceElementBuilder<"clipPath">;
177
- var mask: EleganceElementBuilder<"mask">;
178
- var pattern: EleganceElementBuilder<"pattern">;
179
- var linearGradient: EleganceElementBuilder<"linearGradient">;
180
- var radialGradient: EleganceElementBuilder<"radialGradient">;
181
- var filter: EleganceElementBuilder<"filter">;
182
- var marker: EleganceElementBuilder<"marker">;
183
- var view: EleganceElementBuilder<"view">;
184
- var feBlend: EleganceElementBuilder<"feBlend">;
185
- var feColorMatrix: EleganceElementBuilder<"feColorMatrix">;
186
- var feComponentTransfer: EleganceElementBuilder<"feComponentTransfer">;
187
- var feComposite: EleganceElementBuilder<"feComposite">;
188
- var feConvolveMatrix: EleganceElementBuilder<"feConvolveMatrix">;
189
- var feDiffuseLighting: EleganceElementBuilder<"feDiffuseLighting">;
190
- var feDisplacementMap: EleganceElementBuilder<"feDisplacementMap">;
191
- var feDistantLight: EleganceElementBuilder<"feDistantLight">;
192
- var feFlood: EleganceElementBuilder<"feFlood">;
193
- var feFuncA: EleganceElementBuilder<"feFuncA">;
194
- var feFuncB: EleganceElementBuilder<"feFuncB">;
195
- var feFuncG: EleganceElementBuilder<"feFuncG">;
196
- var feFuncR: EleganceElementBuilder<"feFuncR">;
197
- var feGaussianBlur: EleganceElementBuilder<"feGaussianBlur">;
198
- var feImage: EleganceElementBuilder<"feImage">;
199
- var feMerge: EleganceElementBuilder<"feMerge">;
200
- var feMergeNode: EleganceElementBuilder<"feMergeNode">;
201
- var feMorphology: EleganceElementBuilder<"feMorphology">;
202
- var feOffset: EleganceElementBuilder<"feOffset">;
203
- var fePointLight: EleganceElementBuilder<"fePointLight">;
204
- var feSpecularLighting: EleganceElementBuilder<"feSpecularLighting">;
205
- var feSpotLight: EleganceElementBuilder<"feSpotLight">;
206
- var feTile: EleganceElementBuilder<"feTile">;
207
- var feTurbulence: EleganceElementBuilder<"feTurbulence">;
208
- var mi: EleganceElementBuilder<"mi">;
209
- var mn: EleganceElementBuilder<"mn">;
210
- var mo: EleganceElementBuilder<"mo">;
211
- var math: EleganceElementBuilder<"math">;
212
- var ms: EleganceElementBuilder<"ms">;
213
- var mtext: EleganceElementBuilder<"mtext">;
214
- var mrow: EleganceElementBuilder<"mrow">;
215
- var mfenced: EleganceElementBuilder<"mfenced">;
216
- var msup: EleganceElementBuilder<"msup">;
217
- var msub: EleganceElementBuilder<"msub">;
218
- var msubsup: EleganceElementBuilder<"msubsup">;
219
- var mfrac: EleganceElementBuilder<"mfrac">;
220
- var msqrt: EleganceElementBuilder<"msqrt">;
221
- var mroot: EleganceElementBuilder<"mroot">;
222
- var mtable: EleganceElementBuilder<"mtable">;
223
- var mtr: EleganceElementBuilder<"mtr">;
224
- var mtd: EleganceElementBuilder<"mtd">;
225
- var mstyle: EleganceElementBuilder<"mstyle">;
226
- var menclose: EleganceElementBuilder<"menclose">;
227
- var mmultiscripts: EleganceElementBuilder<"mmultiscripts">;
228
- }
229
- export {};
package/dist/global.js DELETED
@@ -1 +0,0 @@
1
- export {};
package/dist/index.d.ts DELETED
@@ -1,16 +0,0 @@
1
- export { LogLevel } from "./server/log";
2
- export { observer, getSelf, } from "./client/observer";
3
- export { eventListener, } from "./client/eventListener";
4
- export { loadHook, } from "./client/loadHook";
5
- export { state } from "./client/state";
6
- export type { ServerSubject } from "./client/state";
7
- export { startEleganceRuntime } from "./server/runtime";
8
- export { Link, } from "./components/Link";
9
- export { ClientComponent } from "./components/ClientComponent";
10
- export { serveProject, getQuery, getCookieStore, respondWith, redirect, } from "./server/server";
11
- export { effect } from "./client/effect";
12
- export * from "./compilation/compiler";
13
- export type { AnyElement as Element, EleganceElement } from "./elements/element";
14
- export type { LayoutConstructor as Layout, LayoutMetadataConstructor as LayoutMetadata, LayoutConstructorParameters as LayoutParams, Child, } from "./server/layout";
15
- export { raw } from "./elements/raw";
16
- export type { PageConstructor as Page, PageMetadataConstructor as PageMetadata, PageParams, } from "./server/page";
package/dist/index.js DELETED
@@ -1,12 +0,0 @@
1
- export { LogLevel } from "./server/log.js";
2
- export { observer, getSelf, } from "./client/observer.js";
3
- export { eventListener, } from "./client/eventListener.js";
4
- export { loadHook, } from "./client/loadHook.js";
5
- export { state } from "./client/state.js";
6
- export { startEleganceRuntime } from "./server/runtime.js";
7
- export { Link, } from "./components/Link.js";
8
- export { ClientComponent } from "./components/ClientComponent.js";
9
- export { serveProject, getQuery, getCookieStore, respondWith, redirect, } from "./server/server.js";
10
- export { effect } from "./client/effect.js";
11
- export * from "./compilation/compiler.js";
12
- export { raw } from "./elements/raw.js";
@@ -1,34 +0,0 @@
1
- import { AnyElement } from "../elements/element";
2
- import { CompilerOptions } from "../compilation/compiler";
3
- /**
4
- * These become page({ props: <your_props> }) within page.ts
5
- */
6
- type LayoutProps = Record<string, unknown>;
7
- type Child = (props: LayoutProps) => AnyElement;
8
- type LayoutConstructorParameters = {
9
- child: Child;
10
- props: LayoutProps;
11
- };
12
- type LayoutConstructor = ((params: LayoutConstructorParameters) => AnyElement) | ((params: LayoutConstructorParameters) => Promise<AnyElement>);
13
- type LayoutMetadataConstructor = (() => AnyElement[]) | (() => Promise<AnyElement[]>);
14
- /**
15
- * Described the formatted supported exports of a given page.
16
- */
17
- type LayoutExports = {
18
- isDynamic: boolean;
19
- layoutConstructor: LayoutConstructor;
20
- layoutMetadataConstructor: LayoutMetadataConstructor;
21
- };
22
- /**
23
- * Holds information about a given user-defined layout within the project.
24
- */
25
- type LayoutInformation = {
26
- /** The absolute path to the .ts file containing the module for this page. */
27
- modulePath: string;
28
- /** The pathname of this page relative to pagesDirectory */
29
- pathname: string;
30
- exports: LayoutExports;
31
- };
32
- declare function invalidLayoutError(compilerOptions: CompilerOptions, modulePath: string, reason: string): Error;
33
- export type { LayoutInformation, LayoutExports, LayoutConstructor, LayoutMetadataConstructor, LayoutConstructorParameters, LayoutProps, Child };
34
- export { invalidLayoutError, };
@@ -1,6 +0,0 @@
1
- import { relative } from "node:path";
2
- function invalidLayoutError(compilerOptions, modulePath, reason) {
3
- const relativePath = relative(compilerOptions.pagesDirectory, modulePath);
4
- return new Error(`The layout at path: "${relativePath}" is invalid.\n${reason}`);
5
- }
6
- export { invalidLayoutError, };
@@ -1,12 +0,0 @@
1
- declare enum LogLevel {
2
- NONE = 0,
3
- ERROR = 1,
4
- WARN = 2,
5
- INFO = 3,
6
- DEBUG = 4
7
- }
8
- declare let logLevel: LogLevel;
9
- declare function setLogLevel(level: LogLevel): void;
10
- declare function formatToLog(level: LogLevel, ...args: unknown[]): string;
11
- declare function formattedLog(level: LogLevel, ...args: unknown[]): void;
12
- export { formattedLog, setLogLevel, LogLevel, logLevel, formatToLog, };
@@ -1,64 +0,0 @@
1
- import util from "node:util";
2
- var LogLevel;
3
- (function (LogLevel) {
4
- LogLevel[LogLevel["NONE"] = 0] = "NONE";
5
- LogLevel[LogLevel["ERROR"] = 1] = "ERROR";
6
- LogLevel[LogLevel["WARN"] = 2] = "WARN";
7
- LogLevel[LogLevel["INFO"] = 3] = "INFO";
8
- LogLevel[LogLevel["DEBUG"] = 4] = "DEBUG";
9
- })(LogLevel || (LogLevel = {}));
10
- let logLevel = LogLevel.INFO;
11
- function setLogLevel(level) {
12
- logLevel = level;
13
- }
14
- function formatToLog(level, ...args) {
15
- if (level === LogLevel.NONE) {
16
- throw new Error("Can't log with LogLevel none.");
17
- }
18
- let tag;
19
- let tagColor;
20
- let msgColor;
21
- switch (level) {
22
- case LogLevel.ERROR:
23
- tag = "[ERROR]";
24
- tagColor = "\x1b[41;30m"; // red bg, black text
25
- msgColor = "\x1b[31m"; // red text
26
- break;
27
- case LogLevel.WARN:
28
- tag = "[WARN]";
29
- tagColor = "\x1b[43;30m"; // yellow bg, black text
30
- msgColor = "\x1b[33m"; // yellow text
31
- break;
32
- case LogLevel.INFO:
33
- tag = "[INFO]";
34
- tagColor = "\x1b[44;37m"; // blue bg, white text
35
- msgColor = "\x1b[36m"; // cyan text
36
- break;
37
- case LogLevel.DEBUG:
38
- tag = "[DEBUG]";
39
- tagColor = "\x1b[45;37m"; // magenta bg, white text
40
- msgColor = "\x1b[90m"; // gray text
41
- break;
42
- }
43
- const ts = new Date().toLocaleTimeString("en-us");
44
- const formattedArgs = [
45
- `${ts} Elegance-JS `,
46
- `${tagColor}${tag}\x1b[0m `,
47
- msgColor,
48
- ...args,
49
- "\x1b[0m"
50
- ];
51
- return formattedArgs.map(arg => {
52
- if (typeof arg === "string")
53
- return arg;
54
- return util.inspect(arg, { colors: false, depth: null });
55
- }).join('');
56
- }
57
- function formattedLog(level, ...args) {
58
- if (level > logLevel) {
59
- return;
60
- }
61
- const str = formatToLog(level, ...args);
62
- console.log(str);
63
- }
64
- export { formattedLog, setLogLevel, LogLevel, logLevel, formatToLog, };
@@ -1,32 +0,0 @@
1
- import { CompilerOptions } from "../compilation/compiler";
2
- import { AnyElement } from "../elements/element";
3
- import { LayoutInformation } from "./layout";
4
- type PageParams = Record<any, unknown>;
5
- type PageConstructor = ((params: PageParams) => AnyElement) | ((params: PageParams) => Promise<AnyElement>);
6
- type PageMetadataConstructor = ((params: PageParams) => AnyElement) | ((params: PageParams) => Promise<AnyElement>);
7
- /**
8
- * Described the formatted supported exports of a given page.
9
- */
10
- type PageExports = {
11
- isDynamic: boolean;
12
- pageConstructor: PageConstructor;
13
- pageMetadataConstructor: PageMetadataConstructor;
14
- enumerateRoutes: (() => string[]) | null;
15
- };
16
- /**
17
- * Holds information about a given user-defined page within the project.
18
- */
19
- type PageInformation = {
20
- /** The absolute path to the .ts file containing the module for this page. */
21
- modulePath: string;
22
- /** The pathname of this page relative to pagesDirectory */
23
- pathname: string;
24
- exports: PageExports;
25
- /** This is just the result of pathname.split("/") */
26
- pathnameParts: string[];
27
- /** An in-order list of the layouts that apply to this page. */
28
- applicableLayouts: LayoutInformation[];
29
- };
30
- declare function invalidPageError(compilerOptions: CompilerOptions, modulePath: string, reason: string): Error;
31
- export { invalidPageError, };
32
- export type { PageInformation, PageExports, PageParams, PageConstructor, PageMetadataConstructor, };
@@ -1,6 +0,0 @@
1
- import { relative } from "path";
2
- function invalidPageError(compilerOptions, modulePath, reason) {
3
- const relativePath = relative(compilerOptions.pagesDirectory, modulePath);
4
- return new Error(`The page at path: "${relativePath}" is invalid.\n${reason}`);
5
- }
6
- export { invalidPageError, };
@@ -1,6 +0,0 @@
1
- /**
2
- * Run the elegance runtime, and if hot-reloading is enabled, will start the hot-reload server.
3
- * @param file The runtime file to execute.
4
- */
5
- declare function startEleganceRuntime(file: string): void;
6
- export { startEleganceRuntime, };
@@ -1,92 +0,0 @@
1
- import { spawn } from "child_process";
2
- import { resolve } from "path";
3
- import { formattedLog, LogLevel } from "./log.js";
4
- import { createServer } from "http";
5
- import { createRecursiveWatcher } from "../compilation/compiler.js";
6
- let child;
7
- let childPath;
8
- const clients = new Set();
9
- let server;
10
- let serverIsActive = false;
11
- let compilerOptions;
12
- /**
13
- * Run the elegance runtime, and if hot-reloading is enabled, will start the hot-reload server.
14
- * @param file The runtime file to execute.
15
- */
16
- function startEleganceRuntime(file) {
17
- formattedLog(LogLevel.INFO, "Starting Elegance..");
18
- childPath = resolve(file);
19
- server = createServer((req, res) => {
20
- formattedLog(LogLevel.DEBUG, "Received hot-reload listener.");
21
- if (req.url === "/elegance-hot-reload") {
22
- res.writeHead(200, {
23
- "Content-Type": "text/event-stream",
24
- "Cache-Control": "no-cache",
25
- "Connection": "keep-alive",
26
- "Access-Control-Allow-Origin": "*"
27
- });
28
- res.write(":ok\n\n");
29
- clients.add(res);
30
- req.on("close", () => {
31
- clients.delete(res);
32
- });
33
- return;
34
- }
35
- res.writeHead(404);
36
- res.end();
37
- });
38
- restartEleganceRuntime();
39
- }
40
- function restartEleganceRuntime() {
41
- if (child && child.killed === false) {
42
- child.kill();
43
- }
44
- child = spawn("node", ["--import", "ts-arc/register", childPath], {
45
- stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
46
- env: { ...process.env }
47
- });
48
- child.on("exit", (code) => {
49
- if (code === 0)
50
- return;
51
- formattedLog(LogLevel.ERROR, "Waiting for file changes..");
52
- const { watchers } = createRecursiveWatcher(compilerOptions.pagesDirectory, async (path) => {
53
- deleteWatchers();
54
- restartEleganceRuntime();
55
- });
56
- function deleteWatchers() {
57
- for (const [_, watcher] of watchers) {
58
- watcher.close();
59
- }
60
- }
61
- });
62
- child.on("message", (raw) => {
63
- const { message, content } = JSON.parse(raw);
64
- if (message === "restart-me") {
65
- formattedLog(LogLevel.INFO, "Rebuilding..");
66
- restartEleganceRuntime();
67
- }
68
- if (message === "set-compiler-options") {
69
- compilerOptions = JSON.parse(content);
70
- formattedLog(LogLevel.DEBUG, "Setting compiler options in parent..");
71
- return;
72
- }
73
- if (message === "hot-reload-finish") {
74
- if (!serverIsActive) {
75
- serverIsActive = true;
76
- server.listen(4000, () => {
77
- formattedLog(LogLevel.DEBUG, "Hot-reload server listening on port 4000");
78
- });
79
- }
80
- for (const client of clients) {
81
- client.write("data: hot-reload\n\n");
82
- }
83
- }
84
- if (message === "disable-hot-reload") {
85
- if (!serverIsActive)
86
- return;
87
- serverIsActive = false;
88
- server.close();
89
- }
90
- });
91
- }
92
- export { startEleganceRuntime, };
@@ -1,95 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import fs from "fs";
4
- import path from "path";
5
-
6
- import { execSync } from "node:child_process";
7
- import { fileURLToPath } from "node:url";
8
-
9
- execSync("npm install tailwindcss @tailwindcss/cli && npm install --save-dev @types/node");
10
-
11
- const __filename = fileURLToPath(import.meta.url);
12
- const __dirname = path.dirname(__filename);
13
-
14
- const dirs = ["pages", "public", path.join("pages", "api"), path.join("pages", "api", "middleware")];
15
- dirs.forEach((dir) => {
16
- if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
17
- });
18
-
19
- const pageTsPath = path.join("pages", "page.ts");
20
- const layoutTsPath = path.join("pages", "layout.ts");
21
- const middlewareTsPath = path.join("pages", "api", "middleware", "middleware.ts");
22
- const routeTsPath = path.join("pages", "api", "route.ts");
23
-
24
- const indexTsPath = path.join("index.ts");
25
- const eleganceTsPath = path.join("elegance.ts");
26
-
27
- const bootstrapFilesDir = path.join(__dirname, "bootstrap_files");
28
-
29
- const pageTsContent = fs.readFileSync(path.join(bootstrapFilesDir, "page.txt"));
30
- const layoutTsContent = fs.readFileSync(path.join(bootstrapFilesDir, "layout.txt"));
31
- const middlewareTsContent = fs.readFileSync(path.join(bootstrapFilesDir, "middleware.txt"));
32
- const routeTsContent = fs.readFileSync(path.join(bootstrapFilesDir, "route.txt"));
33
- const indexTsContent = fs.readFileSync(path.join(bootstrapFilesDir, "index.txt"));
34
- const eleganceTsContent = fs.readFileSync(path.join(bootstrapFilesDir, "elegance.txt"));
35
-
36
- const indexCssPath = path.join("pages", "input.css");
37
- const envDtsPath = "env.d.ts";
38
- const tsconfigPath = "tsconfig.json";
39
-
40
- const envDtsContent = `/// <reference types="elegance-js/global" />`;
41
-
42
- const tsconfigContent = JSON.stringify({
43
- compilerOptions: {
44
- target: "ESNext",
45
- module: "ESNext",
46
- moduleResolution: "bundler",
47
- strict: true,
48
- esModuleInterop: true,
49
- forceConsistentCasingInFileNames: true,
50
- skipLibCheck: true,
51
- paths: {
52
- "@/": ["./"],
53
- }
54
-
55
- },
56
- include: ["pages/**/*", "env.d.ts"],
57
- exclude: ["node_modules"],
58
- }, null, 4);
59
-
60
- const indexCssContent = `
61
- @import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
62
-
63
- * {
64
- line-height: normal;
65
- }
66
-
67
- @import "tailwindcss";
68
-
69
- @theme {
70
- --font-inter: "Inter", sans-serif;
71
- }
72
- `;
73
-
74
- fs.writeFileSync(pageTsPath, pageTsContent, "utf8");
75
- fs.writeFileSync(layoutTsPath, layoutTsContent, "utf8");
76
- fs.writeFileSync(routeTsPath, routeTsContent, "utf8");
77
- fs.writeFileSync(middlewareTsPath, middlewareTsContent, "utf8");
78
- fs.writeFileSync(indexCssPath, indexCssContent, "utf8");
79
- fs.writeFileSync(envDtsPath, envDtsContent, "utf8");
80
- fs.writeFileSync(tsconfigPath, tsconfigContent, "utf8");
81
-
82
- if (process.argv[2] === "--manual") {
83
- console.log("--manual: Creating manual defaults..");
84
-
85
- execSync("npm install ts-arc");
86
-
87
- fs.writeFileSync(eleganceTsPath, eleganceTsContent, "utf8");
88
- fs.writeFileSync(indexTsPath, indexTsContent, "utf8");
89
-
90
- console.log("Run this project with: npx ts-arc index.ts");
91
- } else {
92
- console.log("Run this project with: npx run");
93
- }
94
-
95
- console.log("Bootstrapped new project!");
@@ -1,40 +0,0 @@
1
- import { execSync } from "child_process";
2
- import { serveProject, compileEntireProject, setCompilerOptions, } from "elegance-js";
3
- import path from "path";
4
-
5
- async function runtime() {
6
- const pagesDirectory = path.resolve("./pages");
7
- const publicDirectory = path.resolve("./public");
8
- const outputDirectory = path.resolve(".elegance");
9
-
10
- setCompilerOptions({
11
- pagesDirectory: pagesDirectory,
12
- publicDirectory: publicDirectory,
13
- outputDirectory: outputDirectory,
14
- environment: "development",
15
-
16
- doHotReload: true,
17
- });
18
-
19
- const { allLayouts, allPages, allStatusCodePages, compiledStaticLayouts, compiledStaticPages, } = await compileEntireProject();
20
-
21
- execSync(`npx @tailwindcss/cli -i ${path.join(pagesDirectory, "input.css")} -o ${path.join(outputDirectory, "DIST", "index.css")}`);
22
-
23
- await serveProject({
24
- port: 3000,
25
- hostname: "0.0.0.0",
26
-
27
- allowDynamic: true,
28
- allowStatusCodePages: true,
29
- serveAPI: true,
30
-
31
- allLayouts,
32
- allStatusCodePages,
33
- allPages,
34
-
35
- builtStaticPages: compiledStaticPages,
36
- builtStaticLayouts: compiledStaticLayouts,
37
- });
38
- }
39
-
40
- runtime();