New:Socket for Asana Is Now Available.Learn more
Get Started

@structkit/queue

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@structkit/queue - npm Package Compare versions

Comparing version
0.0.0
to
0.0.1
+1
-1
dist/index.cjs.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/index.ts","../src/queue.ts"],"sourcesContent":["export { QueueImpl as Queue } from \"./queue\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type { } from \"./type\";\n\n// global에 할당\nglobal.Queue = Queue as unknown as QueueConstructor;\n","import util from \"node:util\";\n\nexport class QueueImpl<T> implements Queue<T>, ReadonlyQueue<T> {\n #data: T[] = [];\n\n constructor(values?: readonly T[] | Iterable<T> | null) {\n if (values) {\n this.#data = Array.isArray(values) ? [...values] : [...values];\n }\n }\n\n enqueue(value: T): void {\n this.#data.push(value);\n }\n\n // NOTE: Currently uses Array-based implementation. Future versions may switch to a linked list to improve dequeue performance to O(1).\n dequeue(): T | undefined {\n return this.#data.shift();\n }\n\n peek(): T | undefined {\n return this.#data[0];\n }\n\n isEmpty(): boolean {\n return this.#data.length === 0;\n }\n\n clear(): void {\n this.#data = [];\n }\n\n has(value: T): boolean {\n return this.#data.includes(value);\n }\n\n forEach(\n callbackfn: (value: T, value2: T, queue: Queue<T>) => void,\n thisArg?: any,\n ): void {\n for (let i = 0; i < this.#data.length; i++) {\n const value = this.#data[i]!;\n callbackfn.call(thisArg, value, value, this);\n }\n }\n\n get size(): number {\n return this.#data.length;\n }\n\n [Symbol.iterator](): QueueIterator<T> {\n return this.#data[Symbol.iterator]();\n }\n\n entries(): QueueIterator<[number, T]> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: [i, buf[i]] } as IteratorResult<\n [number, T]\n >;\n } else {\n result = { done: true as const } as IteratorResult<[number, T]>;\n }\n i++;\n\n return result satisfies IteratorResult<[number, T]>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map(\n (v, idx) =>\n `[ ${util.inspect(idx, opts)}, ${util.inspect(v, opts)} ]`,\n )\n .join(\", \");\n return `[${name} Entries] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n keys(): QueueIterator<number> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false as const, value: i } as IteratorResult<number>;\n } else {\n result = { done: true as const } as IteratorResult<number>;\n }\n i++;\n return result satisfies IteratorResult<number>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map((v, idx) => `${util.inspect(idx, opts)}`)\n .join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n values(): QueueIterator<T> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: buf[i] } as IteratorResult<T>;\n } else {\n result = { done: true as const } as IteratorResult<T>;\n }\n i++;\n return result satisfies IteratorResult<T>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf.map((v) => `${util.inspect(v, opts)}`).join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n get [Symbol.toStringTag](): string {\n return \"Queue\";\n }\n\n [util.inspect.custom](\n depth: number,\n opts: util.InspectOptionsStylized,\n ): string {\n const body = this.#data.map((v) => util.inspect(v, opts)).join(\", \");\n return `Queue(${this.size}) { ${body} }`;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,uBAAiB;AAAjB;AAEO,IAAM,YAAN,MAAyD;AAAA,EAG9D,YAAY,QAA4C;AAFxD,8BAAa,CAAC;AAGZ,QAAI,QAAQ;AACV,yBAAK,OAAQ,MAAM,QAAQ,MAAM,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,MAAM;AAAA,IAC/D;AAAA,EACF;AAAA,EAEA,QAAQ,OAAgB;AACtB,uBAAK,OAAM,KAAK,KAAK;AAAA,EACvB;AAAA;AAAA,EAGA,UAAyB;AACvB,WAAO,mBAAK,OAAM,MAAM;AAAA,EAC1B;AAAA,EAEA,OAAsB;AACpB,WAAO,mBAAK,OAAM,CAAC;AAAA,EACrB;AAAA,EAEA,UAAmB;AACjB,WAAO,mBAAK,OAAM,WAAW;AAAA,EAC/B;AAAA,EAEA,QAAc;AACZ,uBAAK,OAAQ,CAAC;AAAA,EAChB;AAAA,EAEA,IAAI,OAAmB;AACrB,WAAO,mBAAK,OAAM,SAAS,KAAK;AAAA,EAClC;AAAA,EAEA,QACE,YACA,SACM;AACN,aAAS,IAAI,GAAG,IAAI,mBAAK,OAAM,QAAQ,KAAK;AAC1C,YAAM,QAAQ,mBAAK,OAAM,CAAC;AAC1B,iBAAW,KAAK,SAAS,OAAO,OAAO,IAAI;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,mBAAK,OAAM;AAAA,EACpB;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAsB;AACpC,WAAO,mBAAK,OAAM,OAAO,QAAQ,EAAE;AAAA,EACrC;AAAA,EAEA,UAAsC;AACpC,QAAI,IAAI;AACR,UAAM,OAAO,KAAK;AAClB,UAAM,MAAM,mBAAK;AACjB,UAAM,OAAO,KAAK,OAAO,WAAW;AAEpC,WAAO;AAAA,MACL,MAAM,WAAY;AAChB,YAAI;AACJ,YAAI,IAAI,MAAM;AACZ,mBAAS,EAAE,MAAM,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE;AAAA,QAG7C,OAAO;AACL,mBAAS,EAAE,MAAM,KAAc;AAAA,QACjC;AACA;AAEA,eAAO;AAAA,MACT;AAAA,MACA,CAAC,OAAO,QAAQ,GAAG,WAAY;AAC7B,eAAO;AAAA,MACT;AAAA,MACA,CAAC,iBAAAA,QAAK,QAAQ,MAAM,EAAE,OAAe,MAAmC;AACtE,cAAM,OAAO,IACV;AAAA,UACC,CAAC,GAAG,QACF,KAAK,iBAAAA,QAAK,QAAQ,KAAK,IAAI,CAAC,KAAK,iBAAAA,QAAK,QAAQ,GAAG,IAAI,CAAC;AAAA,QAC1D,EACC,KAAK,IAAI;AACZ,eAAO,IAAI,IAAI,eAAe,IAAI;AAAA,MACpC;AAAA,MACA,CAAC,OAAO,OAAO,IAAI;AAtFzB;AAuFQ,mBAAK,WAAL;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAA8B;AAC5B,QAAI,IAAI;AACR,UAAM,OAAO,KAAK;AAClB,UAAM,MAAM,mBAAK;AACjB,UAAM,OAAO,KAAK,OAAO,WAAW;AAEpC,WAAO;AAAA,MACL,MAAM,WAAY;AAChB,YAAI;AACJ,YAAI,IAAI,MAAM;AACZ,mBAAS,EAAE,MAAM,OAAgB,OAAO,EAAE;AAAA,QAC5C,OAAO;AACL,mBAAS,EAAE,MAAM,KAAc;AAAA,QACjC;AACA;AACA,eAAO;AAAA,MACT;AAAA,MACA,CAAC,OAAO,QAAQ,GAAG,WAAY;AAC7B,eAAO;AAAA,MACT;AAAA,MACA,CAAC,iBAAAA,QAAK,QAAQ,MAAM,EAAE,OAAe,MAAmC;AACtE,cAAM,OAAO,IACV,IAAI,CAAC,GAAG,QAAQ,GAAG,iBAAAA,QAAK,QAAQ,KAAK,IAAI,CAAC,EAAE,EAC5C,KAAK,IAAI;AACZ,eAAO,IAAI,IAAI,gBAAgB,IAAI;AAAA,MACrC;AAAA,MACA,CAAC,OAAO,OAAO,IAAI;AAtHzB;AAuHQ,mBAAK,WAAL;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAA2B;AACzB,QAAI,IAAI;AACR,UAAM,OAAO,KAAK;AAClB,UAAM,MAAM,mBAAK;AACjB,UAAM,OAAO,KAAK,OAAO,WAAW;AAEpC,WAAO;AAAA,MACL,MAAM,WAAY;AAChB,YAAI;AACJ,YAAI,IAAI,MAAM;AACZ,mBAAS,EAAE,MAAM,OAAO,OAAO,IAAI,CAAC,EAAE;AAAA,QACxC,OAAO;AACL,mBAAS,EAAE,MAAM,KAAc;AAAA,QACjC;AACA;AACA,eAAO;AAAA,MACT;AAAA,MACA,CAAC,OAAO,QAAQ,GAAG,WAAY;AAC7B,eAAO;AAAA,MACT;AAAA,MACA,CAAC,iBAAAA,QAAK,QAAQ,MAAM,EAAE,OAAe,MAAmC;AACtE,cAAM,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,iBAAAA,QAAK,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI;AACjE,eAAO,IAAI,IAAI,gBAAgB,IAAI;AAAA,MACrC;AAAA,MACA,CAAC,OAAO,OAAO,IAAI;AApJzB;AAqJQ,mBAAK,WAAL;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,OAAO,WAAW,IAAY;AACjC,WAAO;AAAA,EACT;AAAA,EAEA,CAAC,iBAAAA,QAAK,QAAQ,MAAM,EAClB,OACA,MACQ;AACR,UAAM,OAAO,mBAAK,OAAM,IAAI,CAAC,MAAM,iBAAAA,QAAK,QAAQ,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI;AACnE,WAAO,SAAS,KAAK,IAAI,OAAO,IAAI;AAAA,EACtC;AACF;AAlKE;;;ADEF,OAAO,QAAQ;","names":["util"]}
{"version":3,"sources":["../src/index.ts","../src/queue.ts"],"sourcesContent":["export { QueueImpl as Queue } from \"./queue\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type { } from \"./type\";\n\nglobal.Queue = Queue;\n","import util from \"node:util\";\n\nexport class QueueImpl<T> implements Queue<T>, ReadonlyQueue<T> {\n #data: T[] = [];\n\n constructor(values?: readonly T[] | Iterable<T> | null) {\n if (values) {\n this.#data = Array.isArray(values) ? [...values] : [...values];\n }\n }\n\n enqueue(value: T): void {\n this.#data.push(value);\n }\n\n // NOTE: Currently uses Array-based implementation. Future versions may switch to a linked list to improve dequeue performance to O(1).\n dequeue(): T | undefined {\n return this.#data.shift();\n }\n\n peek(): T | undefined {\n return this.#data[0];\n }\n\n isEmpty(): boolean {\n return this.#data.length === 0;\n }\n\n clear(): void {\n this.#data = [];\n }\n\n has(value: T): boolean {\n return this.#data.includes(value);\n }\n\n forEach(\n callbackfn: (value: T, value2: T, queue: Queue<T>) => void,\n thisArg?: any,\n ): void {\n for (let i = 0; i < this.#data.length; i++) {\n const value = this.#data[i]!;\n callbackfn.call(thisArg, value, value, this);\n }\n }\n\n get size(): number {\n return this.#data.length;\n }\n\n [Symbol.iterator](): QueueIterator<T> {\n return this.#data[Symbol.iterator]();\n }\n\n entries(): QueueIterator<[number, T]> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: [i, buf[i]] } as IteratorResult<\n [number, T]\n >;\n } else {\n result = { done: true as const } as IteratorResult<[number, T]>;\n }\n i++;\n\n return result satisfies IteratorResult<[number, T]>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map(\n (v, idx) =>\n `[ ${util.inspect(idx, opts)}, ${util.inspect(v, opts)} ]`,\n )\n .join(\", \");\n return `[${name} Entries] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n keys(): QueueIterator<number> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false as const, value: i } as IteratorResult<number>;\n } else {\n result = { done: true as const } as IteratorResult<number>;\n }\n i++;\n return result satisfies IteratorResult<number>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map((v, idx) => `${util.inspect(idx, opts)}`)\n .join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n values(): QueueIterator<T> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: buf[i] } as IteratorResult<T>;\n } else {\n result = { done: true as const } as IteratorResult<T>;\n }\n i++;\n return result satisfies IteratorResult<T>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf.map((v) => `${util.inspect(v, opts)}`).join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n get [Symbol.toStringTag](): string {\n return \"Queue\";\n }\n\n [util.inspect.custom](\n depth: number,\n opts: util.InspectOptionsStylized,\n ): string {\n const body = this.#data.map((v) => util.inspect(v, opts)).join(\", \");\n return `Queue(${this.size}) { ${body} }`;\n }\n}\n"],"mappings":"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","names":["util"]}

