array-buffer-cache-broker 4.0.45

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.
Files changed (35) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +6 -0
  3. package/build/es2019/interfaces/array-buffer-cache-broker-definition.d.ts +8 -0
  4. package/build/es2019/interfaces/array-buffer-cache-broker-definition.d.ts.map +1 -0
  5. package/build/es2019/interfaces/array-buffer-cache-broker-definition.js +2 -0
  6. package/build/es2019/interfaces/array-buffer-cache-broker-definition.js.map +1 -0
  7. package/build/es2019/interfaces/index.d.ts +2 -0
  8. package/build/es2019/interfaces/index.d.ts.map +1 -0
  9. package/build/es2019/interfaces/index.js +2 -0
  10. package/build/es2019/interfaces/index.js.map +1 -0
  11. package/build/es2019/module.d.ts +6 -0
  12. package/build/es2019/module.d.ts.map +1 -0
  13. package/build/es2019/module.js +39 -0
  14. package/build/es2019/module.js.map +1 -0
  15. package/build/es2019/types/array-buffer-cache-broker-loader.d.ts +4 -0
  16. package/build/es2019/types/array-buffer-cache-broker-loader.d.ts.map +1 -0
  17. package/build/es2019/types/array-buffer-cache-broker-loader.js +2 -0
  18. package/build/es2019/types/array-buffer-cache-broker-loader.js.map +1 -0
  19. package/build/es2019/types/array-buffer-cache-broker-wrapper.d.ts +4 -0
  20. package/build/es2019/types/array-buffer-cache-broker-wrapper.d.ts.map +1 -0
  21. package/build/es2019/types/array-buffer-cache-broker-wrapper.js +2 -0
  22. package/build/es2019/types/array-buffer-cache-broker-wrapper.js.map +1 -0
  23. package/build/es2019/types/index.d.ts +3 -0
  24. package/build/es2019/types/index.d.ts.map +1 -0
  25. package/build/es2019/types/index.js +3 -0
  26. package/build/es2019/types/index.js.map +1 -0
  27. package/build/es5/bundle.js +105 -0
  28. package/package.json +81 -0
  29. package/src/interfaces/array-buffer-cache-broker-definition.ts +11 -0
  30. package/src/interfaces/index.ts +1 -0
  31. package/src/module.ts +49 -0
  32. package/src/tsconfig.json +6 -0
  33. package/src/types/array-buffer-cache-broker-loader.ts +4 -0
  34. package/src/types/array-buffer-cache-broker-wrapper.ts +4 -0
  35. package/src/types/index.ts +2 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Christoph Guttandin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,6 @@
