From 6aa37eb9e4ae405be000069f3063b9ada10bfb6f Mon Sep 17 00:00:00 2001 From: Alice Gaudon Date: Tue, 4 May 2021 17:04:14 +0200 Subject: [PATCH] Add two step pre-compile/compile asset processing Reorganize views into new "assets" folder structure Turn locals into a store so locals don't have to be passed through files that don't need them Some fixes to previous commit (esm) 82ab0b963c85fdfea4205bd9d931c8bcbf9b5af6 Remove afs in favor of fs.promises (renamed afs.exists to Utils.doesFileExist Rename Utils.readdirRecursively to Utils.listFilesRecursively --- assets/ts/stores.ts | 3 + .../views}/auth/account/account.njk | 0 .../views}/auth/account/name_panel.njk | 0 .../views}/auth/account/password_panel.njk | 0 {views => assets/views}/auth/auth.njk | 0 .../views}/backend/accounts_approval.njk | 0 {views => assets/views}/backend/index.njk | 0 {views => assets/views}/errors/400.njk | 0 {views => assets/views}/errors/401.njk | 0 {views => assets/views}/errors/403.njk | 0 {views => assets/views}/errors/404.njk | 0 {views => assets/views}/errors/429.njk | 0 {views => assets/views}/errors/500.njk | 0 {views => assets/views}/errors/503.njk | 0 {views => assets/views}/errors/error.njk | 0 {views => assets/views}/layouts/barebone.njk | 0 .../views}/layouts/svelte_layout.html | 5 +- {views => assets/views}/macros.njk | 0 {views => assets/views}/magic_link.njk | 0 {views => assets/views}/magic_link_lobby.njk | 0 .../views}/mails/account_review_notice.mnjk | 0 {views => assets/views}/mails/add_email.mnjk | 0 .../views}/mails/base_layout.mnjk | 0 {views => assets/views}/mails/magic_link.mnjk | 0 .../views}/mails/pending_account_review.mnjk | 0 .../views}/mails/remove_password.mnjk | 0 rollup.config.js | 3 +- scripts/dist.js | 2 +- src/TestApp.ts | 14 +- src/Utils.ts | 61 +++--- src/components/FrontendToolsComponent.ts | 76 +++++--- src/frontend/AssetCompiler.ts | 71 +++++++ src/frontend/AssetPreCompiler.ts | 179 ++++++++++++++++++ src/frontend/CopyAssetPreCompiler.ts | 31 +++ src/frontend/NunjucksViewEngine.ts | 10 +- src/frontend/SvelteViewEngine.ts | 142 ++++---------- src/frontend/TypeScriptPreCompiler.ts | 18 ++ src/frontend/ViewEngine.ts | 148 ++------------- src/main.ts | 4 +- src/utils/FileCache.ts | 8 +- test/{ => assets}/views/home.njk | 0 test/assets/views/home_dep.svelte | 26 +++ .../assets/views/home_test.svelte | 21 +- {views => test/assets/views}/layout.svelte | 0 test/{ => assets}/views/test/throws_error.njk | 0 test/views/layouts/base.njk | 59 ------ tsconfig.frontend.json | 18 ++ tsconfig.svelte.json | 10 + tsconfig.views.json | 19 -- views/home_dep.svelte | 25 --- 50 files changed, 516 insertions(+), 437 deletions(-) create mode 100644 assets/ts/stores.ts rename {views => assets/views}/auth/account/account.njk (100%) rename {views => assets/views}/auth/account/name_panel.njk (100%) rename {views => assets/views}/auth/account/password_panel.njk (100%) rename {views => assets/views}/auth/auth.njk (100%) rename {views => assets/views}/backend/accounts_approval.njk (100%) rename {views => assets/views}/backend/index.njk (100%) rename {views => assets/views}/errors/400.njk (100%) rename {views => assets/views}/errors/401.njk (100%) rename {views => assets/views}/errors/403.njk (100%) rename {views => assets/views}/errors/404.njk (100%) rename {views => assets/views}/errors/429.njk (100%) rename {views => assets/views}/errors/500.njk (100%) rename {views => assets/views}/errors/503.njk (100%) rename {views => assets/views}/errors/error.njk (100%) rename {views => assets/views}/layouts/barebone.njk (100%) rename {views => assets/views}/layouts/svelte_layout.html (77%) rename {views => assets/views}/macros.njk (100%) rename {views => assets/views}/magic_link.njk (100%) rename {views => assets/views}/magic_link_lobby.njk (100%) rename {views => assets/views}/mails/account_review_notice.mnjk (100%) rename {views => assets/views}/mails/add_email.mnjk (100%) rename {views => assets/views}/mails/base_layout.mnjk (100%) rename {views => assets/views}/mails/magic_link.mnjk (100%) rename {views => assets/views}/mails/pending_account_review.mnjk (100%) rename {views => assets/views}/mails/remove_password.mnjk (100%) create mode 100644 src/frontend/AssetCompiler.ts create mode 100644 src/frontend/AssetPreCompiler.ts create mode 100644 src/frontend/CopyAssetPreCompiler.ts create mode 100644 src/frontend/TypeScriptPreCompiler.ts rename test/{ => assets}/views/home.njk (100%) create mode 100644 test/assets/views/home_dep.svelte rename views/home.svelte => test/assets/views/home_test.svelte (60%) rename {views => test/assets/views}/layout.svelte (100%) rename test/{ => assets}/views/test/throws_error.njk (100%) delete mode 100644 test/views/layouts/base.njk create mode 100644 tsconfig.frontend.json create mode 100644 tsconfig.svelte.json delete mode 100644 tsconfig.views.json delete mode 100644 views/home_dep.svelte diff --git a/assets/ts/stores.ts b/assets/ts/stores.ts new file mode 100644 index 0000000..257d0be --- /dev/null +++ b/assets/ts/stores.ts @@ -0,0 +1,3 @@ +import {writable} from "svelte/store"; + +export const locals = writable({}); diff --git a/views/auth/account/account.njk b/assets/views/auth/account/account.njk similarity index 100% rename from views/auth/account/account.njk rename to assets/views/auth/account/account.njk diff --git a/views/auth/account/name_panel.njk b/assets/views/auth/account/name_panel.njk similarity index 100% rename from views/auth/account/name_panel.njk rename to assets/views/auth/account/name_panel.njk diff --git a/views/auth/account/password_panel.njk b/assets/views/auth/account/password_panel.njk similarity index 100% rename from views/auth/account/password_panel.njk rename to assets/views/auth/account/password_panel.njk diff --git a/views/auth/auth.njk b/assets/views/auth/auth.njk similarity index 100% rename from views/auth/auth.njk rename to assets/views/auth/auth.njk diff --git a/views/backend/accounts_approval.njk b/assets/views/backend/accounts_approval.njk similarity index 100% rename from views/backend/accounts_approval.njk rename to assets/views/backend/accounts_approval.njk diff --git a/views/backend/index.njk b/assets/views/backend/index.njk similarity index 100% rename from views/backend/index.njk rename to assets/views/backend/index.njk diff --git a/views/errors/400.njk b/assets/views/errors/400.njk similarity index 100% rename from views/errors/400.njk rename to assets/views/errors/400.njk diff --git a/views/errors/401.njk b/assets/views/errors/401.njk similarity index 100% rename from views/errors/401.njk rename to assets/views/errors/401.njk diff --git a/views/errors/403.njk b/assets/views/errors/403.njk similarity index 100% rename from views/errors/403.njk rename to assets/views/errors/403.njk diff --git a/views/errors/404.njk b/assets/views/errors/404.njk similarity index 100% rename from views/errors/404.njk rename to assets/views/errors/404.njk diff --git a/views/errors/429.njk b/assets/views/errors/429.njk similarity index 100% rename from views/errors/429.njk rename to assets/views/errors/429.njk diff --git a/views/errors/500.njk b/assets/views/errors/500.njk similarity index 100% rename from views/errors/500.njk rename to assets/views/errors/500.njk diff --git a/views/errors/503.njk b/assets/views/errors/503.njk similarity index 100% rename from views/errors/503.njk rename to assets/views/errors/503.njk diff --git a/views/errors/error.njk b/assets/views/errors/error.njk similarity index 100% rename from views/errors/error.njk rename to assets/views/errors/error.njk diff --git a/views/layouts/barebone.njk b/assets/views/layouts/barebone.njk similarity index 100% rename from views/layouts/barebone.njk rename to assets/views/layouts/barebone.njk diff --git a/views/layouts/svelte_layout.html b/assets/views/layouts/svelte_layout.html similarity index 77% rename from views/layouts/svelte_layout.html rename to assets/views/layouts/svelte_layout.html index 03e8edf..cb58f1d 100644 --- a/views/layouts/svelte_layout.html +++ b/assets/views/layouts/svelte_layout.html @@ -5,9 +5,10 @@ + + + + +

