@jackens/nnn 2026.9.1 → 2026.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/nnn.d.ts +209 -366
- package/nnn.js +10 -31
- package/package.json +1 -11
- package/readme.md +562 -527
package/nnn.js
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
// src/nnn/is.ts
|
|
2
|
-
var isArray = Array.isArray;
|
|
3
|
-
var isNumber = (arg) => typeof arg === "number";
|
|
4
|
-
var isFiniteNumber = Number.isFinite;
|
|
5
|
-
var isString = (arg) => typeof arg === "string";
|
|
6
|
-
var isRecord = (arg) => typeof arg === "object" && arg != null && !isArray(arg);
|
|
7
|
-
|
|
8
1
|
// src/nnn/c.ts
|
|
9
2
|
var DEFAULT_SPLITTER = "$$";
|
|
10
3
|
var combinePrefixAndName = (prefix, name) => {
|
|
@@ -34,7 +27,7 @@ var _c = (node, splitter = DEFAULT_SPLITTER, prefix = "", flatten = false) => {
|
|
|
34
27
|
}
|
|
35
28
|
const splitterIndex = rawKey.indexOf(splitter);
|
|
36
29
|
const name = splitterIndex < 0 ? rawKey : rawKey.slice(0, splitterIndex);
|
|
37
|
-
if (
|
|
30
|
+
if (typeof value === "number" || typeof value === "string") {
|
|
38
31
|
if (flatten) {
|
|
39
32
|
out.push(`${prefix + name}:${value}`);
|
|
40
33
|
} else {
|
|
@@ -69,7 +62,7 @@ var createTokenizer = (decorator, ...specs) => (code) => {
|
|
|
69
62
|
for (const [metadata, pattern] of specs) {
|
|
70
63
|
let index = -1;
|
|
71
64
|
let chunk = "";
|
|
72
|
-
if (
|
|
65
|
+
if (typeof pattern === "string" && pattern.length > 0) {
|
|
73
66
|
index = code.indexOf(pattern);
|
|
74
67
|
chunk = code.slice(index, index + pattern.length);
|
|
75
68
|
}
|
|
@@ -106,19 +99,21 @@ var csvParse = (csv, separator = ",") => {
|
|
|
106
99
|
// src/nnn/h.ts
|
|
107
100
|
var XLINK_NS = "http://www.w3.org/1999/xlink";
|
|
108
101
|
var _h = (createElement, tagOrNode, ...args) => {
|
|
109
|
-
const node =
|
|
102
|
+
const node = typeof tagOrNode === "string" ? createElement(tagOrNode) : tagOrNode;
|
|
110
103
|
args.forEach((arg) => {
|
|
111
104
|
let child = null;
|
|
112
105
|
if (arg instanceof Node) {
|
|
113
106
|
child = arg;
|
|
114
|
-
} else if (isArray(arg)) {
|
|
107
|
+
} else if (Array.isArray(arg)) {
|
|
115
108
|
child = _h(createElement, ...arg);
|
|
116
|
-
} else if (
|
|
109
|
+
} else if (typeof arg === "string" || typeof arg === "number") {
|
|
110
|
+
child = document.createTextNode(arg);
|
|
111
|
+
} else if (typeof arg === "object" && arg != null) {
|
|
117
112
|
for (const name in arg) {
|
|
118
113
|
const value = arg[name];
|
|
119
114
|
if (name[0] === "$") {
|
|
120
115
|
const name1 = name.slice(1);
|
|
121
|
-
if (
|
|
116
|
+
if (typeof value === "object" && value != null && !Array.isArray(value)) {
|
|
122
117
|
Object.assign(node[name1] ??= {}, value);
|
|
123
118
|
} else {
|
|
124
119
|
node[name1] = value;
|
|
@@ -148,8 +143,6 @@ var _h = (createElement, tagOrNode, ...args) => {
|
|
|
148
143
|
}
|
|
149
144
|
}
|
|
150
145
|
}
|
|
151
|
-
} else if (isString(arg) || isNumber(arg)) {
|
|
152
|
-
child = document.createTextNode(arg);
|
|
153
146
|
}
|
|
154
147
|
if (child != null) {
|
|
155
148
|
node.appendChild(child);
|
|
@@ -199,8 +192,6 @@ var fixPlTypography = (node) => {
|
|
|
199
192
|
}
|
|
200
193
|
}
|
|
201
194
|
};
|
|
202
|
-
// src/nnn/hasOwn.ts
|
|
203
|
-
var hasOwn = (ref, key) => ref != null && Object.hasOwn(ref, key);
|
|
204
195
|
// src/nnn/monokai.ts
|
|
205
196
|
var monokai = {
|
|
206
197
|
":root$$monokai": {
|
|
@@ -295,10 +286,6 @@ var OPERATOR = "operator";
|
|
|
295
286
|
var PUNCTUATION = "punctuation";
|
|
296
287
|
var STRING = "string";
|
|
297
288
|
var nanolightTs = /* @__PURE__ */ createTokenizer((chunk, name) => name != null ? ["span", { class: name }, chunk] : chunk, [COMMENT, /\/\*.*?\*\//s], [COMMENT, /(?<!\\)\/\/.*?(?=\n)/], [STRING, /".*?"/], [STRING, /'.*?'/], [STRING, /`.*?`/s], [STRING, /\/[^\s]*[^\\]\/[dgimsuvy]*/], [NUMBER, /0b[01_]+/], [NUMBER, /0o[01234567_]+/], [NUMBER, /0x[\dabcdef_]+/], [NUMBER, /\d[\d_]*(\.[\d_]+)?(e[+-]?[\d_]+)?/], [OPERATOR, "!"], [OPERATOR, "!="], [OPERATOR, "!=="], [OPERATOR, "%"], [OPERATOR, "%="], [OPERATOR, "&&"], [OPERATOR, "&&="], [OPERATOR, "&"], [OPERATOR, "&="], [OPERATOR, "*"], [OPERATOR, "**"], [OPERATOR, "**="], [OPERATOR, "*="], [OPERATOR, "+"], [OPERATOR, "++"], [OPERATOR, "+="], [OPERATOR, "-"], [OPERATOR, "--"], [OPERATOR, "-="], [OPERATOR, "..."], [OPERATOR, "/"], [OPERATOR, "/="], [OPERATOR, ":"], [OPERATOR, "<"], [OPERATOR, "<<"], [OPERATOR, "<<="], [OPERATOR, "<="], [OPERATOR, "="], [OPERATOR, "=="], [OPERATOR, "==="], [OPERATOR, "=>"], [OPERATOR, ">"], [OPERATOR, ">="], [OPERATOR, ">>"], [OPERATOR, ">>="], [OPERATOR, ">>>"], [OPERATOR, ">>>="], [OPERATOR, "?"], [OPERATOR, "?"], [OPERATOR, "??"], [OPERATOR, "??="], [OPERATOR, "^"], [OPERATOR, "^="], [OPERATOR, "|"], [OPERATOR, "|="], [OPERATOR, "||"], [OPERATOR, "||="], [OPERATOR, "~"], [OPERATOR, "~="], [OPERATOR, /(?<=\s):/], [PUNCTUATION, "("], [PUNCTUATION, ")"], [PUNCTUATION, ","], [PUNCTUATION, "."], [PUNCTUATION, ":"], [PUNCTUATION, ";"], [PUNCTUATION, "?."], [PUNCTUATION, "["], [PUNCTUATION, "]"], [PUNCTUATION, "{"], [PUNCTUATION, "}"], [KEYWORD1, "as"], [KEYWORD1, "async"], [KEYWORD1, "await"], [KEYWORD1, "break"], [KEYWORD1, "case"], [KEYWORD1, "catch"], [KEYWORD1, "class"], [KEYWORD1, "const"], [KEYWORD1, "continue"], [KEYWORD1, "debugger"], [KEYWORD1, "default"], [KEYWORD1, "delete"], [KEYWORD1, "do"], [KEYWORD1, "else"], [KEYWORD1, "export"], [KEYWORD1, "extends"], [KEYWORD1, "finally"], [KEYWORD1, "for"], [KEYWORD1, "from"], [KEYWORD1, "function"], [KEYWORD1, "function*"], [KEYWORD1, "goto"], [KEYWORD1, "if"], [KEYWORD1, "import"], [KEYWORD1, "in"], [KEYWORD1, "instanceof"], [KEYWORD1, "is"], [KEYWORD1, "keyof"], [KEYWORD1, "let"], [KEYWORD1, "new"], [KEYWORD1, "of"], [KEYWORD1, "package"], [KEYWORD1, "return"], [KEYWORD1, "super"], [KEYWORD1, "switch"], [KEYWORD1, "this"], [KEYWORD1, "throw"], [KEYWORD1, "try"], [KEYWORD1, "type"], [KEYWORD1, "typeof"], [KEYWORD1, "var"], [KEYWORD1, "void"], [KEYWORD1, "while"], [KEYWORD1, "with"], [KEYWORD1, "yield"], [KEYWORD1, "yield*"], [KEYWORD2, "false"], [KEYWORD2, "Infinity"], [KEYWORD2, "NaN"], [KEYWORD2, "null"], [KEYWORD2, "true"], [KEYWORD2, "undefined"], [KEYWORD3, "any"], [KEYWORD3, "bigint"], [KEYWORD3, "boolean"], [KEYWORD3, "eval"], [KEYWORD3, "number"], [KEYWORD3, "string"], [KEYWORD3, "symbol"], [KEYWORD3, "unknown"], [IDENTIFIER1, /[\p{Lu}_$][\p{Lu}\d_$]*/u], [IDENTIFIER2, /[\p{L}_$][\p{L}\d_$]*(?=[(`])/u], [IDENTIFIER3, /\p{Lu}[\p{L}\d_$]*/u], [IDENTIFIER4, /[\p{L}_$][\p{L}\d_$]*/u]);
|
|
298
|
-
// src/nnn/omit.ts
|
|
299
|
-
var omit = (ref, keys) => Object.fromEntries(Object.entries(ref).filter(([key]) => !keys.includes(key)));
|
|
300
|
-
// src/nnn/pick.ts
|
|
301
|
-
var pick = (ref, keys) => Object.fromEntries(Object.entries(ref).filter(([key]) => keys.includes(key)));
|
|
302
289
|
// src/nnn/rwd.ts
|
|
303
290
|
var rwd = (root, selector, cellWidthPx, cellHeightPx, ...specs) => {
|
|
304
291
|
const main = root[selector] ??= {};
|
|
@@ -334,12 +321,12 @@ var uuidV1 = (date = new Date, node = Math.random().toString(16).slice(2)) => {
|
|
|
334
321
|
// src/nnn/vivify.ts
|
|
335
322
|
var ARRAY_INDEX_REGEXP = /^(0|[1-9]\d*)$/;
|
|
336
323
|
var isObject = (ref) => typeof ref === "object";
|
|
337
|
-
var getTarget = (parent, parentKey, key) => parent[parentKey] ??=
|
|
324
|
+
var getTarget = (parent, parentKey, key) => parent[parentKey] ??= typeof key === "string" && ARRAY_INDEX_REGEXP.test(key) ? [] : {};
|
|
338
325
|
var _vivify = (parent, parentKey) => new Proxy(parent, {
|
|
339
326
|
get(_, key) {
|
|
340
327
|
const target = getTarget(parent, parentKey, key);
|
|
341
328
|
const value = target[key];
|
|
342
|
-
return
|
|
329
|
+
return typeof key === "string" && isObject(target) && (value == null || isObject(value)) ? _vivify(target, key) : value;
|
|
343
330
|
},
|
|
344
331
|
set(_, key, value) {
|
|
345
332
|
const target = getTarget(parent, parentKey, key);
|
|
@@ -359,16 +346,8 @@ export {
|
|
|
359
346
|
csvParse,
|
|
360
347
|
fixPlTypography,
|
|
361
348
|
h,
|
|
362
|
-
hasOwn,
|
|
363
|
-
isArray,
|
|
364
|
-
isFiniteNumber,
|
|
365
|
-
isNumber,
|
|
366
|
-
isRecord,
|
|
367
|
-
isString,
|
|
368
349
|
monokai,
|
|
369
350
|
nanolightTs,
|
|
370
|
-
omit,
|
|
371
|
-
pick,
|
|
372
351
|
rwd,
|
|
373
352
|
s,
|
|
374
353
|
svgUse,
|
package/package.json
CHANGED
|
@@ -9,22 +9,12 @@
|
|
|
9
9
|
"DOM",
|
|
10
10
|
"escape",
|
|
11
11
|
"h",
|
|
12
|
-
"has",
|
|
13
12
|
"highlight",
|
|
14
13
|
"HyperScript",
|
|
15
|
-
"in",
|
|
16
|
-
"is",
|
|
17
|
-
"isArray",
|
|
18
|
-
"isFiniteNumber",
|
|
19
|
-
"isNumber",
|
|
20
|
-
"isRecord",
|
|
21
|
-
"isString",
|
|
22
14
|
"JS-to-CSS",
|
|
23
15
|
"Monokai",
|
|
24
16
|
"nanolight",
|
|
25
17
|
"nnn",
|
|
26
|
-
"omit",
|
|
27
|
-
"pick",
|
|
28
18
|
"Responsive Web Design",
|
|
29
19
|
"RWD",
|
|
30
20
|
"SVG",
|
|
@@ -41,5 +31,5 @@
|
|
|
41
31
|
"name": "@jackens/nnn",
|
|
42
32
|
"type": "module",
|
|
43
33
|
"types": "nnn.d.ts",
|
|
44
|
-
"version": "2026.9.
|
|
34
|
+
"version": "2026.9.3"
|
|
45
35
|
}
|