@teamscale/javascript-instrumenter 0.0.1-alpha.20 → 0.0.1-beta.5

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/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@teamscale/javascript-instrumenter",
3
- "version": "0.0.1-alpha.20",
3
+ "version": "0.0.1-beta.5",
4
4
  "description": "Istanbul-based coverage instrumenter with coverage forwarding via WebSockets",
5
- "main": "dist/main.js",
6
- "bin": "dist/main.js",
7
- "types": "dist/main.d.ts",
5
+ "main": "dist/src/main.js",
6
+ "bin": "dist/src/main.js",
7
+ "types": "dist/src/main.d.ts",
8
8
  "author": "CQSE GmbH",
9
9
  "license": "Apache-2.0",
10
10
  "repository": {
@@ -13,19 +13,17 @@
13
13
  },
14
14
  "scripts": {
15
15
  "clean": "rimraf dist tsconfig.tsbuildinfo",
16
- "build": "tsc --project tsconfig.json && rollup --config",
17
- "run": "node src/main.js",
18
- "test": "yarn build && jest --forceExit --coverage --silent=true"
16
+ "build": "tsc --project tsconfig.json && node esbuild.mjs",
17
+ "instrumenter": "node dist/src/main.js",
18
+ "test": "yarn build && NODE_OPTIONS='--experimental-vm-modules' jest --forceExit --coverage --silent=true --detectOpenHandles"
19
19
  },
20
20
  "files": [
21
21
  "dist/**/*"
22
22
  ],
23
23
  "devDependencies": {
24
24
  "@babel/core": "^7.14.0",
25
+ "@babel/plugin-transform-modules-commonjs": "^7.15.4",
25
26
  "@babel/preset-env": "^7.14.1",
26
- "@rollup/plugin-commonjs": "^20.0.0",
27
- "@rollup/plugin-node-resolve": "^13.0.0",
28
- "@rollup/plugin-typescript": "^8.2.5",
29
27
  "@types/async": "^3.2.6",
30
28
  "@types/convert-source-map": "^1.5.1",
31
29
  "@types/glob": "^7.1.3",
@@ -36,18 +34,17 @@
36
34
  "@types/source-map": "^0.5.7",
37
35
  "@types/ws": "^7.4.4",
38
36
  "babel-jest": "^27.2.0",
37
+ "esbuild": "^0.13.3",
38
+ "esbuild-plugin-inline-worker": "^0.1.1",
39
39
  "jest": "^27.2.0",
40
40
  "rimraf": "^3.0.2",
41
- "rollup": "^2.56.2",
42
- "rollup-plugin-auto-named-exports": "^1.0.0-beta.3",
43
- "rollup-plugin-web-worker-loader": "^1.6.1",
44
41
  "ts-jest": "^27.0.5",
45
42
  "ts-node": "^10.2.1",
46
43
  "tslib": "^2.2.0",
47
44
  "typescript": "^4.4.3"
48
45
  },
49
46
  "dependencies": {
50
- "@cqse/commons": "workspace:packages/cqse-commons",
47
+ "@cqse/commons": "^0.0.1-beta.1",
51
48
  "@types/micromatch": "^4.0.2",
52
49
  "argparse": "^2.0.1",
53
50
  "async": "^3.2.0",
@@ -61,7 +58,8 @@
61
58
  "source-map": "0.6.1",
62
59
  "typescript-optional": "^2.0.1",
63
60
  "unload": "^2.2.0",
64
- "web-worker": "^1.0.0"
61
+ "web-worker": "^1.0.0",
62
+ "winston": "^3.3.3"
65
63
  },
