firefly-compiler 0.5.81 → 0.5.83
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.
- package/compiler/JsEmitter.ff +1 -1
- package/compiler/Main.ff +12 -7
- package/core/BuildSystem.ff +2 -2
- package/experimental/docker/Dockerfile +17 -0
- package/experimental/docker/Main.ff +3 -0
- package/fireflysite/.dockerignore +10 -0
- package/fireflysite/Dockerfile +20 -0
- package/fireflysite/Main.ff +1 -0
- package/lsp/CompletionHandler.ff +1 -1
- package/output/js/ff/compiler/JsEmitter.mjs +2 -2
- package/output/js/ff/compiler/JsEmitter.mjs.map +2 -2
- package/output/js/ff/compiler/Main.mjs +14 -14
- package/output/js/ff/compiler/Main.mjs.map +6 -8
- package/output/js/ff/core/BuildSystem.mjs +2 -2
- package/output/js/ff/core/BuildSystem.mjs.map +3 -3
- package/package.json +1 -1
- package/vscode/package.json +1 -1
package/compiler/JsEmitter.ff
CHANGED
|
@@ -229,7 +229,7 @@ extend self: JsEmitter {
|
|
|
229
229
|
"await " + mainName + "_$(system, $task)"
|
|
230
230
|
]} else {[]}
|
|
231
231
|
...if(self.emitTarget == EmitBuild) {[
|
|
232
|
-
"await $firefly_compiler.internalCreateExecutable_$(system, '.firefly/output/executable/Main.bundle.js', '.firefly/output', ['host'], system.assets_, $task)"
|
|
232
|
+
// "await $firefly_compiler.internalCreateExecutable_$(system, '.firefly/output/executable/Main.bundle.js', '.firefly/output', ['host'], system.assets_, $task)"
|
|
233
233
|
]} else {[]}
|
|
234
234
|
...if(!willRunOnNode) {[]} else {[
|
|
235
235
|
"} catch(error) {"
|
package/compiler/Main.ff
CHANGED
|
@@ -63,13 +63,13 @@ main(system: NodeSystem): Unit {
|
|
|
63
63
|
let resolvedDependencies = Dependencies.process(
|
|
64
64
|
system.httpClient()
|
|
65
65
|
DependencyLock.new(system.mainTask())
|
|
66
|
-
system.path(mainFile
|
|
66
|
+
system.path(mainFile)
|
|
67
67
|
)
|
|
68
68
|
prepareFireflyDirectory(system.path("."))
|
|
69
69
|
let mainPath = system.path(mainFile)
|
|
70
70
|
let moduleKey = buildScript(system, mainPath, resolvedDependencies.mainPackagePair, EmitBuild, resolvedDependencies)
|
|
71
71
|
buildScript(system, mainPath, resolvedDependencies.mainPackagePair, EmitExecutable, resolvedDependencies)
|
|
72
|
-
|
|
72
|
+
bundleForExecutable(system, resolvedDependencies.mainPackagePair, moduleKey)
|
|
73
73
|
importAndRun(system, fireflyPath, "build", moduleKey, [])
|
|
74
74
|
|
|
75
75
|
| CheckCommand(filePath) =>
|
|
@@ -276,11 +276,16 @@ parseCommandLine(arguments: List[String]): MainCommand {
|
|
|
276
276
|
| [s, ...] => throw(CommandLineError("Unknown command '" + s + "'" + usageString))
|
|
277
277
|
}
|
|
278
278
|
|
|
279
|
-
|
|
280
|
-
let
|
|
281
|
-
let
|
|
282
|
-
let
|
|
283
|
-
BuildSystem.internalNodeCallEsBuild(
|
|
279
|
+
bundleForExecutable(system: NodeSystem, packagePair: PackagePair, moduleKey: ModuleKey) {
|
|
280
|
+
let packagePath = moduleKey.packagePair.groupName("/")
|
|
281
|
+
let outputPath = system.path(".firefly/output/executable/" + packagePath + "/")
|
|
282
|
+
let runFile = outputPath.slash(moduleKey.importName() + ".run.mjs")
|
|
283
|
+
BuildSystem.internalNodeCallEsBuild(
|
|
284
|
+
system,
|
|
285
|
+
runFile.absolute(),
|
|
286
|
+
outputPath.absolute(),
|
|
287
|
+
minify = True
|
|
288
|
+
)
|
|
284
289
|
}
|
|
285
290
|
|
|
286
291
|
bundleForBrowser(system: NodeSystem, packagePair: PackagePair, moduleKey: ModuleKey) {
|
package/core/BuildSystem.ff
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
FROM node:24
|
|
2
|
+
RUN mkdir /home/node/app && chown -R node:node /home/node/app
|
|
3
|
+
RUN mkdir /home/node/firefly && chown -R node:node /home/node/firefly
|
|
4
|
+
# COPY package*.json ./
|
|
5
|
+
USER node
|
|
6
|
+
WORKDIR /home/node/firefly
|
|
7
|
+
RUN npm install firefly-compiler
|
|
8
|
+
WORKDIR /home/node/app
|
|
9
|
+
COPY --chown=node:node . .
|
|
10
|
+
# This fetches Firefly packages but we should also do their npm install --no-bin-links
|
|
11
|
+
RUN [ "/home/node/firefly/node_modules/.bin/firefly", "check", "Main.ff" ]
|
|
12
|
+
EXPOSE 8080
|
|
13
|
+
ENTRYPOINT [ "/home/node/firefly/node_modules/.bin/firefly", "Main.ff" ]
|
|
14
|
+
|
|
15
|
+
# Test it with
|
|
16
|
+
# podman build -t my-image .
|
|
17
|
+
# podman run -it --name my-container my-image
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
FROM node:22
|
|
2
|
+
# See https://cheatsheetseries.owasp.org/cheatsheets/NodeJS_Docker_Cheat_Sheet.html
|
|
3
|
+
RUN apt update
|
|
4
|
+
RUN apt install dumb-init
|
|
5
|
+
USER node
|
|
6
|
+
RUN mkdir /home/node/app
|
|
7
|
+
RUN mkdir /home/node/firefly
|
|
8
|
+
WORKDIR /home/node/firefly
|
|
9
|
+
RUN npm install firefly-compiler
|
|
10
|
+
WORKDIR /home/node/app
|
|
11
|
+
RUN mkdir -p .firefly/output/executable
|
|
12
|
+
COPY --chown=node:node .firefly/output/executable .firefly/output/executable
|
|
13
|
+
# This fetches Firefly packages but we should also do their npm install --no-bin-links
|
|
14
|
+
RUN [ "/home/node/firefly/node_modules/.bin/firefly", "build", "Main.ff" ]
|
|
15
|
+
EXPOSE 8080
|
|
16
|
+
ENTRYPOINT [ "dumb-init", "node", ".firefly/output/executable/Main.bundle.js", "0.0.0.0", "8080" ]
|
|
17
|
+
|
|
18
|
+
# Test it with
|
|
19
|
+
# podman build -t fireflysite .
|
|
20
|
+
# podman run -p 8080:8080 --rm -it fireflysite
|
package/fireflysite/Main.ff
CHANGED
|
@@ -18,6 +18,7 @@ nodeMain(system: NodeSystem): Unit {
|
|
|
18
18
|
let handlers = WebRouteHandler(Array.new())
|
|
19
19
|
Router.handlers(handlers)
|
|
20
20
|
let cacheSalt = system.crypto().randomBuffer(16)
|
|
21
|
+
Log.debug("Starting server on " + host + ":" + port)
|
|
21
22
|
WebServer.new(system, host, port).listen {request =>
|
|
22
23
|
let path = request.readPath()
|
|
23
24
|
let segments = path.split('/').filter {s => s != "" && s != "." && s != ".."}
|
package/lsp/CompletionHandler.ff
CHANGED
|
@@ -870,7 +870,7 @@ toplevelCompletion(lspHook: LspHook): List[CompletionInfo] {
|
|
|
870
870
|
" if(request.readPath() == \"/\") {"
|
|
871
871
|
" request.writeHeader(\"Content-Type\", \"text/html; charset=UTF-8\")"
|
|
872
872
|
" request.writeText(\"<!doctype html>\")"
|
|
873
|
-
" request.writeText(\"<script type='module' src='/js/script/script/$TM_FILENAME_BASE.mjs'></script>\")"
|
|
873
|
+
" request.writeText(\"<script type='module' src='/js/script/script/$TM_FILENAME_BASE.run.mjs'></script>\")"
|
|
874
874
|
" } elseIf {request.readPath() == \"/hello\"} {"
|
|
875
875
|
" request.writeHeader(\"Content-Type\", \"text/plain; charset=UTF-8\")"
|
|
876
876
|
" request.writeText(\"Hello from server!\")"
|
|
@@ -825,7 +825,7 @@ return (((("import {" + ff_compiler_JsEmitter.escapeKeyword_(buildMain_.signatur
|
|
|
825
825
|
: []), ...(ff_core_Equal.notEquals_(self_.emitTarget_, ff_compiler_JsEmitter.EmitBuild(), ff_compiler_JsEmitter.ff_core_Equal_Equal$ff_compiler_JsEmitter_EmitTarget)
|
|
826
826
|
? [(("await " + mainName_) + "_$(system, $task)")]
|
|
827
827
|
: []), ...(ff_compiler_JsEmitter.ff_core_Equal_Equal$ff_compiler_JsEmitter_EmitTarget.equals_(self_.emitTarget_, ff_compiler_JsEmitter.EmitBuild())
|
|
828
|
-
? [
|
|
828
|
+
? []
|
|
829
829
|
: []), ...((!willRunOnNode_)
|
|
830
830
|
? []
|
|
831
831
|
: ["} catch(error) {", "console.error(ff_core_Error.Error_stack(error))", "process.exit(1)"]), "} finally {", ...(ff_core_Equal.notEquals_(self_.emitTarget_, ff_compiler_JsEmitter.EmitBrowser(), ff_compiler_JsEmitter.ff_core_Equal_Equal$ff_compiler_JsEmitter_EmitTarget)
|
|
@@ -4439,7 +4439,7 @@ return (((("import {" + ff_compiler_JsEmitter.escapeKeyword_(buildMain_.signatur
|
|
|
4439
4439
|
: []), ...(ff_core_Equal.notEquals_(self_.emitTarget_, ff_compiler_JsEmitter.EmitBuild(), ff_compiler_JsEmitter.ff_core_Equal_Equal$ff_compiler_JsEmitter_EmitTarget)
|
|
4440
4440
|
? [(("await " + mainName_) + "_$(system, $task)")]
|
|
4441
4441
|
: []), ...(ff_compiler_JsEmitter.ff_core_Equal_Equal$ff_compiler_JsEmitter_EmitTarget.equals_(self_.emitTarget_, ff_compiler_JsEmitter.EmitBuild())
|
|
4442
|
-
? [
|
|
4442
|
+
? []
|
|
4443
4443
|
: []), ...((!willRunOnNode_)
|
|
4444
4444
|
? []
|
|
4445
4445
|
: ["} catch(error) {", "console.error(ff_core_Error.Error_stack(error))", "process.exit(1)"]), "} finally {", ...(ff_core_Equal.notEquals_(self_.emitTarget_, ff_compiler_JsEmitter.EmitBrowser(), ff_compiler_JsEmitter.ff_core_Equal_Equal$ff_compiler_JsEmitter_EmitTarget)
|