3.4.10 • Published 7 months ago

dk-bff-server v3.4.10

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

Simple Backend-For-Frontend server

npm license size

!WARNING
It's fine if you use this library from NPM package with a static versioning in case you want it for some pet-project or to test it's capabilities.

But for production use it's strongly recommended to create a fork, because I do not write Changelogs and may break / add some functionality without notice.

Extensible BFF server based on Express that handles static and security.

Features

  • Handles static resources with Brotli/Gzip support (should be generated by bundler)
  • Supports security rules
  • Supports HTTPS (locally) / HTTP protocols
  • Supports async template modifications for SSR
  • Restricts cache for HTML template
  • Can respond with versionIdentifier using GET /get-app-version for notifying users when new version is released
  • Handles 404 errors
  • Gathers performance metrics that could be injected in template

Usage

  1. Create file ex. ./server.ts
import path from 'path';

import { runServer } from 'dk-bff-server';

import { env } from '../env';
import { paths } from '../paths';

void runServer({
  port: env.EXPRESS_PORT, // number
  https: env.HTTPS_BY_NODE, // boolean
  templatePath: path.resolve(paths.build, 'template.html'), // path string
  staticFilesPath: paths.build, // path string
  versionIdentifier: env.GIT_COMMIT, // string
  compressedFilesGenerated: env.GENERATE_COMPRESSED, // boolean
  templateModifier: ({ template }) => {
    return Promise.resolve(
      template
        .replace(
          '<!-- HOST_DEPENDENT_CONFIG -->',
          JSON.stringify({
            API_HOST: env.API_HOST,
            IMAGE_STORAGE_URL: env.IMAGE_STORAGE_URL,
          })
        )
    );
  },
  injectMeasures: ({ template, measures }) =>
    template.replace('<!-- MEASURES -->', JSON.stringify({ server: measures }, null, 2)),
  
  customMiddlewares: [
    (app) => {
      // your middlewares
      // app.use(cookieParser());
    }
  ],

  /**
   * @docs: https://github.com/helmetjs/helmet
   * @docs: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
   */

  helmetOptions: {
    contentSecurityPolicy: {
      directives: {},
    }
  },
});
  1. Build via you bundler
  2. Start using recipe in package.json, ex.
{
  "scripts": {
    "start": "node -r dotenv/config ./build/server.js"
  }
}
3.4.10

7 months ago

3.4.5

11 months ago

3.4.4

12 months ago

3.4.3

12 months ago

3.4.2

12 months ago

3.4.0

1 year ago

3.4.1

1 year ago

3.3.9

1 year ago

3.3.8

1 year ago

3.3.6

1 year ago

3.3.1

1 year ago

3.3.0

1 year ago

3.3.5

1 year ago

3.3.4

1 year ago

3.3.3

1 year ago

3.3.2

1 year ago

3.2.24

1 year ago

3.2.23

1 year ago

3.2.26

1 year ago

3.2.25

1 year ago

3.2.28

1 year ago

3.2.27

1 year ago

3.2.20

1 year ago

3.2.22

1 year ago

3.2.21

1 year ago

3.2.17

1 year ago

3.2.16

1 year ago

3.2.19

1 year ago

3.2.18

1 year ago

3.2.15

1 year ago

3.2.9

1 year ago

3.2.13

1 year ago

3.2.12

1 year ago

3.2.14

1 year ago

3.2.11

1 year ago

3.2.10

1 year ago

3.2.8

1 year ago

3.2.7

1 year ago

3.2.6

1 year ago

3.2.6-alpha.0

1 year ago

3.2.2

1 year ago

3.2.3

1 year ago

3.2.1

1 year ago

3.2.0

1 year ago

3.1.43

1 year ago

3.1.42

1 year ago

3.1.41

1 year ago

3.1.40

1 year ago

3.1.39

1 year ago

3.1.38

1 year ago

3.1.16

2 years ago

3.1.15

2 years ago

3.1.18

2 years ago

3.1.17

2 years ago

3.1.23

2 years ago

3.1.22

2 years ago

3.1.25

2 years ago

3.1.24

2 years ago

3.1.27

2 years ago

3.1.26

2 years ago

3.1.29

2 years ago

3.1.28

2 years ago

3.1.21

2 years ago

3.1.20

2 years ago

3.1.19

2 years ago

3.1.34

2 years ago

3.1.33

2 years ago

3.1.36

2 years ago

3.1.35

2 years ago

3.1.37

2 years ago

3.1.30

2 years ago

3.1.32

2 years ago

3.1.31

2 years ago

3.1.12

2 years ago

3.1.11

2 years ago

3.1.14

2 years ago

3.1.13

2 years ago

3.1.9

2 years ago

3.1.8

2 years ago

3.0.18

2 years ago

3.0.19

2 years ago

3.0.9

2 years ago

3.0.4

2 years ago

3.1.2

2 years ago

3.0.13

2 years ago

3.1.1

2 years ago

3.0.10

2 years ago

3.1.0

2 years ago

3.0.11

2 years ago

3.1.7

2 years ago

3.0.16

2 years ago

3.0.8

2 years ago

3.1.6

2 years ago

3.0.17

2 years ago

3.0.7

2 years ago

3.1.5

2 years ago

3.0.14

2 years ago

3.0.6

2 years ago

3.1.4

2 years ago

3.0.15

2 years ago

2.2.1

2 years ago

2.1.3

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago