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

fretted-strings

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fretted-strings - npm Package Compare versions

Comparing version
1.0.1
to
2.0.0-alpha.0
+113
dist/index.cjs
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
createExtractFn: () => createExtractFn,
default: () => src_default,
extract: () => extract
});
module.exports = __toCommonJS(src_exports);
// src/position-converter.ts
function location2pos(content, location) {
let il = 0, ic = 0;
for (let i = 0; i < content.length; i++) {
const cc = content[i];
if (il === location.line) {
if (ic === location.character) {
return i;
}
}
if (cc === "\n") {
ic = 0;
il++;
} else {
ic++;
}
}
return content.length;
}
// src/index.ts
function getCols(line, pre = 0) {
const idx = line.indexOf("^");
if (idx === -1) {
return [];
}
return [idx + pre, ...getCols(line.slice(idx + 1), pre + idx + 1)];
}
var DEFAULT_TAG_START = "%%%";
var DEFAULT_TAG_END = "%%%";
function createExtractFn(tagStart, tagEnd) {
const extract2 = (content) => {
const lines = content.split("\n");
const actualLines = [];
const markInfos = [];
for (let i = 0; i < lines.length; ++i) {
const line = lines[i];
const trimmed = line.trim();
if (!trimmed.startsWith(tagStart) || !trimmed.endsWith(tagEnd)) {
actualLines.push(line);
continue;
}
const cols = getCols(line);
++i;
if (!lines[i])
break;
const trimmedNameLine = lines[i].trim();
if (!trimmedNameLine.startsWith(tagStart) || !trimmedNameLine.endsWith(tagEnd)) {
continue;
}
const names = trimmedNameLine.slice(tagStart.length, trimmedNameLine.length - tagEnd.length).replace("\\", " ").trim().split(/\s+/);
for (let j = 0; j < Math.min(cols.length, names.length); ++j) {
markInfos.push({
line: actualLines.length - 1,
col: cols[j],
name: names[j]
});
}
}
const actualContent = actualLines.join("\n");
const markers = markInfos.reduce(
(acc, { name, line, col: character }) => {
return {
...acc,
[name]: {
line,
character,
pos: location2pos(actualContent, { line, character })
}
};
},
{}
);
markers;
return [actualContent, markers];
};
return extract2;
}
var extract = createExtractFn(DEFAULT_TAG_START, DEFAULT_TAG_END);
var src_default = extract;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
createExtractFn,
extract
});
type Fret = {
line: number;
character: number;
pos: number;
};
type Frets<TKey extends string = string> = Record<TKey, Fret>;
type SplitByWS<TContent extends string, TAcc extends string[] = []> = TContent extends ` ${infer TRest}` ? SplitByWS<TRest, TAcc> : TContent extends `${infer TRest} ` ? SplitByWS<TRest, TAcc> : TContent extends `${infer THead} ${infer TRest}` ? SplitByWS<TRest, THead extends '^' ? TAcc : [...TAcc, THead]> : TContent extends '^' ? TAcc : [...TAcc, TContent];
type ExtractKeys<TLine extends string, TTagStart extends string, TTagEnd extends string> = TLine extends ` ${infer TRest}` ? ExtractKeys<TRest, TTagStart, TTagEnd> : TLine extends `${infer TRest} ` ? ExtractKeys<TRest, TTagStart, TTagEnd> : TLine extends `${TTagStart} ${infer TBody} ${TTagEnd}` ? SplitByWS<TBody> : [];
type ToLines<TContent extends string, TTagStart extends string, TTagEnd extends string, TAcc extends string[] = []> = TContent extends `${infer THead}\n${infer TRest}` ? ToLines<TRest, TTagStart, TTagEnd, [...TAcc, ...ExtractKeys<THead, TTagStart, TTagEnd>]> : TContent extends `\n${infer TRest}` ? ToLines<TRest, TTagStart, TTagEnd, TAcc> : TContent extends `${infer TRest}\n` ? ToLines<TRest, TTagStart, TTagEnd, TAcc> : [...TAcc, ...ExtractKeys<TContent, TTagStart, TTagEnd>];
type FretsKeys<TContent extends string, TTagStart extends string, TTagEnd extends string> = string extends TContent ? string : string extends TTagStart ? string : string extends TTagEnd ? string : ToLines<TContent, TTagStart, TTagEnd>[number];
declare function createExtractFn<TTagStart extends string, TTagEnd extends string>(tagStart: TTagStart, tagEnd: TTagEnd): <TContent extends string>(content: TContent) => readonly [string, Frets<FretsKeys<TContent, TTagStart, TTagEnd>>];
declare const extract: <TContent extends string>(content: TContent) => readonly [string, Frets<FretsKeys<TContent, "%%%", "%%%">>];
export { type Fret, type Frets, createExtractFn, extract as default, extract };
type Fret = {
line: number;
character: number;
pos: number;
};
type Frets<TKey extends string = string> = Record<TKey, Fret>;
type SplitByWS<TContent extends string, TAcc extends string[] = []> = TContent extends ` ${infer TRest}` ? SplitByWS<TRest, TAcc> : TContent extends `${infer TRest} ` ? SplitByWS<TRest, TAcc> : TContent extends `${infer THead} ${infer TRest}` ? SplitByWS<TRest, THead extends '^' ? TAcc : [...TAcc, THead]> : TContent extends '^' ? TAcc : [...TAcc, TContent];
type ExtractKeys<TLine extends string, TTagStart extends string, TTagEnd extends string> = TLine extends ` ${infer TRest}` ? ExtractKeys<TRest, TTagStart, TTagEnd> : TLine extends `${infer TRest} ` ? ExtractKeys<TRest, TTagStart, TTagEnd> : TLine extends `${TTagStart} ${infer TBody} ${TTagEnd}` ? SplitByWS<TBody> : [];
type ToLines<TContent extends string, TTagStart extends string, TTagEnd extends string, TAcc extends string[] = []> = TContent extends `${infer THead}\n${infer TRest}` ? ToLines<TRest, TTagStart, TTagEnd, [...TAcc, ...ExtractKeys<THead, TTagStart, TTagEnd>]> : TContent extends `\n${infer TRest}` ? ToLines<TRest, TTagStart, TTagEnd, TAcc> : TContent extends `${infer TRest}\n` ? ToLines<TRest, TTagStart, TTagEnd, TAcc> : [...TAcc, ...ExtractKeys<TContent, TTagStart, TTagEnd>];
type FretsKeys<TContent extends string, TTagStart extends string, TTagEnd extends string> = string extends TContent ? string : string extends TTagStart ? string : string extends TTagEnd ? string : ToLines<TContent, TTagStart, TTagEnd>[number];
declare function createExtractFn<TTagStart extends string, TTagEnd extends string>(tagStart: TTagStart, tagEnd: TTagEnd): <TContent extends string>(content: TContent) => readonly [string, Frets<FretsKeys<TContent, TTagStart, TTagEnd>>];
declare const extract: <TContent extends string>(content: TContent) => readonly [string, Frets<FretsKeys<TContent, "%%%", "%%%">>];
export { type Fret, type Frets, createExtractFn, extract as default, extract };
// src/position-converter.ts
function location2pos(content, location) {
let il = 0, ic = 0;
for (let i = 0; i < content.length; i++) {
const cc = content[i];
if (il === location.line) {
if (ic === location.character) {
return i;
}
}
if (cc === "\n") {
ic = 0;
il++;
} else {
ic++;
}
}
return content.length;
}
// src/index.ts
function getCols(line, pre = 0) {
const idx = line.indexOf("^");
if (idx === -1) {
return [];
}
return [idx + pre, ...getCols(line.slice(idx + 1), pre + idx + 1)];
}
var DEFAULT_TAG_START = "%%%";
var DEFAULT_TAG_END = "%%%";
function createExtractFn(tagStart, tagEnd) {
const extract2 = (content) => {
const lines = content.split("\n");
const actualLines = [];
const markInfos = [];
for (let i = 0; i < lines.length; ++i) {
const line = lines[i];
const trimmed = line.trim();
if (!trimmed.startsWith(tagStart) || !trimmed.endsWith(tagEnd)) {
actualLines.push(line);
continue;
}
const cols = getCols(line);
++i;
if (!lines[i])
break;
const trimmedNameLine = lines[i].trim();
if (!trimmedNameLine.startsWith(tagStart) || !trimmedNameLine.endsWith(tagEnd)) {
continue;
}
const names = trimmedNameLine.slice(tagStart.length, trimmedNameLine.length - tagEnd.length).replace("\\", " ").trim().split(/\s+/);
for (let j = 0; j < Math.min(cols.length, names.length); ++j) {
markInfos.push({
line: actualLines.length - 1,
col: cols[j],
name: names[j]
});
}
}
const actualContent = actualLines.join("\n");
const markers = markInfos.reduce(
(acc, { name, line, col: character }) => {
return {
...acc,
[name]: {
line,
character,
pos: location2pos(actualContent, { line, character })
}
};
},
{}
);
markers;
return [actualContent, markers];
};
return extract2;
}
var extract = createExtractFn(DEFAULT_TAG_START, DEFAULT_TAG_END);
var src_default = extract;
export {
createExtractFn,
src_default as default,
extract
};
+32
-54
{
"name": "fretted-strings",
"version": "1.0.1",
"version": "2.0.0-alpha.0",
"description": "Mark on your strings and get it's position",
"main": "lib/index.js",
"types": "lib/index.d.ts",
"type": "module",
"main": "dist/index.cjs",
"types": "dist/index.d.ts",
"scripts": {
"test": "yarn format:check && yarn lint && yarn jest",
"clean": "rimraf lib e2e/*.log",
"compile": "tsc -p .",
"lint": "eslint \"src/**/*.{ts,tsx}\"",
"jest": "jest",
"prettier": "prettier \"*.js\" \"*.md\" \"*.json\" \"*.yml\" \"src/**/*\"",
"format": "yarn prettier --write",
"format:check": "yarn prettier --check"
"prepare": "husky",
"clean": "rimraf -g dist",
"build": "tsup",
"lint": "npm run format:check && tsc",
"prettier": "prettier .",
"format": "npm run prettier -- --write",
"format:check": "npm run prettier -- --check",
"test": "jest"
},
"files": [
"dist"
],
"exports": {
".": {
"import": "./dist/index.js",
"require": "./dist/index.cjs",
"default": "./dist/index.js"
}
},
"repository": {

@@ -31,46 +42,13 @@ "type": "git",

"devDependencies": {
"@types/jest": "^25.1.3",
"@types/node": "^13.7.7",
"@typescript-eslint/eslint-plugin": "^2.13.0",
"@typescript-eslint/parser": "^2.13.0",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.8.0",
"husky": "^4.0.2",
"jest": "^25.1.0",
"prettier": "^1.19.1",
"pretty-quick": "^2.0.1",
"ts-jest": "^25.2.1",
"typescript": "^3.8.3",
"typescript-eslint-language-service": "^2.0.3"
},
"husky": {
"hooks": {
"pre-commit": "pretty-quick --staged"
}
},
"jest": {
"globals": {
"ts-jest": {
"diagnostics": false
}
},
"transform": {
"^.+\\.ts$": "ts-jest"
},
"testRegex": "(src/.*\\.test)\\.ts$",
"testPathIgnorePatterns": [
"/node_modules/",
"\\.d\\.ts$",
"lib/.*"
],
"collectCoverageFrom": [
"src/**/*.ts",
"!**/testing/**"
],
"moduleFileExtensions": [
"js",
"ts",
"json"
]
"@types/jest": "29.5.12",
"@types/node": "20.12.2",
"husky": "9.0.11",
"jest": "^29.7.0",
"prettier": "3.2.5",
"pretty-quick": "4.0.0",
"rimraf": "5.0.5",
"ts-jest": "29.1.2",
"tsup": "8.0.2",
"typescript": "5.4.3"
}
}

@@ -15,7 +15,6 @@ # fretted-strings

```ts
const assert = require('assert');
const { mark } = require('fretted-strings');
import assert from 'node:assert';
import { extract } from 'fretted-strings';
const frets = {};
const content = mark(
const [content, frets] = extract(
`

@@ -26,6 +25,5 @@ hogehoge

fooo`,
frets,
);
// Function `mark` returns a string which is removed lines enclosed by '%%%' tags from the parameter.
// The 1st value of the tuple is a string which is removed lines enclosed by '%%%' tags from the parameter.
assert.equal(

@@ -38,4 +36,4 @@ content,

// And this function assigns specified location whose name is represented
// as identifier under the `^` character to 2nd parameter.
// The 2nd value of the tuple is an object whose value represents location corresponding to "^" character.
// And names under "^" character are available to use as keys of the object.
assert.equal(frets.p1.pos, 7);

@@ -53,12 +51,7 @@ assert.equal(frets.p1.line, 1);

```ts
const { mark } = require('fretted-strings');
import { createExtractFn } from 'fretted-strings';
setOptions({
tagStart: '<!--%%',
tagEnd: '%%-->',
});
const extract = createExtractFn('<!--%%', '%%-->');
const frets = {};
mark(
const [content, frets] = extract(
`

@@ -71,32 +64,7 @@ <html>

`,
frets,
);
```
Or
```ts
const { mark } = require('fretted-strings');
const marker = new FretsMarker({
tagStart: '<!--%%',
tagEnd: '%%-->',
});
const frets = {};
marker.mark(
`
<html>
<div>hogehoge</div>
<!--%% ^ %%-->
<!--%% p %%-->
</html>
`,
frets,
);
```
## LICENSE
MIT

Sorry, the diff of this file is not supported yet

export declare type Fret = {
line: number;
character: number;
pos: number;
};
export declare type Frets = {
[key: string]: Fret;
};
export declare type FretsMarkerOptions = {
tagStart?: string;
tagEnd?: string;
};
export declare class FretsMarker {
private _opt;
constructor(options?: FretsMarkerOptions);
mark(content: string, frets: Frets): string;
}
export declare function setOptions(options: FretsMarkerOptions): void;
export declare function mark(content: string, frets: Frets): string;
export default mark;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const position_converter_1 = require("./position-converter");
function getCols(line, pre = 0) {
const idx = line.indexOf('^');
if (idx === -1) {
return [];
}
return [idx + pre, ...getCols(line.slice(idx + 1), pre + idx + 1)];
}
const DEFAULT_TAG_START = '%%%';
const DEFAULT_TAG_END = '%%%';
let defaultOpts = {
tagStart: DEFAULT_TAG_START,
tagEnd: DEFAULT_TAG_END,
};
class FretsMarker {
constructor(options = {}) {
this._opt = Object.assign({ tagStart: DEFAULT_TAG_START, tagEnd: DEFAULT_TAG_END }, options);
}
mark(content, frets) {
const lines = content.split('\n');
const actualLines = [];
const markInfos = [];
for (let i = 0; i < lines.length; ++i) {
const line = lines[i];
const trimmed = line.trim();
if (!trimmed.startsWith(this._opt.tagStart) || !trimmed.endsWith(this._opt.tagEnd)) {
actualLines.push(line);
continue;
}
const cols = getCols(line);
++i;
if (!lines[i])
break;
const trimmedNameLine = lines[i].trim();
if (!trimmedNameLine.startsWith(this._opt.tagStart) || !trimmedNameLine.endsWith(this._opt.tagEnd)) {
continue;
}
const names = trimmedNameLine
.slice(this._opt.tagStart.length, trimmedNameLine.length - this._opt.tagEnd.length)
.replace('\\', ' ')
.trim()
.split(/\s+/);
for (let j = 0; j < Math.min(cols.length, names.length); ++j) {
markInfos.push({
line: actualLines.length - 1,
col: cols[j],
name: names[j],
});
}
}
const actualContent = actualLines.join('\n');
const markers = markInfos.reduce((acc, { name, line, col: character }) => {
return Object.assign(Object.assign({}, acc), { [name]: {
line,
character,
pos: position_converter_1.location2pos(actualContent, { line, character }),
} });
}, {});
Object.assign(frets, markers);
return actualContent;
}
}
exports.FretsMarker = FretsMarker;
function setOptions(options) {
defaultOpts = Object.assign(Object.assign({}, defaultOpts), options);
}
exports.setOptions = setOptions;
function mark(content, frets) {
return new FretsMarker(defaultOpts).mark(content, frets);
}
exports.mark = mark;
exports.default = mark;
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
export declare function pos2location(content: string, pos: number): {
line: number;
character: number;
};
export declare function location2pos(content: string, location: {
line: number;
character: number;
}): number;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function pos2location(content, pos) {
let l = 0, c = 0;
for (let i = 0; i < content.length && i < pos; i++) {
const cc = content[i];
if (cc === '\n') {
c = 0;
l++;
}
else {
c++;
}
}
return { line: l, character: c };
}
exports.pos2location = pos2location;
function location2pos(content, location) {
let il = 0, ic = 0;
for (let i = 0; i < content.length; i++) {
const cc = content[i];
if (il === location.line) {
if (ic === location.character) {
return i;
}
}
if (cc === '\n') {
ic = 0;
il++;
}
else {
ic++;
}
}
return content.length;
}
exports.location2pos = location2pos;
//# sourceMappingURL=position-converter.js.map
{"version":3,"file":"position-converter.js","sourceRoot":"","sources":["../src/position-converter.ts"],"names":[],"mappings":";;AAAA,SAAgB,YAAY,CAAC,OAAe,EAAE,GAAW;IACvD,IAAI,CAAC,GAAG,CAAC,EACP,CAAC,GAAG,CAAC,CAAC;IACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAClD,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,EAAE,CAAC;SACL;aAAM;YACL,CAAC,EAAE,CAAC;SACL;KACF;IACD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AACnC,CAAC;AAbD,oCAaC;AAED,SAAgB,YAAY,CAAC,OAAe,EAAE,QAA6C;IACzF,IAAI,EAAE,GAAG,CAAC,EACR,EAAE,GAAG,CAAC,CAAC;IACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE;YACxB,IAAI,EAAE,KAAK,QAAQ,CAAC,SAAS,EAAE;gBAC7B,OAAO,CAAC,CAAC;aACV;SACF;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,EAAE,GAAG,CAAC,CAAC;YACP,EAAE,EAAE,CAAC;SACN;aAAM;YACL,EAAE,EAAE,CAAC;SACN;KACF;IACD,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAlBD,oCAkBC"}