1
+ # array-buffer-cache-broker
2
+
3
+ **The broker which is used by the array-buffer-cache package.**
4
+
5
+ [![dependencies](https://img.shields.io/david/chrisguttandin/array-buffer-cache-broker.svg?style=flat-square)](https://github.com/chrisguttandin/array-buffer-cache-broker/network/dependencies)
6
+ [![version](https://img.shields.io/npm/v/array-buffer-cache-broker.svg?style=flat-square)](https://www.npmjs.com/package/array-buffer-cache-broker)
@@ -0,0 +1,8 @@
1
+ import { IBrokerDefinition } from 'broker-factory';
2
+ export interface IArrayBufferCacheBrokerDefinition extends IBrokerDefinition {
3
+ clone(arrayBufferId: number): Promise<ArrayBuffer>;
4
+ purge(arrayBufferId: number): void;
5
+ slice(arrayBufferId: number, begin: number, end?: null | number): Promise<ArrayBuffer>;
6
+ store(arrayBuffer: ArrayBuffer): Promise<number>;
7
+ }
8
+ //# sourceMappingURL=array-buffer-cache-broker-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-buffer-cache-broker-definition.d.ts","sourceRoot":"","sources":["../../../src/interfaces/array-buffer-cache-broker-definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,iCAAkC,SAAQ,iBAAiB;IACxE,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEnD,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEvF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=array-buffer-cache-broker-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-buffer-cache-broker-definition.js","sourceRoot":"","sources":["../../../src/interfaces/array-buffer-cache-broker-definition.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './array-buffer-cache-broker-definition';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './array-buffer-cache-broker-definition';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { TArrayBufferCacheBrokerLoader, TArrayBufferCacheBrokerWrapper } from './types';
2
+ export * from './interfaces/index';
3
+ export * from './types/index';
4
+ export declare const wrap: TArrayBufferCacheBrokerWrapper;
5
+ export declare const load: TArrayBufferCacheBrokerLoader;
6
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,MAAM,SAAS,CAAC;AAMxF,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAI9B,eAAO,MAAM,IAAI,EAAE,8BA2BjB,CAAC;AAEH,eAAO,MAAM,IAAI,EAAE,6BAIlB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { createBroker } from 'broker-factory';
2
+ import { addUniqueNumber } from 'fast-unique-numbers';
3
+ /*
4
+ * @todo Explicitly referencing the barrel file seems to be necessary when enabling the
5
+ * isolatedModules compiler option.
6
+ */
7
+ export * from './interfaces/index';
8
+ export * from './types/index';
9
+ const arrayBufferIds = new Set();
10
+ export const wrap = createBroker({
11
+ clone: ({ call }) => {
12
+ return (arrayBufferId) => {
13
+ return call('clone', { arrayBufferId });
14
+ };
15
+ },
16
+ purge: ({ call }) => {
17
+ return async (arrayBufferId) => {
18
+ await call('purge', { arrayBufferId });
19
+ arrayBufferIds.delete(arrayBufferId);
20
+ };
21
+ },
22
+ slice: ({ call }) => {
23
+ return (arrayBufferId, begin, end = null) => {
24
+ return call('slice', { arrayBufferId, begin, end });
25
+ };
26
+ },
27
+ store: ({ call }) => {
28
+ return async (arrayBuffer) => {
29
+ const arrayBufferId = addUniqueNumber(arrayBufferIds);
30
+ await call('store', { arrayBuffer, arrayBufferId }, [arrayBuffer]);
31
+ return arrayBufferId;
32
+ };
33
+ }
34
+ });
35
+ export const load = (url) => {
36
+ const worker = new Worker(url);
37
+ return wrap(worker);
38
+ };
39
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD;;;GAGG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAE9B,MAAM,cAAc,GAAgB,IAAI,GAAG,EAAE,CAAC;AAE9C,MAAM,CAAC,MAAM,IAAI,GAAmC,YAAY,CAAuE;IACnI,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAChB,OAAO,CAAC,aAAa,EAAE,EAAE;YACrB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC;IACN,CAAC;IACD,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAChB,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;YAEvC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC,CAAC;IACN,CAAC;IACD,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAChB,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,EAAE,EAAE;YACxC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC;IACN,CAAC;IACD,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAChB,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE;YACzB,MAAM,aAAa,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YAEnE,OAAO,aAAa,CAAC;QACzB,CAAC,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAkC,CAAC,GAAW,EAAE,EAAE;IAC/D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAE/B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { IDefaultBrokerDefinition } from 'broker-factory';
2
+ import { IArrayBufferCacheBrokerDefinition } from '../interfaces';
3
+ export declare type TArrayBufferCacheBrokerLoader = (url: string) => IArrayBufferCacheBrokerDefinition & IDefaultBrokerDefinition;
4
+ //# sourceMappingURL=array-buffer-cache-broker-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-buffer-cache-broker-loader.d.ts","sourceRoot":"","sources":["../../../src/types/array-buffer-cache-broker-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AAElE,oBAAY,6BAA6B,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,iCAAiC,GAAG,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=array-buffer-cache-broker-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-buffer-cache-broker-loader.js","sourceRoot":"","sources":["../../../src/types/array-buffer-cache-broker-loader.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { IDefaultBrokerDefinition } from 'broker-factory';
2
+ import { IArrayBufferCacheBrokerDefinition } from '../interfaces';
3
+ export declare type TArrayBufferCacheBrokerWrapper = (sender: MessagePort | Worker) => IArrayBufferCacheBrokerDefinition & IDefaultBrokerDefinition;
4
+ //# sourceMappingURL=array-buffer-cache-broker-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-buffer-cache-broker-wrapper.d.ts","sourceRoot":"","sources":["../../../src/types/array-buffer-cache-broker-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AAElE,oBAAY,8BAA8B,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,KAAK,iCAAiC,GAAG,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=array-buffer-cache-broker-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-buffer-cache-broker-wrapper.js","sourceRoot":"","sources":["../../../src/types/array-buffer-cache-broker-wrapper.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from './array-buffer-cache-broker-loader';
2
+ export * from './array-buffer-cache-broker-wrapper';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './array-buffer-cache-broker-loader';
2
+ export * from './array-buffer-cache-broker-wrapper';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC"}
@@ -0,0 +1,105 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/runtime/helpers/asyncToGenerator'), require('@babel/runtime/regenerator'), require('broker-factory'), require('fast-unique-numbers')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@babel/runtime/helpers/asyncToGenerator', '@babel/runtime/regenerator', 'broker-factory', 'fast-unique-numbers'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.arrayBufferCacheBroker = {}, global._asyncToGenerator, global._regeneratorRuntime, global.brokerFactory, global.fastUniqueNumbers));
5
+ }(this, (function (exports, _asyncToGenerator, _regeneratorRuntime, brokerFactory, fastUniqueNumbers) { 'use strict';
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
10
+ var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
11
+
12
+ var arrayBufferIds = new Set();
13
+ var wrap = brokerFactory.createBroker({
14
+ clone: function clone(_ref) {
15
+ var call = _ref.call;
16
+ return function (arrayBufferId) {
17
+ return call('clone', {
18
+ arrayBufferId: arrayBufferId
19
+ });
20
+ };
21
+ },
22
+ purge: function purge(_ref2) {
23
+ var call = _ref2.call;
24
+ return /*#__PURE__*/function () {
25
+ var _ref3 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(arrayBufferId) {
26
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
27
+ while (1) {
28
+ switch (_context.prev = _context.next) {
29
+ case 0:
30
+ _context.next = 2;
31
+ return call('purge', {
32
+ arrayBufferId: arrayBufferId
33
+ });
34
+
35
+ case 2:
36
+ arrayBufferIds["delete"](arrayBufferId);
37
+
38
+ case 3:
39
+ case "end":
40
+ return _context.stop();
41
+ }
42
+ }
43
+ }, _callee);
44
+ }));
45
+
46
+ return function (_x) {
47
+ return _ref3.apply(this, arguments);
48
+ };
49
+ }();
50
+ },
51
+ slice: function slice(_ref4) {
52
+ var call = _ref4.call;
53
+ return function (arrayBufferId, begin) {
54
+ var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
55
+ return call('slice', {
56
+ arrayBufferId: arrayBufferId,
57
+ begin: begin,
58
+ end: end
59
+ });
60
+ };
61
+ },
62
+ store: function store(_ref5) {
63
+ var call = _ref5.call;
64
+ return /*#__PURE__*/function () {
65
+ var _ref6 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(arrayBuffer) {
66
+ var arrayBufferId;
67
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
68
+ while (1) {
69
+ switch (_context2.prev = _context2.next) {
70
+ case 0:
71
+ arrayBufferId = fastUniqueNumbers.addUniqueNumber(arrayBufferIds);
72
+ _context2.next = 3;
73
+ return call('store', {
74
+ arrayBuffer: arrayBuffer,
75
+ arrayBufferId: arrayBufferId
76
+ }, [arrayBuffer]);
77
+
78
+ case 3:
79
+ return _context2.abrupt("return", arrayBufferId);
80
+
81
+ case 4:
82
+ case "end":
83
+ return _context2.stop();
84
+ }
85
+ }
86
+ }, _callee2);
87
+ }));
88
+
89
+ return function (_x2) {
90
+ return _ref6.apply(this, arguments);
91
+ };
92
+ }();
93
+ }
94
+ });
95
+ var load = function load(url) {
96
+ var worker = new Worker(url);
97
+ return wrap(worker);
98
+ };
99
+
100
+ exports.load = load;
101
+ exports.wrap = wrap;
102
+
103
+ Object.defineProperty(exports, '__esModule', { value: true });
104
+
105
+ })));
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "author": "Christoph Guttandin",
3
+ "bugs": {
4
+ "url": "https://github.com/chrisguttandin/array-buffer-cache-broker/issues"
5
+ },
6
+ "config": {
7
+ "commitizen": {
8
+ "path": "cz-conventional-changelog"
9
+ }
10
+ },
11
+ "dependencies": {
12
+ "@babel/runtime": "^7.15.4",
13
+ "array-buffer-cache-worker": "^6.0.46",
14
+ "broker-factory": "^3.0.52",
15
+ "fast-unique-numbers": "^6.0.6",
16
+ "tslib": "^2.3.1"
17
+ },
18
+ "description": "The broker which is used by the array-buffer-cache package.",
19
+ "devDependencies": {
20
+ "@babel/core": "^7.15.5",
21
+ "@babel/plugin-external-helpers": "^7.14.5",
22
+ "@babel/plugin-transform-runtime": "^7.15.0",
23
+ "@babel/preset-env": "^7.15.6",
24
+ "@commitlint/cli": "^13.1.0",
25
+ "@commitlint/config-angular": "^13.1.0",
26
+ "@rollup/plugin-babel": "^5.3.0",
27
+ "chai": "^4.3.4",
28
+ "commitizen": "^4.2.4",
29
+ "cz-conventional-changelog": "^3.3.0",
30
+ "eslint": "^7.32.0",
31
+ "eslint-config-holy-grail": "^50.1.7",
32
+ "grunt": "^1.4.1",
33
+ "grunt-cli": "^1.4.3",
34
+ "grunt-contrib-clean": "^2.0.0",
35
+ "grunt-sh": "^0.2.0",
36
+ "husky": "^7.0.2",
37
+ "karma": "^6.3.4",
38
+ "karma-chrome-launcher": "^3.1.0",
39
+ "karma-firefox-launcher": "^2.1.1",
40
+ "karma-leche": "^2.0.1",
41
+ "karma-mocha": "^2.0.1",
42
+ "karma-safari-launcher": "^1.0.0",
43
+ "karma-sauce-launcher": "^4.3.6",
44
+ "karma-sinon-chai": "^2.0.2",
45
+ "karma-webpack": "^5.0.0",
46
+ "load-grunt-config": "^4.0.1",
47
+ "mocha": "^9.1.1",
48
+ "prettier": "^2.4.1",
49
+ "pretty-quick": "^3.1.1",
50
+ "rollup": "^2.56.3",
51
+ "sinon": "^11.1.2",
52
+ "sinon-chai": "^3.7.0",
53
+ "ts-loader": "^9.2.5",
54
+ "tsconfig-holy-grail": "^11.1.11",
55
+ "tslint": "^6.1.3",
56
+ "tslint-config-holy-grail": "^53.2.25",
57
+ "typescript": "^4.4.3",
58
+ "webpack": "^5.52.1"
59
+ },
60
+ "files": [
61
+ "build/es2019/",
62
+ "build/es5/",
63
+ "src/"
64
+ ],
65
+ "homepage": "https://github.com/chrisguttandin/array-buffer-cache-broker",
66
+ "license": "MIT",
67
+ "main": "build/es5/bundle.js",
68
+ "module": "build/es2019/module.js",
69
+ "name": "array-buffer-cache-broker",
70
+ "repository": {
71
+ "type": "git",
72
+ "url": "https://github.com/chrisguttandin/array-buffer-cache-broker.git"
73
+ },
74
+ "scripts": {
75
+ "prepare": "husky install",
76
+ "prepublishOnly": "grunt build",
77
+ "test": "grunt lint && grunt test"
78
+ },
79
+ "types": "build/es2019/module.d.ts",
80
+ "version": "4.0.45"
81
+ }
@@ -0,0 +1,11 @@
1
+ import { IBrokerDefinition } from 'broker-factory';
2
+
3
+ export interface IArrayBufferCacheBrokerDefinition extends IBrokerDefinition {
4
+ clone(arrayBufferId: number): Promise<ArrayBuffer>;
5
+
6
+ purge(arrayBufferId: number): void;
7
+
8
+ slice(arrayBufferId: number, begin: number, end?: null | number): Promise<ArrayBuffer>;
9
+
10
+ store(arrayBuffer: ArrayBuffer): Promise<number>;
11
+ }
@@ -0,0 +1 @@
1
+ export * from './array-buffer-cache-broker-definition';
package/src/module.ts ADDED
@@ -0,0 +1,49 @@
1
+ import { TArrayBufferCacheWorkerDefinition } from 'array-buffer-cache-worker';
2
+ import { createBroker } from 'broker-factory';
3
+ import { addUniqueNumber } from 'fast-unique-numbers';
4
+ import { IArrayBufferCacheBrokerDefinition } from './interfaces';
5
+ import { TArrayBufferCacheBrokerLoader, TArrayBufferCacheBrokerWrapper } from './types';
6
+
7
+ /*
8
+ * @todo Explicitly referencing the barrel file seems to be necessary when enabling the
9
+ * isolatedModules compiler option.
10
+ */
11
+ export * from './interfaces/index';
12
+ export * from './types/index';
13
+
14
+ const arrayBufferIds: Set<number> = new Set();
15
+
16
+ export const wrap: TArrayBufferCacheBrokerWrapper = createBroker<IArrayBufferCacheBrokerDefinition, TArrayBufferCacheWorkerDefinition>({
17
+ clone: ({ call }) => {
18
+ return (arrayBufferId) => {
19
+ return call('clone', { arrayBufferId });
20
+ };
21
+ },
22
+ purge: ({ call }) => {
23
+ return async (arrayBufferId) => {
24
+ await call('purge', { arrayBufferId });
25
+
26
+ arrayBufferIds.delete(arrayBufferId);
27
+ };
28
+ },
29
+ slice: ({ call }) => {
30
+ return (arrayBufferId, begin, end = null) => {
31
+ return call('slice', { arrayBufferId, begin, end });
32
+ };
33
+ },
34
+ store: ({ call }) => {
35
+ return async (arrayBuffer) => {
36
+ const arrayBufferId = addUniqueNumber(arrayBufferIds);
37
+
38
+ await call('store', { arrayBuffer, arrayBufferId }, [arrayBuffer]);
39
+
40
+ return arrayBufferId;
41
+ };
42
+ }
43
+ });
44
+
45
+ export const load: TArrayBufferCacheBrokerLoader = (url: string) => {
46
+ const worker = new Worker(url);
47
+
48
+ return wrap(worker);
49
+ };
@@ -0,0 +1,6 @@
1
+ {
2
+ "compilerOptions": {
3
+ "isolatedModules": true
4
+ },
5
+ "extends": "tsconfig-holy-grail/src/tsconfig-browser"
6
+ }
@@ -0,0 +1,4 @@
1
+ import { IDefaultBrokerDefinition } from 'broker-factory';
2
+ import { IArrayBufferCacheBrokerDefinition } from '../interfaces';
3
+
4
+ export type TArrayBufferCacheBrokerLoader = (url: string) => IArrayBufferCacheBrokerDefinition & IDefaultBrokerDefinition;
@@ -0,0 +1,4 @@
1
+ import { IDefaultBrokerDefinition } from 'broker-factory';
2
+ import { IArrayBufferCacheBrokerDefinition } from '../interfaces';
3
+
4
+ export type TArrayBufferCacheBrokerWrapper = (sender: MessagePort | Worker) => IArrayBufferCacheBrokerDefinition & IDefaultBrokerDefinition;
@@ -0,0 +1,2 @@
1
+ export * from './array-buffer-cache-broker-loader';
2
+ export * from './array-buffer-cache-broker-wrapper';