Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@prairielearn/html-ejs

Package Overview
Dependencies
Maintainers
2
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@prairielearn/html-ejs - npm Package Compare versions

Comparing version
1.1.19
to
2.0.0
+3
.mocharc.cjs
module.exports = {
require: ['tsx'],
};
+11
-0
# @prairielearn/html-ejs
## 2.0.0
### Major Changes
- 4f30b7e: Publish as native ESM
### Patch Changes
- Updated dependencies [4f30b7e]
- @prairielearn/html@4.0.0
## 1.1.19

@@ -4,0 +15,0 @@

+7
-14

@@ -1,11 +0,5 @@

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.renderEjs = void 0;
const ejs_1 = __importDefault(require("ejs"));
const path_1 = __importDefault(require("path"));
const url_1 = require("url");
const html_1 = require("@prairielearn/html");
import ejs from 'ejs';
import path from 'path';
import { fileURLToPath } from 'url';
import { unsafeHtml } from '@prairielearn/html';
/**

@@ -23,3 +17,3 @@ * This is a shim to allow for the use of EJS templates inside of HTML tagged

*/
function renderEjs(filePathOrUrl, template, data = {}) {
export function renderEjs(filePathOrUrl, template, data = {}) {
let resolvedPath = filePathOrUrl;

@@ -29,7 +23,6 @@ // This allows for us to pass `import.meta.url` to this function in ES Modules

if (filePathOrUrl.startsWith('file://')) {
resolvedPath = (0, url_1.fileURLToPath)(filePathOrUrl);
resolvedPath = fileURLToPath(filePathOrUrl);
}
return (0, html_1.unsafeHtml)(ejs_1.default.render(template, data, { views: [path_1.default.dirname(resolvedPath)] }));
return unsafeHtml(ejs.render(template, data, { views: [path.dirname(resolvedPath)] }));
}
exports.renderEjs = renderEjs;
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AACtB,gDAAwB;AACxB,6BAAoC;AAEpC,6CAAqE;AACrE;;;;;;;;;;;GAWG;AACH,SAAgB,SAAS,CAAC,aAAqB,EAAE,QAAgB,EAAE,OAAY,EAAE;IAC/E,IAAI,YAAY,GAAG,aAAa,CAAC;IAEjC,8EAA8E;IAC9E,oDAAoD;IACpD,IAAI,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,YAAY,GAAG,IAAA,mBAAa,EAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAA,iBAAU,EAAC,aAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC;AAVD,8BAUC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAuB,MAAM,oBAAoB,CAAC;AACrE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,aAAqB,EAAE,QAAgB,EAAE,OAAY,EAAE;IAC/E,IAAI,YAAY,GAAG,aAAa,CAAC;IAEjC,8EAA8E;IAC9E,oDAAoD;IACpD,IAAI,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC","sourcesContent":["import ejs from 'ejs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nimport { unsafeHtml, type HtmlSafeString } from '@prairielearn/html';\n/**\n * This is a shim to allow for the use of EJS templates inside of HTML tagged\n * template literals.\n *\n * The resulting string is assumed to be appropriately escaped and will be used\n * verbatim in the resulting HTML.\n *\n * @param filePathOrUrl The path or file URL of the file from which relative includes should be resolved.\n * @param template The raw EJS template string.\n * @param data Any data to be made available to the template.\n * @returns The rendered EJS.\n */\nexport function renderEjs(filePathOrUrl: string, template: string, data: any = {}): HtmlSafeString {\n let resolvedPath = filePathOrUrl;\n\n // This allows for us to pass `import.meta.url` to this function in ES Modules\n // environments where `__filename` is not available.\n if (filePathOrUrl.startsWith('file://')) {\n resolvedPath = fileURLToPath(filePathOrUrl);\n }\n\n return unsafeHtml(ejs.render(template, data, { views: [path.dirname(resolvedPath)] }));\n}\n"]}

@@ -1,13 +0,11 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const chai_1 = require("chai");
const index_1 = require("./index");
import { assert } from 'chai';
import { renderEjs } from './index.js';
describe('renderEjs', () => {
it('renders EJS template without data', () => {
chai_1.assert.equal((0, index_1.renderEjs)(__filename, '<p>Hello</p>', {}).toString(), '<p>Hello</p>');
assert.equal(renderEjs(import.meta.url, '<p>Hello</p>', {}).toString(), '<p>Hello</p>');
});
it('renders EJS template with data', () => {
chai_1.assert.equal((0, index_1.renderEjs)(__filename, '<p>Hello <%= name %></p>', { name: 'Divya' }).toString(), '<p>Hello Divya</p>');
assert.equal(renderEjs(import.meta.url, '<p>Hello <%= name %></p>', { name: 'Divya' }).toString(), '<p>Hello Divya</p>');
});
});
//# sourceMappingURL=index.test.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,mCAAoC;AAEpC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,aAAM,CAAC,KAAK,CAAC,IAAA,iBAAS,EAAC,UAAU,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,aAAM,CAAC,KAAK,CACV,IAAA,iBAAS,EAAC,UAAU,EAAE,0BAA0B,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,EAC/E,oBAAoB,CACrB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,KAAK,CACV,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,0BAA0B,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,EACpF,oBAAoB,CACrB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { assert } from 'chai';\n\nimport { renderEjs } from './index.js';\n\ndescribe('renderEjs', () => {\n it('renders EJS template without data', () => {\n assert.equal(renderEjs(import.meta.url, '<p>Hello</p>', {}).toString(), '<p>Hello</p>');\n });\n\n it('renders EJS template with data', () => {\n assert.equal(\n renderEjs(import.meta.url, '<p>Hello <%= name %></p>', { name: 'Divya' }).toString(),\n '<p>Hello Divya</p>',\n );\n });\n});\n"]}
{
"name": "@prairielearn/html-ejs",
"version": "1.1.19",
"version": "2.0.0",
"type": "module",
"main": "dist/index.js",

@@ -13,7 +14,7 @@ "repository": {

"dev": "tsc --watch --preserveWatchOutput",
"test": "mocha --no-config --require tsx src/index.test.ts"
"test": "mocha src/**/*.test.ts"
},
"dependencies": {
"@prairielearn/html": "^3.1.7",
"ejs": "^3.1.9"
"@prairielearn/html": "^4.0.0",
"ejs": "^3.1.10"
},

@@ -26,5 +27,5 @@ "devDependencies": {

"mocha": "^10.4.0",
"tsx": "^4.7.1",
"tsx": "^4.9.3",
"typescript": "^5.4.3"
}
}

@@ -12,3 +12,3 @@ # `@prairielearn/html-ejs`

```js
```ts
import { html } from '@prairielearn/html';

@@ -20,5 +20,5 @@ import { renderEjs } from '@prairielearn/html-ejs';

<div>Hello, world!</div>
<div>${renderEjs(__filename, "<%- include('./hello'); %>", { name: 'Anjali' })}</div>
<div>${renderEjs(import.meta.url, "<%- include('./hello'); %>", { name: 'Anjali' })}</div>
`.toString(),
);
```
import { assert } from 'chai';
import { renderEjs } from './index';
import { renderEjs } from './index.js';
describe('renderEjs', () => {
it('renders EJS template without data', () => {
assert.equal(renderEjs(__filename, '<p>Hello</p>', {}).toString(), '<p>Hello</p>');
assert.equal(renderEjs(import.meta.url, '<p>Hello</p>', {}).toString(), '<p>Hello</p>');
});

@@ -12,3 +12,3 @@

assert.equal(
renderEjs(__filename, '<p>Hello <%= name %></p>', { name: 'Divya' }).toString(),
renderEjs(import.meta.url, '<p>Hello <%= name %></p>', { name: 'Divya' }).toString(),
'<p>Hello Divya</p>',

@@ -15,0 +15,0 @@ );