
Security News
Open Source Maintainers Feeling the Weight of the EU’s Cyber Resilience Act
The EU Cyber Resilience Act is prompting compliance requests that open source maintainers may not be obligated or equipped to handle.
string-alter
Advanced tools
Alters a string by replacing multiple range fragments in one fast pass. Works in node and browsers.
var StringAlter = require("string-alter");
var string =
'let x = (a, b, c = 998) =>'
+ 'a + b + c;console.log(x(1, 1) === 1000)'
+ '\n'
+ 'console.log(((function(){return (a)=>a*22.032})())("321") === "321"*22.032)'
;
var alter = new StringAlter(string);
alter
.replace(0, 3, "var")//'let'
.insert(8, "function")//'function ' + "(a, b"
.remove(13, 22)//', c = 998'
.remove(23, 26)//' =>'
.wrap(26, 35, "{", "}", {extend: true})
.insert(26,
"var " + alter.get(15, 16) + " = arguments[2];" //var c = arguments[2];
+ "if(" + alter.get(15, 16) + " === void 0)" //if(c === void 0)
+ alter.get(15, 16) + " = " + alter.get(19, 22) + ";"//c = 998;
)
.insert(26, "return ")//'return ' + "a + b + c;"
.insert(98, "function")//'function ' + "(a)"
.remove(101, 103)//'=>'
.wrap(103, 111, "{", "}", {extend: true})
.insert(103, "return ")//'return ' + "a*22.032"
;
var result = alter.apply();
result ===
'var x = function(a, b)'
+ '{var c = arguments[2];if(c === void 0)c = 998;return a + b + c};console.log(x(1, 1) === 1000)'
+ '\n'
+ 'console.log(((function(){return function(a){return a*22.032}})())("321") === "321"*22.032)'
;
The fragments does not need to be sorted but must not overlap. More examples in test
var alter = new StringAlter(source: string, options: Object?);
// options is optional. See 'StringAlter options'
alter.replace(from: number, to: number, str: string): StringAlter
Replace substring from between "from" and "to" positions to given one "str"
alter.insert(pos: number, str: string): StringAlter
Insert substring to "pos" position
alter.wrap(from: number, to: number, begin: string, end: string): StringAlter
Insert "begin" string to "from" position and "end" string to "to" position
alter.remove(from: number, to: number): StringAlter
Remove substring
alter.get(from: number, to: number): Object
Get substring from original string wrapped in special object with toString function
alter.apply(): string
Apply changes. Return result string
{
policy: {}// see 'Changes policy'
}
{
"ruleName": resolve//resolve should be "allow" or "exclude", or any other value which will be interpreted as "error"
}
This is a set of rules that can allow
or exclude
some unobvious changes
fromMoreThanTo
(default: 'error') - when changes start position is is larger than end positionunUniqueRemove
(default: 'error') - second remove
call for already removed fragment (with the same method parameter values)eraseInErase
(default: 'allow') - remove
or replace
inside another remove
or replace
Install using npm
npm install string-alter
var StringAlter = require("string-alter");
Clone the repo and include it in a script tag
git clone https://github.com/termi/StringAlter.git
<script src="StringAlter/dist/StringAlter.js"></script>
MIT
FAQs
String alter
The npm package string-alter receives a total of 703 weekly downloads. As such, string-alter popularity was classified as not popular.
We found that string-alter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The EU Cyber Resilience Act is prompting compliance requests that open source maintainers may not be obligated or equipped to handle.
Security News
Crates.io adds Trusted Publishing support, enabling secure GitHub Actions-based crate releases without long-lived API tokens.
Research
/Security News
Undocumented protestware found in 28 npm packages disrupts UI for Russian-language users visiting Russian and Belarusian domains.