@avstantso/std-ext 1.2.2 → 1.2.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/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## [1.2.3] - 2026-02-21
5
+
6
+ ### Added
7
+
8
+ - `Object.isPlainObject` — returns `true` if the object's prototype is `Object.prototype` or `null` (plain data object).
9
+
10
+ ### Removed
11
+
12
+ - `Object.isRich` — replaced by `Object.isPlainObject` (inverted semantics, clearer naming)
13
+
4
14
  ## [1.2.2] - 2026-02-04
5
15
 
6
16
  ### Changed
package/README.md CHANGED
@@ -118,6 +118,42 @@ Object.definePropertiesOnce(obj, {
118
118
  console.log(obj); // { a: 1, b: 2, c: 3 }
119
119
  ```
120
120
 
121
+ #### `Object.isPlainObject(o)`
122
+
123
+ Returns `true` if the object is a plain data object — its prototype is `Object.prototype` or `null`. Arrays, Maps, Sets, and class instances return `false`.
124
+
125
+ Useful for deep recursive operations (deep clone, deep merge, deep compare) to distinguish plain data objects from typed instances that require special handling.
126
+
127
+ **Parameters:**
128
+ - `o: object` - Object to check
129
+
130
+ **Returns:** `boolean`
131
+
132
+ **Example:**
133
+ ```typescript
134
+ Object.isPlainObject({}); // true
135
+ Object.isPlainObject({ a: 1, b: 'x' }); // true
136
+ Object.isPlainObject(Object.create(null)); // true ← null-prototype objects are plain too
137
+
138
+ Object.isPlainObject([]); // false
139
+ Object.isPlainObject(new Set()); // false
140
+ Object.isPlainObject(new Map()); // false
141
+ Object.isPlainObject(new Date()); // false
142
+
143
+ class MyClass {}
144
+ Object.isPlainObject(new MyClass()); // false
145
+
146
+ // Typical use in deep-ops:
147
+ function deepClone(value: unknown): unknown {
148
+ if (Object.isPlainObject(value)) {
149
+ return Object.fromEntries(
150
+ Object.entries(value).map(([k, v]) => [k, deepClone(v)])
151
+ );
152
+ }
153
+ return value; // arrays, class instances, primitives — handle separately
154
+ }
155
+ ```
156
+
121
157
  ### Symbol Extensions
122
158
 
123
159
  #### `Symbol.Has(symb, resultTemplate?)`
@@ -14,4 +14,19 @@ interface ObjectConstructor {
14
14
  * Each descriptor object describes a data property or an accessor property.
15
15
  */
16
16
  definePropertiesOnce: ObjectConstructor['defineProperties'];
17
+ /**
18
+ * Returns `true` if the object is a plain data object — prototype is `Object.prototype` or `null`.
19
+ * Arrays, Maps, Sets, class instances return `false`.
20
+ * @param o Object to check
21
+ * @example
22
+ * console.log(Object.isPlainObject({})); // true
23
+ * console.log(Object.isPlainObject(Object.create(null))); // true
24
+ * console.log(Object.isPlainObject([])); // false
25
+ * console.log(Object.isPlainObject(new Set())); // false
26
+ * console.log(Object.isPlainObject(new Map())); // false
27
+ *
28
+ * class MyClass {}
29
+ * console.log(Object.isPlainObject(new MyClass())); // false
30
+ */
31
+ isPlainObject(o: object): boolean;
17
32
  }
package/dist/index.js CHANGED
@@ -21,6 +21,15 @@ if (!Object.definePropertiesOnce)
21
21
  writable: false,
22
22
  configurable: true
23
23
  });
24
+ if (!Object.isPlainObject)
25
+ Object.defineProperty(Object, 'isPlainObject', {
26
+ value(o) {
27
+ const proto = Object.getPrototypeOf(o);
28
+ return proto === Object.prototype || proto === null;
29
+ },
30
+ writable: false,
31
+ configurable: true
32
+ });
24
33
 
25
34
  Object.definePropertiesOnce(Symbol, {
26
35
  Has: {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/_std-ext/object.ts","../src/_std-ext/symbol.ts","../src/_std-ext/array.ts","../src/_std-ext/string.ts","../src/_std-ext/reg-exp.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface ObjectConstructor {\n /**\n * Adds a property to an object (if it's not exists).\n * @param o Object on which to add the property.\\\n * This can be a native JavaScript object (that is, a user-defined object or a built in object) or a DOM object.\n * @param p The property name.\n * @param attributes Descriptor for the property. It can be for a data property or an accessor property.\n */\n definePropertyOnce: ObjectConstructor['defineProperty'];\n\n /**\n * Adds one or more properties to an object (if it's not exists).\n * @param o Object on which to add or modify the properties. This can be a native JavaScript object or a DOM object.\n * @param properties JavaScript object that contains one or more descriptor objects.\\\n * Each descriptor object describes a data property or an accessor property.\n */\n definePropertiesOnce: ObjectConstructor['defineProperties'];\n}\n\nif (!Object.definePropertyOnce)\n Object.defineProperty(Object, 'definePropertyOnce', {\n value<T>(o: T, p: PropertyKey, attributes: PropertyDescriptor): T {\n if (!(p in (o as object))) Object.defineProperty(o, p, attributes);\n return o;\n },\n writable: false,\n configurable: true\n });\n\nif (!Object.definePropertiesOnce)\n Object.defineProperty(Object, 'definePropertiesOnce', {\n value<T>(o: T, properties: PropertyDescriptorMap): T {\n for (const p in properties)\n if (!(p in (o as object))) Object.defineProperty(o, p, properties[p]);\n return o;\n },\n writable: false,\n configurable: true\n });\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface SymbolConstructor {\n /**\n * @summary Has `symbol` factory function\n * @template Symb Symbol type for checks\n * @template R Symbol field type\n * @param resultTemplate Type-only argument to infer `R` template (not used at runtime)\n * @return Function for check and cast symbol in object\n */\n Has<\n Symb extends symbol,\n R = unknown\n >(symb: Symb, resultTemplate?: R): {\n (obj: unknown): obj is { [K in Symb]: R };\n }\n}\n\nObject.definePropertiesOnce(Symbol, {\n Has: {\n value(symb: symbol) {\n return (obj: unknown) => obj != null && symb in Object(obj);\n },\n writable: false,\n configurable: true\n }\n});\n","namespace AVStantso.Array {\n /**\n * @summary Select `Array<T>` or `ReadonlyArray<T>` by `[W]ritable`\n */\n export type RW<W extends boolean, T = unknown> = W extends true\n ? Array<T>\n : ReadonlyArray<T>;\n\n /**\n * @summary Key of `AVStantso.Array.RW<W>`\n */\n export type Key<W extends boolean> = keyof {\n [K in keyof RW<W> as `${Extract<K, string>}`]: 0;\n };\n\n export namespace Key {\n /**\n * @summary Immutable array key\n */\n export type R = Key<false>;\n\n /**\n * @summary Mutable array key\n */\n export type RW = Key<true>;\n\n /**\n * @summary Mutation key only\n */\n export type W = Exclude<RW, R>;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n export interface Ex<W extends boolean, T> {\n /**\n * @summary Filter all not `falsy` items\n * @returns New array with all not `falsy` items\n */\n pack(): Array<T>;\n\n /**\n * @summary Get last item. Array not changes\n * @returns Last item or `undefined`, if array empty. Array not changes\n */\n peek(): T;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ndeclare interface ReadonlyArray<T> extends AVStantso.Array.Ex<false, T> { }\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ndeclare interface Array<T> extends AVStantso.Array.Ex<true, T> { }\n\nObject.definePropertiesOnce(Array.prototype, {\n pack: {\n value() {\n return this && this.filter((item: unknown) => item);\n }\n },\n peek: {\n value() {\n return this && this.at(-1);\n }\n }\n});\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\ndeclare interface String {\n toCapitalized<S extends string = string>(this: S): Capitalize<S>;\n toUncapitalized<S extends string = string>(this: S): Uncapitalize<S>;\n}\n\nObject.definePropertiesOnce(String.prototype, {\n toCapitalized: {\n value() {\n return this && this.charAt(0).toLocaleUpperCase() + this.slice(1);\n }\n },\n toUncapitalized: {\n value() {\n return this && this.charAt(0).toLocaleLowerCase() + this.slice(1);\n }\n }\n});\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface RegExpConstructor {\n /**\n * @summary Escape all `RegExp` special characters in a string\n * @returns New string with escaped `RegExp` characters\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/escape\n * @see https://tc39.es/proposal-regex-escaping/\n */\n escape(str: string): string;\n}\n\nObject.definePropertiesOnce(RegExp, {\n escape: {\n value(str: string) {\n return str.replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&');\n },\n writable: false,\n configurable: true\n }\n});\n"],"names":[],"mappings":";;AAoBA,IAAI,CAAC,MAAM,CAAC,kBAAkB;AAC5B,IAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE;AAClD,QAAA,KAAK,CAAI,CAAI,EAAE,CAAc,EAAE,UAA8B,EAAA;AAC3D,YAAA,IAAI,EAAE,CAAC,IAAK,CAAY,CAAC;gBAAE,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AAClE,YAAA,OAAO,CAAC;QACV,CAAC;AACD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE;AACf,KAAA,CAAC;AAEJ,IAAI,CAAC,MAAM,CAAC,oBAAoB;AAC9B,IAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,sBAAsB,EAAE;QACpD,KAAK,CAAI,CAAI,EAAE,UAAiC,EAAA;YAC9C,KAAK,MAAM,CAAC,IAAI,UAAU;AACxB,gBAAA,IAAI,EAAE,CAAC,IAAK,CAAY,CAAC;AAAE,oBAAA,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACvE,YAAA,OAAO,CAAC;QACV,CAAC;AACD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE;AACf,KAAA,CAAC;;ACtBJ,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE;AAClC,IAAA,GAAG,EAAE;AACH,QAAA,KAAK,CAAC,IAAY,EAAA;AAChB,YAAA,OAAO,CAAC,GAAY,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC;QAC7D,CAAC;AACD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE;AACf;AACF,CAAA,CAAC;;AC4BF,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE;AAC3C,IAAA,IAAI,EAAE;QACJ,KAAK,GAAA;AACH,YAAA,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAa,KAAK,IAAI,CAAC;QACrD;AACD,KAAA;AACD,IAAA,IAAI,EAAE;QACJ,KAAK,GAAA;YACH,OAAO,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5B;AACD;AACF,CAAA,CAAC;;AC1DF,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE;AAC5C,IAAA,aAAa,EAAE;QACb,KAAK,GAAA;AACH,YAAA,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE;AACD,KAAA;AACD,IAAA,eAAe,EAAE;QACf,KAAK,GAAA;AACH,YAAA,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE;AACD;AACF,CAAA,CAAC;;ACNF,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE;AAClC,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,CAAC,GAAW,EAAA;YACf,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;QACnD,CAAC;AACD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE;AACf;AACF,CAAA,CAAC;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/_std-ext/object.ts","../src/_std-ext/symbol.ts","../src/_std-ext/array.ts","../src/_std-ext/string.ts","../src/_std-ext/reg-exp.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface ObjectConstructor {\n /**\n * Adds a property to an object (if it's not exists).\n * @param o Object on which to add the property.\\\n * This can be a native JavaScript object (that is, a user-defined object or a built in object) or a DOM object.\n * @param p The property name.\n * @param attributes Descriptor for the property. It can be for a data property or an accessor property.\n */\n definePropertyOnce: ObjectConstructor['defineProperty'];\n\n /**\n * Adds one or more properties to an object (if it's not exists).\n * @param o Object on which to add or modify the properties. This can be a native JavaScript object or a DOM object.\n * @param properties JavaScript object that contains one or more descriptor objects.\\\n * Each descriptor object describes a data property or an accessor property.\n */\n definePropertiesOnce: ObjectConstructor['defineProperties'];\n\n /**\n * Returns `true` if the object is a plain data object — prototype is `Object.prototype` or `null`.\n * Arrays, Maps, Sets, class instances return `false`.\n * @param o Object to check\n * @example\n * console.log(Object.isPlainObject({})); // true\n * console.log(Object.isPlainObject(Object.create(null))); // true\n * console.log(Object.isPlainObject([])); // false\n * console.log(Object.isPlainObject(new Set())); // false\n * console.log(Object.isPlainObject(new Map())); // false\n *\n * class MyClass {}\n * console.log(Object.isPlainObject(new MyClass())); // false\n */\n isPlainObject(o: object): boolean;\n}\n\nif (!Object.definePropertyOnce)\n Object.defineProperty(Object, 'definePropertyOnce', {\n value<T>(o: T, p: PropertyKey, attributes: PropertyDescriptor): T {\n if (!(p in (o as object))) Object.defineProperty(o, p, attributes);\n return o;\n },\n writable: false,\n configurable: true\n });\n\nif (!Object.definePropertiesOnce)\n Object.defineProperty(Object, 'definePropertiesOnce', {\n value<T>(o: T, properties: PropertyDescriptorMap): T {\n for (const p in properties)\n if (!(p in (o as object))) Object.defineProperty(o, p, properties[p]);\n return o;\n },\n writable: false,\n configurable: true\n });\n\nif (!Object.isPlainObject)\n Object.defineProperty(Object, 'isPlainObject', {\n value(o: object): boolean {\n const proto = Object.getPrototypeOf(o);\n return proto === Object.prototype || proto === null;\n },\n writable: false,\n configurable: true\n });\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface SymbolConstructor {\n /**\n * @summary Has `symbol` factory function\n * @template Symb Symbol type for checks\n * @template R Symbol field type\n * @param resultTemplate Type-only argument to infer `R` template (not used at runtime)\n * @return Function for check and cast symbol in object\n */\n Has<\n Symb extends symbol,\n R = unknown\n >(symb: Symb, resultTemplate?: R): {\n (obj: unknown): obj is { [K in Symb]: R };\n }\n}\n\nObject.definePropertiesOnce(Symbol, {\n Has: {\n value(symb: symbol) {\n return (obj: unknown) => obj != null && symb in Object(obj);\n },\n writable: false,\n configurable: true\n }\n});\n","namespace AVStantso.Array {\n /**\n * @summary Select `Array<T>` or `ReadonlyArray<T>` by `[W]ritable`\n */\n export type RW<W extends boolean, T = unknown> = W extends true\n ? Array<T>\n : ReadonlyArray<T>;\n\n /**\n * @summary Key of `AVStantso.Array.RW<W>`\n */\n export type Key<W extends boolean> = keyof {\n [K in keyof RW<W> as `${Extract<K, string>}`]: 0;\n };\n\n export namespace Key {\n /**\n * @summary Immutable array key\n */\n export type R = Key<false>;\n\n /**\n * @summary Mutable array key\n */\n export type RW = Key<true>;\n\n /**\n * @summary Mutation key only\n */\n export type W = Exclude<RW, R>;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n export interface Ex<W extends boolean, T> {\n /**\n * @summary Filter all not `falsy` items\n * @returns New array with all not `falsy` items\n */\n pack(): Array<T>;\n\n /**\n * @summary Get last item. Array not changes\n * @returns Last item or `undefined`, if array empty. Array not changes\n */\n peek(): T;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ndeclare interface ReadonlyArray<T> extends AVStantso.Array.Ex<false, T> { }\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ndeclare interface Array<T> extends AVStantso.Array.Ex<true, T> { }\n\nObject.definePropertiesOnce(Array.prototype, {\n pack: {\n value() {\n return this && this.filter((item: unknown) => item);\n }\n },\n peek: {\n value() {\n return this && this.at(-1);\n }\n }\n});\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\ndeclare interface String {\n toCapitalized<S extends string = string>(this: S): Capitalize<S>;\n toUncapitalized<S extends string = string>(this: S): Uncapitalize<S>;\n}\n\nObject.definePropertiesOnce(String.prototype, {\n toCapitalized: {\n value() {\n return this && this.charAt(0).toLocaleUpperCase() + this.slice(1);\n }\n },\n toUncapitalized: {\n value() {\n return this && this.charAt(0).toLocaleLowerCase() + this.slice(1);\n }\n }\n});\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface RegExpConstructor {\n /**\n * @summary Escape all `RegExp` special characters in a string\n * @returns New string with escaped `RegExp` characters\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/escape\n * @see https://tc39.es/proposal-regex-escaping/\n */\n escape(str: string): string;\n}\n\nObject.definePropertiesOnce(RegExp, {\n escape: {\n value(str: string) {\n return str.replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&');\n },\n writable: false,\n configurable: true\n }\n});\n"],"names":[],"mappings":";;AAoCA,IAAI,CAAC,MAAM,CAAC,kBAAkB;AAC5B,IAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE;AAClD,QAAA,KAAK,CAAI,CAAI,EAAE,CAAc,EAAE,UAA8B,EAAA;AAC3D,YAAA,IAAI,EAAE,CAAC,IAAK,CAAY,CAAC;gBAAE,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;AAClE,YAAA,OAAO,CAAC;QACV,CAAC;AACD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE;AACf,KAAA,CAAC;AAEJ,IAAI,CAAC,MAAM,CAAC,oBAAoB;AAC9B,IAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,sBAAsB,EAAE;QACpD,KAAK,CAAI,CAAI,EAAE,UAAiC,EAAA;YAC9C,KAAK,MAAM,CAAC,IAAI,UAAU;AACxB,gBAAA,IAAI,EAAE,CAAC,IAAK,CAAY,CAAC;AAAE,oBAAA,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACvE,YAAA,OAAO,CAAC;QACV,CAAC;AACD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE;AACf,KAAA,CAAC;AAEJ,IAAI,CAAC,MAAM,CAAC,aAAa;AACvB,IAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE;AAC7C,QAAA,KAAK,CAAC,CAAS,EAAA;YACb,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YACtC,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI;QACrD,CAAC;AACD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE;AACf,KAAA,CAAC;;AChDJ,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE;AAClC,IAAA,GAAG,EAAE;AACH,QAAA,KAAK,CAAC,IAAY,EAAA;AAChB,YAAA,OAAO,CAAC,GAAY,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC;QAC7D,CAAC;AACD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE;AACf;AACF,CAAA,CAAC;;AC4BF,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE;AAC3C,IAAA,IAAI,EAAE;QACJ,KAAK,GAAA;AACH,YAAA,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAa,KAAK,IAAI,CAAC;QACrD;AACD,KAAA;AACD,IAAA,IAAI,EAAE;QACJ,KAAK,GAAA;YACH,OAAO,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5B;AACD;AACF,CAAA,CAAC;;AC1DF,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE;AAC5C,IAAA,aAAa,EAAE;QACb,KAAK,GAAA;AACH,YAAA,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE;AACD,KAAA;AACD,IAAA,eAAe,EAAE;QACf,KAAK,GAAA;AACH,YAAA,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE;AACD;AACF,CAAA,CAAC;;ACNF,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE;AAClC,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,CAAC,GAAW,EAAA;YACf,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;QACnD,CAAC;AACD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE;AACf;AACF,CAAA,CAAC;;"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@avstantso/std-ext",
3
3
  "license": "MIT",
4
4
  "author": "avstantso",
5
- "version": "1.2.2",
5
+ "version": "1.2.3",
6
6
  "description": "Standard JS objects extension. Zero-dependencies",
7
7
  "keywords": [
8
8
  "String",