@eggjs/view-nunjucks 3.0.0-beta.34 → 3.0.0-beta.36

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.
@@ -1,9 +1,13 @@
1
- import { Application } from 'egg';
2
- import type { NunjucksEnvironment } from '../../lib/environment.ts';
3
- export default class NunjucksApplication extends Application {
4
- /**
5
- * nunjucks environment
6
- * @see https://mozilla.github.io/nunjucks/api.html#environment
7
- */
8
- get nunjucks(): NunjucksEnvironment;
1
+ import { NunjucksEnvironment } from "../../lib/environment.js";
2
+ import { Application } from "egg";
3
+
4
+ //#region src/app/extend/application.d.ts
5
+ declare class NunjucksApplication extends Application {
6
+ /**
7
+ * nunjucks environment
8
+ * @see https://mozilla.github.io/nunjucks/api.html#environment
9
+ */
10
+ get nunjucks(): NunjucksEnvironment;
9
11
  }
12
+ //#endregion
13
+ export { NunjucksApplication as default };
@@ -1,16 +1,18 @@
1
- import { Application } from 'egg';
2
1
  import { createEngine } from "../../lib/engine.js";
3
- const NUNJUCKS = Symbol('app#nunjucks');
4
- export default class NunjucksApplication extends Application {
5
- /**
6
- * nunjucks environment
7
- * @see https://mozilla.github.io/nunjucks/api.html#environment
8
- */
9
- get nunjucks() {
10
- if (!this[NUNJUCKS]) {
11
- this[NUNJUCKS] = createEngine(this);
12
- }
13
- return this[NUNJUCKS];
14
- }
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUduRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFeEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxtQkFBb0IsU0FBUSxXQUFXO0lBQzFEOzs7T0FHRztJQUNILElBQUksUUFBUTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQXdCLENBQUM7SUFDL0MsQ0FBQztDQUNGIn0=
2
+ import { Application } from "egg";
3
+
4
+ //#region src/app/extend/application.ts
5
+ const NUNJUCKS = Symbol("app#nunjucks");
6
+ var NunjucksApplication = class extends Application {
7
+ /**
8
+ * nunjucks environment
9
+ * @see https://mozilla.github.io/nunjucks/api.html#environment
10
+ */
11
+ get nunjucks() {
12
+ if (!this[NUNJUCKS]) this[NUNJUCKS] = createEngine(this);
13
+ return this[NUNJUCKS];
14
+ }
15
+ };
16
+
17
+ //#endregion
18
+ export { NunjucksApplication as default };
package/dist/app.d.ts CHANGED
@@ -1,7 +1,11 @@
1
- import type { Application, ILifecycleBoot } from 'egg';
2
- export default class ViewNunjucksAppBoot implements ILifecycleBoot {
3
- app: Application;
4
- constructor(app: Application);
5
- configDidLoad(): void;
6
- didLoad(): Promise<void>;
1
+ import { Application, ILifecycleBoot } from "egg";
2
+
3
+ //#region src/app.d.ts
4
+ declare class ViewNunjucksAppBoot implements ILifecycleBoot {
5
+ app: Application;
6
+ constructor(app: Application);
7
+ configDidLoad(): void;
8
+ didLoad(): Promise<void>;
7
9
  }
10
+ //#endregion
11
+ export { ViewNunjucksAppBoot as default };
package/dist/app.js CHANGED
@@ -1,14 +1,18 @@
1
1
  import { NunjucksView } from "./lib/view.js";
2
- export default class ViewNunjucksAppBoot {
3
- app;
4
- constructor(app) {
5
- this.app = app;
6
- }
7
- configDidLoad() {
8
- this.app.view.use('nunjucks', NunjucksView);
9
- }
10
- async didLoad() {
11
- await this.app.nunjucks.ready();
12
- }
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sbUJBQW1CO0lBQ3RDLEdBQUcsQ0FBYztJQUNqQixZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FDRiJ9
2
+
3
+ //#region src/app.ts
4
+ var ViewNunjucksAppBoot = class {
5
+ app;
6
+ constructor(app) {
7
+ this.app = app;
8
+ }
9
+ configDidLoad() {
10
+ this.app.view.use("nunjucks", NunjucksView);
11
+ }
12
+ async didLoad() {
13
+ await this.app.nunjucks.ready();
14
+ }
15
+ };
16
+
17
+ //#endregion
18
+ export { ViewNunjucksAppBoot as default };
@@ -1,36 +1,38 @@
1
- export interface NunjucksConfig {
2
- /**
3
- * Controls if output with dangerous characters are escaped automatically
4
- * @default true
5
- */
6
- autoescape: boolean;
7
- /**
8
- * Throw errors when outputting a null/undefined value
9
- * @default false
10
- */
11
- throwOnUndefined: boolean;
12
- /**
13
- * Automatically remove trailing newlines from a block/tag
14
- * @default false
15
- */
16
- trimBlocks: boolean;
17
- /**
18
- * Automatically remove leading whitespace from a block/tag
19
- * @default false
20
- */
21
- lstripBlocks: boolean;
22
- /**
23
- * Use a cache and recompile templates each time. false in local env.
24
- * @default true
25
- */
26
- cache: boolean;
27
- /**
28
- * Internal property set by engine, do not set directly
29
- * @internal
30
- */
31
- noCache?: boolean;
1
+ //#region src/config/config.default.d.ts
2
+ interface NunjucksConfig {
3
+ /**
4
+ * Controls if output with dangerous characters are escaped automatically
5
+ * @default true
6
+ */
7
+ autoescape: boolean;
8
+ /**
9
+ * Throw errors when outputting a null/undefined value
10
+ * @default false
11
+ */
12
+ throwOnUndefined: boolean;
13
+ /**
14
+ * Automatically remove trailing newlines from a block/tag
15
+ * @default false
16
+ */
17
+ trimBlocks: boolean;
18
+ /**
19
+ * Automatically remove leading whitespace from a block/tag
20
+ * @default false
21
+ */
22
+ lstripBlocks: boolean;
23
+ /**
24
+ * Use a cache and recompile templates each time. false in local env.
25
+ * @default true
26
+ */
27
+ cache: boolean;
28
+ /**
29
+ * Internal property set by engine, do not set directly
30
+ * @internal
31
+ */
32
+ noCache?: boolean;
32
33
  }
33
34
  declare const _default: {
34
- nunjucks: NunjucksConfig;
35
+ nunjucks: NunjucksConfig;
35
36
  };
36
- export default _default;
37
+ //#endregion
38
+ export { NunjucksConfig, _default as default };
@@ -1,10 +1,11 @@
1
- export default {
2
- nunjucks: {
3
- autoescape: true,
4
- throwOnUndefined: false,
5
- trimBlocks: false,
6
- lstripBlocks: false,
7
- cache: true,
8
- },
9
- };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlDQSxlQUFlO0lBQ2IsUUFBUSxFQUFFO1FBQ1IsVUFBVSxFQUFFLElBQUk7UUFDaEIsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixVQUFVLEVBQUUsS0FBSztRQUNqQixZQUFZLEVBQUUsS0FBSztRQUNuQixLQUFLLEVBQUUsSUFBSTtLQUNNO0NBQ3BCLENBQUMifQ==
1
+ //#region src/config/config.default.ts
2
+ var config_default_default = { nunjucks: {
3
+ autoescape: true,
4
+ throwOnUndefined: false,
5
+ trimBlocks: false,
6
+ lstripBlocks: false,
7
+ cache: true
8
+ } };
9
+
10
+ //#endregion
11
+ export { config_default_default as default };
@@ -1,5 +1,8 @@
1
- import type { NunjucksConfig } from './config.default.ts';
1
+ import { NunjucksConfig } from "./config.default.js";
2
+
3
+ //#region src/config/config.local.d.ts
2
4
  declare const _default: {
3
- nunjucks: Partial<NunjucksConfig>;
5
+ nunjucks: Partial<NunjucksConfig>;
4
6
  };
5
- export default _default;
7
+ //#endregion
8
+ export { _default as default };
@@ -1,6 +1,5 @@
1
- export default {
2
- nunjucks: {
3
- cache: false,
4
- },
5
- };
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmxvY2FsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWcubG9jYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsZUFBZTtJQUNiLFFBQVEsRUFBRTtRQUNSLEtBQUssRUFBRSxLQUFLO0tBQ2M7Q0FDN0IsQ0FBQyJ9
1
+ //#region src/config/config.local.ts
2
+ var config_local_default = { nunjucks: { cache: false } };
3
+
4
+ //#endregion
5
+ export { config_local_default as default };
package/dist/index.d.ts CHANGED
@@ -1,10 +1,13 @@
1
- import './types.ts';
2
- import { type EggPluginFactory } from 'egg';
1
+ import { createHelper } from "./lib/helper.js";
2
+ import { NunjucksEnvironment } from "./lib/environment.js";
3
+ import { NunjucksConfig } from "./config/config.default.js";
4
+ import "./types.js";
5
+ import { NunjucksFileLoader } from "./lib/file_loader.js";
6
+ import { NunjucksView } from "./lib/view.js";
7
+ import { createEngine } from "./lib/engine.js";
8
+ import { EggPluginFactory } from "egg";
9
+
10
+ //#region src/index.d.ts
3
11
  declare const _default: EggPluginFactory;
4
- export default _default;
5
- export { NunjucksEnvironment } from './lib/environment.ts';
6
- export { NunjucksFileLoader } from './lib/file_loader.ts';
7
- export { createHelper } from './lib/helper.ts';
8
- export { NunjucksView } from './lib/view.ts';
9
- export { createEngine } from './lib/engine.ts';
10
- export type { NunjucksConfig } from './config/config.default.ts';
12
+ //#endregion
13
+ export { type NunjucksConfig, NunjucksEnvironment, NunjucksFileLoader, NunjucksView, createEngine, createHelper, _default as default };
package/dist/index.js CHANGED
@@ -1,14 +1,17 @@
1
- import "./types.js";
2
- import { definePluginFactory } from 'egg';
3
- export default definePluginFactory({
4
- name: 'nunjucks',
5
- enable: true,
6
- path: import.meta.dirname,
7
- dependencies: ['security', 'view'],
1
+ import { NunjucksView } from "./lib/view.js";
2
+ import { NunjucksFileLoader } from "./lib/file_loader.js";
3
+ import { createHelper } from "./lib/helper.js";
4
+ import { NunjucksEnvironment } from "./lib/environment.js";
5
+ import { createEngine } from "./lib/engine.js";
6
+ import { definePluginFactory } from "egg";
7
+
8
+ //#region src/index.ts
9
+ var src_default = definePluginFactory({
10
+ name: "nunjucks",
11
+ enable: true,
12
+ path: import.meta.dirname,
13
+ dependencies: ["security", "view"]
8
14
  });
9
- export { NunjucksEnvironment } from "./lib/environment.js";
10
- export { NunjucksFileLoader } from "./lib/file_loader.js";
11
- export { createHelper } from "./lib/helper.js";
12
- export { NunjucksView } from "./lib/view.js";
13
- export { createEngine } from "./lib/engine.js";
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLENBQUM7QUFFcEIsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLEtBQUssQ0FBQztBQUVqRSxlQUFlLG1CQUFtQixDQUFDO0lBQ2pDLElBQUksRUFBRSxVQUFVO0lBQ2hCLE1BQU0sRUFBRSxJQUFJO0lBQ1osSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTztJQUN6QixZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDO0NBQ25DLENBQXFCLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDIn0=
15
+
16
+ //#endregion
17
+ export { NunjucksEnvironment, NunjucksFileLoader, NunjucksView, createEngine, createHelper, src_default as default };
@@ -1,8 +1,13 @@
1
- import type { Application } from 'egg';
2
- import { NunjucksEnvironment } from './environment.ts';
1
+ import { NunjucksEnvironment } from "./environment.js";
2
+ import { Application } from "egg";
3
+
4
+ //#region src/lib/engine.d.ts
5
+
3
6
  /**
4
- * Create nunjucks environment
5
- * @param app - application instance
6
- * @returns nunjucks environment instance
7
- */
8
- export declare function createEngine(app: Application): NunjucksEnvironment;
7
+ * Create nunjucks environment
8
+ * @param app - application instance
9
+ * @returns nunjucks environment instance
10
+ */
11
+ declare function createEngine(app: Application): NunjucksEnvironment;
12
+ //#endregion
13
+ export { createEngine };
@@ -1,16 +1,20 @@
1
1
  import { NunjucksEnvironment } from "./environment.js";
2
+
3
+ //#region src/lib/engine.ts
2
4
  /**
3
- * Create nunjucks environment
4
- * @param app - application instance
5
- * @returns nunjucks environment instance
6
- */
7
- export function createEngine(app) {
8
- const coreLogger = app.loggers.coreLogger;
9
- const viewPaths = app.config.view.root;
10
- coreLogger.info('[@eggjs/view-nunjucks] loading templates from %j', viewPaths);
11
- const config = app.config.nunjucks;
12
- config.noCache = !config.cache;
13
- delete config.cache;
14
- return new NunjucksEnvironment(app);
5
+ * Create nunjucks environment
6
+ * @param app - application instance
7
+ * @returns nunjucks environment instance
8
+ */
9
+ function createEngine(app) {
10
+ const coreLogger = app.loggers.coreLogger;
11
+ const viewPaths = app.config.view.root;
12
+ coreLogger.info("[@eggjs/view-nunjucks] loading templates from %j", viewPaths);
13
+ const config = app.config.nunjucks;
14
+ config.noCache = !config.cache;
15
+ delete config.cache;
16
+ return new NunjucksEnvironment(app);
15
17
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdkQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBZ0I7SUFDM0MsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFFMUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0RBQWtELEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFL0UsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFlLENBQUM7SUFDMUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDL0IsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRXBCLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxDQUFDIn0=
18
+
19
+ //#endregion
20
+ export { createEngine };
@@ -1,19 +1,24 @@
1
- import nunjucks from 'nunjucks';
2
- import type { Application } from 'egg';
3
- import { createHelper } from './helper.ts';
1
+ import { createHelper } from "./helper.js";
2
+ import { Application } from "egg";
3
+ import nunjucks from "nunjucks";
4
+
5
+ //#region src/lib/environment.d.ts
6
+
4
7
  /**
5
- * Extend nunjucks environment, see {@link https://mozilla.github.io/nunjucks/api.html#environment}
6
- */
7
- export declare class NunjucksEnvironment extends nunjucks.Environment {
8
- app: Application;
9
- ViewHelper: ReturnType<typeof createHelper>;
10
- constructor(app: Application);
11
- /**
12
- * clean template cache
13
- * @param name - full path
14
- * @return clean count
15
- */
16
- cleanCache(name?: string): number;
17
- ready(): Promise<void>;
18
- private loadFilter;
8
+ * Extend nunjucks environment, see {@link https://mozilla.github.io/nunjucks/api.html#environment}
9
+ */
10
+ declare class NunjucksEnvironment extends nunjucks.Environment {
11
+ app: Application;
12
+ ViewHelper: ReturnType<typeof createHelper>;
13
+ constructor(app: Application);
14
+ /**
15
+ * clean template cache
16
+ * @param name - full path
17
+ * @return clean count
18
+ */
19
+ cleanCache(name?: string): number;
20
+ ready(): Promise<void>;
21
+ private loadFilter;
19
22
  }
23
+ //#endregion
24
+ export { NunjucksEnvironment };
@@ -1,76 +1,63 @@
1
- import path from 'node:path';
2
- import nunjucks from 'nunjucks';
3
1
  import { NunjucksFileLoader } from "./file_loader.js";
4
2
  import { createHelper } from "./helper.js";
3
+ import path from "node:path";
4
+ import nunjucks from "nunjucks";
5
+
6
+ //#region src/lib/environment.ts
5
7
  /**
6
- * Extend nunjucks environment, see {@link https://mozilla.github.io/nunjucks/api.html#environment}
7
- */
8
- export class NunjucksEnvironment extends nunjucks.Environment {
9
- app;
10
- ViewHelper;
11
- constructor(app) {
12
- const fileLoader = new NunjucksFileLoader(app);
13
- super(fileLoader, app.config.nunjucks);
14
- this.app = app;
15
- // monkey patch `escape` with `app.Helper.prototype.escape` provided by `egg-security` for better performance
16
- nunjucks.lib.escape = app.Helper.prototype.escape;
17
- // http://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine
18
- // @ts-expect-error missing memberLookup type definition
19
- const originMemberLookup = nunjucks.runtime.memberLookup;
20
- // @ts-expect-error missing memberLookup type definition
21
- nunjucks.runtime.memberLookup = function (...args) {
22
- const val = args[1];
23
- if (val === 'prototype' || val === 'constructor')
24
- return null;
25
- return originMemberLookup(...args);
26
- };
27
- // @ts-expect-error missing filters type definition
28
- this.ViewHelper = createHelper(app, this.filters);
29
- }
30
- /**
31
- * clean template cache
32
- * @param name - full path
33
- * @return clean count
34
- */
35
- cleanCache(name) {
36
- let count = 0;
37
- const loaders = this.loaders;
38
- for (const loader of loaders) {
39
- if (name) {
40
- // support full path && tpl name
41
- /* istanbul ignore else */
42
- if (loader.cache[name]) {
43
- count++;
44
- loader.cache[name] = null;
45
- }
46
- }
47
- else {
48
- for (const cacheName in loader.cache) {
49
- count++;
50
- loader.cache[cacheName] = null;
51
- }
52
- }
53
- }
54
- return count;
55
- }
56
- async ready() {
57
- await this.loadFilter();
58
- }
59
- // load `app/extend/filter.js` from app/framework/plugin into nunjucks
60
- async loadFilter() {
61
- for (const unit of this.app.loader.getLoadUnits()) {
62
- const filterPath = this.app.loader.resolveModule(path.join(unit.path, 'app/extend/filter'));
63
- if (!filterPath)
64
- continue;
65
- const filters = await this.app.loader.loadFile(filterPath);
66
- if (!filters)
67
- continue;
68
- const filterKeys = Object.keys(filters);
69
- for (const key of filterKeys) {
70
- this.addFilter(key, filters[key]);
71
- }
72
- this.app.coreLogger.info('[@eggjs/view-nunjucks] load filter %j from %s', filterKeys, filterPath);
73
- }
74
- }
75
- }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUU3QixPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFHaEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzQzs7R0FFRztBQUNILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxRQUFRLENBQUMsV0FBVztJQUMzRCxHQUFHLENBQWM7SUFDakIsVUFBVSxDQUFrQztJQUU1QyxZQUFZLEdBQWdCO1FBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0MsS0FBSyxDQUFDLFVBQWlCLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUVmLDZHQUE2RztRQUM1RyxRQUFRLENBQUMsR0FBVyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFFM0QsMEZBQTBGO1FBQzFGLHdEQUF3RDtRQUN4RCxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ3pELHdEQUF3RDtRQUN4RCxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxVQUFVLEdBQUcsSUFBVztZQUN0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxHQUFHLEtBQUssV0FBVyxJQUFJLEdBQUcsS0FBSyxhQUFhO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzlELE9BQU8sa0JBQWtCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFFRixtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxJQUFhO1FBQ3RCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLE1BQU0sT0FBTyxHQUFJLElBQVksQ0FBQyxPQUFPLENBQUM7UUFDdEMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULGdDQUFnQztnQkFDaEMsMEJBQTBCO2dCQUMxQixJQUFLLE1BQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsS0FBSyxFQUFFLENBQUM7b0JBQ1AsTUFBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3JDLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxNQUFNLFNBQVMsSUFBSyxNQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzlDLEtBQUssRUFBRSxDQUFDO29CQUNQLE1BQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUMxQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxzRUFBc0U7SUFDOUQsS0FBSyxDQUFDLFVBQVU7UUFDdEIsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ2xELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1lBQzVGLElBQUksQ0FBQyxVQUFVO2dCQUFFLFNBQVM7WUFDMUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLE9BQU87Z0JBQUUsU0FBUztZQUN2QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsK0NBQStDLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BHLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
8
+ * Extend nunjucks environment, see {@link https://mozilla.github.io/nunjucks/api.html#environment}
9
+ */
10
+ var NunjucksEnvironment = class extends nunjucks.Environment {
11
+ app;
12
+ ViewHelper;
13
+ constructor(app) {
14
+ const fileLoader = new NunjucksFileLoader(app);
15
+ super(fileLoader, app.config.nunjucks);
16
+ this.app = app;
17
+ nunjucks.lib.escape = app.Helper.prototype.escape;
18
+ const originMemberLookup = nunjucks.runtime.memberLookup;
19
+ nunjucks.runtime.memberLookup = function(...args) {
20
+ const val = args[1];
21
+ if (val === "prototype" || val === "constructor") return null;
22
+ return originMemberLookup(...args);
23
+ };
24
+ this.ViewHelper = createHelper(app, this.filters);
25
+ }
26
+ /**
27
+ * clean template cache
28
+ * @param name - full path
29
+ * @return clean count
30
+ */
31
+ cleanCache(name) {
32
+ let count = 0;
33
+ const loaders = this.loaders;
34
+ for (const loader of loaders) if (name) {
35
+ /* istanbul ignore else */
36
+ if (loader.cache[name]) {
37
+ count++;
38
+ loader.cache[name] = null;
39
+ }
40
+ } else for (const cacheName in loader.cache) {
41
+ count++;
42
+ loader.cache[cacheName] = null;
43
+ }
44
+ return count;
45
+ }
46
+ async ready() {
47
+ await this.loadFilter();
48
+ }
49
+ async loadFilter() {
50
+ for (const unit of this.app.loader.getLoadUnits()) {
51
+ const filterPath = this.app.loader.resolveModule(path.join(unit.path, "app/extend/filter"));
52
+ if (!filterPath) continue;
53
+ const filters = await this.app.loader.loadFile(filterPath);
54
+ if (!filters) continue;
55
+ const filterKeys = Object.keys(filters);
56
+ for (const key of filterKeys) this.addFilter(key, filters[key]);
57
+ this.app.coreLogger.info("[@eggjs/view-nunjucks] load filter %j from %s", filterKeys, filterPath);
58
+ }
59
+ }
60
+ };
61
+
62
+ //#endregion
63
+ export { NunjucksEnvironment };
@@ -1,19 +1,24 @@
1
- import { FileSystemLoader } from 'nunjucks';
2
- import type { Application } from 'egg';
1
+ import { Application } from "egg";
2
+ import { FileSystemLoader } from "nunjucks";
3
+
4
+ //#region src/lib/file_loader.d.ts
5
+
3
6
  /**
4
- * Extended nunjucks FileSystemLoader, will auto inject csrf && nonce
5
- */
6
- export declare class NunjucksFileLoader extends FileSystemLoader {
7
- private app;
8
- /**
9
- * @param app - application instance
10
- */
11
- constructor(app: Application);
12
- /**
13
- * Override getSource {@link https://mozilla.github.io/nunjucks/api.html#writing-a-loader},
14
- * inject csrfTag and nonce
15
- * @param name - the name of the template
16
- * @return html
17
- */
18
- getSource(name: string): any;
7
+ * Extended nunjucks FileSystemLoader, will auto inject csrf && nonce
8
+ */
9
+ declare class NunjucksFileLoader extends FileSystemLoader {
10
+ private app;
11
+ /**
12
+ * @param app - application instance
13
+ */
14
+ constructor(app: Application);
15
+ /**
16
+ * Override getSource {@link https://mozilla.github.io/nunjucks/api.html#writing-a-loader},
17
+ * inject csrfTag and nonce
18
+ * @param name - the name of the template
19
+ * @return html
20
+ */
21
+ getSource(name: string): any;
19
22
  }
23
+ //#endregion
24
+ export { NunjucksFileLoader };
@@ -1,37 +1,35 @@
1
- import { FileSystemLoader } from 'nunjucks';
1
+ import { FileSystemLoader } from "nunjucks";
2
+
3
+ //#region src/lib/file_loader.ts
2
4
  /**
3
- * Extended nunjucks FileSystemLoader, will auto inject csrf && nonce
4
- */
5
- export class NunjucksFileLoader extends FileSystemLoader {
6
- app;
7
- /**
8
- * @param app - application instance
9
- */
10
- constructor(app) {
11
- super(app.config.view.root, { noCache: app.config.nunjucks.noCache });
12
- this.app = app;
13
- }
14
- /**
15
- * Override getSource {@link https://mozilla.github.io/nunjucks/api.html#writing-a-loader},
16
- * inject csrfTag and nonce
17
- * @param name - the name of the template
18
- * @return html
19
- */
20
- getSource(name) {
21
- const result = super.getSource(name);
22
- /* istanbul ignore else */
23
- if (result) {
24
- const config = this.app.config.security;
25
- // auto inject `_csrf` attr to form field, rely on `app.injectCsrf` provided by `security` plugin
26
- if (!(config.csrf === false || config.csrf.enable === false)) {
27
- result.src = this.app.injectCsrf(result.src);
28
- }
29
- // auto inject `nonce` attr to script tag, rely on `app.injectNonce` provided by `security` plugin
30
- if (!(config.csp === false || config.csp.enable === false)) {
31
- result.src = this.app.injectNonce(result.src);
32
- }
33
- }
34
- return result;
35
- }
36
- }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZV9sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2ZpbGVfbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUc1Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxnQkFBZ0I7SUFDOUMsR0FBRyxDQUFjO0lBRXpCOztPQUVHO0lBQ0gsWUFBWSxHQUFnQjtRQUMxQixLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ00sU0FBUyxDQUFDLElBQVk7UUFDN0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQywwQkFBMEI7UUFDMUIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUN4QyxpR0FBaUc7WUFDakcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUNELGtHQUFrRztZQUNsRyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMzRCxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiJ9
5
+ * Extended nunjucks FileSystemLoader, will auto inject csrf && nonce
6
+ */
7
+ var NunjucksFileLoader = class extends FileSystemLoader {
8
+ app;
9
+ /**
10
+ * @param app - application instance
11
+ */
12
+ constructor(app) {
13
+ super(app.config.view.root, { noCache: app.config.nunjucks.noCache });
14
+ this.app = app;
15
+ }
16
+ /**
17
+ * Override getSource {@link https://mozilla.github.io/nunjucks/api.html#writing-a-loader},
18
+ * inject csrfTag and nonce
19
+ * @param name - the name of the template
20
+ * @return html
21
+ */
22
+ getSource(name) {
23
+ const result = super.getSource(name);
24
+ /* istanbul ignore else */
25
+ if (result) {
26
+ const config = this.app.config.security;
27
+ if (!(config.csrf === false || config.csrf.enable === false)) result.src = this.app.injectCsrf(result.src);
28
+ if (!(config.csp === false || config.csp.enable === false)) result.src = this.app.injectNonce(result.src);
29
+ }
30
+ return result;
31
+ }
32
+ };
33
+
34
+ //#endregion
35
+ export { NunjucksFileLoader };
@@ -1,11 +1,14 @@
1
- import type { Application, Context } from 'egg';
1
+ import { Application, Context } from "egg";
2
+
3
+ //#region src/lib/helper.d.ts
2
4
  type BuildInFilters = Record<string, any>;
3
5
  type HelperClass = new (ctx: Context) => any;
4
6
  /**
5
- * Create NunjucksViewHelper class
6
- * @param app - application instance
7
- * @param buildInFilters - nunjucks built-in filters
8
- * @returns NunjucksViewHelper class
9
- */
10
- export declare function createHelper(app: Application, buildInFilters: BuildInFilters): HelperClass;
11
- export {};
7
+ * Create NunjucksViewHelper class
8
+ * @param app - application instance
9
+ * @param buildInFilters - nunjucks built-in filters
10
+ * @returns NunjucksViewHelper class
11
+ */
12
+ declare function createHelper(app: Application, buildInFilters: BuildInFilters): HelperClass;
13
+ //#endregion
14
+ export { createHelper };
@@ -1,67 +1,65 @@
1
+ //#region src/lib/helper.ts
1
2
  /**
2
- * Create NunjucksViewHelper class
3
- * @param app - application instance
4
- * @param buildInFilters - nunjucks built-in filters
5
- * @returns NunjucksViewHelper class
6
- */
7
- export function createHelper(app, buildInFilters) {
8
- /**
9
- * NunjucksViewHelper extends {@link Helper} for nunjucks templates.
10
- * Wrap some helpers for safe string, and transform build-in filters to helpers
11
- */
12
- class NunjucksViewHelper extends app.Helper {
13
- constructor(ctx) {
14
- super(ctx);
15
- }
16
- /**
17
- * See {@link Helper#shtml}
18
- * @param str - the string that will be transformed to safe html
19
- * @return the result
20
- */
21
- shtml(str) {
22
- return this.safe(super.shtml(str));
23
- }
24
- /**
25
- * See {@link Helper#surl}
26
- * @param str - the string that will be transformed to safe url
27
- * @return the result
28
- */
29
- surl(str) {
30
- return this.safe(super.surl(str));
31
- }
32
- /**
33
- * See {@link Helper#sjs}
34
- * @param str - the string that will be transformed to safe js
35
- * @return the result
36
- */
37
- sjs(str) {
38
- return this.safe(super.sjs(str));
39
- }
40
- /**
41
- * don't use `super.helper.escape` directly due to `SafeString` checking
42
- * see https://github.com/mozilla/nunjucks/blob/master/src/filters.js#L119
43
- * buildInFilters.escape is `nunjucks.filters.escape` which will call `nunjucks.lib.escape`
44
- * and `nunjucks.lib.escape` is overrided by `app.Helper.escape` for better performance
45
- * @param str - the string that will be escaped
46
- * @return the result
47
- */
48
- escape(str) {
49
- return buildInFilters.escape(str);
50
- }
51
- /**
52
- * get hidden filed for `csrf`
53
- * @return html string
54
- */
55
- csrfTag() {
56
- return this.safe(`<input type="hidden" name="_csrf" value="${this.ctx.csrf}" />`);
57
- }
58
- }
59
- // fill view helper with nunjucks build-in filters
60
- for (const key in buildInFilters) {
61
- if (NunjucksViewHelper.prototype[key] == null) {
62
- NunjucksViewHelper.prototype[key] = buildInFilters[key];
63
- }
64
- }
65
- return NunjucksViewHelper;
3
+ * Create NunjucksViewHelper class
4
+ * @param app - application instance
5
+ * @param buildInFilters - nunjucks built-in filters
6
+ * @returns NunjucksViewHelper class
7
+ */
8
+ function createHelper(app, buildInFilters) {
9
+ /**
10
+ * NunjucksViewHelper extends {@link Helper} for nunjucks templates.
11
+ * Wrap some helpers for safe string, and transform build-in filters to helpers
12
+ */
13
+ class NunjucksViewHelper extends app.Helper {
14
+ constructor(ctx) {
15
+ super(ctx);
16
+ }
17
+ /**
18
+ * See {@link Helper#shtml}
19
+ * @param str - the string that will be transformed to safe html
20
+ * @return the result
21
+ */
22
+ shtml(str) {
23
+ return this.safe(super.shtml(str));
24
+ }
25
+ /**
26
+ * See {@link Helper#surl}
27
+ * @param str - the string that will be transformed to safe url
28
+ * @return the result
29
+ */
30
+ surl(str) {
31
+ return this.safe(super.surl(str));
32
+ }
33
+ /**
34
+ * See {@link Helper#sjs}
35
+ * @param str - the string that will be transformed to safe js
36
+ * @return the result
37
+ */
38
+ sjs(str) {
39
+ return this.safe(super.sjs(str));
40
+ }
41
+ /**
42
+ * don't use `super.helper.escape` directly due to `SafeString` checking
43
+ * see https://github.com/mozilla/nunjucks/blob/master/src/filters.js#L119
44
+ * buildInFilters.escape is `nunjucks.filters.escape` which will call `nunjucks.lib.escape`
45
+ * and `nunjucks.lib.escape` is overrided by `app.Helper.escape` for better performance
46
+ * @param str - the string that will be escaped
47
+ * @return the result
48
+ */
49
+ escape(str) {
50
+ return buildInFilters.escape(str);
51
+ }
52
+ /**
53
+ * get hidden filed for `csrf`
54
+ * @return html string
55
+ */
56
+ csrfTag() {
57
+ return this.safe(`<input type="hidden" name="_csrf" value="${this.ctx.csrf}" />`);
58
+ }
59
+ }
60
+ for (const key in buildInFilters) if (NunjucksViewHelper.prototype[key] == null) NunjucksViewHelper.prototype[key] = buildInFilters[key];
61
+ return NunjucksViewHelper;
66
62
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQWdCLEVBQUUsY0FBOEI7SUFDM0U7OztPQUdHO0lBQ0gsTUFBTSxrQkFBbUIsU0FBUSxHQUFHLENBQUMsTUFBTTtRQUN6QyxZQUFZLEdBQVk7WUFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsQ0FBQztRQUVEOzs7O1dBSUc7UUFDSCxLQUFLLENBQUMsR0FBVztZQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUVEOzs7O1dBSUc7UUFDSCxJQUFJLENBQUMsR0FBVztZQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVEOzs7O1dBSUc7UUFDSCxHQUFHLENBQUMsR0FBVztZQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVEOzs7Ozs7O1dBT0c7UUFDSCxNQUFNLENBQUMsR0FBVztZQUNoQixPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVEOzs7V0FHRztRQUNILE9BQU87WUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsNENBQTRDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQztRQUNwRixDQUFDO0tBQ0Y7SUFFRCxrREFBa0Q7SUFDbEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNqQyxJQUFLLGtCQUFrQixDQUFDLFNBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdEQsa0JBQWtCLENBQUMsU0FBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLGtCQUFpQyxDQUFDO0FBQzNDLENBQUMifQ==
63
+
64
+ //#endregion
65
+ export { createHelper };
@@ -1,26 +1,31 @@
1
- import '../types.ts';
2
- import type { Context } from 'egg';
3
- import { ViewEngineBase } from '@eggjs/view';
4
- import type { createHelper } from './helper.ts';
1
+ import { createHelper } from "./helper.js";
2
+ import "../types.js";
3
+ import { ViewEngineBase } from "@eggjs/view";
4
+ import { Context } from "egg";
5
+
6
+ //#region src/lib/view.d.ts
7
+
5
8
  /**
6
- * Nunjucks view class for rendering templates
7
- */
8
- export declare class NunjucksView extends ViewEngineBase {
9
- viewHelper: InstanceType<ReturnType<typeof createHelper>>;
10
- constructor(ctx: Context);
11
- /**
12
- * Render a template file
13
- * @param name - template name
14
- * @param locals - template locals
15
- * @returns rendered html string
16
- */
17
- render(name: string, locals: Record<string, any>): Promise<string>;
18
- /**
19
- * Render a template string
20
- * @param tpl - template string
21
- * @param locals - template locals
22
- * @param opts - render options
23
- * @returns rendered html string
24
- */
25
- renderString(tpl: string, locals: Record<string, any>, opts?: any): Promise<string>;
9
+ * Nunjucks view class for rendering templates
10
+ */
11
+ declare class NunjucksView extends ViewEngineBase {
12
+ viewHelper: InstanceType<ReturnType<typeof createHelper>>;
13
+ constructor(ctx: Context);
14
+ /**
15
+ * Render a template file
16
+ * @param name - template name
17
+ * @param locals - template locals
18
+ * @returns rendered html string
19
+ */
20
+ render(name: string, locals: Record<string, any>): Promise<string>;
21
+ /**
22
+ * Render a template string
23
+ * @param tpl - template string
24
+ * @param locals - template locals
25
+ * @param opts - render options
26
+ * @returns rendered html string
27
+ */
28
+ renderString(tpl: string, locals: Record<string, any>, opts?: any): Promise<string>;
26
29
  }
30
+ //#endregion
31
+ export { NunjucksView };
package/dist/lib/view.js CHANGED
@@ -1,56 +1,51 @@
1
- import "../types.js";
2
- import { ViewEngineBase } from '@eggjs/view';
1
+ import { ViewEngineBase } from "@eggjs/view";
2
+
3
+ //#region src/lib/view.ts
3
4
  /**
4
- * Nunjucks view class for rendering templates
5
- */
6
- export class NunjucksView extends ViewEngineBase {
7
- viewHelper;
8
- constructor(ctx) {
9
- super(ctx);
10
- this.viewHelper = new this.app.nunjucks.ViewHelper(ctx);
11
- }
12
- /**
13
- * Render a template file
14
- * @param name - template name
15
- * @param locals - template locals
16
- * @returns rendered html string
17
- */
18
- async render(name, locals) {
19
- locals.helper = this.viewHelper;
20
- return new Promise((resolve, reject) => {
21
- this.app.nunjucks.render(name, locals, (err, result) => {
22
- if (err)
23
- return reject(err);
24
- resolve(result);
25
- });
26
- });
27
- }
28
- /**
29
- * Render a template string
30
- * @param tpl - template string
31
- * @param locals - template locals
32
- * @param opts - render options
33
- * @returns rendered html string
34
- */
35
- async renderString(tpl, locals, opts) {
36
- locals.helper = this.viewHelper;
37
- return new Promise((resolve, reject) => {
38
- if (opts) {
39
- // @ts-expect-error missing opts type definition
40
- this.app.nunjucks.renderString(tpl, locals, opts, (err, result) => {
41
- if (err)
42
- return reject(err);
43
- resolve(result);
44
- });
45
- }
46
- else {
47
- this.app.nunjucks.renderString(tpl, locals, (err, result) => {
48
- if (err)
49
- return reject(err);
50
- resolve(result);
51
- });
52
- }
53
- });
54
- }
55
- }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSTdDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxjQUFjO0lBQzlDLFVBQVUsQ0FBZ0Q7SUFFMUQsWUFBWSxHQUFZO1FBQ3RCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFZLEVBQUUsTUFBMkI7UUFDcEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFpQixFQUFFLE1BQXFCLEVBQUUsRUFBRTtnQkFDbEYsSUFBSSxHQUFHO29CQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QixPQUFPLENBQUMsTUFBTyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQVcsRUFBRSxNQUEyQixFQUFFLElBQVU7UUFDckUsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxnREFBZ0Q7Z0JBQ2hELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEdBQWlCLEVBQUUsTUFBcUIsRUFBRSxFQUFFO29CQUM3RixJQUFJLEdBQUc7d0JBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxNQUFPLENBQUMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFpQixFQUFFLE1BQXFCLEVBQUUsRUFBRTtvQkFDdkYsSUFBSSxHQUFHO3dCQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM1QixPQUFPLENBQUMsTUFBTyxDQUFDLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIn0=
5
+ * Nunjucks view class for rendering templates
6
+ */
7
+ var NunjucksView = class extends ViewEngineBase {
8
+ viewHelper;
9
+ constructor(ctx) {
10
+ super(ctx);
11
+ this.viewHelper = new this.app.nunjucks.ViewHelper(ctx);
12
+ }
13
+ /**
14
+ * Render a template file
15
+ * @param name - template name
16
+ * @param locals - template locals
17
+ * @returns rendered html string
18
+ */
19
+ async render(name, locals) {
20
+ locals.helper = this.viewHelper;
21
+ return new Promise((resolve, reject) => {
22
+ this.app.nunjucks.render(name, locals, (err, result) => {
23
+ if (err) return reject(err);
24
+ resolve(result);
25
+ });
26
+ });
27
+ }
28
+ /**
29
+ * Render a template string
30
+ * @param tpl - template string
31
+ * @param locals - template locals
32
+ * @param opts - render options
33
+ * @returns rendered html string
34
+ */
35
+ async renderString(tpl, locals, opts) {
36
+ locals.helper = this.viewHelper;
37
+ return new Promise((resolve, reject) => {
38
+ if (opts) this.app.nunjucks.renderString(tpl, locals, opts, (err, result) => {
39
+ if (err) return reject(err);
40
+ resolve(result);
41
+ });
42
+ else this.app.nunjucks.renderString(tpl, locals, (err, result) => {
43
+ if (err) return reject(err);
44
+ resolve(result);
45
+ });
46
+ });
47
+ }
48
+ };
49
+
50
+ //#endregion
51
+ export { NunjucksView };
package/dist/types.d.ts CHANGED
@@ -1,17 +1,19 @@
1
- import type { NunjucksConfig } from './config/config.default.ts';
2
- import type { NunjucksEnvironment } from './lib/environment.ts';
3
- declare module 'egg' {
4
- interface EggAppConfig {
5
- /**
6
- * Nunjucks plugin configuration
7
- */
8
- nunjucks: NunjucksConfig;
9
- }
10
- interface Application {
11
- /**
12
- * Nunjucks environment instance
13
- * @see https://mozilla.github.io/nunjucks/api.html#environment
14
- */
15
- get nunjucks(): NunjucksEnvironment;
16
- }
17
- }
1
+ import { NunjucksEnvironment } from "./lib/environment.js";
2
+ import { NunjucksConfig } from "./config/config.default.js";
3
+
4
+ //#region src/types.d.ts
5
+ declare module "egg" {
6
+ interface EggAppConfig {
7
+ /**
8
+ * Nunjucks plugin configuration
9
+ */
10
+ nunjucks: NunjucksConfig;
11
+ }
12
+ interface Application {
13
+ /**
14
+ * Nunjucks environment instance
15
+ * @see https://mozilla.github.io/nunjucks/api.html#environment
16
+ */
17
+ get nunjucks(): NunjucksEnvironment;
18
+ }
19
+ }
package/dist/types.js CHANGED
@@ -1,2 +1 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
1
+ export { };
package/package.json CHANGED
@@ -1,8 +1,32 @@
1
1
  {
2
2
  "name": "@eggjs/view-nunjucks",
3
- "version": "3.0.0-beta.34",
3
+ "version": "3.0.0-beta.36",
4
4
  "description": "nunjucks view plugin for egg",
5
+ "keywords": [
6
+ "egg",
7
+ "egg-plugin",
8
+ "egg-view",
9
+ "eggPlugin",
10
+ "nunjucks",
11
+ "template",
12
+ "view"
13
+ ],
14
+ "homepage": "https://github.com/eggjs/egg/tree/next/plugins/view-nunjucks#readme",
15
+ "bugs": "https://github.com/eggjs/egg/issues",
16
+ "license": "MIT",
17
+ "author": "TZ <atian25@qq.com>",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/eggjs/egg.git",
21
+ "directory": "plugins/view-nunjucks"
22
+ },
23
+ "files": [
24
+ "dist"
25
+ ],
5
26
  "type": "module",
27
+ "main": "./dist/index.js",
28
+ "module": "./dist/index.js",
29
+ "types": "./dist/index.d.ts",
6
30
  "exports": {
7
31
  ".": "./dist/index.js",
8
32
  "./app": "./dist/app.js",
@@ -20,60 +44,29 @@
20
44
  "publishConfig": {
21
45
  "access": "public"
22
46
  },
23
- "files": [
24
- "dist"
25
- ],
26
- "keywords": [
27
- "egg",
28
- "eggPlugin",
29
- "egg-plugin",
30
- "egg-view",
31
- "nunjucks",
32
- "view",
33
- "template"
34
- ],
35
47
  "dependencies": {
36
48
  "nunjucks": "^3.2.4"
37
49
  },
38
- "peerDependencies": {
39
- "@eggjs/view": "4.0.0-beta.34",
40
- "egg": "4.1.0-beta.34"
41
- },
42
50
  "devDependencies": {
43
51
  "@types/common-tags": "^1.8.4",
44
52
  "@types/nunjucks": "^3.2.6",
45
53
  "cheerio": "^1.0.0",
46
54
  "common-tags": "^1.8.2",
47
- "marked": "^16.0.0",
55
+ "marked": "^17.0.0",
48
56
  "nunjucks-markdown": "^2.0.1",
49
- "oxlint": "^1.24.0",
50
- "rimraf": "^6.0.1",
51
- "tsdown": "0.15.11",
52
57
  "typescript": "^5.9.3",
53
- "vitest": "4.0.5",
54
- "@eggjs/view": "4.0.0-beta.34",
55
- "@eggjs/mock": "7.0.0-beta.34",
56
- "egg": "4.1.0-beta.34"
58
+ "@eggjs/mock": "7.0.0-beta.36",
59
+ "@eggjs/view": "4.0.0-beta.36",
60
+ "egg": "4.1.0-beta.36"
61
+ },
62
+ "peerDependencies": {
63
+ "@eggjs/view": "4.0.0-beta.36",
64
+ "egg": "4.1.0-beta.36"
57
65
  },
58
66
  "engines": {
59
67
  "node": ">=22.18.0"
60
68
  },
61
- "repository": {
62
- "type": "git",
63
- "url": "git+https://github.com/eggjs/egg.git",
64
- "directory": "plugins/view-nunjucks"
65
- },
66
- "bugs": "https://github.com/eggjs/egg/issues",
67
- "homepage": "https://github.com/eggjs/egg/tree/next/plugins/view-nunjucks#readme",
68
- "author": "TZ <atian25@qq.com>",
69
- "license": "MIT",
70
- "main": "./dist/index.js",
71
- "module": "./dist/index.js",
72
- "types": "./dist/index.d.ts",
73
69
  "scripts": {
74
- "build": "tsdown && rimraf dist *.tsbuildinfo && tsc -p tsconfig.build.json",
75
- "typecheck": "tsc --noEmit",
76
- "lint": "oxlint --type-aware",
77
- "test": "vitest run"
70
+ "typecheck": "tsgo --noEmit"
78
71
  }
79
72
  }