@x-oasis/recycler 0.1.23 → 0.1.24
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/dist/recycler.cjs.development.js +1 -1
- package/dist/recycler.cjs.development.js.map +1 -1
- package/dist/recycler.cjs.production.min.js +1 -1
- package/dist/recycler.cjs.production.min.js.map +1 -1
- package/dist/recycler.esm.js +1 -1
- package/dist/recycler.esm.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -1
|
@@ -151,7 +151,7 @@ var Recycler = /*#__PURE__*/function () {
|
|
|
151
151
|
onProcess = props.onProcess;
|
|
152
152
|
var count = 0;
|
|
153
153
|
var _index = Math.max(startIndex, 0);
|
|
154
|
-
while (count < maxCount) {
|
|
154
|
+
while (count < maxCount && this._metaExtractor(_index)) {
|
|
155
155
|
if (_index >= this._thresholdIndexValue) {
|
|
156
156
|
var recyclerType = this._getType(_index);
|
|
157
157
|
var buffer = this.ensureBuffer(recyclerType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recycler.cjs.development.js","sources":["../src/common.ts","../src/FixedBuffer.ts","../src/index.ts"],"sourcesContent":["export const DEFAULT_RECYCLER_TYPE = '__default_recycler_buffer__';\nexport const RECYCLER_THRESHOLD_INDEX_VALUE = 0;\nexport const RECYCLER_RESERVED_BUFFER_PER_BATCH = 4;\nexport const RECYCLER_BUFFER_SIZE = 10;\n// export const RECYCLER_RESERVED_BUFFER_SIZE_RATIO = 1.5;\n\nexport const defaultGetType = () => DEFAULT_RECYCLER_TYPE;\n","import IntegerBufferSet from '@x-oasis/integer-buffer-set';\nimport { SafeRange, FixedBufferProps } from './types';\nimport { DEFAULT_RECYCLER_TYPE, RECYCLER_BUFFER_SIZE } from './common';\n\nclass FixedBuffer {\n private _bufferSet: IntegerBufferSet;\n private _thresholdIndexValue = 0;\n\n private _recyclerType: string;\n\n constructor(props: FixedBufferProps) {\n const {\n thresholdIndexValue = 0,\n bufferSize = RECYCLER_BUFFER_SIZE,\n recyclerType = DEFAULT_RECYCLER_TYPE,\n metaExtractor,\n indexExtractor,\n } = props;\n this._bufferSet = new IntegerBufferSet({\n bufferSize,\n metaExtractor,\n indexExtractor,\n name: recyclerType,\n });\n this._recyclerType = recyclerType;\n this._thresholdIndexValue = thresholdIndexValue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerType() {\n return this._recyclerType;\n }\n\n place(index: number, safeRange: SafeRange) {\n this._bufferSet.getPosition(index, safeRange);\n }\n\n getMaxValue() {\n return this._bufferSet.getMaxValue();\n }\n\n getMinValue() {\n return this._bufferSet.getMinValue();\n }\n\n getIndices() {\n return this._bufferSet.getIndices();\n }\n}\n\nexport default FixedBuffer;\n","import FixedBuffer from './FixedBuffer';\nimport { OnProcess, RecyclerProps } from './types';\nimport {\n DEFAULT_RECYCLER_TYPE,\n RECYCLER_BUFFER_SIZE,\n RECYCLER_RESERVED_BUFFER_PER_BATCH,\n // RECYCLER_RESERVED_BUFFER_SIZE_RATIO,\n RECYCLER_THRESHOLD_INDEX_VALUE,\n} from './common';\n\nclass Recycler {\n private _queue: Array<FixedBuffer> = [];\n\n /**\n * start index\n */\n private _thresholdIndexValue = 0;\n private _recyclerReservedBufferPerBatch: number;\n /**\n * buffer size, the oversize node will run into recycle strategy\n */\n private _recyclerBufferSize: number;\n private _metaExtractor: (index: number) => any;\n private _indexExtractor: (meta: any) => number;\n private _getType: (index: number) => string;\n\n constructor(props?: RecyclerProps) {\n const {\n getType,\n metaExtractor,\n indexExtractor,\n recyclerTypes = [],\n recyclerBufferSize = RECYCLER_BUFFER_SIZE,\n thresholdIndexValue = RECYCLER_THRESHOLD_INDEX_VALUE,\n recyclerReservedBufferPerBatch = RECYCLER_RESERVED_BUFFER_PER_BATCH,\n } = props || {};\n\n this._metaExtractor = metaExtractor;\n this._indexExtractor = indexExtractor;\n this._getType = getType;\n this._recyclerBufferSize = recyclerBufferSize;\n this._thresholdIndexValue = thresholdIndexValue;\n this._recyclerReservedBufferPerBatch = recyclerReservedBufferPerBatch;\n recyclerTypes.forEach((type) => this.addBuffer(type));\n }\n\n get queue() {\n return this._queue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerReservedBufferPerBatch() {\n return this._recyclerReservedBufferPerBatch;\n }\n\n getIndices() {\n return this._queue.reduce((acc, cur) => acc.concat(cur.getIndices()), []);\n }\n\n addBuffer(type: string) {\n if (!type) return null;\n const index = this._queue.findIndex(\n (buffer) => buffer.recyclerType === type\n );\n if (index !== -1) return this._queue[index];\n const buffer = new FixedBuffer({\n recyclerType: type,\n metaExtractor: this._metaExtractor,\n indexExtractor: this._indexExtractor,\n bufferSize: this._recyclerBufferSize,\n thresholdIndexValue: this._thresholdIndexValue,\n });\n this._queue.push(buffer);\n return buffer;\n }\n\n ensureBuffer(type: string) {\n return this.addBuffer(type || DEFAULT_RECYCLER_TYPE);\n }\n\n updateIndices(props: {\n /**\n * index in range should not be recycled\n */\n safeRange: {\n startIndex: number;\n endIndex: number;\n };\n startIndex: number;\n maxCount: number;\n step?: number;\n onProcess?: OnProcess;\n }) {\n const { startIndex, safeRange, step = 1, maxCount, onProcess } = props;\n let count = 0;\n let _index = Math.max(startIndex, 0);\n while (count < maxCount) {\n if (_index >= this._thresholdIndexValue) {\n const recyclerType = this._getType(_index);\n const buffer = this.ensureBuffer(recyclerType);\n buffer.place(_index, safeRange);\n\n if (\n typeof onProcess !== 'function' ||\n onProcess(recyclerType, _index)\n ) {\n count += 1;\n }\n }\n _index += step;\n }\n }\n\n getMinValue() {\n let minValue = Number.MAX_SAFE_INTEGER;\n this._queue.forEach((buffer) => {\n const v = buffer.getMinValue();\n if (typeof v === 'number') minValue = Math.min(v, minValue);\n });\n return minValue;\n }\n\n getMaxValue() {\n let maxValue = 0;\n this._queue.forEach((buffer) => {\n const v = buffer.getMaxValue();\n if (typeof v === 'number') maxValue = Math.max(v, maxValue);\n });\n return maxValue;\n }\n}\n\nexport default Recycler;\n"],"names":["DEFAULT_RECYCLER_TYPE","RECYCLER_THRESHOLD_INDEX_VALUE","RECYCLER_RESERVED_BUFFER_PER_BATCH","RECYCLER_BUFFER_SIZE","FixedBuffer","props","_props$thresholdIndex","thresholdIndexValue","_props$bufferSize","bufferSize","_props$recyclerType","recyclerType","metaExtractor","indexExtractor","_bufferSet","IntegerBufferSet","name","_recyclerType","_thresholdIndexValue","_proto","prototype","place","index","safeRange","getPosition","getMaxValue","getMinValue","getIndices","_createClass","key","get","Recycler","_ref","getType","_ref$recyclerTypes","recyclerTypes","_ref$recyclerBufferSi","recyclerBufferSize","_ref$thresholdIndexVa","_ref$recyclerReserved","recyclerReservedBufferPerBatch","_metaExtractor","_indexExtractor","_getType","_recyclerBufferSize","_recyclerReservedBufferPerBatch","forEach","type","_this","addBuffer","_queue","reduce","acc","cur","concat","findIndex","buffer","push","ensureBuffer","updateIndices","startIndex","_props$step","step","maxCount","onProcess","count","_index","Math","max","minValue","Number","MAX_SAFE_INTEGER","v","min","maxValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recycler.cjs.development.js","sources":["../src/common.ts","../src/FixedBuffer.ts","../src/index.ts"],"sourcesContent":["export const DEFAULT_RECYCLER_TYPE = '__default_recycler_buffer__';\nexport const RECYCLER_THRESHOLD_INDEX_VALUE = 0;\nexport const RECYCLER_RESERVED_BUFFER_PER_BATCH = 4;\nexport const RECYCLER_BUFFER_SIZE = 10;\n// export const RECYCLER_RESERVED_BUFFER_SIZE_RATIO = 1.5;\n\nexport const defaultGetType = () => DEFAULT_RECYCLER_TYPE;\n","import IntegerBufferSet from '@x-oasis/integer-buffer-set';\nimport { SafeRange, FixedBufferProps } from './types';\nimport { DEFAULT_RECYCLER_TYPE, RECYCLER_BUFFER_SIZE } from './common';\n\nclass FixedBuffer {\n private _bufferSet: IntegerBufferSet;\n private _thresholdIndexValue = 0;\n\n private _recyclerType: string;\n\n constructor(props: FixedBufferProps) {\n const {\n thresholdIndexValue = 0,\n bufferSize = RECYCLER_BUFFER_SIZE,\n recyclerType = DEFAULT_RECYCLER_TYPE,\n metaExtractor,\n indexExtractor,\n } = props;\n this._bufferSet = new IntegerBufferSet({\n bufferSize,\n metaExtractor,\n indexExtractor,\n name: recyclerType,\n });\n this._recyclerType = recyclerType;\n this._thresholdIndexValue = thresholdIndexValue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerType() {\n return this._recyclerType;\n }\n\n place(index: number, safeRange: SafeRange) {\n this._bufferSet.getPosition(index, safeRange);\n }\n\n getMaxValue() {\n return this._bufferSet.getMaxValue();\n }\n\n getMinValue() {\n return this._bufferSet.getMinValue();\n }\n\n getIndices() {\n return this._bufferSet.getIndices();\n }\n}\n\nexport default FixedBuffer;\n","import FixedBuffer from './FixedBuffer';\nimport { OnProcess, RecyclerProps } from './types';\nimport {\n DEFAULT_RECYCLER_TYPE,\n RECYCLER_BUFFER_SIZE,\n RECYCLER_RESERVED_BUFFER_PER_BATCH,\n // RECYCLER_RESERVED_BUFFER_SIZE_RATIO,\n RECYCLER_THRESHOLD_INDEX_VALUE,\n} from './common';\n\nclass Recycler {\n private _queue: Array<FixedBuffer> = [];\n\n /**\n * start index\n */\n private _thresholdIndexValue = 0;\n private _recyclerReservedBufferPerBatch: number;\n /**\n * buffer size, the oversize node will run into recycle strategy\n */\n private _recyclerBufferSize: number;\n private _metaExtractor: (index: number) => any;\n private _indexExtractor: (meta: any) => number;\n private _getType: (index: number) => string;\n\n constructor(props?: RecyclerProps) {\n const {\n getType,\n metaExtractor,\n indexExtractor,\n recyclerTypes = [],\n recyclerBufferSize = RECYCLER_BUFFER_SIZE,\n thresholdIndexValue = RECYCLER_THRESHOLD_INDEX_VALUE,\n recyclerReservedBufferPerBatch = RECYCLER_RESERVED_BUFFER_PER_BATCH,\n } = props || {};\n\n this._metaExtractor = metaExtractor;\n this._indexExtractor = indexExtractor;\n this._getType = getType;\n this._recyclerBufferSize = recyclerBufferSize;\n this._thresholdIndexValue = thresholdIndexValue;\n this._recyclerReservedBufferPerBatch = recyclerReservedBufferPerBatch;\n recyclerTypes.forEach((type) => this.addBuffer(type));\n }\n\n get queue() {\n return this._queue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerReservedBufferPerBatch() {\n return this._recyclerReservedBufferPerBatch;\n }\n\n getIndices() {\n return this._queue.reduce((acc, cur) => acc.concat(cur.getIndices()), []);\n }\n\n addBuffer(type: string) {\n if (!type) return null;\n const index = this._queue.findIndex(\n (buffer) => buffer.recyclerType === type\n );\n if (index !== -1) return this._queue[index];\n const buffer = new FixedBuffer({\n recyclerType: type,\n metaExtractor: this._metaExtractor,\n indexExtractor: this._indexExtractor,\n bufferSize: this._recyclerBufferSize,\n thresholdIndexValue: this._thresholdIndexValue,\n });\n this._queue.push(buffer);\n return buffer;\n }\n\n ensureBuffer(type: string) {\n return this.addBuffer(type || DEFAULT_RECYCLER_TYPE);\n }\n\n updateIndices(props: {\n /**\n * index in range should not be recycled\n */\n safeRange: {\n startIndex: number;\n endIndex: number;\n };\n startIndex: number;\n maxCount: number;\n step?: number;\n onProcess?: OnProcess;\n }) {\n const { startIndex, safeRange, step = 1, maxCount, onProcess } = props;\n let count = 0;\n let _index = Math.max(startIndex, 0);\n while (count < maxCount && this._metaExtractor(_index)) {\n if (_index >= this._thresholdIndexValue) {\n const recyclerType = this._getType(_index);\n const buffer = this.ensureBuffer(recyclerType);\n buffer.place(_index, safeRange);\n\n if (\n typeof onProcess !== 'function' ||\n onProcess(recyclerType, _index)\n ) {\n count += 1;\n }\n }\n _index += step;\n }\n }\n\n getMinValue() {\n let minValue = Number.MAX_SAFE_INTEGER;\n this._queue.forEach((buffer) => {\n const v = buffer.getMinValue();\n if (typeof v === 'number') minValue = Math.min(v, minValue);\n });\n return minValue;\n }\n\n getMaxValue() {\n let maxValue = 0;\n this._queue.forEach((buffer) => {\n const v = buffer.getMaxValue();\n if (typeof v === 'number') maxValue = Math.max(v, maxValue);\n });\n return maxValue;\n }\n}\n\nexport default Recycler;\n"],"names":["DEFAULT_RECYCLER_TYPE","RECYCLER_THRESHOLD_INDEX_VALUE","RECYCLER_RESERVED_BUFFER_PER_BATCH","RECYCLER_BUFFER_SIZE","FixedBuffer","props","_props$thresholdIndex","thresholdIndexValue","_props$bufferSize","bufferSize","_props$recyclerType","recyclerType","metaExtractor","indexExtractor","_bufferSet","IntegerBufferSet","name","_recyclerType","_thresholdIndexValue","_proto","prototype","place","index","safeRange","getPosition","getMaxValue","getMinValue","getIndices","_createClass","key","get","Recycler","_ref","getType","_ref$recyclerTypes","recyclerTypes","_ref$recyclerBufferSi","recyclerBufferSize","_ref$thresholdIndexVa","_ref$recyclerReserved","recyclerReservedBufferPerBatch","_metaExtractor","_indexExtractor","_getType","_recyclerBufferSize","_recyclerReservedBufferPerBatch","forEach","type","_this","addBuffer","_queue","reduce","acc","cur","concat","findIndex","buffer","push","ensureBuffer","updateIndices","startIndex","_props$step","step","maxCount","onProcess","count","_index","Math","max","minValue","Number","MAX_SAFE_INTEGER","v","min","maxValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAMA,qBAAqB,GAAG,6BAA6B;AAC3D,IAAMC,8BAA8B,GAAG,CAAC;AACxC,IAAMC,kCAAkC,GAAG,CAAC;AAC5C,IAAMC,oBAAoB,GAAG,EAAE;;ACDiC,IAEjEC,WAAW;EAMf,SAAAA,YAAYC,KAAuB;IAJ3B,yBAAoB,GAAG,CAAC;IAK9B,IAAAC,qBAAA,GAMID,KAAK,CALPE,mBAAmB;MAAnBA,mBAAmB,GAAAD,qBAAA,cAAG,CAAC,GAAAA,qBAAA;MAAAE,iBAAA,GAKrBH,KAAK,CAJPI,UAAU;MAAVA,UAAU,GAAAD,iBAAA,cAAGL,oBAAoB,GAAAK,iBAAA;MAAAE,mBAAA,GAI/BL,KAAK,CAHPM,YAAY;MAAZA,YAAY,GAAAD,mBAAA,cAAGV,qBAAqB,GAAAU,mBAAA;MACpCE,aAAa,GAEXP,KAAK,CAFPO,aAAa;MACbC,cAAc,GACZR,KAAK,CADPQ,cAAc;IAEhB,IAAI,CAACC,UAAU,GAAG,IAAIC,gBAAgB,CAAC;MACrCN,UAAU,EAAVA,UAAU;MACVG,aAAa,EAAbA,aAAa;MACbC,cAAc,EAAdA,cAAc;MACdG,IAAI,EAAEL;KACP,CAAC;IACF,IAAI,CAACM,aAAa,GAAGN,YAAY;IACjC,IAAI,CAACO,oBAAoB,GAAGX,mBAAmB;;EAChD,IAAAY,MAAA,GAAAf,WAAA,CAAAgB,SAAA;EAAAD,MAAA,CAUDE,KAAK,GAAL,SAAAA,MAAMC,KAAa,EAAEC,SAAoB;IACvC,IAAI,CAACT,UAAU,CAACU,WAAW,CAACF,KAAK,EAAEC,SAAS,CAAC;GAC9C;EAAAJ,MAAA,CAEDM,WAAW,GAAX,SAAAA;IACE,OAAO,IAAI,CAACX,UAAU,CAACW,WAAW,EAAE;GACrC;EAAAN,MAAA,CAEDO,WAAW,GAAX,SAAAA;IACE,OAAO,IAAI,CAACZ,UAAU,CAACY,WAAW,EAAE;GACrC;EAAAP,MAAA,CAEDQ,UAAU,GAAV,SAAAA;IACE,OAAO,IAAI,CAACb,UAAU,CAACa,UAAU,EAAE;GACpC;EAAAC,YAAA,CAAAxB,WAAA;IAAAyB,GAAA;IAAAC,GAAA,EAtBD,SAAAA;MACE,OAAO,IAAI,CAACZ,oBAAoB;;;IACjCW,GAAA;IAAAC,GAAA,EAED,SAAAA;MACE,OAAO,IAAI,CAACb,aAAa;;;EAC1B,OAAAb,WAAA;AAAA;;AC1Be,IAEZ2B,QAAQ;EAgBZ,SAAAA,SAAY1B,KAAqB;;IAfzB,WAAM,GAAuB,EAAE;IAK/B,yBAAoB,GAAG,CAAC;IAW9B,IAAA2B,IAAA,GAQI3B,KAAK,IAAI,EAAE;MAPb4B,OAAO,GAAAD,IAAA,CAAPC,OAAO;MACPrB,aAAa,GAAAoB,IAAA,CAAbpB,aAAa;MACbC,cAAc,GAAAmB,IAAA,CAAdnB,cAAc;MAAAqB,kBAAA,GAAAF,IAAA,CACdG,aAAa;MAAbA,aAAa,GAAAD,kBAAA,cAAG,EAAE,GAAAA,kBAAA;MAAAE,qBAAA,GAAAJ,IAAA,CAClBK,kBAAkB;MAAlBA,kBAAkB,GAAAD,qBAAA,cAAGjC,oBAAoB,GAAAiC,qBAAA;MAAAE,qBAAA,GAAAN,IAAA,CACzCzB,mBAAmB;MAAnBA,mBAAmB,GAAA+B,qBAAA,cAAGrC,8BAA8B,GAAAqC,qBAAA;MAAAC,qBAAA,GAAAP,IAAA,CACpDQ,8BAA8B;MAA9BA,8BAA8B,GAAAD,qBAAA,cAAGrC,kCAAkC,GAAAqC,qBAAA;IAGrE,IAAI,CAACE,cAAc,GAAG7B,aAAa;IACnC,IAAI,CAAC8B,eAAe,GAAG7B,cAAc;IACrC,IAAI,CAAC8B,QAAQ,GAAGV,OAAO;IACvB,IAAI,CAACW,mBAAmB,GAAGP,kBAAkB;IAC7C,IAAI,CAACnB,oBAAoB,GAAGX,mBAAmB;IAC/C,IAAI,CAACsC,+BAA+B,GAAGL,8BAA8B;IACrEL,aAAa,CAACW,OAAO,CAAC,UAACC,IAAI;MAAA,OAAKC,KAAI,CAACC,SAAS,CAACF,IAAI,CAAC;MAAC;;EACtD,IAAA5B,MAAA,GAAAY,QAAA,CAAAX,SAAA;EAAAD,MAAA,CAcDQ,UAAU,GAAV,SAAAA;IACE,OAAO,IAAI,CAACuB,MAAM,CAACC,MAAM,CAAC,UAACC,GAAG,EAAEC,GAAG;MAAA,OAAKD,GAAG,CAACE,MAAM,CAACD,GAAG,CAAC1B,UAAU,EAAE,CAAC;OAAE,EAAE,CAAC;GAC1E;EAAAR,MAAA,CAED8B,SAAS,GAAT,SAAAA,UAAUF,IAAY;IACpB,IAAI,CAACA,IAAI,EAAE,OAAO,IAAI;IACtB,IAAMzB,KAAK,GAAG,IAAI,CAAC4B,MAAM,CAACK,SAAS,CACjC,UAACC,MAAM;MAAA,OAAKA,MAAM,CAAC7C,YAAY,KAAKoC,IAAI;MACzC;IACD,IAAIzB,KAAK,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC4B,MAAM,CAAC5B,KAAK,CAAC;IAC3C,IAAMkC,MAAM,GAAG,IAAIpD,WAAW,CAAC;MAC7BO,YAAY,EAAEoC,IAAI;MAClBnC,aAAa,EAAE,IAAI,CAAC6B,cAAc;MAClC5B,cAAc,EAAE,IAAI,CAAC6B,eAAe;MACpCjC,UAAU,EAAE,IAAI,CAACmC,mBAAmB;MACpCrC,mBAAmB,EAAE,IAAI,CAACW;KAC3B,CAAC;IACF,IAAI,CAACgC,MAAM,CAACO,IAAI,CAACD,MAAM,CAAC;IACxB,OAAOA,MAAM;GACd;EAAArC,MAAA,CAEDuC,YAAY,GAAZ,SAAAA,aAAaX,IAAY;IACvB,OAAO,IAAI,CAACE,SAAS,CAACF,IAAI,IAAI/C,qBAAqB,CAAC;GACrD;EAAAmB,MAAA,CAEDwC,aAAa,GAAb,SAAAA,cAActD,KAYb;IACC,IAAQuD,UAAU,GAA+CvD,KAAK,CAA9DuD,UAAU;MAAErC,SAAS,GAAoClB,KAAK,CAAlDkB,SAAS;MAAAsC,WAAA,GAAoCxD,KAAK,CAAvCyD,IAAI;MAAJA,IAAI,GAAAD,WAAA,cAAG,CAAC,GAAAA,WAAA;MAAEE,QAAQ,GAAgB1D,KAAK,CAA7B0D,QAAQ;MAAEC,SAAS,GAAK3D,KAAK,CAAnB2D,SAAS;IAC5D,IAAIC,KAAK,GAAG,CAAC;IACb,IAAIC,MAAM,GAAGC,IAAI,CAACC,GAAG,CAACR,UAAU,EAAE,CAAC,CAAC;IACpC,OAAOK,KAAK,GAAGF,QAAQ,IAAI,IAAI,CAACtB,cAAc,CAACyB,MAAM,CAAC,EAAE;MACtD,IAAIA,MAAM,IAAI,IAAI,CAAChD,oBAAoB,EAAE;QACvC,IAAMP,YAAY,GAAG,IAAI,CAACgC,QAAQ,CAACuB,MAAM,CAAC;QAC1C,IAAMV,MAAM,GAAG,IAAI,CAACE,YAAY,CAAC/C,YAAY,CAAC;QAC9C6C,MAAM,CAACnC,KAAK,CAAC6C,MAAM,EAAE3C,SAAS,CAAC;QAE/B,IACE,OAAOyC,SAAS,KAAK,UAAU,IAC/BA,SAAS,CAACrD,YAAY,EAAEuD,MAAM,CAAC,EAC/B;UACAD,KAAK,IAAI,CAAC;;;MAGdC,MAAM,IAAIJ,IAAI;;GAEjB;EAAA3C,MAAA,CAEDO,WAAW,GAAX,SAAAA;IACE,IAAI2C,QAAQ,GAAGC,MAAM,CAACC,gBAAgB;IACtC,IAAI,CAACrB,MAAM,CAACJ,OAAO,CAAC,UAACU,MAAM;MACzB,IAAMgB,CAAC,GAAGhB,MAAM,CAAC9B,WAAW,EAAE;MAC9B,IAAI,OAAO8C,CAAC,KAAK,QAAQ,EAAEH,QAAQ,GAAGF,IAAI,CAACM,GAAG,CAACD,CAAC,EAAEH,QAAQ,CAAC;KAC5D,CAAC;IACF,OAAOA,QAAQ;GAChB;EAAAlD,MAAA,CAEDM,WAAW,GAAX,SAAAA;IACE,IAAIiD,QAAQ,GAAG,CAAC;IAChB,IAAI,CAACxB,MAAM,CAACJ,OAAO,CAAC,UAACU,MAAM;MACzB,IAAMgB,CAAC,GAAGhB,MAAM,CAAC/B,WAAW,EAAE;MAC9B,IAAI,OAAO+C,CAAC,KAAK,QAAQ,EAAEE,QAAQ,GAAGP,IAAI,CAACC,GAAG,CAACI,CAAC,EAAEE,QAAQ,CAAC;KAC5D,CAAC;IACF,OAAOA,QAAQ;GAChB;EAAA9C,YAAA,CAAAG,QAAA;IAAAF,GAAA;IAAAC,GAAA,EAtFD,SAAAA;MACE,OAAO,IAAI,CAACoB,MAAM;;;IACnBrB,GAAA;IAAAC,GAAA,EAED,SAAAA;MACE,OAAO,IAAI,CAACZ,oBAAoB;;;IACjCW,GAAA;IAAAC,GAAA,EAED,SAAAA;MACE,OAAO,IAAI,CAACe,+BAA+B;;;EAC5C,OAAAd,QAAA;AAAA;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=(e=require("@x-oasis/integer-buffer-set"))&&"object"==typeof e&&"default"in e?e.default:e;function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,"symbol"==typeof(u=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(n.key))?u:String(u),n)}var u}function n(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var u=function(){function e(e){this._thresholdIndexValue=0;var r=e.thresholdIndexValue,n=void 0===r?0:r,u=e.bufferSize,i=e.recyclerType,o=void 0===i?"__default_recycler_buffer__":i;this._bufferSet=new t({bufferSize:void 0===u?10:u,metaExtractor:e.metaExtractor,indexExtractor:e.indexExtractor,name:o}),this._recyclerType=o,this._thresholdIndexValue=n}var r=e.prototype;return r.place=function(e,t){this._bufferSet.getPosition(e,t)},r.getMaxValue=function(){return this._bufferSet.getMaxValue()},r.getMinValue=function(){return this._bufferSet.getMinValue()},r.getIndices=function(){return this._bufferSet.getIndices()},n(e,[{key:"thresholdIndexValue",get:function(){return this._thresholdIndexValue}},{key:"recyclerType",get:function(){return this._recyclerType}}]),e}();exports.default=function(){function e(e){var t=this;this._queue=[],this._thresholdIndexValue=0;var r=e||{},n=r.getType,u=r.indexExtractor,i=r.recyclerTypes,o=void 0===i?[]:i,a=r.recyclerBufferSize,f=void 0===a?10:a,c=r.thresholdIndexValue,s=void 0===c?0:c,h=r.recyclerReservedBufferPerBatch,l=void 0===h?4:h;this._metaExtractor=r.metaExtractor,this._indexExtractor=u,this._getType=n,this._recyclerBufferSize=f,this._thresholdIndexValue=s,this._recyclerReservedBufferPerBatch=l,o.forEach((function(e){return t.addBuffer(e)}))}var t=e.prototype;return t.getIndices=function(){return this._queue.reduce((function(e,t){return e.concat(t.getIndices())}),[])},t.addBuffer=function(e){if(!e)return null;var t=this._queue.findIndex((function(t){return t.recyclerType===e}));if(-1!==t)return this._queue[t];var r=new u({recyclerType:e,metaExtractor:this._metaExtractor,indexExtractor:this._indexExtractor,bufferSize:this._recyclerBufferSize,thresholdIndexValue:this._thresholdIndexValue});return this._queue.push(r),r},t.ensureBuffer=function(e){return this.addBuffer(e||"__default_recycler_buffer__")},t.updateIndices=function(e){for(var t=e.safeRange,r=e.step,n=void 0===r?1:r,u=e.maxCount,i=e.onProcess,o=0,a=Math.max(e.startIndex,0);o<u;){if(a>=this._thresholdIndexValue){var f=this._getType(a);this.ensureBuffer(f).place(a,t),("function"!=typeof i||i(f,a))&&(o+=1)}a+=n}},t.getMinValue=function(){var e=Number.MAX_SAFE_INTEGER;return this._queue.forEach((function(t){var r=t.getMinValue();"number"==typeof r&&(e=Math.min(r,e))})),e},t.getMaxValue=function(){var e=0;return this._queue.forEach((function(t){var r=t.getMaxValue();"number"==typeof r&&(e=Math.max(r,e))})),e},n(e,[{key:"queue",get:function(){return this._queue}},{key:"thresholdIndexValue",get:function(){return this._thresholdIndexValue}},{key:"recyclerReservedBufferPerBatch",get:function(){return this._recyclerReservedBufferPerBatch}}]),e}();
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=(e=require("@x-oasis/integer-buffer-set"))&&"object"==typeof e&&"default"in e?e.default:e;function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,"symbol"==typeof(u=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(n.key))?u:String(u),n)}var u}function n(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var u=function(){function e(e){this._thresholdIndexValue=0;var r=e.thresholdIndexValue,n=void 0===r?0:r,u=e.bufferSize,i=e.recyclerType,o=void 0===i?"__default_recycler_buffer__":i;this._bufferSet=new t({bufferSize:void 0===u?10:u,metaExtractor:e.metaExtractor,indexExtractor:e.indexExtractor,name:o}),this._recyclerType=o,this._thresholdIndexValue=n}var r=e.prototype;return r.place=function(e,t){this._bufferSet.getPosition(e,t)},r.getMaxValue=function(){return this._bufferSet.getMaxValue()},r.getMinValue=function(){return this._bufferSet.getMinValue()},r.getIndices=function(){return this._bufferSet.getIndices()},n(e,[{key:"thresholdIndexValue",get:function(){return this._thresholdIndexValue}},{key:"recyclerType",get:function(){return this._recyclerType}}]),e}();exports.default=function(){function e(e){var t=this;this._queue=[],this._thresholdIndexValue=0;var r=e||{},n=r.getType,u=r.indexExtractor,i=r.recyclerTypes,o=void 0===i?[]:i,a=r.recyclerBufferSize,f=void 0===a?10:a,c=r.thresholdIndexValue,s=void 0===c?0:c,h=r.recyclerReservedBufferPerBatch,l=void 0===h?4:h;this._metaExtractor=r.metaExtractor,this._indexExtractor=u,this._getType=n,this._recyclerBufferSize=f,this._thresholdIndexValue=s,this._recyclerReservedBufferPerBatch=l,o.forEach((function(e){return t.addBuffer(e)}))}var t=e.prototype;return t.getIndices=function(){return this._queue.reduce((function(e,t){return e.concat(t.getIndices())}),[])},t.addBuffer=function(e){if(!e)return null;var t=this._queue.findIndex((function(t){return t.recyclerType===e}));if(-1!==t)return this._queue[t];var r=new u({recyclerType:e,metaExtractor:this._metaExtractor,indexExtractor:this._indexExtractor,bufferSize:this._recyclerBufferSize,thresholdIndexValue:this._thresholdIndexValue});return this._queue.push(r),r},t.ensureBuffer=function(e){return this.addBuffer(e||"__default_recycler_buffer__")},t.updateIndices=function(e){for(var t=e.safeRange,r=e.step,n=void 0===r?1:r,u=e.maxCount,i=e.onProcess,o=0,a=Math.max(e.startIndex,0);o<u&&this._metaExtractor(a);){if(a>=this._thresholdIndexValue){var f=this._getType(a);this.ensureBuffer(f).place(a,t),("function"!=typeof i||i(f,a))&&(o+=1)}a+=n}},t.getMinValue=function(){var e=Number.MAX_SAFE_INTEGER;return this._queue.forEach((function(t){var r=t.getMinValue();"number"==typeof r&&(e=Math.min(r,e))})),e},t.getMaxValue=function(){var e=0;return this._queue.forEach((function(t){var r=t.getMaxValue();"number"==typeof r&&(e=Math.max(r,e))})),e},n(e,[{key:"queue",get:function(){return this._queue}},{key:"thresholdIndexValue",get:function(){return this._thresholdIndexValue}},{key:"recyclerReservedBufferPerBatch",get:function(){return this._recyclerReservedBufferPerBatch}}]),e}();
|
|
2
2
|
//# sourceMappingURL=recycler.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recycler.cjs.production.min.js","sources":["../src/common.ts","../src/FixedBuffer.ts","../src/index.ts"],"sourcesContent":["export const DEFAULT_RECYCLER_TYPE = '__default_recycler_buffer__';\nexport const RECYCLER_THRESHOLD_INDEX_VALUE = 0;\nexport const RECYCLER_RESERVED_BUFFER_PER_BATCH = 4;\nexport const RECYCLER_BUFFER_SIZE = 10;\n// export const RECYCLER_RESERVED_BUFFER_SIZE_RATIO = 1.5;\n\nexport const defaultGetType = () => DEFAULT_RECYCLER_TYPE;\n","import IntegerBufferSet from '@x-oasis/integer-buffer-set';\nimport { SafeRange, FixedBufferProps } from './types';\nimport { DEFAULT_RECYCLER_TYPE, RECYCLER_BUFFER_SIZE } from './common';\n\nclass FixedBuffer {\n private _bufferSet: IntegerBufferSet;\n private _thresholdIndexValue = 0;\n\n private _recyclerType: string;\n\n constructor(props: FixedBufferProps) {\n const {\n thresholdIndexValue = 0,\n bufferSize = RECYCLER_BUFFER_SIZE,\n recyclerType = DEFAULT_RECYCLER_TYPE,\n metaExtractor,\n indexExtractor,\n } = props;\n this._bufferSet = new IntegerBufferSet({\n bufferSize,\n metaExtractor,\n indexExtractor,\n name: recyclerType,\n });\n this._recyclerType = recyclerType;\n this._thresholdIndexValue = thresholdIndexValue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerType() {\n return this._recyclerType;\n }\n\n place(index: number, safeRange: SafeRange) {\n this._bufferSet.getPosition(index, safeRange);\n }\n\n getMaxValue() {\n return this._bufferSet.getMaxValue();\n }\n\n getMinValue() {\n return this._bufferSet.getMinValue();\n }\n\n getIndices() {\n return this._bufferSet.getIndices();\n }\n}\n\nexport default FixedBuffer;\n","import FixedBuffer from './FixedBuffer';\nimport { OnProcess, RecyclerProps } from './types';\nimport {\n DEFAULT_RECYCLER_TYPE,\n RECYCLER_BUFFER_SIZE,\n RECYCLER_RESERVED_BUFFER_PER_BATCH,\n // RECYCLER_RESERVED_BUFFER_SIZE_RATIO,\n RECYCLER_THRESHOLD_INDEX_VALUE,\n} from './common';\n\nclass Recycler {\n private _queue: Array<FixedBuffer> = [];\n\n /**\n * start index\n */\n private _thresholdIndexValue = 0;\n private _recyclerReservedBufferPerBatch: number;\n /**\n * buffer size, the oversize node will run into recycle strategy\n */\n private _recyclerBufferSize: number;\n private _metaExtractor: (index: number) => any;\n private _indexExtractor: (meta: any) => number;\n private _getType: (index: number) => string;\n\n constructor(props?: RecyclerProps) {\n const {\n getType,\n metaExtractor,\n indexExtractor,\n recyclerTypes = [],\n recyclerBufferSize = RECYCLER_BUFFER_SIZE,\n thresholdIndexValue = RECYCLER_THRESHOLD_INDEX_VALUE,\n recyclerReservedBufferPerBatch = RECYCLER_RESERVED_BUFFER_PER_BATCH,\n } = props || {};\n\n this._metaExtractor = metaExtractor;\n this._indexExtractor = indexExtractor;\n this._getType = getType;\n this._recyclerBufferSize = recyclerBufferSize;\n this._thresholdIndexValue = thresholdIndexValue;\n this._recyclerReservedBufferPerBatch = recyclerReservedBufferPerBatch;\n recyclerTypes.forEach((type) => this.addBuffer(type));\n }\n\n get queue() {\n return this._queue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerReservedBufferPerBatch() {\n return this._recyclerReservedBufferPerBatch;\n }\n\n getIndices() {\n return this._queue.reduce((acc, cur) => acc.concat(cur.getIndices()), []);\n }\n\n addBuffer(type: string) {\n if (!type) return null;\n const index = this._queue.findIndex(\n (buffer) => buffer.recyclerType === type\n );\n if (index !== -1) return this._queue[index];\n const buffer = new FixedBuffer({\n recyclerType: type,\n metaExtractor: this._metaExtractor,\n indexExtractor: this._indexExtractor,\n bufferSize: this._recyclerBufferSize,\n thresholdIndexValue: this._thresholdIndexValue,\n });\n this._queue.push(buffer);\n return buffer;\n }\n\n ensureBuffer(type: string) {\n return this.addBuffer(type || DEFAULT_RECYCLER_TYPE);\n }\n\n updateIndices(props: {\n /**\n * index in range should not be recycled\n */\n safeRange: {\n startIndex: number;\n endIndex: number;\n };\n startIndex: number;\n maxCount: number;\n step?: number;\n onProcess?: OnProcess;\n }) {\n const { startIndex, safeRange, step = 1, maxCount, onProcess } = props;\n let count = 0;\n let _index = Math.max(startIndex, 0);\n while (count < maxCount) {\n if (_index >= this._thresholdIndexValue) {\n const recyclerType = this._getType(_index);\n const buffer = this.ensureBuffer(recyclerType);\n buffer.place(_index, safeRange);\n\n if (\n typeof onProcess !== 'function' ||\n onProcess(recyclerType, _index)\n ) {\n count += 1;\n }\n }\n _index += step;\n }\n }\n\n getMinValue() {\n let minValue = Number.MAX_SAFE_INTEGER;\n this._queue.forEach((buffer) => {\n const v = buffer.getMinValue();\n if (typeof v === 'number') minValue = Math.min(v, minValue);\n });\n return minValue;\n }\n\n getMaxValue() {\n let maxValue = 0;\n this._queue.forEach((buffer) => {\n const v = buffer.getMaxValue();\n if (typeof v === 'number') maxValue = Math.max(v, maxValue);\n });\n return maxValue;\n }\n}\n\nexport default Recycler;\n"],"names":["FixedBuffer","props","this","_props$thresholdIndex","thresholdIndexValue","_props$bufferSize","bufferSize","_props$recyclerType","recyclerType","_bufferSet","IntegerBufferSet","metaExtractor","indexExtractor","name","_recyclerType","_thresholdIndexValue","_proto","prototype","place","index","safeRange","getPosition","getMaxValue","getMinValue","getIndices","_createClass","key","get","Recycler","_ref","getType","_ref$recyclerTypes","recyclerTypes","_ref$recyclerBufferSi","recyclerBufferSize","_ref$thresholdIndexVa","_ref$recyclerReserved","recyclerReservedBufferPerBatch","_metaExtractor","_indexExtractor","_getType","_recyclerBufferSize","_recyclerReservedBufferPerBatch","forEach","type","_this","addBuffer","_queue","reduce","acc","cur","concat","findIndex","buffer","push","ensureBuffer","updateIndices","_props$step","step","maxCount","onProcess","count","_index","Math","max","startIndex","minValue","Number","MAX_SAFE_INTEGER","v","min","maxValue"],"mappings":"8sBAAO,ICIDA,aAMJ,SAAAA,EAAYC,GAJJC,0BAAuB,EAK7B,IAAAC,EAMIF,EALFG,oBAAAA,WAAmBD,EAAG,EAACA,EAAAE,EAKrBJ,EAJFK,WAAiCC,EAI/BN,EAHFO,aAAAA,WAAYD,EDdmB,8BCcKA,EAItCL,KAAKO,WAAa,IAAIC,EAAiB,CACrCJ,oBANUD,EDVoB,GCUGA,EAOjCM,cAHEV,EAFFU,cAMAC,eAJEX,EADFW,eAMAC,KAAML,IAERN,KAAKY,cAAgBN,EACrBN,KAAKa,qBAAuBX,EAC7B,IAAAY,EAAAhB,EAAAiB,UAQA,OARAD,EAUDE,MAAA,SAAMC,EAAeC,GACnBlB,KAAKO,WAAWY,YAAYF,EAAOC,IACpCJ,EAEDM,YAAA,WACE,OAAOpB,KAAKO,WAAWa,eACxBN,EAEDO,YAAA,WACE,OAAOrB,KAAKO,WAAWc,eACxBP,EAEDQ,WAAA,WACE,OAAOtB,KAAKO,WAAWe,cACxBC,EAAAzB,IAAA0B,0BAAAC,IAtBD,WACE,OAAOzB,KAAKa,wBACbW,mBAAAC,IAED,WACE,OAAOzB,KAAKY,kBACbd,gCCRD,SAAA4B,EAAY3B,cAfJC,YAA6B,GAK7BA,0BAAuB,EAW7B,IAAA2B,EAQI5B,GAAS,GAPX6B,EAAOD,EAAPC,QAEAlB,EAAciB,EAAdjB,eAAcmB,EAAAF,EACdG,cAAAA,WAAaD,EAAG,GAAEA,EAAAE,EAAAJ,EAClBK,mBAAAA,WAAkBD,EF7BY,GE6BWA,EAAAE,EAAAN,EACzCzB,oBAAAA,WAAmB+B,EFhCqB,EEgCYA,EAAAC,EAAAP,EACpDQ,+BAAAA,WAA8BD,EFhCc,EEgCuBA,EAGrElC,KAAKoC,eARUT,EAAblB,cASFT,KAAKqC,gBAAkB3B,EACvBV,KAAKsC,SAAWV,EAChB5B,KAAKuC,oBAAsBP,EAC3BhC,KAAKa,qBAAuBX,EAC5BF,KAAKwC,gCAAkCL,EACvCL,EAAcW,SAAQ,SAACC,GAAI,OAAKC,EAAKC,UAAUF,MAChD,IAAA5B,EAAAY,EAAAX,UAYA,OAZAD,EAcDQ,WAAA,WACE,OAAOtB,KAAK6C,OAAOC,QAAO,SAACC,EAAKC,GAAG,OAAKD,EAAIE,OAAOD,EAAI1B,gBAAe,KACvER,EAED8B,UAAA,SAAUF,GACR,IAAKA,EAAM,OAAO,KAClB,IAAMzB,EAAQjB,KAAK6C,OAAOK,WACxB,SAACC,GAAM,OAAKA,EAAO7C,eAAiBoC,KAEtC,IAAe,IAAXzB,EAAc,OAAOjB,KAAK6C,OAAO5B,GACrC,IAAMkC,EAAS,IAAIrD,EAAY,CAC7BQ,aAAcoC,EACdjC,cAAeT,KAAKoC,eACpB1B,eAAgBV,KAAKqC,gBACrBjC,WAAYJ,KAAKuC,oBACjBrC,oBAAqBF,KAAKa,uBAG5B,OADAb,KAAK6C,OAAOO,KAAKD,GACVA,GACRrC,EAEDuC,aAAA,SAAaX,GACX,OAAO1C,KAAK4C,UAAUF,GFhFW,gCEiFlC5B,EAEDwC,cAAA,SAAcvD,GAgBZ,IAHA,IAAoBmB,EAA6CnB,EAA7CmB,UAASqC,EAAoCxD,EAAlCyD,KAAAA,WAAID,EAAG,EAACA,EAAEE,EAAwB1D,EAAxB0D,SAAUC,EAAc3D,EAAd2D,UAC/CC,EAAQ,EACRC,EAASC,KAAKC,IAF+C/D,EAAzDgE,WAE0B,GAC3BJ,EAAQF,
|
|
1
|
+
{"version":3,"file":"recycler.cjs.production.min.js","sources":["../src/common.ts","../src/FixedBuffer.ts","../src/index.ts"],"sourcesContent":["export const DEFAULT_RECYCLER_TYPE = '__default_recycler_buffer__';\nexport const RECYCLER_THRESHOLD_INDEX_VALUE = 0;\nexport const RECYCLER_RESERVED_BUFFER_PER_BATCH = 4;\nexport const RECYCLER_BUFFER_SIZE = 10;\n// export const RECYCLER_RESERVED_BUFFER_SIZE_RATIO = 1.5;\n\nexport const defaultGetType = () => DEFAULT_RECYCLER_TYPE;\n","import IntegerBufferSet from '@x-oasis/integer-buffer-set';\nimport { SafeRange, FixedBufferProps } from './types';\nimport { DEFAULT_RECYCLER_TYPE, RECYCLER_BUFFER_SIZE } from './common';\n\nclass FixedBuffer {\n private _bufferSet: IntegerBufferSet;\n private _thresholdIndexValue = 0;\n\n private _recyclerType: string;\n\n constructor(props: FixedBufferProps) {\n const {\n thresholdIndexValue = 0,\n bufferSize = RECYCLER_BUFFER_SIZE,\n recyclerType = DEFAULT_RECYCLER_TYPE,\n metaExtractor,\n indexExtractor,\n } = props;\n this._bufferSet = new IntegerBufferSet({\n bufferSize,\n metaExtractor,\n indexExtractor,\n name: recyclerType,\n });\n this._recyclerType = recyclerType;\n this._thresholdIndexValue = thresholdIndexValue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerType() {\n return this._recyclerType;\n }\n\n place(index: number, safeRange: SafeRange) {\n this._bufferSet.getPosition(index, safeRange);\n }\n\n getMaxValue() {\n return this._bufferSet.getMaxValue();\n }\n\n getMinValue() {\n return this._bufferSet.getMinValue();\n }\n\n getIndices() {\n return this._bufferSet.getIndices();\n }\n}\n\nexport default FixedBuffer;\n","import FixedBuffer from './FixedBuffer';\nimport { OnProcess, RecyclerProps } from './types';\nimport {\n DEFAULT_RECYCLER_TYPE,\n RECYCLER_BUFFER_SIZE,\n RECYCLER_RESERVED_BUFFER_PER_BATCH,\n // RECYCLER_RESERVED_BUFFER_SIZE_RATIO,\n RECYCLER_THRESHOLD_INDEX_VALUE,\n} from './common';\n\nclass Recycler {\n private _queue: Array<FixedBuffer> = [];\n\n /**\n * start index\n */\n private _thresholdIndexValue = 0;\n private _recyclerReservedBufferPerBatch: number;\n /**\n * buffer size, the oversize node will run into recycle strategy\n */\n private _recyclerBufferSize: number;\n private _metaExtractor: (index: number) => any;\n private _indexExtractor: (meta: any) => number;\n private _getType: (index: number) => string;\n\n constructor(props?: RecyclerProps) {\n const {\n getType,\n metaExtractor,\n indexExtractor,\n recyclerTypes = [],\n recyclerBufferSize = RECYCLER_BUFFER_SIZE,\n thresholdIndexValue = RECYCLER_THRESHOLD_INDEX_VALUE,\n recyclerReservedBufferPerBatch = RECYCLER_RESERVED_BUFFER_PER_BATCH,\n } = props || {};\n\n this._metaExtractor = metaExtractor;\n this._indexExtractor = indexExtractor;\n this._getType = getType;\n this._recyclerBufferSize = recyclerBufferSize;\n this._thresholdIndexValue = thresholdIndexValue;\n this._recyclerReservedBufferPerBatch = recyclerReservedBufferPerBatch;\n recyclerTypes.forEach((type) => this.addBuffer(type));\n }\n\n get queue() {\n return this._queue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerReservedBufferPerBatch() {\n return this._recyclerReservedBufferPerBatch;\n }\n\n getIndices() {\n return this._queue.reduce((acc, cur) => acc.concat(cur.getIndices()), []);\n }\n\n addBuffer(type: string) {\n if (!type) return null;\n const index = this._queue.findIndex(\n (buffer) => buffer.recyclerType === type\n );\n if (index !== -1) return this._queue[index];\n const buffer = new FixedBuffer({\n recyclerType: type,\n metaExtractor: this._metaExtractor,\n indexExtractor: this._indexExtractor,\n bufferSize: this._recyclerBufferSize,\n thresholdIndexValue: this._thresholdIndexValue,\n });\n this._queue.push(buffer);\n return buffer;\n }\n\n ensureBuffer(type: string) {\n return this.addBuffer(type || DEFAULT_RECYCLER_TYPE);\n }\n\n updateIndices(props: {\n /**\n * index in range should not be recycled\n */\n safeRange: {\n startIndex: number;\n endIndex: number;\n };\n startIndex: number;\n maxCount: number;\n step?: number;\n onProcess?: OnProcess;\n }) {\n const { startIndex, safeRange, step = 1, maxCount, onProcess } = props;\n let count = 0;\n let _index = Math.max(startIndex, 0);\n while (count < maxCount && this._metaExtractor(_index)) {\n if (_index >= this._thresholdIndexValue) {\n const recyclerType = this._getType(_index);\n const buffer = this.ensureBuffer(recyclerType);\n buffer.place(_index, safeRange);\n\n if (\n typeof onProcess !== 'function' ||\n onProcess(recyclerType, _index)\n ) {\n count += 1;\n }\n }\n _index += step;\n }\n }\n\n getMinValue() {\n let minValue = Number.MAX_SAFE_INTEGER;\n this._queue.forEach((buffer) => {\n const v = buffer.getMinValue();\n if (typeof v === 'number') minValue = Math.min(v, minValue);\n });\n return minValue;\n }\n\n getMaxValue() {\n let maxValue = 0;\n this._queue.forEach((buffer) => {\n const v = buffer.getMaxValue();\n if (typeof v === 'number') maxValue = Math.max(v, maxValue);\n });\n return maxValue;\n }\n}\n\nexport default Recycler;\n"],"names":["FixedBuffer","props","this","_props$thresholdIndex","thresholdIndexValue","_props$bufferSize","bufferSize","_props$recyclerType","recyclerType","_bufferSet","IntegerBufferSet","metaExtractor","indexExtractor","name","_recyclerType","_thresholdIndexValue","_proto","prototype","place","index","safeRange","getPosition","getMaxValue","getMinValue","getIndices","_createClass","key","get","Recycler","_ref","getType","_ref$recyclerTypes","recyclerTypes","_ref$recyclerBufferSi","recyclerBufferSize","_ref$thresholdIndexVa","_ref$recyclerReserved","recyclerReservedBufferPerBatch","_metaExtractor","_indexExtractor","_getType","_recyclerBufferSize","_recyclerReservedBufferPerBatch","forEach","type","_this","addBuffer","_queue","reduce","acc","cur","concat","findIndex","buffer","push","ensureBuffer","updateIndices","_props$step","step","maxCount","onProcess","count","_index","Math","max","startIndex","minValue","Number","MAX_SAFE_INTEGER","v","min","maxValue"],"mappings":"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"}
|
package/dist/recycler.esm.js
CHANGED
|
@@ -145,7 +145,7 @@ var Recycler = /*#__PURE__*/function () {
|
|
|
145
145
|
onProcess = props.onProcess;
|
|
146
146
|
var count = 0;
|
|
147
147
|
var _index = Math.max(startIndex, 0);
|
|
148
|
-
while (count < maxCount) {
|
|
148
|
+
while (count < maxCount && this._metaExtractor(_index)) {
|
|
149
149
|
if (_index >= this._thresholdIndexValue) {
|
|
150
150
|
var recyclerType = this._getType(_index);
|
|
151
151
|
var buffer = this.ensureBuffer(recyclerType);
|
package/dist/recycler.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recycler.esm.js","sources":["../src/common.ts","../src/FixedBuffer.ts","../src/index.ts"],"sourcesContent":["export const DEFAULT_RECYCLER_TYPE = '__default_recycler_buffer__';\nexport const RECYCLER_THRESHOLD_INDEX_VALUE = 0;\nexport const RECYCLER_RESERVED_BUFFER_PER_BATCH = 4;\nexport const RECYCLER_BUFFER_SIZE = 10;\n// export const RECYCLER_RESERVED_BUFFER_SIZE_RATIO = 1.5;\n\nexport const defaultGetType = () => DEFAULT_RECYCLER_TYPE;\n","import IntegerBufferSet from '@x-oasis/integer-buffer-set';\nimport { SafeRange, FixedBufferProps } from './types';\nimport { DEFAULT_RECYCLER_TYPE, RECYCLER_BUFFER_SIZE } from './common';\n\nclass FixedBuffer {\n private _bufferSet: IntegerBufferSet;\n private _thresholdIndexValue = 0;\n\n private _recyclerType: string;\n\n constructor(props: FixedBufferProps) {\n const {\n thresholdIndexValue = 0,\n bufferSize = RECYCLER_BUFFER_SIZE,\n recyclerType = DEFAULT_RECYCLER_TYPE,\n metaExtractor,\n indexExtractor,\n } = props;\n this._bufferSet = new IntegerBufferSet({\n bufferSize,\n metaExtractor,\n indexExtractor,\n name: recyclerType,\n });\n this._recyclerType = recyclerType;\n this._thresholdIndexValue = thresholdIndexValue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerType() {\n return this._recyclerType;\n }\n\n place(index: number, safeRange: SafeRange) {\n this._bufferSet.getPosition(index, safeRange);\n }\n\n getMaxValue() {\n return this._bufferSet.getMaxValue();\n }\n\n getMinValue() {\n return this._bufferSet.getMinValue();\n }\n\n getIndices() {\n return this._bufferSet.getIndices();\n }\n}\n\nexport default FixedBuffer;\n","import FixedBuffer from './FixedBuffer';\nimport { OnProcess, RecyclerProps } from './types';\nimport {\n DEFAULT_RECYCLER_TYPE,\n RECYCLER_BUFFER_SIZE,\n RECYCLER_RESERVED_BUFFER_PER_BATCH,\n // RECYCLER_RESERVED_BUFFER_SIZE_RATIO,\n RECYCLER_THRESHOLD_INDEX_VALUE,\n} from './common';\n\nclass Recycler {\n private _queue: Array<FixedBuffer> = [];\n\n /**\n * start index\n */\n private _thresholdIndexValue = 0;\n private _recyclerReservedBufferPerBatch: number;\n /**\n * buffer size, the oversize node will run into recycle strategy\n */\n private _recyclerBufferSize: number;\n private _metaExtractor: (index: number) => any;\n private _indexExtractor: (meta: any) => number;\n private _getType: (index: number) => string;\n\n constructor(props?: RecyclerProps) {\n const {\n getType,\n metaExtractor,\n indexExtractor,\n recyclerTypes = [],\n recyclerBufferSize = RECYCLER_BUFFER_SIZE,\n thresholdIndexValue = RECYCLER_THRESHOLD_INDEX_VALUE,\n recyclerReservedBufferPerBatch = RECYCLER_RESERVED_BUFFER_PER_BATCH,\n } = props || {};\n\n this._metaExtractor = metaExtractor;\n this._indexExtractor = indexExtractor;\n this._getType = getType;\n this._recyclerBufferSize = recyclerBufferSize;\n this._thresholdIndexValue = thresholdIndexValue;\n this._recyclerReservedBufferPerBatch = recyclerReservedBufferPerBatch;\n recyclerTypes.forEach((type) => this.addBuffer(type));\n }\n\n get queue() {\n return this._queue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerReservedBufferPerBatch() {\n return this._recyclerReservedBufferPerBatch;\n }\n\n getIndices() {\n return this._queue.reduce((acc, cur) => acc.concat(cur.getIndices()), []);\n }\n\n addBuffer(type: string) {\n if (!type) return null;\n const index = this._queue.findIndex(\n (buffer) => buffer.recyclerType === type\n );\n if (index !== -1) return this._queue[index];\n const buffer = new FixedBuffer({\n recyclerType: type,\n metaExtractor: this._metaExtractor,\n indexExtractor: this._indexExtractor,\n bufferSize: this._recyclerBufferSize,\n thresholdIndexValue: this._thresholdIndexValue,\n });\n this._queue.push(buffer);\n return buffer;\n }\n\n ensureBuffer(type: string) {\n return this.addBuffer(type || DEFAULT_RECYCLER_TYPE);\n }\n\n updateIndices(props: {\n /**\n * index in range should not be recycled\n */\n safeRange: {\n startIndex: number;\n endIndex: number;\n };\n startIndex: number;\n maxCount: number;\n step?: number;\n onProcess?: OnProcess;\n }) {\n const { startIndex, safeRange, step = 1, maxCount, onProcess } = props;\n let count = 0;\n let _index = Math.max(startIndex, 0);\n while (count < maxCount) {\n if (_index >= this._thresholdIndexValue) {\n const recyclerType = this._getType(_index);\n const buffer = this.ensureBuffer(recyclerType);\n buffer.place(_index, safeRange);\n\n if (\n typeof onProcess !== 'function' ||\n onProcess(recyclerType, _index)\n ) {\n count += 1;\n }\n }\n _index += step;\n }\n }\n\n getMinValue() {\n let minValue = Number.MAX_SAFE_INTEGER;\n this._queue.forEach((buffer) => {\n const v = buffer.getMinValue();\n if (typeof v === 'number') minValue = Math.min(v, minValue);\n });\n return minValue;\n }\n\n getMaxValue() {\n let maxValue = 0;\n this._queue.forEach((buffer) => {\n const v = buffer.getMaxValue();\n if (typeof v === 'number') maxValue = Math.max(v, maxValue);\n });\n return maxValue;\n }\n}\n\nexport default Recycler;\n"],"names":["DEFAULT_RECYCLER_TYPE","RECYCLER_THRESHOLD_INDEX_VALUE","RECYCLER_RESERVED_BUFFER_PER_BATCH","RECYCLER_BUFFER_SIZE","FixedBuffer","props","_props$thresholdIndex","thresholdIndexValue","_props$bufferSize","bufferSize","_props$recyclerType","recyclerType","metaExtractor","indexExtractor","_bufferSet","IntegerBufferSet","name","_recyclerType","_thresholdIndexValue","_proto","prototype","place","index","safeRange","getPosition","getMaxValue","getMinValue","getIndices","_createClass","key","get","Recycler","_ref","getType","_ref$recyclerTypes","recyclerTypes","_ref$recyclerBufferSi","recyclerBufferSize","_ref$thresholdIndexVa","_ref$recyclerReserved","recyclerReservedBufferPerBatch","_metaExtractor","_indexExtractor","_getType","_recyclerBufferSize","_recyclerReservedBufferPerBatch","forEach","type","_this","addBuffer","_queue","reduce","acc","cur","concat","findIndex","buffer","push","ensureBuffer","updateIndices","startIndex","_props$step","step","maxCount","onProcess","count","_index","Math","max","minValue","Number","MAX_SAFE_INTEGER","v","min","maxValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recycler.esm.js","sources":["../src/common.ts","../src/FixedBuffer.ts","../src/index.ts"],"sourcesContent":["export const DEFAULT_RECYCLER_TYPE = '__default_recycler_buffer__';\nexport const RECYCLER_THRESHOLD_INDEX_VALUE = 0;\nexport const RECYCLER_RESERVED_BUFFER_PER_BATCH = 4;\nexport const RECYCLER_BUFFER_SIZE = 10;\n// export const RECYCLER_RESERVED_BUFFER_SIZE_RATIO = 1.5;\n\nexport const defaultGetType = () => DEFAULT_RECYCLER_TYPE;\n","import IntegerBufferSet from '@x-oasis/integer-buffer-set';\nimport { SafeRange, FixedBufferProps } from './types';\nimport { DEFAULT_RECYCLER_TYPE, RECYCLER_BUFFER_SIZE } from './common';\n\nclass FixedBuffer {\n private _bufferSet: IntegerBufferSet;\n private _thresholdIndexValue = 0;\n\n private _recyclerType: string;\n\n constructor(props: FixedBufferProps) {\n const {\n thresholdIndexValue = 0,\n bufferSize = RECYCLER_BUFFER_SIZE,\n recyclerType = DEFAULT_RECYCLER_TYPE,\n metaExtractor,\n indexExtractor,\n } = props;\n this._bufferSet = new IntegerBufferSet({\n bufferSize,\n metaExtractor,\n indexExtractor,\n name: recyclerType,\n });\n this._recyclerType = recyclerType;\n this._thresholdIndexValue = thresholdIndexValue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerType() {\n return this._recyclerType;\n }\n\n place(index: number, safeRange: SafeRange) {\n this._bufferSet.getPosition(index, safeRange);\n }\n\n getMaxValue() {\n return this._bufferSet.getMaxValue();\n }\n\n getMinValue() {\n return this._bufferSet.getMinValue();\n }\n\n getIndices() {\n return this._bufferSet.getIndices();\n }\n}\n\nexport default FixedBuffer;\n","import FixedBuffer from './FixedBuffer';\nimport { OnProcess, RecyclerProps } from './types';\nimport {\n DEFAULT_RECYCLER_TYPE,\n RECYCLER_BUFFER_SIZE,\n RECYCLER_RESERVED_BUFFER_PER_BATCH,\n // RECYCLER_RESERVED_BUFFER_SIZE_RATIO,\n RECYCLER_THRESHOLD_INDEX_VALUE,\n} from './common';\n\nclass Recycler {\n private _queue: Array<FixedBuffer> = [];\n\n /**\n * start index\n */\n private _thresholdIndexValue = 0;\n private _recyclerReservedBufferPerBatch: number;\n /**\n * buffer size, the oversize node will run into recycle strategy\n */\n private _recyclerBufferSize: number;\n private _metaExtractor: (index: number) => any;\n private _indexExtractor: (meta: any) => number;\n private _getType: (index: number) => string;\n\n constructor(props?: RecyclerProps) {\n const {\n getType,\n metaExtractor,\n indexExtractor,\n recyclerTypes = [],\n recyclerBufferSize = RECYCLER_BUFFER_SIZE,\n thresholdIndexValue = RECYCLER_THRESHOLD_INDEX_VALUE,\n recyclerReservedBufferPerBatch = RECYCLER_RESERVED_BUFFER_PER_BATCH,\n } = props || {};\n\n this._metaExtractor = metaExtractor;\n this._indexExtractor = indexExtractor;\n this._getType = getType;\n this._recyclerBufferSize = recyclerBufferSize;\n this._thresholdIndexValue = thresholdIndexValue;\n this._recyclerReservedBufferPerBatch = recyclerReservedBufferPerBatch;\n recyclerTypes.forEach((type) => this.addBuffer(type));\n }\n\n get queue() {\n return this._queue;\n }\n\n get thresholdIndexValue() {\n return this._thresholdIndexValue;\n }\n\n get recyclerReservedBufferPerBatch() {\n return this._recyclerReservedBufferPerBatch;\n }\n\n getIndices() {\n return this._queue.reduce((acc, cur) => acc.concat(cur.getIndices()), []);\n }\n\n addBuffer(type: string) {\n if (!type) return null;\n const index = this._queue.findIndex(\n (buffer) => buffer.recyclerType === type\n );\n if (index !== -1) return this._queue[index];\n const buffer = new FixedBuffer({\n recyclerType: type,\n metaExtractor: this._metaExtractor,\n indexExtractor: this._indexExtractor,\n bufferSize: this._recyclerBufferSize,\n thresholdIndexValue: this._thresholdIndexValue,\n });\n this._queue.push(buffer);\n return buffer;\n }\n\n ensureBuffer(type: string) {\n return this.addBuffer(type || DEFAULT_RECYCLER_TYPE);\n }\n\n updateIndices(props: {\n /**\n * index in range should not be recycled\n */\n safeRange: {\n startIndex: number;\n endIndex: number;\n };\n startIndex: number;\n maxCount: number;\n step?: number;\n onProcess?: OnProcess;\n }) {\n const { startIndex, safeRange, step = 1, maxCount, onProcess } = props;\n let count = 0;\n let _index = Math.max(startIndex, 0);\n while (count < maxCount && this._metaExtractor(_index)) {\n if (_index >= this._thresholdIndexValue) {\n const recyclerType = this._getType(_index);\n const buffer = this.ensureBuffer(recyclerType);\n buffer.place(_index, safeRange);\n\n if (\n typeof onProcess !== 'function' ||\n onProcess(recyclerType, _index)\n ) {\n count += 1;\n }\n }\n _index += step;\n }\n }\n\n getMinValue() {\n let minValue = Number.MAX_SAFE_INTEGER;\n this._queue.forEach((buffer) => {\n const v = buffer.getMinValue();\n if (typeof v === 'number') minValue = Math.min(v, minValue);\n });\n return minValue;\n }\n\n getMaxValue() {\n let maxValue = 0;\n this._queue.forEach((buffer) => {\n const v = buffer.getMaxValue();\n if (typeof v === 'number') maxValue = Math.max(v, maxValue);\n });\n return maxValue;\n }\n}\n\nexport default Recycler;\n"],"names":["DEFAULT_RECYCLER_TYPE","RECYCLER_THRESHOLD_INDEX_VALUE","RECYCLER_RESERVED_BUFFER_PER_BATCH","RECYCLER_BUFFER_SIZE","FixedBuffer","props","_props$thresholdIndex","thresholdIndexValue","_props$bufferSize","bufferSize","_props$recyclerType","recyclerType","metaExtractor","indexExtractor","_bufferSet","IntegerBufferSet","name","_recyclerType","_thresholdIndexValue","_proto","prototype","place","index","safeRange","getPosition","getMaxValue","getMinValue","getIndices","_createClass","key","get","Recycler","_ref","getType","_ref$recyclerTypes","recyclerTypes","_ref$recyclerBufferSi","recyclerBufferSize","_ref$thresholdIndexVa","_ref$recyclerReserved","recyclerReservedBufferPerBatch","_metaExtractor","_indexExtractor","_getType","_recyclerBufferSize","_recyclerReservedBufferPerBatch","forEach","type","_this","addBuffer","_queue","reduce","acc","cur","concat","findIndex","buffer","push","ensureBuffer","updateIndices","startIndex","_props$step","step","maxCount","onProcess","count","_index","Math","max","minValue","Number","MAX_SAFE_INTEGER","v","min","maxValue"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x-oasis/recycler",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.24",
|
|
4
4
|
"description": "IntegerBufferSet function",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"tsdx": "^0.14.1"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@x-oasis/integer-buffer-set": "0.1.
|
|
19
|
+
"@x-oasis/integer-buffer-set": "0.1.24"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"build": "tsdx build --tsconfig tsconfig.build.json",
|
package/src/index.ts
CHANGED
|
@@ -97,7 +97,7 @@ class Recycler {
|
|
|
97
97
|
const { startIndex, safeRange, step = 1, maxCount, onProcess } = props;
|
|
98
98
|
let count = 0;
|
|
99
99
|
let _index = Math.max(startIndex, 0);
|
|
100
|
-
while (count < maxCount) {
|
|
100
|
+
while (count < maxCount && this._metaExtractor(_index)) {
|
|
101
101
|
if (_index >= this._thresholdIndexValue) {
|
|
102
102
|
const recyclerType = this._getType(_index);
|
|
103
103
|
const buffer = this.ensureBuffer(recyclerType);
|