Skip to content

Commit

Permalink
minor cleanup, some renames/moves, moved tld coloring out of parts, u…
Browse files Browse the repository at this point in the history
…pdate types, rename _base64 version variable
  • Loading branch information
adraffy committed Jan 29, 2024
1 parent cb670c1 commit 43fd4cf
Show file tree
Hide file tree
Showing 21 changed files with 209 additions and 247 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,5 +202,5 @@ This project uses `.js` instead of `.mjs` so [package.json](./package.json) uses

* [Build](#build) and compare against [include-versions.js](./src/include-versions.js)
* `spec_hash` — SHA-256 of [spec.json](./derive/output/spec.json) bytes
* `base64_ens_hash` — SHA-256 of [include-ens.js](./src/include-ens.js) base64 literal
* `base64_nf_hash` — SHA-256 of [include-nf.js](./src/include-nf.js) base64 literal
* `ens_hash_base64` — SHA-256 of [include-ens.js](./src/include-ens.js) base64 literal
* `nf_hash_base64` — SHA-256 of [include-nf.js](./src/include-nf.js) base64 literal
66 changes: 17 additions & 49 deletions dist/all.js
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,16 @@ function random_sample(v, n, rng = Math.random) {
return v;
}

function array_replace(v, a, b) {
let prev = 0;
while (true) {
let next = v.indexOf(a, prev);
if (next < 0) break;
v[next] = b;
prev = next + 1;
}
}

function run_tests(fn, tests) {
let errors = [];
for (let test of tests) {
Expand Down Expand Up @@ -766,9 +776,9 @@ function safe_str_from_cps(cps, max = Infinity, quoter = quote_cp) {

// note: set(s) cannot be exposed because they can be modified
// note: Object.freeze() doesn't work
function is_combining_mark(cp) {
function is_combining_mark(cp, only_nsm) { // 20240127: add extra argument
init();
return CM.has(cp);
return only_nsm ? NSM.has(cp) : CM.has(cp);
}
function should_escape(cp) {
init();
Expand Down Expand Up @@ -824,16 +834,6 @@ function ens_beautify(name) {
return flatten(labels);
}

function array_replace(v, a, b) {
let prev = 0;
while (true) {
let next = v.indexOf(a, prev);
if (next < 0) break;
v[next] = b;
prev = next + 1;
}
}

function ens_split(name, preserve_emoji) {
return split(name, nfc, preserve_emoji ? x => x.slice() : filter_fe0f); // emoji are exposed so copy
}
Expand Down Expand Up @@ -1332,7 +1332,6 @@ function isolated_safe(cps) {
// TODO: these options are shit, fix this
function dom_from_tokens(tokens, {
before = false,
tld_class = true,
components = false,
emoji_url = 'https://emojipedia.org/%s',
extra = () => {},
Expand Down Expand Up @@ -1394,12 +1393,6 @@ function dom_from_tokens(tokens, {
case 'valid': {
el = document.createElement('span');
let form = safe_str_from_cps(token.cps);
if (tld_class && (tokens.length == 1 || (i === tokens.length-1 && tokens[i-1].type === 'stop')) && /[a-z]/.test(form)) {
// theres just 1 token/or we're the last token with a stop before us
//el.classList.add(form);
// 20230909: this triggered for stupid things
el.dataset.tld = form;
}
el.innerText = form;
el.title = format_tooltip({
Type: 'Valid',
Expand Down Expand Up @@ -1473,31 +1466,6 @@ function use_default_style() {
border: 2px solid #0a0;
line-break: anywhere;
}
.tokens [data-tld="eth"].valid {
color: #fff;
background: #58f;
border-color: #58f;
}
.tokens [data-tld="art"].valid {
color: #fff;
background: #333;
border-color: #333;
}
.tokens [data-tld="box"].valid {
color: #fff;
background: #666;
border-color: #666;
}
.tokens [data-tld="com"].valid,
.tokens [data-tld="net"].valid,
.tokens [data-tld="org"].valid,
.tokens [data-tld="io"].valid,
.tokens [data-tld="cash"].valid,
.tokens [data-tld="xyz"].valid {
color: #fff;
background: #0a0;
border-color: #0a0;
}
.tokens .ignored {
color: #fff;
background: #aaa;
Expand Down Expand Up @@ -1590,22 +1558,22 @@ function use_default_style() {
const derived = "2023-09-06T06:00:29.074Z";
const unicode = "15.1.0 (2023-09-06T02:58:19.261Z)";
const cldr = "43.1 (2023-09-03T21:58:22.687Z)";
const base64_ens_hash = "0565ed049b9cf1614bb9e11ba7d8ac6a6fb96c893253d890f7e2b2884b9ded32";
const base64_nf_hash = "a974b6f8541fc29d919bc85118af0a44015851fab5343f8679cb31be2bdb209e";
const ens_hash_base64 = "0565ed049b9cf1614bb9e11ba7d8ac6a6fb96c893253d890f7e2b2884b9ded32";
const nf_hash_base64 = "a974b6f8541fc29d919bc85118af0a44015851fab5343f8679cb31be2bdb209e";
const spec_hash = "1f6d3bdb7a724fe3b91f6d73ab14defcb719e0f4ab79022089c940e7e9c56b9c";
const built = "2023-09-25T01:01:55.148Z";
const version = "1.10.1";

var includeVersions = /*#__PURE__*/Object.freeze({
__proto__: null,
base64_ens_hash: base64_ens_hash,
base64_nf_hash: base64_nf_hash,
built: built,
cldr: cldr,
derived: derived,
ens_hash_base64: ens_hash_base64,
nf_hash_base64: nf_hash_base64,
spec_hash: spec_hash,
unicode: unicode,
version: version
});

export { compare_arrays, dom_from_tokens, ens_beautify, ens_emoji, ens_normalize, ens_normalize_fragment, ens_split, ens_tokenize, explode_cp, hex_cp, is_combining_mark, nfc, nfd, quote_cp, random_choice, random_sample, run_tests, safe_str_from_cps, should_escape, str_from_cps, use_default_style, includeVersions as versions };
export { array_replace, compare_arrays, dom_from_tokens, ens_beautify, ens_emoji, ens_normalize, ens_normalize_fragment, ens_split, ens_tokenize, explode_cp, hex_cp, is_combining_mark, nfc, nfd, quote_cp, random_choice, random_sample, run_tests, safe_str_from_cps, should_escape, str_from_cps, use_default_style, includeVersions as versions };
2 changes: 1 addition & 1 deletion dist/all.min.js

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions dist/index-xnf.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,16 @@ function compare_arrays(a, b) {
let c = n - b.length;
for (let i = 0; c == 0 && i < n; i++) c = a[i] - b[i];
return c;
}

function array_replace(v, a, b) {
let prev = 0;
while (true) {
let next = v.indexOf(a, prev);
if (next < 0) break;
v[next] = b;
prev = next + 1;
}
}

// reverse polyfill
Expand Down Expand Up @@ -554,9 +564,9 @@ function safe_str_from_cps(cps, max = Infinity, quoter = quote_cp) {

// note: set(s) cannot be exposed because they can be modified
// note: Object.freeze() doesn't work
function is_combining_mark(cp) {
function is_combining_mark(cp, only_nsm) { // 20240127: add extra argument
init();
return CM.has(cp);
return only_nsm ? NSM.has(cp) : CM.has(cp);
}
function should_escape(cp) {
init();
Expand Down Expand Up @@ -612,16 +622,6 @@ function ens_beautify(name) {
return flatten(labels);
}

function array_replace(v, a, b) {
let prev = 0;
while (true) {
let next = v.indexOf(a, prev);
if (next < 0) break;
v[next] = b;
prev = next + 1;
}
}

function ens_split(name, preserve_emoji) {
return split(name, nfc, preserve_emoji ? x => x.slice() : filter_fe0f); // emoji are exposed so copy
}
Expand Down
2 changes: 1 addition & 1 deletion dist/index-xnf.min.js

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions dist/index-xnf.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,16 @@ function compare_arrays(a, b) {
let c = n - b.length;
for (let i = 0; c == 0 && i < n; i++) c = a[i] - b[i];
return c;
}

function array_replace(v, a, b) {
let prev = 0;
while (true) {
let next = v.indexOf(a, prev);
if (next < 0) break;
v[next] = b;
prev = next + 1;
}
}

// reverse polyfill
Expand Down Expand Up @@ -552,9 +562,9 @@ function safe_str_from_cps(cps, max = Infinity, quoter = quote_cp) {

// note: set(s) cannot be exposed because they can be modified
// note: Object.freeze() doesn't work
function is_combining_mark(cp) {
function is_combining_mark(cp, only_nsm) { // 20240127: add extra argument
init();
return CM.has(cp);
return only_nsm ? NSM.has(cp) : CM.has(cp);
}
function should_escape(cp) {
init();
Expand Down Expand Up @@ -610,16 +620,6 @@ function ens_beautify(name) {
return flatten(labels);
}

function array_replace(v, a, b) {
let prev = 0;
while (true) {
let next = v.indexOf(a, prev);
if (next < 0) break;
v[next] = b;
prev = next + 1;
}
}

function ens_split(name, preserve_emoji) {
return split(name, nfc, preserve_emoji ? x => x.slice() : filter_fe0f); // emoji are exposed so copy
}
Expand Down
24 changes: 12 additions & 12 deletions dist/index.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,16 @@ function compare_arrays(a, b) {
let c = n - b.length;
for (let i = 0; c == 0 && i < n; i++) c = a[i] - b[i];
return c;
}

function array_replace(v, a, b) {
let prev = 0;
while (true) {
let next = v.indexOf(a, prev);
if (next < 0) break;
v[next] = b;
prev = next + 1;
}
}

// created 2023-09-25T01:01:55.148Z
Expand Down Expand Up @@ -729,9 +739,9 @@ function safe_str_from_cps(cps, max = Infinity, quoter = quote_cp) {

// note: set(s) cannot be exposed because they can be modified
// note: Object.freeze() doesn't work
function is_combining_mark(cp) {
function is_combining_mark(cp, only_nsm) { // 20240127: add extra argument
init();
return CM.has(cp);
return only_nsm ? NSM.has(cp) : CM.has(cp);
}
function should_escape(cp) {
init();
Expand Down Expand Up @@ -787,16 +797,6 @@ function ens_beautify(name) {
return flatten(labels);
}

function array_replace(v, a, b) {
let prev = 0;
while (true) {
let next = v.indexOf(a, prev);
if (next < 0) break;
v[next] = b;
prev = next + 1;
}
}

function ens_split(name, preserve_emoji) {
return split(name, nfc, preserve_emoji ? x => x.slice() : filter_fe0f); // emoji are exposed so copy
}
Expand Down
78 changes: 32 additions & 46 deletions dist/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,59 +1,45 @@
interface DisallowedToken {
type: 'disallowed';
cp: number;
}
interface IgnoredToken {
type: 'ignored';
cp: number;
}
interface ValidToken {
type: 'valid';
cps: number[];
}
interface MappedToken {
type: 'mapped';
cp: number;
cps: number[];
export function ens_normalize(name: string): string;
export function ens_normalize_fragment(frag: string, decompose?: boolean): string;
export function ens_beautify(name: string): string;

export function ens_emoji(): number[][];

export function should_escape(cp: number): boolean;
export function is_combining_mark(cp: number, nsm?: boolean): boolean;
export function safe_str_from_cps(cps: number[], max?: number, quoter?: (cp: number) => string): string;

export function nfd(cps: number[]): number[];
export function nfc(cps: number[]): number[];

interface Label {
input: number[];
offset: number;
error?: Error;
tokens?: number[][];
output?: number[];
emoji?: boolean;
type?: string;
}
export function ens_split(name: string, preserve_emoji?: boolean): Label[];

interface StopToken { type: 'stop'; }
interface DisallowedToken { type: 'disallowed'; cp: number; }
interface IgnoredToken { type: 'ignored'; cp: number; }
interface ValidToken { type: 'valid'; cps: number[]; }
interface MappedToken { type: 'mapped'; cp: number; cps: number[]; }
type TextToken = DisallowedToken | IgnoredToken | ValidToken | MappedToken;
interface EmojiToken {
type: 'emoji';
input: number[];
emoji: number[];
input: number[];
cps: number[];
emoji: number[];
}
interface NFCToken {
type: 'nfc';
input: number[];
tokens0: TextToken[];
cps: number[];
tokens: TextToken[];
}
interface StopToken {
type: 'stop';
tokens: TextToken[];
}
type Token = TextToken | EmojiToken | NFCToken | StopToken;

interface Label {
input: number[];
offset: number;
error?: Error;
tokens?: number[][];
output?: number[];
emoji?: boolean;
type?: string;
}

export function ens_normalize(name: string): string;
export function ens_normalize_fragment(frag: string, decompose?: boolean): string;
export function ens_beautify(name: string): string;
export function ens_tokenize(name: string, options?: {nf?: boolean}): Token[];
export function ens_split(name: string, preserve_emoji?: boolean): Label[];

export function ens_emoji(): number[][];

export function should_escape(cp: number): boolean;
export function is_combining_mark(cp: number): boolean;
export function safe_str_from_cps(cps: number[]): string;

export function nfd(cps: number[]): number[];
export function nfc(cps: number[]): number[];
2 changes: 1 addition & 1 deletion dist/index.min.js

Large diffs are not rendered by default.

Loading

0 comments on commit 43fd4cf

Please sign in to comment.