You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jul 6, 2025. It is now read-only.
Repository navigation
This repository was archived by the owner on Jul 6, 2025. It is now read-only.
A plugin to replace .env variables in a certain manner. Initially proposed in #77. Initial design used regex to replace anything surrounded by handlebars. I think we should use deno_swc which will allow us to instead replace Deno.env. anything. We could possibly look into requiring ALEPH_PUBLIC_ prefix to .env variables unless it is accessed inside a useDeno hook.
maybe too much to import the deno_swc for the env plugin, 0.3 will include a new compiler using swc i can implement this function without plugin imported.
Reacted by shadowtime2000, Alfredo Salzillo and ⊣˚∆˚⊢
@ije How exactly would this be written? Will we write it within the new compiler after it is merged or will we another repo for this project or something? I think SWC macros could be useful just all around in a ton of places.
@ije Thx, but I was actually asking about how the compiler which expands the macros will be organized. I don't think we should have an inject method which injects that into the main file, I think it would be better if we just did something like this:
@shadowtime2000 the transform should return a js code fragment that why i added the inject method(it's optional) to inject deno runtime variables. i will add the feature in the new compiler, no extra dependency needed.
Tbh, I feel like macros purely for a framework like this is a little overkill and we could look into creating a library for these macros that doesn't require Aleph to be used.
@ije I don't think it is a good idea to dump everything in Deno.env into a global namespace because there could be unused .env variables for stuff like API keys which could be used in the /api/ routes, which makes that a security concern. I think this should be good enough:
i feel that the maco function is very easy to implement in the new compile with swc, if there is a statement like import macroFn from "./xxx.macro.ts", the macroFn will be treated as a macro. if we decide to implement it in a library then we need an ast compiler that is heavy.
Activity
shadowtime2000 commentedon Jan 3, 2021
@ije Thoughts? @alfredosalzillo Are you still interested in creating such an env plugin?
ije commentedon Jan 4, 2021
maybe too much to import the
deno_swcfor theenvplugin, 0.3 will include a new compiler using swc i can implement this function without plugin imported.shadowtime2000 commentedon Jan 4, 2021
@ije Makes sense!
ije commentedon Jan 4, 2021
i perfer a new concept swc-marco can be a solution:
it will be transpiled to below code:
and the macro will export the
deno.envas__ALEPH_ENV.what do you think? @shadowtime2000 @alfredosalzillo
ije commentedon Jan 4, 2021
with that, people can write their own macro that gives more power to define your code syntax.
alfredosalzillo commentedon Jan 4, 2021
I agree. I prefer this solution too.
ije commentedon Jan 4, 2021
for example, we can transform graphql string to AST at build time with macro:
output code:
[-]Env Plugin[/-][+]SWC Macro[/+]shadowtime2000 commentedon Jan 4, 2021
I like the idea of an SWC macro, it could possibly then help us with #60.
shadowtime2000 commentedon Jan 4, 2021
@ije How exactly would this be written? Will we write it within the new compiler after it is merged or will we another repo for this project or something? I think SWC macros could be useful just all around in a ton of places.
ije commentedon Jan 4, 2021
it seems like:
shadowtime2000 commentedon Jan 4, 2021
@ije Thx, but I was actually asking about how the compiler which expands the macros will be organized. I don't think we should have an
injectmethod which injects that into the main file, I think it would be better if we just did something like this:ije commentedon Jan 4, 2021
@shadowtime2000 the
transformshould return a js code fragment that why i added theinjectmethod(it's optional) to inject deno runtime variables. i will add the feature in the new compiler, no extra dependency needed.shadowtime2000 commentedon Jan 4, 2021
Tbh, I feel like macros purely for a framework like this is a little overkill and we could look into creating a library for these macros that doesn't require Aleph to be used.
shadowtime2000 commentedon Jan 4, 2021
@ije I don't think it is a good idea to dump everything in
Deno.envinto a global namespace because there could be unused.envvariables for stuff like API keys which could be used in the/api/routes, which makes that a security concern. I think this should be good enough:So
env("foo")will be replaced with"bar".ije commentedon Jan 5, 2021
@shadowtime2000 you are right it's a bad idea to inject
deno.env!ije commentedon Jan 5, 2021
i feel that the maco function is very easy to implement in the new compile with swc, if there is a statement like
import macroFn from "./xxx.macro.ts", the macroFn will be treated as a macro. if we decide to implement it in a library then we need an ast compiler that is heavy.shadowtime2000 commentedon Jan 5, 2021
@ije Good point, it would be easier to make it a library once there is a more standard form for ast modification and compilation and stuff.
ije commentedon Jan 5, 2021
@shadowtime2000 for sure
shadowtime2000 commentedon Jan 15, 2021
We should probably allow returning an AST or something for more organized complex macros.
shadowtime2000 commentedon Jan 22, 2021
I think we should maybe instead just invoke a macro if macro data is present on the function.