ast-is-empty 4.2.0 → 4.2.2
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/CHANGELOG.md +13 -1
- package/dist/ast-is-empty.esm.js +2 -2
- package/dist/ast-is-empty.umd.js +11 -3
- package/package.json +2 -2
- package/types/index.d.ts +48 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,11 +3,23 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 4.2.2 (2026-09-01)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **ast-is-empty:** make traversal graph-safe ([653714b](https://github.com/codsen/codsen/commit/653714bc23a3cffe46099781f2d24f2f0ad5445a))
|
|
11
|
+
|
|
12
|
+
## 4.2.1 (2026-08-22)
|
|
13
|
+
|
|
14
|
+
### Performance Improvements
|
|
15
|
+
|
|
16
|
+
- optimise package hot paths and JSON editing ([f3112bd](https://github.com/codsen/codsen/commit/f3112bd7fc0d7c9bc09312d3744c950691d72ca5))
|
|
17
|
+
|
|
6
18
|
## 4.2.0 (2026-08-19)
|
|
7
19
|
|
|
8
20
|
### Bug Fixes
|
|
9
21
|
|
|
10
|
-
- resolve review findings
|
|
22
|
+
- resolve various review findings ([b60e9ee](https://github.com/codsen/codsen/commit/b60e9eeb499af94685cfb87b4970fe025be1fc10))
|
|
11
23
|
- retire direct publish aliases ([f98e31e](https://github.com/codsen/codsen/commit/f98e31eb89bc185471225664e610b55f34fbf648))
|
|
12
24
|
|
|
13
25
|
### Features
|
package/dist/ast-is-empty.esm.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @name ast-is-empty
|
|
3
3
|
* @fileoverview Find out, is nested array/object/string/AST tree is empty
|
|
4
|
-
* @version 4.2.
|
|
4
|
+
* @version 4.2.2
|
|
5
5
|
* @author Roy Revelt
|
|
6
6
|
* @license MIT
|
|
7
7
|
* {@link https://codsen.com/os/ast-is-empty/}
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import{isPlainObject as
|
|
10
|
+
import{isPlainObject as g}from"codsen-utils";var T="4.2.2";var V=T,A=Object.freeze({reportCompletionFunc:null,reportProgressFunc:null,reportProgressFuncFrom:0,reportProgressFuncTo:100}),F=Object.prototype.hasOwnProperty,I=new Set(["reportCompletionFunc","reportProgressFunc","reportProgressFuncFrom","reportProgressFuncTo"]),_=32;function v(e){let r=new WeakMap;for(let o=1;o<e.length;o+=2)r.set(e[o],e[o+1]);return e.push(r),r}function O(e,r,o,t){if(typeof e=="string")return e.length!==0&&(r[0]=!0),1;if(!Array.isArray(e)&&!g(e))return-1;let s=o.get(e);if(s===1){for(let i=1;i<r.length-1;i+=2)if(r[i]===e){if(r[i+1]===2)return o.set(e,2),1;break}return-1}return s===2?1:(o.set(e,1),Array.isArray(e)?t.push({index:0,kind:"array",length:e.length,value:e}):t.push({index:0,keys:Object.keys(e),kind:"object",value:e}),2)}function W(e,r,o){let t=[],s=O(e,r,o,t);if(s===-1)return!1;if(s===1)return!0;for(;t.length;){let i=t[t.length-1];if(i.kind==="array"){if(i.index===i.length){o.set(i.value,2),t.pop();continue}let p=i.index++;if(!F.call(i.value,p)||O(i.value[p],r,o,t)===-1)return!1}else{if(i.index===i.keys.length){o.set(i.value,2),t.pop();continue}let p=i.keys[i.index++];if(O(i.value[p],r,o,t)===-1)return!1}}return!0}function y(e,r){if(typeof e=="string")return e.length!==0&&(r[0]=!0),!0;if(!Array.isArray(e)&&!g(e))return!1;if(r.length>_*2){let t=(r.length&1)===0?r[r.length-1]:v(r);return W(e,r,t)}for(let t=1;t<r.length;t+=2)if(r[t]===e)return r[t+1]===2;let o=r.length+1;if(r.push(e,1),Array.isArray(e)){let t=e.length;for(let s=0;s<t;s++)if(!F.call(e,s)||!y(e[s],r))return!1}else{let t=Object.keys(e);for(let s=0;s<t.length;s++)if(!y(e[t[s]],r))return!1}return r[o]=2,!0}function x(e,r){if(e)try{e(r)}catch{}}function R(){try{let e=Date.now();return Number.isFinite(e)?e:null}catch{return null}}function D(e,r){let o=r.reportCompletionFunc?R():null,t=new WeakMap,s=[],i=0,p=0,a=0,l=0,j=0,m=0,b=!1,P;function h(n=!1){if(!r.reportProgressFunc)return;let c=r.reportProgressFuncTo-r.reportProgressFuncFrom,u=n?r.reportProgressFuncTo:r.reportProgressFuncFrom+c*Math.min(.99,m/(m+1e3));u!==P&&(P=u,x(r.reportProgressFunc,u))}function f(){m++,m%1e3===0&&h()}function d(n){if(h(!0),r.reportCompletionFunc){let c=R(),u=o===null||c===null?null:c-o,C=u===null||!Number.isFinite(u)?0:Math.max(0,u);x(r.reportCompletionFunc,Object.freeze({aliasesSkipped:i,arrayElementsVisited:p,maxDepth:a,objectPropertiesVisited:l,timeTakenInMilliseconds:C,uniqueContainersVisited:j}))}return n}function k(n,c){if(c>a&&(a=c),typeof n=="string")return n.length===0?1:0;if(!Array.isArray(n)&&!g(n))return-1;let u=t.get(n);return u===1?-1:u===2?(i++,f(),1):(t.set(n,1),j++,f(),Array.isArray(n)?s.push({depth:c,index:0,kind:"array",length:n.length,value:n}):s.push({depth:c,index:0,keys:Object.keys(n),kind:"object",value:n}),2)}h();let w=k(e,0);if(w===-1)return d(null);if(w!==2)return d(w===1);for(;s.length;){let n=s[s.length-1];if(n.kind==="array"){if(n.index===n.length){t.set(n.value,2),s.pop();continue}let c=n.index++;if(p++,f(),!F.call(n.value,c))return n.depth+1>a&&(a=n.depth+1),d(null);let u=k(n.value[c],n.depth+1);if(u===-1)return d(null);u===0&&(b=!0)}else{if(n.index===n.keys.length){t.set(n.value,2),s.pop();continue}let c=n.keys[n.index++];l++,f();let u=k(n.value[c],n.depth+1);if(u===-1)return d(null);u===0&&(b=!0)}}return d(!b)}function M(e){if(e!=null&&!g(e))throw new TypeError("ast-is-empty/isEmpty(): [THROW_ID_01] The second argument must be a plain options object, null, or undefined.");let r=e??{},o=Object.keys(r).find(l=>!I.has(l));if(o!==void 0)throw new TypeError(`ast-is-empty/isEmpty(): [THROW_ID_02] Unknown option ${JSON.stringify(o)}.`);let t=l=>F.call(r,l)&&r[l]!==void 0?r[l]:A[l],s=t("reportCompletionFunc");if(s!==null&&typeof s!="function")throw new TypeError("ast-is-empty/isEmpty(): [THROW_ID_03] opts.reportCompletionFunc must be a function, null, or undefined.");let i=t("reportProgressFunc");if(i!==null&&typeof i!="function")throw new TypeError("ast-is-empty/isEmpty(): [THROW_ID_04] opts.reportProgressFunc must be a function, null, or undefined.");let p=t("reportProgressFuncFrom");if(!Number.isFinite(p))throw new TypeError("ast-is-empty/isEmpty(): [THROW_ID_05] opts.reportProgressFuncFrom must be a finite number or undefined.");let a=t("reportProgressFuncTo");if(!Number.isFinite(a))throw new TypeError("ast-is-empty/isEmpty(): [THROW_ID_06] opts.reportProgressFuncTo must be a finite number or undefined.");if(p>a)throw new RangeError(`ast-is-empty/isEmpty(): [THROW_ID_07] opts.reportProgressFuncFrom cannot exceed opts.reportProgressFuncTo; received ${p} and ${a}.`);if(!Number.isFinite(a-p))throw new RangeError(`ast-is-empty/isEmpty(): [THROW_ID_08] opts.reportProgressFuncFrom and opts.reportProgressFuncTo must define a finite span; received ${p} and ${a}.`);return{reportCompletionFunc:s,reportProgressFunc:i,reportProgressFuncFrom:p,reportProgressFuncTo:a}}function K(e,r){if(r===void 0){let s=[!1];return y(e,s)?s[0]!==!0:null}let o=M(r);if(o.reportCompletionFunc||o.reportProgressFunc)return D(e,o);let t=[!1];return y(e,t)?t[0]!==!0:null}export{A as defaults,K as isEmpty,V as version};
|
package/dist/ast-is-empty.umd.js
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @name ast-is-empty
|
|
3
3
|
* @fileoverview Find out, is nested array/object/string/AST tree is empty
|
|
4
|
-
* @version 4.2.
|
|
4
|
+
* @version 4.2.2
|
|
5
5
|
* @author Roy Revelt
|
|
6
6
|
* @license MIT
|
|
7
7
|
* {@link https://codsen.com/os/ast-is-empty/}
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
"use strict";var astIsEmpty=(()=>{var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var p=(e,t)=>{for(var r in t)s(e,r,{get:t[r],enumerable:!0})},h=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of f(t))!c.call(e,n)&&n!==r&&s(e,n,{get:()=>t[n],enumerable:!(i=a(t,n))||i.enumerable});return e};var d=e=>h(s({},"__esModule",{value:!0}),e);var y={};p(y,{isEmpty:()=>l,version:()=>m});var A=new Set([..."\u060B$\u20BC\u17DB\xA5\u20A1\u20B1\xA3\u20AC\xA2\u20B9\uFDFC\u20AA\u20A9\u20AD\u20A8\u20AE\u20A6\u20BD\u20AB\u0E3F\u20A9\u20BA\u20B4","$U","$b","B/.","BZ$","Br","Bs","C$","CHF","Ft","Gs","J$","KM","K\u010D","L","MT","NT$","P","Q","R","R$","RD$","RM","Rp","S","S/.","TT$","Z$","kn","kr","lei","z\u0142","\u0192","\u0414\u0438\u043D.","\u0434\u0435\u043D","\u043B\u0432","\u062F.\u0625","Lek"]);function o(e){if(e==null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null?!1:!(Symbol.iterator in e)&&!(Symbol.toStringTag in e)}var u="4.2.0";var m=u;function l(e){let t=!0;if(Array.isArray(e)){if(e.length===0)return!0;for(let r of e){if(t=l(r),t===null)return null;if(!t)return!1}}else if(o(e)){let r=Object.keys(e);if(r.length===0)return!0;for(let i of r){if(t=l(e[i]),t===null)return null;if(!t)return!1}}else if(typeof e=="string"){if(e.length!==0)return!1}else return null;return t}return d(y);})();
|
|
10
|
+
"use strict";var astIsEmpty=(()=>{var O=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var L=(e,t)=>{for(var _ in t)O(e,_,{get:t[_],enumerable:!0})},z=(e,t,_,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of N(t))!B.call(e,n)&&n!==_&&O(e,n,{get:()=>t[n],enumerable:!(r=$(t,n))||r.enumerable});return e};var U=e=>z(O({},"__esModule",{value:!0}),e);var re={};L(re,{defaults:()=>W,isEmpty:()=>te,version:()=>Q});var V=["_16_0_a_0_4_0_5_m_1_u_1_cp_4_b_e_4_7_0_1_0_3l_4_1_1_2_3_1_0_6_0_1_2_1_0_1_j_1_2a_1_3u_8_4l_1_11_2_0_","6_14_1z_q_4_3_19_16_z_1_1_2q_1_0_f_1_7_1_a_2_2_0_g_0_1_t_t_2g_b_0_o_w_9_1_4_0_5_l_4_0_9_0_3_0_n_o_7_","a_5_n_1_6_g_15_1m_1h_3_0_i_0_7_9_f_f_4_7_2_1_2_l_1_6_1_0_3_3_3_0_g_0_d_1_1_2_e_1_a_0_8_5_4_1_2_l_1_6","_1_1_1_1_1_1_v_3_1_0_j_2_g_8_1_2_1_l_1_6_1_1_1_4_3_0_i_0_f_1_n_0_b_7_2_1_2_l_1_6_1_1_1_4_3_0_u_1_1_2","_f_0_h_0_1_5_3_2_1_3_3_1_1_0_1_1_3_1_3_2_3_b_m_0_1g_7_1_2_1_m_1_f_3_0_q_2_1_1_2_1_u_0_4_7_1_2_1_m_1_","9_1_4_3_0_u_2_1_1_f_1_h_8_1_2_1_14_2_0_g_0_5_2_8_2_o_5_5_h_3_n_1_8_1_0_2_6_1m_1b_1_1_c_6_1m_1_1_0_1_","4_1_n_1_0_1_9_1_1_9_0_2_4_1_0_l_3_w_0_1r_7_1_z_r_4_37_16_k_0_g_5_4_3_3_0_3_1_7_2_4_c_c_0_h_11_1_0_5_","0_2_16_1_98_1_3_2_6_1_0_1_3_2_14_1_3_2_w_1_3_2_6_1_0_1_3_2_e_1_1k_1_3_2_1u_11_f_g_2d_2_5_3_h7_2_g_1_","p_5_22_6_7_7_h_d_i_e_h_e_c_1_2_f_1f_z_0_4_0_1v_2g_7_4_2_x_1_0_5_1x_a_u_1d_t_2_4_b_17_4_p_1i_m_9_1g_2","a_0_2l_1a_h_7_1i_t_d_1_a_17_q_z_15_2_a_z_2_a_5_16_2_2_15_3_1_5_1_1_3_0_5_5b_1s_7p_2_5_2_11_2_5_2_7_1","_0_1_0_1_0_1_u_2_1g_1_6_1_0_3_2_1_6_3_3_2_5_4_c_5_2_1_6_38_0_d_0_g_c_2t_0_4_0_2_9_1_0_3_4_6_0_1_0_1_","0_1_3_1_a_2_3_5_4_4_0_1g_1_22j_6c_6_3_3_1_c_11_1_0_5_0_2_1j_7_0_g_m_9_6_1_6_1_6_1_6_1_6_1_6_1_6_1_6_","28_0_d1_1_16_4_5_1_4_2d_6_2_1_2h_1_3_5_16_1_2l_h_v_1c_f_e8_533_1s_h3g_1v_19_2_7g_3_f_a_1_k_1a_g_u_2_","1x_1d_8_2_2u_2_29_k_g_1_2_1_3_1_m_t_1f_e_1d_1q_5_3_0_1_1_b_r_a_m_p_s_7_1a_s_0_g_4_1_9_a_4_1_14_n_2_1","_7_k_m_3_0_3_1d_1_0_3_1_2_4_2_0_1_0_o_2_2_a_7_2_c_5_2_5_2_5_9_6_1_6_1_16_1_d_6_36_t_8mb_c_m_4_1c_6is","_a5_2_2x_12_6_c_4_5_0_1_9_1_c_1_4_1_0_1_1_1_1_1_2z_x_a2_i_1r_2_1h_14_b_38_4_1_3q_10_p_6_p_b_2g_3_5_2","_5_2_5_2_2_z_b_1_p_1_i_1_1_1_e_2_d_y_3e_at_s_3_1c_1b_v_d_j_1_7_6_11_a_t_2_z_4_7_1c_4d_i_z_4_z_4_13_8","_1f_c_a_1_e_1_6_1_1_1_a_1_e_1_6_1_1_3_1f_c_8m_9_l_a_7_o_5_1_15_1_8_1x_5_2_0_1_17_1_1_3_0_2_m_a_m_9_u","_1t_i_1_1_a_l_a_p_6_p_12_1j_6_1_1s_0_f_3_1_2_1_s_16_s_3_s_z_7_1_r_r_1h_a_l_a_i_d_h_32_20_1j_1e_d_1e_","d_z_12_r_9_m_6y_15_6_1_g_5_1k_s_a_0_8_l_16_h_1a_k_r_m_c_1g_1l_1_2_0_d_18_w_o_q_z_t_0_2_0_8_y_3_0_c_1","b_e_3_l_0_1_0_z_h_1_o_j_1_1r_6_1_0_1_3_1_e_1_9_7_1a_12_7_2_1_2_l_1_6_1_1_1_4_3_0_i_0_c_4_u_9_1_0_2_0","_1_11_1_0_p_0_1_0_18_1g_i_3_k_2_u_1b_k_1_1_0_54_1a_15_3_10_1b_k_0_1n_16_d_0_1z_q_11_6_55_17_38_1r_v_","7_2_0_2_7_1_1_1_n_f_0_1_0_2m_7_2_12_g_0_1_0_s_0_a_13_7_0_l_0_b_19_j_0_i_20_5j_w_v_8_1_10_h_0_1d_t_34","_6_1_1_1_11_l_0_p_5_1_1_1_v_e_0_n_17_78_i_f_0_1_c_1_x_3g_0_27_pl_6e_5f_218_2o_f_tr_h_5_p_32y_5_g6_5a","1_t_1cy_fs_7_u_h_26_h_t_i_1b_g_3_v_k_5_i_c0_18_5v_1r_w_o_2_o_18_22_5_0_1u_c_1s_1_1_0_e_1_c_5p1_15_v_","2p_36_6pp_3_1_6_1_1_1_82_f_0_t_2_2_0_e_3_8_az_1s4_2y_5_c_3_8_7_9_4me_2c_1_1y_1_1_2_0_2_1_2_3_1_b_1_0","_1_6_1_1s_1_3_2_7_1_6_1_r_1_3_1_4_1_0_3_6_1_9f_2_o_1_o_1_u_1_o_1_u_1_o_1_u_1_o_1_u_1_o_1_7_1f8_u_6_5","_79_1p_42_18_a_6_g_0_8x_t_i_17_dg_r_6c_t_2_0_5r_u_1_2_1_1_1_6_2_4_9_1_68_6_1_3_1_1_1_e_1_5g_1n_1v_7_","0_xg_3_1_q_1_1_1_0_2_0_1_9_1_3_1_0_1_0_6_0_4_0_1_0_1_0_1_2_1_1_1_0_2_0_1_0_1_0_1_0_1_0_1_1_1_0_2_3_1","_6_1_3_1_3_1_0_1_9_1_g_5_2_1_4_1_g_3es_wyn_w_3dp_2_4gd_2_5rk_f_h9_1wi_f1_15u_3t6_5_6jt"].join(""),k=V.slice(1).split("_"),q=[],x=127;for(let e=0;e<k.length;e+=2){let t=x+1+Number.parseInt(k[e],36),_=t+Number.parseInt(k[e+1],36);q.push([t,_]),x=_}var le=new Set([..."\u060B$\u20BC\u17DB\xA5\u20A1\u20B1\xA3\u20AC\xA2\u20B9\uFDFC\u20AA\u20A9\u20AD\u20A8\u20AE\u20A6\u20BD\u20AB\u0E3F\u20A9\u20BA\u20B4","$U","$b","B/.","BZ$","Br","Bs","C$","CHF","Ft","Gs","J$","KM","K\u010D","L","MT","NT$","P","Q","R","R$","RD$","RM","Rp","S","S/.","TT$","Z$","kn","kr","lei","z\u0142","\u0192","\u0414\u0438\u043D.","\u0434\u0435\u043D","\u043B\u0432","\u062F.\u0625","Lek"]);var D=Function.prototype.toString,H=D.call(Object);var ue=Map.prototype.entries,ae=Set.prototype.values;var C,ce=(C=Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength"))==null?void 0:C.get,P,fe=(P=Object.getOwnPropertyDescriptor(RegExp.prototype,"flags"))==null?void 0:P.get,R,pe=(R=Object.getOwnPropertyDescriptor(RegExp.prototype,"global"))==null?void 0:R.get,S,de=(S=Object.getOwnPropertyDescriptor(RegExp.prototype,"source"))==null?void 0:S.get,ge=RegExp.prototype.test;function p(e){var r;if(e==null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;let _=Object.getOwnPropertyDescriptor(t,"constructor");return!_||!("value"in _)||typeof _.value!="function"?!1:((r=Object.getOwnPropertyDescriptor(_.value,"prototype"))==null?void 0:r.value)===t&&D.call(_.value)===H}var he=Date.prototype.getTime;var T="4.2.2";var Q=T,W=Object.freeze({reportCompletionFunc:null,reportProgressFunc:null,reportProgressFuncFrom:0,reportProgressFuncTo:100}),y=Object.prototype.hasOwnProperty,G=new Set(["reportCompletionFunc","reportProgressFunc","reportProgressFuncFrom","reportProgressFuncTo"]),J=32;function Z(e){let t=new WeakMap;for(let _=1;_<e.length;_+=2)t.set(e[_],e[_+1]);return e.push(t),t}function v(e,t,_,r){if(typeof e=="string")return e.length!==0&&(t[0]=!0),1;if(!Array.isArray(e)&&!p(e))return-1;let n=_.get(e);if(n===1){for(let s=1;s<t.length-1;s+=2)if(t[s]===e){if(t[s+1]===2)return _.set(e,2),1;break}return-1}return n===2?1:(_.set(e,1),Array.isArray(e)?r.push({index:0,kind:"array",length:e.length,value:e}):r.push({index:0,keys:Object.keys(e),kind:"object",value:e}),2)}function Y(e,t,_){let r=[],n=v(e,t,_,r);if(n===-1)return!1;if(n===1)return!0;for(;r.length;){let s=r[r.length-1];if(s.kind==="array"){if(s.index===s.length){_.set(s.value,2),r.pop();continue}let l=s.index++;if(!y.call(s.value,l)||v(s.value[l],t,_,r)===-1)return!1}else{if(s.index===s.keys.length){_.set(s.value,2),r.pop();continue}let l=s.keys[s.index++];if(v(s.value[l],t,_,r)===-1)return!1}}return!0}function h(e,t){if(typeof e=="string")return e.length!==0&&(t[0]=!0),!0;if(!Array.isArray(e)&&!p(e))return!1;if(t.length>J*2){let r=(t.length&1)===0?t[t.length-1]:Z(t);return Y(e,t,r)}for(let r=1;r<t.length;r+=2)if(t[r]===e)return t[r+1]===2;let _=t.length+1;if(t.push(e,1),Array.isArray(e)){let r=e.length;for(let n=0;n<r;n++)if(!y.call(e,n)||!h(e[n],t))return!1}else{let r=Object.keys(e);for(let n=0;n<r.length;n++)if(!h(e[r[n]],t))return!1}return t[_]=2,!0}function E(e,t){if(e)try{e(t)}catch(_){}}function I(){try{let e=Date.now();return Number.isFinite(e)?e:null}catch(e){return null}}function X(e,t){let _=t.reportCompletionFunc?I():null,r=new WeakMap,n=[],s=0,l=0,a=0,c=0,j=0,d=0,m=!1,A;function b(i=!1){if(!t.reportProgressFunc)return;let u=t.reportProgressFuncTo-t.reportProgressFuncFrom,o=i?t.reportProgressFuncTo:t.reportProgressFuncFrom+u*Math.min(.99,d/(d+1e3));o!==A&&(A=o,E(t.reportProgressFunc,o))}function g(){d++,d%1e3===0&&b()}function f(i){if(b(!0),t.reportCompletionFunc){let u=I(),o=_===null||u===null?null:u-_,M=o===null||!Number.isFinite(o)?0:Math.max(0,o);E(t.reportCompletionFunc,Object.freeze({aliasesSkipped:s,arrayElementsVisited:l,maxDepth:a,objectPropertiesVisited:c,timeTakenInMilliseconds:M,uniqueContainersVisited:j}))}return i}function w(i,u){if(u>a&&(a=u),typeof i=="string")return i.length===0?1:0;if(!Array.isArray(i)&&!p(i))return-1;let o=r.get(i);return o===1?-1:o===2?(s++,g(),1):(r.set(i,1),j++,g(),Array.isArray(i)?n.push({depth:u,index:0,kind:"array",length:i.length,value:i}):n.push({depth:u,index:0,keys:Object.keys(i),kind:"object",value:i}),2)}b();let F=w(e,0);if(F===-1)return f(null);if(F!==2)return f(F===1);for(;n.length;){let i=n[n.length-1];if(i.kind==="array"){if(i.index===i.length){r.set(i.value,2),n.pop();continue}let u=i.index++;if(l++,g(),!y.call(i.value,u))return i.depth+1>a&&(a=i.depth+1),f(null);let o=w(i.value[u],i.depth+1);if(o===-1)return f(null);o===0&&(m=!0)}else{if(i.index===i.keys.length){r.set(i.value,2),n.pop();continue}let u=i.keys[i.index++];c++,g();let o=w(i.value[u],i.depth+1);if(o===-1)return f(null);o===0&&(m=!0)}}return f(!m)}function ee(e){if(e!=null&&!p(e))throw new TypeError("ast-is-empty/isEmpty(): [THROW_ID_01] The second argument must be a plain options object, null, or undefined.");let t=e!=null?e:{},_=Object.keys(t).find(c=>!G.has(c));if(_!==void 0)throw new TypeError("ast-is-empty/isEmpty(): [THROW_ID_02] Unknown option ".concat(JSON.stringify(_),"."));let r=c=>y.call(t,c)&&t[c]!==void 0?t[c]:W[c],n=r("reportCompletionFunc");if(n!==null&&typeof n!="function")throw new TypeError("ast-is-empty/isEmpty(): [THROW_ID_03] opts.reportCompletionFunc must be a function, null, or undefined.");let s=r("reportProgressFunc");if(s!==null&&typeof s!="function")throw new TypeError("ast-is-empty/isEmpty(): [THROW_ID_04] opts.reportProgressFunc must be a function, null, or undefined.");let l=r("reportProgressFuncFrom");if(!Number.isFinite(l))throw new TypeError("ast-is-empty/isEmpty(): [THROW_ID_05] opts.reportProgressFuncFrom must be a finite number or undefined.");let a=r("reportProgressFuncTo");if(!Number.isFinite(a))throw new TypeError("ast-is-empty/isEmpty(): [THROW_ID_06] opts.reportProgressFuncTo must be a finite number or undefined.");if(l>a)throw new RangeError("ast-is-empty/isEmpty(): [THROW_ID_07] opts.reportProgressFuncFrom cannot exceed opts.reportProgressFuncTo; received ".concat(l," and ").concat(a,"."));if(!Number.isFinite(a-l))throw new RangeError("ast-is-empty/isEmpty(): [THROW_ID_08] opts.reportProgressFuncFrom and opts.reportProgressFuncTo must define a finite span; received ".concat(l," and ").concat(a,"."));return{reportCompletionFunc:n,reportProgressFunc:s,reportProgressFuncFrom:l,reportProgressFuncTo:a}}function te(e,t){if(t===void 0){let n=[!1];return h(e,n)?n[0]!==!0:null}let _=ee(t);if(_.reportCompletionFunc||_.reportProgressFunc)return X(e,_);let r=[!1];return h(e,r)?r[0]!==!0:null}return U(re);})();
|
|
11
|
+
/**
|
|
12
|
+
* @name codsen-format-diagnostic-value
|
|
13
|
+
* @fileoverview Safely format untrusted JavaScript values for diagnostics
|
|
14
|
+
* @version 1.1.0
|
|
15
|
+
* @author Roy Revelt
|
|
16
|
+
* @license MIT
|
|
17
|
+
* {@link https://codsen.com/os/codsen-format-diagnostic-value/}
|
|
18
|
+
*/
|
|
11
19
|
/**
|
|
12
20
|
* @name codsen-utils
|
|
13
21
|
* @fileoverview Various utility functions
|
|
14
|
-
* @version 1.
|
|
22
|
+
* @version 1.10.0
|
|
15
23
|
* @author Roy Revelt
|
|
16
24
|
* @license MIT
|
|
17
25
|
* {@link https://codsen.com/os/codsen-utils/}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ast-is-empty",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.2",
|
|
4
4
|
"description": "Find out, is nested array/object/string/AST tree is empty",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"array",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
}
|
|
81
81
|
},
|
|
82
82
|
"dependencies": {
|
|
83
|
-
"codsen-utils": "^1.
|
|
83
|
+
"codsen-utils": "^1.10.0"
|
|
84
84
|
},
|
|
85
85
|
"engines": {
|
|
86
86
|
"node": ">=18.20.8"
|
package/types/index.d.ts
CHANGED
|
@@ -1,7 +1,52 @@
|
|
|
1
1
|
declare const version: string;
|
|
2
|
+
interface CompletionStats {
|
|
3
|
+
/** Number of links to already-completed containers that were skipped. */
|
|
4
|
+
readonly aliasesSkipped: number;
|
|
5
|
+
/** Number of array indices inspected, including a sparse hole that determines the result. */
|
|
6
|
+
readonly arrayElementsVisited: number;
|
|
7
|
+
/** Deepest value or array slot inspected, where the root has depth zero. */
|
|
8
|
+
readonly maxDepth: number;
|
|
9
|
+
/** Number of own enumerable string-keyed object properties inspected. */
|
|
10
|
+
readonly objectPropertiesVisited: number;
|
|
11
|
+
/** Best-effort elapsed time for user-facing completion feedback. */
|
|
12
|
+
readonly timeTakenInMilliseconds: number;
|
|
13
|
+
/** Number of distinct arrays and plain objects entered. */
|
|
14
|
+
readonly uniqueContainersVisited: number;
|
|
15
|
+
}
|
|
16
|
+
interface Opts {
|
|
17
|
+
reportCompletionFunc: null | ((stats: Readonly<CompletionStats>) => void);
|
|
18
|
+
reportProgressFunc: null | ((percentageDone: number) => void);
|
|
19
|
+
reportProgressFuncFrom: number;
|
|
20
|
+
reportProgressFuncTo: number;
|
|
21
|
+
}
|
|
22
|
+
interface InputOpts {
|
|
23
|
+
reportCompletionFunc?: Opts["reportCompletionFunc"] | undefined;
|
|
24
|
+
reportProgressFunc?: Opts["reportProgressFunc"] | undefined;
|
|
25
|
+
reportProgressFuncFrom?: number | undefined;
|
|
26
|
+
reportProgressFuncTo?: number | undefined;
|
|
27
|
+
}
|
|
28
|
+
declare const defaults: Readonly<Opts>;
|
|
29
|
+
type Result = boolean | null;
|
|
2
30
|
/**
|
|
3
|
-
*
|
|
31
|
+
* Check whether a string or recursively nested array/plain-object tree is
|
|
32
|
+
* strictly empty.
|
|
33
|
+
*
|
|
34
|
+
* `true` means every inspected string has zero code units and every inspected
|
|
35
|
+
* container is empty or contains only empty supported values. Whitespace is
|
|
36
|
+
* content and therefore produces `false`. `null` means the tree contains an
|
|
37
|
+
* unsupported value, a sparse array hole, or a cycle; `null` takes precedence
|
|
38
|
+
* over known content regardless of traversal order.
|
|
39
|
+
*
|
|
40
|
+
* Arrays are read through their own indexed slots without invoking an
|
|
41
|
+
* iterator, and extra array properties are ignored. Plain objects contribute
|
|
42
|
+
* their own enumerable string-keyed properties; symbol and non-enumerable
|
|
43
|
+
* properties are ignored. Completed shared subtrees are inspected only once.
|
|
44
|
+
*
|
|
45
|
+
* Reporting callbacks are observational: their errors are ignored and cannot
|
|
46
|
+
* change the tri-state result. Progress is finite and monotonic within the
|
|
47
|
+
* configured range, and completion statistics are frozen.
|
|
4
48
|
*/
|
|
5
|
-
declare function isEmpty(input: unknown
|
|
49
|
+
declare function isEmpty(input: unknown, opts?: InputOpts | null): Result;
|
|
6
50
|
|
|
7
|
-
export { isEmpty, version };
|
|
51
|
+
export { defaults, isEmpty, version };
|
|
52
|
+
export type { CompletionStats, InputOpts, Opts };
|