@@ -115,4 +115,2 @@ import util from 'node:util';

new <T = any>(values?: readonly T[] | null): Queue<T>;
<T>(): Queue<T>;
<T>(...items: T[]): Queue<T>;
readonly prototype: Queue<any>;

@@ -119,0 +117,0 @@ }

@@ -115,4 +115,2 @@ import util from 'node:util';

new <T = any>(values?: readonly T[] | null): Queue<T>;
<T>(): Queue<T>;
<T>(...items: T[]): Queue<T>;
readonly prototype: Queue<any>;

@@ -119,0 +117,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/queue.ts","../src/index.ts"],"sourcesContent":["import util from \"node:util\";\n\nexport class QueueImpl<T> implements Queue<T>, ReadonlyQueue<T> {\n #data: T[] = [];\n\n constructor(values?: readonly T[] | Iterable<T> | null) {\n if (values) {\n this.#data = Array.isArray(values) ? [...values] : [...values];\n }\n }\n\n enqueue(value: T): void {\n this.#data.push(value);\n }\n\n // NOTE: Currently uses Array-based implementation. Future versions may switch to a linked list to improve dequeue performance to O(1).\n dequeue(): T | undefined {\n return this.#data.shift();\n }\n\n peek(): T | undefined {\n return this.#data[0];\n }\n\n isEmpty(): boolean {\n return this.#data.length === 0;\n }\n\n clear(): void {\n this.#data = [];\n }\n\n has(value: T): boolean {\n return this.#data.includes(value);\n }\n\n forEach(\n callbackfn: (value: T, value2: T, queue: Queue<T>) => void,\n thisArg?: any,\n ): void {\n for (let i = 0; i < this.#data.length; i++) {\n const value = this.#data[i]!;\n callbackfn.call(thisArg, value, value, this);\n }\n }\n\n get size(): number {\n return this.#data.length;\n }\n\n [Symbol.iterator](): QueueIterator<T> {\n return this.#data[Symbol.iterator]();\n }\n\n entries(): QueueIterator<[number, T]> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: [i, buf[i]] } as IteratorResult<\n [number, T]\n >;\n } else {\n result = { done: true as const } as IteratorResult<[number, T]>;\n }\n i++;\n\n return result satisfies IteratorResult<[number, T]>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map(\n (v, idx) =>\n `[ ${util.inspect(idx, opts)}, ${util.inspect(v, opts)} ]`,\n )\n .join(\", \");\n return `[${name} Entries] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n keys(): QueueIterator<number> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false as const, value: i } as IteratorResult<number>;\n } else {\n result = { done: true as const } as IteratorResult<number>;\n }\n i++;\n return result satisfies IteratorResult<number>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map((v, idx) => `${util.inspect(idx, opts)}`)\n .join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n values(): QueueIterator<T> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: buf[i] } as IteratorResult<T>;\n } else {\n result = { done: true as const } as IteratorResult<T>;\n }\n i++;\n return result satisfies IteratorResult<T>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf.map((v) => `${util.inspect(v, opts)}`).join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n get [Symbol.toStringTag](): string {\n return \"Queue\";\n }\n\n [util.inspect.custom](\n depth: number,\n opts: util.InspectOptionsStylized,\n ): string {\n const body = this.#data.map((v) => util.inspect(v, opts)).join(\", \");\n return `Queue(${this.size}) { ${body} }`;\n }\n}\n","export { QueueImpl as Queue } from \"./queue\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type { } from \"./type\";\n\n// global에 할당\nglobal.Queue = Queue as unknown as QueueConstructor;\n"],"mappings":"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","names":["util"]}
{"version":3,"sources":["../src/queue.ts","../src/index.ts"],"sourcesContent":["import util from \"node:util\";\n\nexport class QueueImpl<T> implements Queue<T>, ReadonlyQueue<T> {\n #data: T[] = [];\n\n constructor(values?: readonly T[] | Iterable<T> | null) {\n if (values) {\n this.#data = Array.isArray(values) ? [...values] : [...values];\n }\n }\n\n enqueue(value: T): void {\n this.#data.push(value);\n }\n\n // NOTE: Currently uses Array-based implementation. Future versions may switch to a linked list to improve dequeue performance to O(1).\n dequeue(): T | undefined {\n return this.#data.shift();\n }\n\n peek(): T | undefined {\n return this.#data[0];\n }\n\n isEmpty(): boolean {\n return this.#data.length === 0;\n }\n\n clear(): void {\n this.#data = [];\n }\n\n has(value: T): boolean {\n return this.#data.includes(value);\n }\n\n forEach(\n callbackfn: (value: T, value2: T, queue: Queue<T>) => void,\n thisArg?: any,\n ): void {\n for (let i = 0; i < this.#data.length; i++) {\n const value = this.#data[i]!;\n callbackfn.call(thisArg, value, value, this);\n }\n }\n\n get size(): number {\n return this.#data.length;\n }\n\n [Symbol.iterator](): QueueIterator<T> {\n return this.#data[Symbol.iterator]();\n }\n\n entries(): QueueIterator<[number, T]> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: [i, buf[i]] } as IteratorResult<\n [number, T]\n >;\n } else {\n result = { done: true as const } as IteratorResult<[number, T]>;\n }\n i++;\n\n return result satisfies IteratorResult<[number, T]>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map(\n (v, idx) =>\n `[ ${util.inspect(idx, opts)}, ${util.inspect(v, opts)} ]`,\n )\n .join(\", \");\n return `[${name} Entries] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n keys(): QueueIterator<number> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false as const, value: i } as IteratorResult<number>;\n } else {\n result = { done: true as const } as IteratorResult<number>;\n }\n i++;\n return result satisfies IteratorResult<number>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map((v, idx) => `${util.inspect(idx, opts)}`)\n .join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n values(): QueueIterator<T> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: buf[i] } as IteratorResult<T>;\n } else {\n result = { done: true as const } as IteratorResult<T>;\n }\n i++;\n return result satisfies IteratorResult<T>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf.map((v) => `${util.inspect(v, opts)}`).join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n get [Symbol.toStringTag](): string {\n return \"Queue\";\n }\n\n [util.inspect.custom](\n depth: number,\n opts: util.InspectOptionsStylized,\n ): string {\n const body = this.#data.map((v) => util.inspect(v, opts)).join(\", \");\n return `Queue(${this.size}) { ${body} }`;\n }\n}\n","export { QueueImpl as Queue } from \"./queue\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type { } from \"./type\";\n\nglobal.Queue = Queue;\n"],"mappings":"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","names":["util"]}

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/queue.ts","../src/index.ts"],"sourcesContent":["import util from \"node:util\";\n\nexport class QueueImpl<T> implements Queue<T>, ReadonlyQueue<T> {\n #data: T[] = [];\n\n constructor(values?: readonly T[] | Iterable<T> | null) {\n if (values) {\n this.#data = Array.isArray(values) ? [...values] : [...values];\n }\n }\n\n enqueue(value: T): void {\n this.#data.push(value);\n }\n\n // NOTE: Currently uses Array-based implementation. Future versions may switch to a linked list to improve dequeue performance to O(1).\n dequeue(): T | undefined {\n return this.#data.shift();\n }\n\n peek(): T | undefined {\n return this.#data[0];\n }\n\n isEmpty(): boolean {\n return this.#data.length === 0;\n }\n\n clear(): void {\n this.#data = [];\n }\n\n has(value: T): boolean {\n return this.#data.includes(value);\n }\n\n forEach(\n callbackfn: (value: T, value2: T, queue: Queue<T>) => void,\n thisArg?: any,\n ): void {\n for (let i = 0; i < this.#data.length; i++) {\n const value = this.#data[i]!;\n callbackfn.call(thisArg, value, value, this);\n }\n }\n\n get size(): number {\n return this.#data.length;\n }\n\n [Symbol.iterator](): QueueIterator<T> {\n return this.#data[Symbol.iterator]();\n }\n\n entries(): QueueIterator<[number, T]> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: [i, buf[i]] } as IteratorResult<\n [number, T]\n >;\n } else {\n result = { done: true as const } as IteratorResult<[number, T]>;\n }\n i++;\n\n return result satisfies IteratorResult<[number, T]>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map(\n (v, idx) =>\n `[ ${util.inspect(idx, opts)}, ${util.inspect(v, opts)} ]`,\n )\n .join(\", \");\n return `[${name} Entries] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n keys(): QueueIterator<number> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false as const, value: i } as IteratorResult<number>;\n } else {\n result = { done: true as const } as IteratorResult<number>;\n }\n i++;\n return result satisfies IteratorResult<number>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map((v, idx) => `${util.inspect(idx, opts)}`)\n .join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n values(): QueueIterator<T> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: buf[i] } as IteratorResult<T>;\n } else {\n result = { done: true as const } as IteratorResult<T>;\n }\n i++;\n return result satisfies IteratorResult<T>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf.map((v) => `${util.inspect(v, opts)}`).join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n get [Symbol.toStringTag](): string {\n return \"Queue\";\n }\n\n [util.inspect.custom](\n depth: number,\n opts: util.InspectOptionsStylized,\n ): string {\n const body = this.#data.map((v) => util.inspect(v, opts)).join(\", \");\n return `Queue(${this.size}) { ${body} }`;\n }\n}\n","export { QueueImpl as Queue } from \"./queue\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type { } from \"./type\";\n\n// global에 할당\nglobal.Queue = Queue as unknown as QueueConstructor;\n"],"mappings":"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","names":[]}
{"version":3,"sources":["../src/queue.ts","../src/index.ts"],"sourcesContent":["import util from \"node:util\";\n\nexport class QueueImpl<T> implements Queue<T>, ReadonlyQueue<T> {\n #data: T[] = [];\n\n constructor(values?: readonly T[] | Iterable<T> | null) {\n if (values) {\n this.#data = Array.isArray(values) ? [...values] : [...values];\n }\n }\n\n enqueue(value: T): void {\n this.#data.push(value);\n }\n\n // NOTE: Currently uses Array-based implementation. Future versions may switch to a linked list to improve dequeue performance to O(1).\n dequeue(): T | undefined {\n return this.#data.shift();\n }\n\n peek(): T | undefined {\n return this.#data[0];\n }\n\n isEmpty(): boolean {\n return this.#data.length === 0;\n }\n\n clear(): void {\n this.#data = [];\n }\n\n has(value: T): boolean {\n return this.#data.includes(value);\n }\n\n forEach(\n callbackfn: (value: T, value2: T, queue: Queue<T>) => void,\n thisArg?: any,\n ): void {\n for (let i = 0; i < this.#data.length; i++) {\n const value = this.#data[i]!;\n callbackfn.call(thisArg, value, value, this);\n }\n }\n\n get size(): number {\n return this.#data.length;\n }\n\n [Symbol.iterator](): QueueIterator<T> {\n return this.#data[Symbol.iterator]();\n }\n\n entries(): QueueIterator<[number, T]> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: [i, buf[i]] } as IteratorResult<\n [number, T]\n >;\n } else {\n result = { done: true as const } as IteratorResult<[number, T]>;\n }\n i++;\n\n return result satisfies IteratorResult<[number, T]>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map(\n (v, idx) =>\n `[ ${util.inspect(idx, opts)}, ${util.inspect(v, opts)} ]`,\n )\n .join(\", \");\n return `[${name} Entries] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n keys(): QueueIterator<number> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false as const, value: i } as IteratorResult<number>;\n } else {\n result = { done: true as const } as IteratorResult<number>;\n }\n i++;\n return result satisfies IteratorResult<number>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf\n .map((v, idx) => `${util.inspect(idx, opts)}`)\n .join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n values(): QueueIterator<T> {\n let i = 0;\n const size = this.size;\n const buf = this.#data;\n const name = this[Symbol.toStringTag];\n\n return {\n next: function () {\n let result;\n if (i < size) {\n result = { done: false, value: buf[i] } as IteratorResult<T>;\n } else {\n result = { done: true as const } as IteratorResult<T>;\n }\n i++;\n return result satisfies IteratorResult<T>;\n },\n [Symbol.iterator]: function () {\n return this;\n },\n [util.inspect.custom](depth: number, opts: util.InspectOptionsStylized) {\n const body = buf.map((v) => `${util.inspect(v, opts)}`).join(\", \");\n return `[${name} Iterator] { ${body} }`;\n },\n [Symbol.dispose]() {\n this.return?.();\n },\n };\n }\n\n get [Symbol.toStringTag](): string {\n return \"Queue\";\n }\n\n [util.inspect.custom](\n depth: number,\n opts: util.InspectOptionsStylized,\n ): string {\n const body = this.#data.map((v) => util.inspect(v, opts)).join(\", \");\n return `Queue(${this.size}) { ${body} }`;\n }\n}\n","export { QueueImpl as Queue } from \"./queue\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type { } from \"./type\";\n\nglobal.Queue = Queue;\n"],"mappings":"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","names":[]}
{
"name": "@structkit/queue",
"version": "0.0.0",
"version": "0.0.1",
"private": false,

@@ -5,0 +5,0 @@ "description": "A native-like Queue implementation with full TypeScript support and Array-like iterators",