66
64
  "publishConfig": {
67
65
  "access": "public"
@@ -1,11 +0,0 @@
1
- /** The parameters the instrumenter can be configured by */
2
- export declare type ConfigurationParameters = {
3
- inputs?: string[];
4
- in_place?: boolean;
5
- debug?: boolean;
6
- to?: string;
7
- source_map?: string;
8
- collector?: string;
9
- include_origin?: string;
10
- exclude_origin?: string;
11
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"vaccine.js","sources":["../src/vaccine/utils.js","../src/vaccine/Interceptor.js","../../../node_modules/detect-node/index.esm.js","../../../node_modules/unload/dist/es/browser.js","../../../node_modules/unload/dist/es/node.js","../../../node_modules/unload/dist/es/index.js","../src/vaccine/protocol.js","../src/vaccine/main.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.universeAttribute = exports.getWindow = exports.hasWindow = exports.universe = exports.isWebWorker = void 0;\n/**\n * Determines if the code is executed in a Web Worker.\n */\nfunction isWebWorker() {\n return typeof importScripts === 'function';\n}\nexports.isWebWorker = isWebWorker;\n/**\n * Return the global universe object (in a Web browser: The window object).\n */\nfunction universe() {\n return getWindow();\n}\nexports.universe = universe;\n/**\n * Determines if the window object is present.\n */\nfunction hasWindow() {\n return typeof window !== 'undefined';\n}\nexports.hasWindow = hasWindow;\n/**\n * Returns the window object.\n */\nfunction getWindow() {\n return window;\n}\nexports.getWindow = getWindow;\n/**\n * Query or set a global attribute.\n */\nfunction universeAttribute(attributeName, defaultValue) {\n let result = universe()[attributeName];\n if (!result) {\n result = defaultValue;\n universe()[attributeName] = result;\n }\n return result;\n}\nexports.universeAttribute = universeAttribute;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeProxy = void 0;\nconst utils_1 = require(\"./utils\");\nconst STATEMENT_COVERAGE_ID = 's';\n/**\n * Used to intercepts updates to Istanbuls' coverage object.\n */\nclass Interceptor {\n /**\n * Constructor.\n */\n constructor(coverageObj, path) {\n this.coverageObj = coverageObj;\n this.path = path;\n }\n /**\n * Intercept reading an objects' property.\n */\n get(target, prop, receiver) {\n const value = target[prop];\n if (value !== Object(value)) {\n // Extract the primitive value\n return value;\n }\n return makeProxy(this.coverageObj, value, [...this.path, prop]);\n }\n /**\n * Intercept writing an objects' property.\n */\n set(obj, prop, value) {\n const fullPath = [...this.path, prop];\n // Handle \"Statement\" coverage\n if (fullPath[0] === STATEMENT_COVERAGE_ID) {\n const fileId = this.coverageObj.hash;\n const start = this.coverageObj.statementMap[fullPath[1]].start;\n utils_1.universe()['_$Bc'](fileId, start.line, start.column);\n }\n return true;\n }\n}\n/**\n * Constructs the actual interceptor/proxy that forwards changed coverage information.\n *\n * See {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy}.\n */\nfunction makeProxy(coverage, target, path) {\n return new Proxy(target, new Interceptor(coverage, path));\n}\nexports.makeProxy = makeProxy;\n","// Only Node.JS has a process variable that is of [[Class]] process\nexport default Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n","/* global WorkerGlobalScope */\nfunction add(fn) {\n if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {// this is run inside of a webworker\n } else {\n /**\n * if we are on react-native, there is no window.addEventListener\n * @link https://github.com/pubkey/unload/issues/6\n */\n if (typeof window.addEventListener !== 'function') return;\n /**\n * for normal browser-windows, we use the beforeunload-event\n */\n\n window.addEventListener('beforeunload', function () {\n fn();\n }, true);\n /**\n * for iframes, we have to use the unload-event\n * @link https://stackoverflow.com/q/47533670/3443137\n */\n\n window.addEventListener('unload', function () {\n fn();\n }, true);\n }\n /**\n * TODO add fallback for safari-mobile\n * @link https://stackoverflow.com/a/26193516/3443137\n */\n\n}\n\nexport default {\n add: add\n};","// set to true to log events\nvar DEBUG = false;\n\nfunction add(fn) {\n process.on('exit', function () {\n DEBUG && console.log('node: exit');\n return fn();\n });\n /**\n * on the following events,\n * the process will not end if there are\n * event-handlers attached,\n * therefore we have to call process.exit()\n */\n\n process.on('beforeExit', function () {\n DEBUG && console.log('node: beforeExit');\n return fn().then(function () {\n return process.exit();\n });\n }); // catches ctrl+c event\n\n process.on('SIGINT', function () {\n DEBUG && console.log('node: SIGNINT');\n return fn().then(function () {\n return process.exit();\n });\n }); // catches uncaught exceptions\n\n process.on('uncaughtException', function (err) {\n DEBUG && console.log('node: uncaughtException');\n return fn().then(function () {\n console.trace(err);\n process.exit(1);\n });\n });\n}\n\nexport default {\n add: add\n};","import isNode from 'detect-node';\nimport BrowserMethod from './browser.js';\nimport NodeMethod from './node.js';\nvar USE_METHOD = isNode ? NodeMethod : BrowserMethod;\nvar LISTENERS = new Set();\nvar startedListening = false;\n\nfunction startListening() {\n if (startedListening) return;\n startedListening = true;\n USE_METHOD.add(runAll);\n}\n\nexport function add(fn) {\n startListening();\n if (typeof fn !== 'function') throw new Error('Listener is no function');\n LISTENERS.add(fn);\n var addReturn = {\n remove: function remove() {\n return LISTENERS[\"delete\"](fn);\n },\n run: function run() {\n LISTENERS[\"delete\"](fn);\n return fn();\n }\n };\n return addReturn;\n}\nexport function runAll() {\n var promises = [];\n LISTENERS.forEach(function (fn) {\n promises.push(fn());\n LISTENERS[\"delete\"](fn);\n });\n return Promise.all(promises);\n}\nexport function removeAll() {\n LISTENERS.clear();\n}\nexport function getSize() {\n return LISTENERS.size;\n}\nexport default {\n add: add,\n runAll: runAll,\n removeAll: removeAll,\n getSize: getSize\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolMessageTypes = void 0;\n/**\n * Various constants that are used to exchange data between\n * the instrumented application and the coverage collector.\n */\nvar ProtocolMessageTypes;\n(function (ProtocolMessageTypes) {\n /** A message that provides a source map */\n ProtocolMessageTypes[\"MESSAGE_TYPE_SOURCEMAP\"] = \"s\";\n /** A message that provides coverage information */\n ProtocolMessageTypes[\"MESSAGE_TYPE_COVERAGE\"] = \"c\";\n})(ProtocolMessageTypes = exports.ProtocolMessageTypes || (exports.ProtocolMessageTypes = {}));\n",null],"names":["Interceptor_1","require$$0","add","universeAttribute","universe","DataWorker","getWindow","hasWindow","unload.add","ProtocolMessageTypes","makeProxy"],"mappings":"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"}