Simple dep test

+

\$locals.

+

\$locals.

+ +

$locals: {$locals}

+

\$locals.route: {$locals.route}
{$locals.dump(typeof $locals.route)}

+

\$locals.dump: {$locals.dump('bonjour')}

+

\$locals.dump: {$locals.dump($locals.app)}

+

\$locals.dump: {$locals.dump(NaN)}

+

\$locals.route: {$locals.route('auth')}

+

\$locals.route: {$locals.route('home')}

diff --git a/views/home.svelte b/test/assets/views/home_test.svelte similarity index 60% rename from views/home.svelte rename to test/assets/views/home_test.svelte index 170a791..b54040a 100644 --- a/views/home.svelte +++ b/test/assets/views/home_test.svelte @@ -1,9 +1,8 @@ +

{mode}

+

BONJOUR lol

@@ -35,24 +38,24 @@ -

Direct access: {locals.direct}

+

Direct access: {$locals.direct}

-{#if locals.route('auth') === '/'} +{#if $locals.route('auth') === '/'} We're home! {:else} - We're somewhere else... {locals.route('auth')} + We're somewhere else... {$locals.route('auth')} {/if} -

The route to auth is {locals.route('auth')}

+

The route to auth is {$locals.route('auth')}

-

\locals.notcode

+

\$locals.notcode

-

{`{\\locals.escaped}`}

+

{`{\\$locals.escaped}`}

Blue!

- +

Dependency test: {depTest}

diff --git a/views/layout.svelte b/test/assets/views/layout.svelte similarity index 100% rename from views/layout.svelte rename to test/assets/views/layout.svelte diff --git a/test/views/test/throws_error.njk b/test/assets/views/test/throws_error.njk similarity index 100% rename from test/views/test/throws_error.njk rename to test/assets/views/test/throws_error.njk diff --git a/test/views/layouts/base.njk b/test/views/layouts/base.njk deleted file mode 100644 index a38ea56..0000000 --- a/test/views/layouts/base.njk +++ /dev/null @@ -1,59 +0,0 @@ -{% extends 'layouts/barebone.njk' %} -{% import 'macros.njk' as macros %} - -{% block _stylesheets %} - {{ super() }} - - {% block stylesheets %}{% endblock %} -{% endblock %} -{% block _scripts %} - {{ super() }} - {% block scripts %}{% endblock %} -{% endblock %} - -{% block header %} - - -{% endblock %} - -{% block _body %} -
- {{ macros.messages(flash) }} -
- -
- {% if h1 %} -

{{ h1 }}

- {% endif %} - {% if subtitle %} -

{{ subtitle }}

- {% endif %} - - {% block body %}{% endblock %} -
-{% endblock %} - -{% block footer %}{{ app.name }} v{{ app_version }} - all rights reserved.{% endblock %} diff --git a/tsconfig.frontend.json b/tsconfig.frontend.json new file mode 100644 index 0000000..40ceb4e --- /dev/null +++ b/tsconfig.frontend.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "target": "ESNext", + "module": "CommonJS", + "baseUrl": "build", + "rootDir": "build/ts-source", + "sourceRoot": "build/ts-source", + "outDir": "build/ts", + "declaration": false, + + "typeRoots": [], + "resolveJsonModule": false + }, + "include": [ + "build/ts-source/**/*" + ] +} diff --git a/tsconfig.svelte.json b/tsconfig.svelte.json new file mode 100644 index 0000000..8d18bb6 --- /dev/null +++ b/tsconfig.svelte.json @@ -0,0 +1,10 @@ +{ + "extends": "@tsconfig/svelte/tsconfig.json", + "compilerOptions": { + "outDir": "public/js", + "rootDir": "build", + }, + "include": [ + "assets/ts/**/*" + ], +} diff --git a/tsconfig.views.json b/tsconfig.views.json deleted file mode 100644 index 8be8e69..0000000 --- a/tsconfig.views.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "@tsconfig/svelte/tsconfig.json", - "compilerOptions": { - "outDir": "public/js", - "rootDir": "./build", - "target": "ES6", - "strict": true, - "lib": [ - "es2020", - "DOM" - ], - "typeRoots": [ - "./node_modules/@types" - ] - }, - "include": [ - "assets/ts/**/*" - ] -} diff --git a/views/home_dep.svelte b/views/home_dep.svelte deleted file mode 100644 index 68cc9b2..0000000 --- a/views/home_dep.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -

Simple dep test

-

\locals.

-

\locals.

- -

locals: {locals}

-

\locals.route: {locals.route}
{locals.dump(typeof locals.route)}

-

\locals.dump: {locals.dump('bonjour')}

-

\locals.dump: {locals.dump(locals.app)}

-

\locals.dump: {locals.dump(NaN)}

-

\locals.route: {locals.route('auth')}

-

\locals.route: {locals.route('home')}