template-file
Advanced tools
Comparing version 5.1.0 to 6.0.0-0
@@ -1,2 +0,1 @@ | ||
#!/usr/bin/env node | ||
export {}; |
@@ -1,65 +0,1 @@ | ||
#!/usr/bin/env node | ||
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
}) : function(o, v) { | ||
o["default"] = v; | ||
}); | ||
var __importStar = (this && this.__importStar) || function (mod) { | ||
if (mod && mod.__esModule) return mod; | ||
var result = {}; | ||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
__setModuleDefault(result, mod); | ||
return result; | ||
}; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const meow_1 = __importDefault(require("meow")); | ||
const path_1 = __importDefault(require("path")); | ||
const _1 = require("."); | ||
function main() { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const cli = meow_1.default(` | ||
Usage | ||
$ template-file <dataFile> <sourceGlob> <destination> | ||
Arguments | ||
data Data file in JSON; used to replace variables in source files | ||
sourceGlob Files to process; see [glob](https://npmjs.com/glob) for syntax | ||
destination Destination directory where processed files go | ||
Examples | ||
Just handle one file | ||
$ template-file data.json template.txt build/ | ||
Compile all .abc files in src/ to build/ | ||
$ template-file stuff.json 'src/**/*.abc' build/ | ||
`); | ||
if (cli.input.length !== 3) { | ||
cli.showHelp(2); | ||
} | ||
const [dataFile, sourceGlob, destination] = cli.input; | ||
const data = yield Promise.resolve().then(() => __importStar(require(path_1.default.resolve(dataFile)))); | ||
_1.renderToFolder(sourceGlob, destination, data); | ||
}); | ||
} | ||
main(); | ||
//# sourceMappingURL=cli.js.map | ||
(()=>{var e={706:(e,t,n)=>{"use strict";n.d(t,{renderToFolder:()=>m});const r=require("@blakek/deep");var s=n(147);const o=require("glob");var i=n.n(o);const a=require("mkdirp");var c=n.n(a),u=n(17),l=n.n(u);const d=require("util");class p{value;next;constructor(e){this.value=e}}class f{#e;#t;#n;constructor(){this.clear()}enqueue(e){const t=new p(e);this.#e?(this.#t.next=t,this.#t=t):(this.#e=t,this.#t=t),this.#n++}dequeue(){const e=this.#e;if(e)return this.#e=this.#e.next,this.#n--,e.value}clear(){this.#e=void 0,this.#t=void 0,this.#n=0}get size(){return this.#n}*[Symbol.iterator](){let e=this.#e;for(;e;)yield e.value,e=e.next}}const h=function(e){if(!Number.isInteger(e)&&e!==Number.POSITIVE_INFINITY||!(e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up");const t=new f;let n=0;const r=async(e,r,s)=>{n++;const o=(async()=>e(...s))();r(o);try{await o}catch{}n--,t.size>0&&t.dequeue()()},s=(s,...o)=>new Promise((i=>{((s,o,i)=>{t.enqueue(r.bind(void 0,s,o,i)),(async()=>{await Promise.resolve(),n<e&&t.size>0&&t.dequeue()()})()})(s,i,o)}));return Object.defineProperties(s,{activeCount:{get:()=>n},pendingCount:{get:()=>t.size},clearQueue:{value:()=>{t.clear()}}}),s}(Number(process.env.TF_FILE_LIMIT)||1024);function v(e,t){const n=function(){const e=String.raw`([\s\S]*?)`,t=String.raw`\n*`,n=String.raw`\s*`,r=`{{${n}`,s=`${n}}}`,o=`${String.raw`[ \t]*`}${r}(?:#(.*?))${s}${t}`,i=String.raw`${n}${r}/\1${s}`;return new RegExp(`${o}${e}${i}|${r}(.*?)${s}`,"g")}();return e.replace(n,((e,n,s,o)=>{if(void 0!==n)return(0,r.get)(n,t).map((e=>v(s,{...e,this:e}))).join("\n");const i=(0,r.get)(o,t);return null==i?"":"function"==typeof i?i():i}))}async function g(e,t){return v(await s.promises.readFile(e,{encoding:"utf-8"}),t)}async function m(e,t,n){return await c()(t),async function(e,t,n){const r=(0,d.promisify)(i()),s=await r(e);for(const e of s){const r=await h((()=>g(e,t)));n(e,r)}}(e,n,(function(e,n){const r=l().join(t,l().basename(e));s.promises.writeFile(r,n)}))}},70:e=>{function t(e){return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}))}t.keys=()=>[],t.resolve=t,t.id=70,e.exports=t},147:e=>{"use strict";e.exports=require("fs")},17:e=>{"use strict";e.exports=require("path")}},t={};function n(r){var s=t[r];if(void 0!==s)return s.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r);var e=n(147),t=n(17),s=n.n(t),o=n(706);!async function(){const t=process.argv.slice(2),r=t.some((e=>["-h","--help","help"].includes(e))),i=t.some((e=>["-v","--version","version"].includes(e))),a=3===t.length;if(i)return void console.log(await async function(){return(await e.promises.readFile(s().resolve(__dirname,"../package.json"),"utf-8").then(JSON.parse)).version}());!r&&a||(function(){const e=function(e){const t="\n Usage\n $ template-file <dataFile> <sourceGlob> <destination>\n\n Arguments\n dataFile Data file in JSON; used to replace variables in source files\n sourceGlob Files to process; see [glob](https://npmjs.com/glob) for syntax\n destination Destination directory where processed files go\n\n Examples\n Just handle one file\n $ template-file data.json template.txt build/\n\n Compile all .abc files in src/ to build/\n $ template-file stuff.json 'src/**/*.abc' build/\n ".replace(/^(\s*\n)*|(\s*\n)*$/g,""),n=t.match(/^\s*/)[0].length;return t.replace(new RegExp(`^ {${n}}`,"gm"),"")}();console.log(e)}(),process.exit(r?0:1));const[c,u,l]=t,d=await n(70)(s().resolve(c));(0,o.renderToFolder)(u,l,d)}()})();var s=exports;for(var o in r)s[o]=r[o];r.__esModule&&Object.defineProperty(s,"__esModule",{value:!0})})(); |
@@ -1,91 +0,1 @@ | ||
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.renderToFolder = exports.renderFile = exports.render = exports.renderGlob = void 0; | ||
const deep_1 = require("@blakek/deep"); | ||
const fs_1 = require("fs"); | ||
const glob_1 = __importDefault(require("glob")); | ||
const mkdirp_1 = __importDefault(require("mkdirp")); | ||
const path_1 = __importDefault(require("path")); | ||
const util_1 = require("util"); | ||
const utils_1 = require("./utils"); | ||
function renderGlob(sourceGlob, data, onFileCallback) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const glob = util_1.promisify(glob_1.default); | ||
const files = yield glob(sourceGlob); | ||
for (const file of files) { | ||
const contents = yield utils_1.limitOpenFiles(() => renderFile(file, data)); | ||
onFileCallback(file, contents); | ||
} | ||
}); | ||
} | ||
exports.renderGlob = renderGlob; | ||
function getTemplateRegEx() { | ||
const anything = String.raw `([\s\S]*?)`; | ||
const optionalNewLines = String.raw `\n*`; | ||
const optionalWhitespace = String.raw `\s*`; | ||
const spaceNotNewLines = String.raw `[ \t]*`; | ||
const tagStart = `{{${optionalWhitespace}`; | ||
const tagEnd = `${optionalWhitespace}}}`; | ||
const sectionStart = `${spaceNotNewLines}${tagStart}(?:#(.*?))${tagEnd}${optionalNewLines}`; | ||
const sectionEnd = String.raw `${optionalWhitespace}${tagStart}/\1${tagEnd}`; | ||
const repeatingSectionTag = `${sectionStart}${anything}${sectionEnd}`; | ||
const replacementTag = `${tagStart}(.*?)${tagEnd}`; | ||
const combinedRegEx = new RegExp(`${repeatingSectionTag}|${replacementTag}`, 'g'); | ||
return combinedRegEx; | ||
} | ||
function render(template, data) { | ||
const templateRegEx = getTemplateRegEx(); | ||
return template.replace(templateRegEx, (_match, sectionTag, sectionContents, replacementTag) => { | ||
// Tag is for a repeating section | ||
if (sectionTag !== undefined) { | ||
const replacements = deep_1.get(sectionTag, data); | ||
return replacements | ||
.map((subData) => { | ||
return render(sectionContents, Object.assign(Object.assign({}, subData), { this: subData })); | ||
}) | ||
.join('\n'); | ||
} | ||
const replacement = deep_1.get(replacementTag, data); | ||
// If a template variable is found but nothing is supplied to fill it, remove it | ||
if (replacement === null || replacement === undefined) { | ||
return ''; | ||
} | ||
// If the replacement is a function, replace the variable with the result of the function | ||
if (typeof replacement === 'function') { | ||
return replacement(); | ||
} | ||
return replacement; | ||
}); | ||
} | ||
exports.render = render; | ||
function renderFile(filepath, data) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const templateString = yield fs_1.promises.readFile(filepath, { encoding: 'utf-8' }); | ||
return render(templateString, data); | ||
}); | ||
} | ||
exports.renderFile = renderFile; | ||
function renderToFolder(sourceGlob, destination, data) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
yield mkdirp_1.default(destination); | ||
function writeFile(filename, contents) { | ||
const fullPath = path_1.default.join(destination, path_1.default.basename(filename)); | ||
fs_1.promises.writeFile(fullPath, contents); | ||
} | ||
return renderGlob(sourceGlob, data, writeFile); | ||
}); | ||
} | ||
exports.renderToFolder = renderToFolder; | ||
//# sourceMappingURL=index.js.map | ||
(()=>{"use strict";var e={147:e=>{e.exports=require("fs")},17:e=>{e.exports=require("path")}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{r.r(n),r.d(n,{render:()=>v,renderFile:()=>y,renderGlob:()=>h,renderToFolder:()=>b});const e=require("@blakek/deep");var t=r(147);const i=require("glob");var o=r.n(i);const s=require("mkdirp");var a=r.n(s),u=r(17),c=r.n(u);const l=require("util");class d{value;next;constructor(e){this.value=e}}class f{#e;#t;#r;constructor(){this.clear()}enqueue(e){const t=new d(e);this.#e?(this.#t.next=t,this.#t=t):(this.#e=t,this.#t=t),this.#r++}dequeue(){const e=this.#e;if(e)return this.#e=this.#e.next,this.#r--,e.value}clear(){this.#e=void 0,this.#t=void 0,this.#r=0}get size(){return this.#r}*[Symbol.iterator](){let e=this.#e;for(;e;)yield e.value,e=e.next}}const p=function(e){if(!Number.isInteger(e)&&e!==Number.POSITIVE_INFINITY||!(e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up");const t=new f;let r=0;const n=async(e,n,i)=>{r++;const o=(async()=>e(...i))();n(o);try{await o}catch{}r--,t.size>0&&t.dequeue()()},i=(i,...o)=>new Promise((s=>{((i,o,s)=>{t.enqueue(n.bind(void 0,i,o,s)),(async()=>{await Promise.resolve(),r<e&&t.size>0&&t.dequeue()()})()})(i,s,o)}));return Object.defineProperties(i,{activeCount:{get:()=>r},pendingCount:{get:()=>t.size},clearQueue:{value:()=>{t.clear()}}}),i}(Number(process.env.TF_FILE_LIMIT)||1024);async function h(e,t,r){const n=(0,l.promisify)(o()),i=await n(e);for(const e of i){const n=await p((()=>y(e,t)));r(e,n)}}function v(t,r){const n=function(){const e=String.raw`([\s\S]*?)`,t=String.raw`\n*`,r=String.raw`\s*`,n=`{{${r}`,i=`${r}}}`,o=`${String.raw`[ \t]*`}${n}(?:#(.*?))${i}${t}`,s=String.raw`${r}${n}/\1${i}`;return new RegExp(`${o}${e}${s}|${n}(.*?)${i}`,"g")}();return t.replace(n,((t,n,i,o)=>{if(void 0!==n)return(0,e.get)(n,r).map((e=>v(i,{...e,this:e}))).join("\n");const s=(0,e.get)(o,r);return null==s?"":"function"==typeof s?s():s}))}async function y(e,r){return v(await t.promises.readFile(e,{encoding:"utf-8"}),r)}async function b(e,r,n){return await a()(r),h(e,n,(function(e,n){const i=c().join(r,c().basename(e));t.promises.writeFile(i,n)}))}})();var i=exports;for(var o in n)i[o]=n[o];n.__esModule&&Object.defineProperty(i,"__esModule",{value:!0})})(); |
@@ -1,2 +0,1 @@ | ||
import pLimit from 'p-limit'; | ||
export declare const limitOpenFiles: pLimit.Limit; | ||
export declare const limitOpenFiles: import("p-limit").LimitFunction; |
{ | ||
"name": "template-file", | ||
"version": "5.1.0", | ||
"version": "6.0.0-0", | ||
"main": "dist/index.js", | ||
"exports": { | ||
"require": "./dist/index.js" | ||
}, | ||
"description": "🔀 Replace {{ variables }} in all your files", | ||
@@ -41,3 +44,3 @@ "repository": "https://github.com/gsandf/template-file", | ||
"require": [ | ||
"ts-node/register" | ||
"./.ava-entry.js" | ||
], | ||
@@ -52,22 +55,12 @@ "timeout": "30s" | ||
"dependencies": { | ||
"@blakek/deep": "^2.1.1", | ||
"@blakek/deep": "^2.2.0", | ||
"glob": "^7.1.6", | ||
"meow": "^8.0.0", | ||
"mkdirp": "^1.0.4", | ||
"p-limit": "^3.1.0" | ||
"p-limit": "^4.0.0" | ||
}, | ||
"devDependencies": { | ||
"@babel/core": "^7.12.9", | ||
"@babel/plugin-proposal-class-properties": "^7.12.1", | ||
"@babel/plugin-transform-runtime": "^7.12.1", | ||
"@babel/preset-env": "^7.12.7", | ||
"@babel/preset-typescript": "^7.12.7", | ||
"@rollup/plugin-babel": "^5.2.2", | ||
"@rollup/plugin-commonjs": "^17.0.0", | ||
"@rollup/plugin-node-resolve": "^11.0.0", | ||
"@rollup/plugin-typescript": "^8.0.0", | ||
"@types/glob": "^7.1.3", | ||
"@types/mkdirp": "^1.0.1", | ||
"@typescript-eslint/eslint-plugin": "^4.9.0", | ||
"@typescript-eslint/parser": "^4.9.0", | ||
"@typescript-eslint/eslint-plugin": "^5.3.1", | ||
"@typescript-eslint/parser": "^5.3.1", | ||
"amper-scripts": "^1.0.0-1", | ||
@@ -79,16 +72,16 @@ "ava": "^3.13.0", | ||
"rimraf": "^3.0.2", | ||
"rollup": "^2.34.0", | ||
"rollup-plugin-terser": "^7.0.2", | ||
"ts-node": "^9.0.0", | ||
"typescript": "^4.1.2" | ||
"ts-loader": "^9.2.6", | ||
"ts-node": "^10.4.0", | ||
"typescript": "^4.1.2", | ||
"webpack": "^5.63.0", | ||
"webpack-cli": "^4.9.1" | ||
}, | ||
"peerDependencies": {}, | ||
"scripts": { | ||
"build:clean": "rimraf ./dist", | ||
"build:js": "tsc --build", | ||
"build": "run-s build:clean build:js", | ||
"build": "webpack --mode=production", | ||
"build:dev": "webpack --mode=development", | ||
"format-check": "amper-scripts format-check '*.{js,ts,tsx}' 'src/**/*.{js,ts,tsx}'", | ||
"format": "amper-scripts format-write '*.{js,ts,tsx}' 'src/**/*.{js,ts,tsx}'", | ||
"lint": "amper-scripts lint --config ./.eslintrc.js '*.{js,ts,tsx}' 'src/**/*.{js,ts,tsx}'", | ||
"prepack": "run-s validate build", | ||
"prepack": "run-s build validate", | ||
"test": "ava", | ||
@@ -95,0 +88,0 @@ "typeCheck": "tsc --noEmit", |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Trivial Package
Supply chain riskPackages less than 10 lines of code are easily copied into your own project and may not warrant the additional supply chain risk of an external dependency.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
4
15
36208
8
9
3
5
2
+ Addedp-limit@4.0.0(transitive)
+ Addedyocto-queue@1.1.1(transitive)
- Removedmeow@^8.0.0
- Removed@babel/code-frame@7.26.2(transitive)
- Removed@babel/helper-validator-identifier@7.25.9(transitive)
- Removed@types/minimist@1.2.5(transitive)
- Removed@types/normalize-package-data@2.4.4(transitive)
- Removedarrify@1.0.1(transitive)
- Removedcamelcase@5.3.1(transitive)
- Removedcamelcase-keys@6.2.2(transitive)
- Removeddecamelize@1.2.0(transitive)
- Removeddecamelize-keys@1.1.1(transitive)
- Removederror-ex@1.3.2(transitive)
- Removedfind-up@4.1.0(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedhard-rejection@2.1.0(transitive)
- Removedhasown@2.0.2(transitive)
- Removedhosted-git-info@2.8.94.1.0(transitive)
- Removedindent-string@4.0.0(transitive)
- Removedis-arrayish@0.2.1(transitive)
- Removedis-core-module@2.16.1(transitive)
- Removedis-plain-obj@1.1.0(transitive)
- Removedjs-tokens@4.0.0(transitive)
- Removedjson-parse-even-better-errors@2.3.1(transitive)
- Removedkind-of@6.0.3(transitive)
- Removedlines-and-columns@1.2.4(transitive)
- Removedlocate-path@5.0.0(transitive)
- Removedlru-cache@6.0.0(transitive)
- Removedmap-obj@1.0.14.3.0(transitive)
- Removedmeow@8.1.2(transitive)
- Removedmin-indent@1.0.1(transitive)
- Removedminimist-options@4.1.0(transitive)
- Removednormalize-package-data@2.5.03.0.3(transitive)
- Removedp-limit@2.3.03.1.0(transitive)
- Removedp-locate@4.1.0(transitive)
- Removedp-try@2.2.0(transitive)
- Removedparse-json@5.2.0(transitive)
- Removedpath-exists@4.0.0(transitive)
- Removedpath-parse@1.0.7(transitive)
- Removedpicocolors@1.1.1(transitive)
- Removedquick-lru@4.0.1(transitive)
- Removedread-pkg@5.2.0(transitive)
- Removedread-pkg-up@7.0.1(transitive)
- Removedredent@3.0.0(transitive)
- Removedresolve@1.22.10(transitive)
- Removedsemver@5.7.27.7.1(transitive)
- Removedspdx-correct@3.2.0(transitive)
- Removedspdx-exceptions@2.5.0(transitive)
- Removedspdx-expression-parse@3.0.1(transitive)
- Removedspdx-license-ids@3.0.21(transitive)
- Removedstrip-indent@3.0.0(transitive)
- Removedsupports-preserve-symlinks-flag@1.0.0(transitive)
- Removedtrim-newlines@3.0.1(transitive)
- Removedtype-fest@0.18.10.6.00.8.1(transitive)
- Removedvalidate-npm-package-license@3.0.4(transitive)
- Removedyallist@4.0.0(transitive)
- Removedyargs-parser@20.2.9(transitive)
- Removedyocto-queue@0.1.0(transitive)
Updated@blakek/deep@^2.2.0
Updatedp-limit@^4.0.0