├── .eslintignore ├── .gitignore ├── JavaScript ├── package.json ├── 0-complex │ ├── application.sh │ ├── lib │ │ ├── unit2.js │ │ ├── unit1.js │ │ ├── module.js │ │ └── unit3.js │ └── application.js ├── e-module.mjs ├── 5-singleton.js ├── d-module.js ├── 6-global.js ├── 9-import.mjs ├── 1-export.js ├── 8-export.mjs ├── h-example.mm ├── b-dynamic.js ├── c-require.mjs ├── a-dynamic.mjs ├── 3-resolve.js ├── 2-require.js ├── 4-cache.js ├── 7-mixin.js ├── g-metamodule.js ├── f-commonjs.js └── package-lock.json ├── README.md ├── .editorconfig ├── NodeJS ├── 3-esm │ ├── tsconfig.json │ ├── application.mjs │ ├── npm.mjs │ ├── package.json │ ├── node.mjs │ ├── traditional.mjs │ ├── global.d.ts │ └── package-lock.json ├── 2-namespaces │ ├── tsconfig.json │ ├── application.js │ ├── npm.js │ ├── package.json │ ├── node.js │ ├── traditional.js │ ├── global.d.ts │ └── package-lock.json ├── 5-esm-explicit │ ├── npm.mjs │ ├── node.mjs │ ├── application.mjs │ ├── package.json │ ├── traditional.mjs │ └── package-lock.json ├── 4-explicit │ ├── npm.js │ ├── application.js │ ├── package.json │ ├── traditional.js │ ├── node.js │ └── package-lock.json ├── 1-npm │ ├── npm.js │ ├── application.js │ ├── package.json │ ├── node.js │ ├── traditional.js │ └── package-lock.json └── 0-internal │ ├── application.js │ ├── traditional.js │ └── node.js ├── LICENSE └── .eslintrc.json /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.log 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /JavaScript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "ws": "^8.13.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /JavaScript/0-complex/application.sh: -------------------------------------------------------------------------------- 1 | node --nouse-idle-notification --expose-gc application.js 2 | -------------------------------------------------------------------------------- /JavaScript/e-module.mjs: -------------------------------------------------------------------------------- 1 | import m from 'node:module'; 2 | console.log(m); 3 | console.log(); 4 | console.log(module); 5 | -------------------------------------------------------------------------------- /JavaScript/5-singleton.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { collection } = require('./1-export.js'); 4 | collection.set('key1', 'value1'); 5 | -------------------------------------------------------------------------------- /JavaScript/d-module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const m = require('node:module'); 4 | console.log(m); 5 | console.log(); 6 | console.log(module); 7 | -------------------------------------------------------------------------------- /JavaScript/6-global.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | require('./5-singleton.js'); 4 | 5 | const { collection } = require('./1-export.js'); 6 | console.log(collection); 7 | -------------------------------------------------------------------------------- /JavaScript/9-import.mjs: -------------------------------------------------------------------------------- 1 | import { Entity, fn, collection } from './8-export.mjs'; 2 | import m1 from './1-export.js'; 3 | 4 | console.log({ Entity, fn, collection }); 5 | console.log(m1); 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Modularity and Dependency 2 | 3 | [![Node.js модули: ECMA, Common.js, Module API](https://img.youtube.com/vi/CJr2vS3hjMU/0.jpg)](https://www.youtube.com/watch?v=CJr2vS3hjMU) 4 | -------------------------------------------------------------------------------- /JavaScript/1-export.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | class Entity {} 4 | 5 | const fn = (x) => x; 6 | 7 | const collection = new Map(); 8 | 9 | module.exports = { Entity, fn, collection }; 10 | -------------------------------------------------------------------------------- /JavaScript/8-export.mjs: -------------------------------------------------------------------------------- 1 | class Entity {} 2 | 3 | const fn = x => x; 4 | 5 | const collection = new Map(); 6 | 7 | // module.exports = { Entity, fn, collection }; 8 | export { Entity, fn, collection }; 9 | -------------------------------------------------------------------------------- /JavaScript/h-example.mm: -------------------------------------------------------------------------------- 1 | ({ 2 | doSomething(a, b) { 3 | console.log({ a, b }); 4 | }, 5 | 6 | async doSomethingElse(name) { 7 | console.log({ name }); 8 | }, 9 | 10 | collection: new Map(), 11 | }); 12 | -------------------------------------------------------------------------------- /JavaScript/b-dynamic.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const promise = import('node:events'); 4 | console.log({ promise }); 5 | 6 | promise.then((events) => { 7 | console.log({ defaultMaxListeners: events.defaultMaxListeners }); 8 | }); 9 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | end_of_line = lf 6 | charset = utf-8 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | 10 | [{*.js,*.mjs,*.ts,*.json,*.yml}] 11 | indent_size = 2 12 | indent_style = space 13 | -------------------------------------------------------------------------------- /JavaScript/c-require.mjs: -------------------------------------------------------------------------------- 1 | import { createRequire } from 'node:module'; 2 | console.log({ 'import.meta': import.meta }); 3 | const require = createRequire(import.meta.url); 4 | 5 | const fs = require('node:fs'); 6 | console.log(Object.keys(fs)); 7 | 8 | console.log({ require }); 9 | -------------------------------------------------------------------------------- /JavaScript/0-complex/lib/unit2.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const unit2 = {}; 4 | module.exports = unit2; 5 | 6 | unit2.methodName = () => { 7 | console.log('unit2.methodName returns unit2.CONSTANT_NAME'); 8 | return unit2.CONSTANT_NAME; 9 | }; 10 | 11 | unit2.CONSTANT_NAME = 'Hello here'; 12 | -------------------------------------------------------------------------------- /JavaScript/0-complex/lib/unit1.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | showPaths() { 5 | console.dir({ 6 | __dirname, 7 | __filename, 8 | 'process.cwd()': process.cwd() 9 | }); 10 | }, 11 | 12 | doSomething() { 13 | console.log('Somenting done'); 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /NodeJS/3-esm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "moduleResolution": "node", 5 | "strict": true, 6 | "baseUrl": ".", 7 | "preserveWatchOutput": true, 8 | "allowJs": true, 9 | "noEmit": true, 10 | "skipLibCheck": true 11 | }, 12 | "include": ["*.ts"] 13 | } 14 | -------------------------------------------------------------------------------- /JavaScript/a-dynamic.mjs: -------------------------------------------------------------------------------- 1 | const promise = import('node:events'); 2 | console.log({ promise }); 3 | 4 | promise.then((events) => { 5 | console.log({ defaultMaxListeners: events.defaultMaxListeners }); 6 | }); 7 | 8 | const events = await import('node:events'); 9 | console.log({ defaultMaxListeners: events.defaultMaxListeners }); 10 | -------------------------------------------------------------------------------- /NodeJS/2-namespaces/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "moduleResolution": "node", 5 | "strict": true, 6 | "baseUrl": ".", 7 | "preserveWatchOutput": true, 8 | "allowJs": true, 9 | "noEmit": true, 10 | "skipLibCheck": true 11 | }, 12 | "include": ["*.ts"] 13 | } 14 | -------------------------------------------------------------------------------- /NodeJS/5-esm-explicit/npm.mjs: -------------------------------------------------------------------------------- 1 | import pg from 'pg'; 2 | import redis from 'redis'; 3 | import ws from 'ws'; 4 | import metacom from 'metacom'; 5 | import metalog from 'metalog'; 6 | import metavm from 'metavm'; 7 | 8 | const npm = { pg, redis, ws, metacom, metalog, metavm }; 9 | Object.freeze(npm); 10 | 11 | export default npm; 12 | -------------------------------------------------------------------------------- /NodeJS/3-esm/application.mjs: -------------------------------------------------------------------------------- 1 | import node from './node.mjs'; 2 | import npm from './npm.mjs'; 3 | 4 | // Use modules as usual 5 | 6 | node.fs.readFile('./application.mjs', (error, data) => { 7 | if (error) { 8 | console.log({ error }); 9 | } else { 10 | console.log({ data }); 11 | } 12 | }); 13 | 14 | // Show what we have 15 | 16 | console.log({ node, npm }); 17 | -------------------------------------------------------------------------------- /NodeJS/2-namespaces/application.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const node = require('./node.js'); 4 | const npm = require('./npm.js'); 5 | 6 | // Use modules as usual 7 | 8 | node.fs.readFile('./application.js', (error, data) => { 9 | if (error) { 10 | console.log({ error }); 11 | } else { 12 | console.log({ data }); 13 | } 14 | }); 15 | 16 | // Show what we have 17 | 18 | console.log({ node, npm }); 19 | -------------------------------------------------------------------------------- /NodeJS/5-esm-explicit/node.mjs: -------------------------------------------------------------------------------- 1 | import fs from 'node:fs'; 2 | import path from 'node:path'; 3 | import vm from 'node:vm'; 4 | import os from 'node:os'; 5 | import http from 'node:http'; 6 | import util from 'node:util'; 7 | import crypto from 'node:crypto'; 8 | import timers from 'node:timers'; 9 | 10 | const node = { fs, path, vm, os, http, util, crypto, timers }; 11 | Object.freeze(node); 12 | 13 | export default node; 14 | -------------------------------------------------------------------------------- /JavaScript/3-resolve.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const exp = require('./1-export.js'); 4 | const expPath = require.resolve('./1-export.js'); 5 | const expModule = require.cache[expPath]; 6 | console.log({ exp, expPath, expModule }); 7 | 8 | const events = require('node:events'); 9 | const eventsPath = require.resolve('node:events'); 10 | const eventsModule = require.cache[eventsPath]; 11 | console.log({ events, eventsPath, eventsModule }); 12 | -------------------------------------------------------------------------------- /NodeJS/4-explicit/npm.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = Object.freeze({ 4 | metacom: require('metacom'), 5 | metaconfiguration: require('metaconfiguration'), 6 | metalog: require('metalog'), 7 | metaschema: require('metaschema'), 8 | metautil: require('metautil'), 9 | metavm: require('metavm'), 10 | metawatch: require('metawatch'), 11 | pg: require('pg'), 12 | redis: require('redis'), 13 | ws: require('ws'), 14 | }); 15 | -------------------------------------------------------------------------------- /NodeJS/1-npm/npm.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const node = require('./node.js'); 4 | const npm = {}; 5 | 6 | const pkgPath = node.path.join(node.process.cwd(), 'package.json'); 7 | const pkg = require(pkgPath); 8 | 9 | if (pkg.dependencies) { 10 | const modules = Object.keys(pkg.dependencies); 11 | for (const dependency of modules) { 12 | npm[dependency] = require(dependency); 13 | } 14 | } 15 | 16 | module.exports = Object.freeze(npm); 17 | -------------------------------------------------------------------------------- /NodeJS/2-namespaces/npm.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const node = require('./node.js'); 4 | const npm = {}; 5 | 6 | const pkgPath = node.path.join(node.process.cwd(), 'package.json'); 7 | const pkg = require(pkgPath); 8 | 9 | if (pkg.dependencies) { 10 | const modules = Object.keys(pkg.dependencies); 11 | for (const dependency of modules) { 12 | npm[dependency] = require(dependency); 13 | } 14 | } 15 | 16 | module.exports = Object.freeze(npm); 17 | -------------------------------------------------------------------------------- /NodeJS/3-esm/npm.mjs: -------------------------------------------------------------------------------- 1 | import node from './node.mjs'; 2 | 3 | const npm = {}; 4 | 5 | const pkgPath = node.path.join(node.process.cwd(), 'package.json'); 6 | const pkg = JSON.parse(await node.fsp.readFile(pkgPath)); 7 | 8 | if (pkg.dependencies) { 9 | const modules = Object.keys(pkg.dependencies); 10 | for (const dependency of modules) { 11 | npm[dependency] = await import(dependency); 12 | } 13 | } 14 | 15 | Object.freeze(npm); 16 | export default npm; 17 | -------------------------------------------------------------------------------- /NodeJS/0-internal/application.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { fs, path, vm, os, http, util, crypto, timers } = require('./node.js'); 4 | 5 | // Use modules as usual 6 | 7 | fs.readFile('./application.js', (error, data) => { 8 | if (error) { 9 | console.log({ error }); 10 | } else { 11 | console.log({ data }); 12 | } 13 | }); 14 | 15 | // Show what we have 16 | 17 | const node = { fs, path, vm, os, http, util, crypto, timers }; 18 | console.log({ node }); 19 | -------------------------------------------------------------------------------- /JavaScript/0-complex/lib/module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = (api, application) => { 4 | const FILE_SCOPE_CONSTANT = 100; 5 | application.APPLICATION_SCOPE_CONSTANT = 200; 6 | api.metasync.EXPORTED_CONSTANT = 300; 7 | 8 | const fileScopeFunction = () => {}; 9 | application.applicationScopeFunction = () => {}; 10 | api.metasync.exportedFunction = () => {}; 11 | 12 | console.log({ 13 | FILE_SCOPE_CONSTANT, 14 | fileScopeFunction, 15 | }); 16 | }; 17 | -------------------------------------------------------------------------------- /NodeJS/5-esm-explicit/application.mjs: -------------------------------------------------------------------------------- 1 | import node from './node.mjs'; 2 | import npm from './npm.mjs'; 3 | 4 | // Alternatively: import identifiers explicitly 5 | // import { fs } from './node.mjs'; 6 | 7 | // Use modules as usual 8 | 9 | node.fs.readFile('./application.mjs', (error, data) => { 10 | if (error) { 11 | console.log({ error }); 12 | } else { 13 | console.log({ data }); 14 | } 15 | }); 16 | 17 | // Show what we have 18 | 19 | console.log({ node, npm }); 20 | -------------------------------------------------------------------------------- /JavaScript/2-require.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('node:fs'); 4 | const events = require('node:events'); 5 | const timers1 = require('node:timers'); 6 | const timers2 = require('node:timers/promises'); 7 | const ws = require('ws'); 8 | const exp = require('./1-export.js'); 9 | 10 | console.log(Object.keys(fs)); 11 | console.log(Object.keys(events)); 12 | console.log(Object.keys(timers1)); 13 | console.log(Object.keys(timers2)); 14 | console.log(Object.keys(ws)); 15 | console.log(Object.keys(exp)); 16 | -------------------------------------------------------------------------------- /JavaScript/4-cache.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const ex1 = require('./1-export.js'); 4 | const modulePath = require.resolve('./1-export.js'); 5 | console.log({ required: modulePath }); 6 | console.log(require.cache[modulePath]); 7 | delete require.cache[modulePath]; 8 | console.log({ cached: require.cache[modulePath] }); 9 | const ex2 = require('./1-export.js'); 10 | console.log(ex1 === ex2); 11 | 12 | const ws = require('ws'); 13 | const wsPath = require.resolve('ws'); 14 | console.log(ws, wsPath); 15 | console.log(Object.keys(require.cache)); 16 | -------------------------------------------------------------------------------- /JavaScript/7-mixin.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('node:fs'); 4 | const { readFile } = fs; 5 | 6 | fs.readFile = (...args) => { 7 | const path = args.shift(); 8 | const callback = args.pop(); 9 | const options = args.pop() || {}; 10 | console.log(`Intercepted call: fs.readFile('${path}')`); 11 | return readFile(path, options, (err, data) => { 12 | if (err) console.error(err); 13 | else console.log(`Data received: ${data.length}`); 14 | callback(err, data); 15 | }); 16 | }; 17 | 18 | fs.readFile('./7-mixin.js', (err, data) => { 19 | console.log({ err, data }); 20 | }); 21 | -------------------------------------------------------------------------------- /NodeJS/1-npm/application.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { fs, path, vm, os, http, util, crypto, timers } = require('./node.js'); 4 | const { pg, redis, ws, metacom, metalog, metavm } = require('./npm.js'); 5 | 6 | // Use modules as usual 7 | 8 | fs.readFile('./application.js', (error, data) => { 9 | if (error) { 10 | console.log({ error }); 11 | } else { 12 | console.log({ data }); 13 | } 14 | }); 15 | 16 | // Show what we have 17 | 18 | const node = { fs, path, vm, os, http, util, crypto, timers }; 19 | const npm = { pg, redis, ws, metacom, metalog, metavm }; 20 | console.log({ node, npm }); 21 | -------------------------------------------------------------------------------- /NodeJS/4-explicit/application.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { fs, path, vm, os, http, util, crypto, timers } = require('./node.js'); 4 | const { pg, redis, ws, metacom, metalog, metavm } = require('./npm.js'); 5 | 6 | // Use modules as usual 7 | 8 | fs.readFile('./application.js', (error, data) => { 9 | if (error) { 10 | console.log({ error }); 11 | } else { 12 | console.log({ data }); 13 | } 14 | }); 15 | 16 | // Show what we have 17 | 18 | const node = { fs, path, vm, os, http, util, crypto, timers }; 19 | const npm = { pg, redis, ws, metacom, metalog, metavm }; 20 | console.log({ node, npm }); 21 | -------------------------------------------------------------------------------- /NodeJS/1-npm/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "author": "Timur Shemsedinov ", 5 | "description": "Just an example module", 6 | "license": "MIT", 7 | "main": "application.js", 8 | "engines": { 9 | "node": "16 || 18 || 19 || 20" 10 | }, 11 | "dependencies": { 12 | "metacom": "^3.0.4", 13 | "metaconfiguration": "^2.1.11", 14 | "metalog": "^3.1.12", 15 | "metaschema": "^2.1.5", 16 | "metautil": "^3.12.0", 17 | "metavm": "^1.2.6", 18 | "metawatch": "^1.1.1", 19 | "pg": "^8.11.3", 20 | "redis": "^4.6.8", 21 | "ws": "^8.13.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /NodeJS/4-explicit/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "author": "Timur Shemsedinov ", 5 | "description": "Just an example module", 6 | "license": "MIT", 7 | "main": "application.js", 8 | "engines": { 9 | "node": "16 || 18 || 19 || 20" 10 | }, 11 | "dependencies": { 12 | "metacom": "^3.0.4", 13 | "metaconfiguration": "^2.1.11", 14 | "metalog": "^3.1.12", 15 | "metaschema": "^2.1.5", 16 | "metautil": "^3.12.0", 17 | "metavm": "^1.2.6", 18 | "metawatch": "^1.1.1", 19 | "pg": "^8.11.3", 20 | "redis": "^4.6.8", 21 | "ws": "^8.13.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /JavaScript/0-complex/lib/unit3.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const unit3 = {}; 4 | const LOCAL_CONSTANT = 'local value'; 5 | const EXPORTED_CONSTANT = 'exported value'; 6 | 7 | module.exports = (api, application) => { 8 | application.unit3 = unit3; 9 | unit3.EXPORTED_CONSTANT = EXPORTED_CONSTANT; 10 | 11 | unit3.doSomething = () => { 12 | console.log('Local constant: ' + LOCAL_CONSTANT); 13 | console.log('Exported constant: ' + unit3.EXPORTED_CONSTANT); 14 | console.log('Imported constant: ' + application.unit2.CONSTANT_NAME); 15 | }; 16 | 17 | unit3.doSomethingElse = () => { 18 | }; 19 | 20 | unit3.doSomethingSpecial = () => { 21 | }; 22 | }; 23 | -------------------------------------------------------------------------------- /NodeJS/3-esm/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "author": "Timur Shemsedinov ", 5 | "description": "Just an example module", 6 | "license": "MIT", 7 | "main": "application.mjs", 8 | "types": "global.d.ts", 9 | "engines": { 10 | "node": "16 || 18 || 19 || 20" 11 | }, 12 | "dependencies": { 13 | "metacom": "^3.0.4", 14 | "metaconfiguration": "^2.1.11", 15 | "metalog": "^3.1.12", 16 | "metaschema": "^2.1.5", 17 | "metautil": "^3.12.0", 18 | "metavm": "^1.2.6", 19 | "metawatch": "^1.1.1", 20 | "pg": "^8.11.3", 21 | "redis": "^4.6.8", 22 | "ws": "^8.13.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /NodeJS/2-namespaces/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "author": "Timur Shemsedinov ", 5 | "description": "Just an example module", 6 | "license": "MIT", 7 | "main": "application.js", 8 | "types": "global.d.ts", 9 | "engines": { 10 | "node": "16 || 18 || 19 || 20" 11 | }, 12 | "dependencies": { 13 | "metacom": "^3.0.4", 14 | "metaconfiguration": "^2.1.11", 15 | "metalog": "^3.1.12", 16 | "metaschema": "^2.1.5", 17 | "metautil": "^3.12.0", 18 | "metavm": "^1.2.6", 19 | "metawatch": "^1.1.1", 20 | "pg": "^8.11.3", 21 | "redis": "^4.6.8", 22 | "ws": "^8.13.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /NodeJS/5-esm-explicit/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "author": "Timur Shemsedinov ", 5 | "description": "Just an example module", 6 | "license": "MIT", 7 | "main": "application.mjs", 8 | "types": "global.d.ts", 9 | "engines": { 10 | "node": "16 || 18 || 19 || 20" 11 | }, 12 | "dependencies": { 13 | "metacom": "^3.0.4", 14 | "metaconfiguration": "^2.1.11", 15 | "metalog": "^3.1.12", 16 | "metaschema": "^2.1.5", 17 | "metautil": "^3.12.0", 18 | "metavm": "^1.2.6", 19 | "metawatch": "^1.1.1", 20 | "pg": "^8.11.3", 21 | "redis": "^4.6.8", 22 | "ws": "^8.13.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /NodeJS/0-internal/traditional.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('node:fs'); 4 | const path = require('node:path'); 5 | const vm = require('node:vm'); 6 | const os = require('node:os'); 7 | const http = require('node:http'); 8 | const util = require('node:util'); 9 | const crypto = require('node:crypto'); 10 | const timers = require('node:timers'); 11 | 12 | // Use modules as usual 13 | 14 | fs.readFile('./application.js', (error, data) => { 15 | if (error) { 16 | console.log({ error }); 17 | } else { 18 | console.log({ data }); 19 | } 20 | }); 21 | 22 | // Show what we have 23 | 24 | const node = { fs, path, vm, os, http, util, crypto, timers }; 25 | console.log({ node }); 26 | -------------------------------------------------------------------------------- /NodeJS/1-npm/node.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const node = {}; 4 | const tools = ['util', 'path', 'buffer', 'os', 'v8', 'vm']; 5 | const multi = ['child_process', 'worker_threads']; 6 | const streams = ['stream', 'fs', 'crypto', 'zlib', 'readline']; 7 | const async = ['async_hooks', 'timers', 'timers/promises', 'events']; 8 | const network = ['dns', 'net', 'tls', 'http', 'https', 'http2', 'dgram']; 9 | const internals = [...tools, ...multi, ...streams, ...async, ...network]; 10 | 11 | for (const name of internals) node[name] = require(`node:${name}`); 12 | node.process = process; 13 | node.fsp = node.fs.promises; 14 | node.timers.promises = node['timers/promises']; 15 | 16 | module.exports = Object.freeze(node); 17 | -------------------------------------------------------------------------------- /NodeJS/0-internal/node.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const node = {}; 4 | const tools = ['util', 'path', 'buffer', 'os', 'v8', 'vm']; 5 | const multi = ['child_process', 'worker_threads']; 6 | const streams = ['stream', 'fs', 'crypto', 'zlib', 'readline']; 7 | const async = ['async_hooks', 'timers', 'timers/promises', 'events']; 8 | const network = ['dns', 'net', 'tls', 'http', 'https', 'http2', 'dgram']; 9 | const internals = [...tools, ...multi, ...streams, ...async, ...network]; 10 | 11 | for (const name of internals) node[name] = require(`node:${name}`); 12 | node.process = process; 13 | node.fsp = node.fs.promises; 14 | node.timers.promises = node['timers/promises']; 15 | 16 | module.exports = Object.freeze(node); 17 | -------------------------------------------------------------------------------- /NodeJS/2-namespaces/node.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const node = {}; 4 | const tools = ['util', 'path', 'buffer', 'os', 'v8', 'vm']; 5 | const multi = ['child_process', 'worker_threads']; 6 | const streams = ['stream', 'fs', 'crypto', 'zlib', 'readline']; 7 | const async = ['async_hooks', 'timers', 'timers/promises', 'events']; 8 | const network = ['dns', 'net', 'tls', 'http', 'https', 'http2', 'dgram']; 9 | const internals = [...tools, ...multi, ...streams, ...async, ...network]; 10 | 11 | for (const name of internals) node[name] = require(`node:${name}`); 12 | node.process = process; 13 | node.fsp = node.fs.promises; 14 | node.timers.promises = node['timers/promises']; 15 | 16 | module.exports = Object.freeze(node); 17 | -------------------------------------------------------------------------------- /NodeJS/3-esm/node.mjs: -------------------------------------------------------------------------------- 1 | const node = {}; 2 | const tools = ['util', 'path', 'buffer', 'os', 'v8', 'vm']; 3 | const multi = ['child_process', 'worker_threads']; 4 | const streams = ['stream', 'fs', 'crypto', 'zlib', 'readline']; 5 | const async = ['async_hooks', 'timers', 'timers/promises', 'events']; 6 | const network = ['dns', 'net', 'tls', 'http', 'https', 'http2', 'dgram']; 7 | const internals = [...tools, ...multi, ...streams, ...async, ...network]; 8 | 9 | for (const name of internals) node[name] = await import(`node:${name}`); 10 | node.process = process; 11 | node.fsp = node.fs.promises; 12 | node.timers = { ...node.timers, promises: node['timers/promises'] }; 13 | 14 | Object.freeze(node); 15 | export default node; 16 | -------------------------------------------------------------------------------- /JavaScript/g-metamodule.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('node:fs').promises; 4 | const vm = require('node:vm'); 5 | 6 | const RUN_OPTIONS = { timeout: 5000, displayErrors: false }; 7 | 8 | const load = async (filePath, sandbox) => { 9 | const src = await fs.readFile(filePath, 'utf8'); 10 | const code = `'use strict';\n${src}`; 11 | const script = new vm.Script(code); 12 | const context = vm.createContext(Object.freeze({ ...sandbox })); 13 | const exports = script.runInContext(context, RUN_OPTIONS); 14 | return exports; 15 | }; 16 | 17 | const main = async () => { 18 | const sandbox = { Map: class PseudoMap {} }; 19 | const exported = await load('./h-example.mm', sandbox); 20 | console.log(exported); 21 | }; 22 | 23 | main(); 24 | -------------------------------------------------------------------------------- /NodeJS/3-esm/traditional.mjs: -------------------------------------------------------------------------------- 1 | import fs from 'node:fs'; 2 | import path from 'node:path'; 3 | import vm from 'node:vm'; 4 | import os from 'node:os'; 5 | import http from 'node:http'; 6 | import util from 'node:util'; 7 | import crypto from 'node:crypto'; 8 | import timers from 'node:timers'; 9 | 10 | import pg from 'pg'; 11 | import redis from 'redis'; 12 | import ws from 'ws'; 13 | import metacom from 'metacom'; 14 | import metalog from 'metalog'; 15 | import metavm from 'metavm'; 16 | 17 | // Use modules as usual 18 | 19 | fs.readFile('./application.mjs', (error, data) => { 20 | if (error) { 21 | console.log({ error }); 22 | } else { 23 | console.log({ data }); 24 | } 25 | }); 26 | 27 | // Show what we have 28 | 29 | const node = { fs, path, vm, os, http, util, crypto, timers }; 30 | const npm = { pg, redis, ws, metacom, metalog, metavm }; 31 | console.log({ node, npm }); 32 | -------------------------------------------------------------------------------- /NodeJS/5-esm-explicit/traditional.mjs: -------------------------------------------------------------------------------- 1 | import fs from 'node:fs'; 2 | import path from 'node:path'; 3 | import vm from 'node:vm'; 4 | import os from 'node:os'; 5 | import http from 'node:http'; 6 | import util from 'node:util'; 7 | import crypto from 'node:crypto'; 8 | import timers from 'node:timers'; 9 | 10 | import pg from 'pg'; 11 | import redis from 'redis'; 12 | import ws from 'ws'; 13 | import metacom from 'metacom'; 14 | import metalog from 'metalog'; 15 | import metavm from 'metavm'; 16 | 17 | // Use modules as usual 18 | 19 | fs.readFile('./application.mjs', (error, data) => { 20 | if (error) { 21 | console.log({ error }); 22 | } else { 23 | console.log({ data }); 24 | } 25 | }); 26 | 27 | // Show what we have 28 | 29 | const node = { fs, path, vm, os, http, util, crypto, timers }; 30 | const npm = { pg, redis, ws, metacom, metalog, metavm }; 31 | console.log({ node, npm }); 32 | -------------------------------------------------------------------------------- /JavaScript/0-complex/application.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const api = {}; 4 | api.fs = require('node:fs'); 5 | api.vm = require('node:vm'); 6 | api.timers = require('node:timers'); 7 | 8 | const application = {}; 9 | application.unit1 = require('./lib/unit1'); 10 | application.unit2 = require('./lib/unit2'); 11 | require('./lib/unit3')(api, application); 12 | 13 | application.reloadUnit = (name) => { 14 | const moduleKey = require.resolve('./lib/' + name); 15 | delete require.cache[moduleKey]; 16 | const module = require('./lib/' + name); 17 | if (typeof module === 'function') module(api, application); 18 | }; 19 | 20 | application.startWatching = () => { 21 | api.fs.watch('./lib', (eventType, filename) => { 22 | if (eventType === 'change') { 23 | console.log(eventType, filename); 24 | application.reloadUnit('unit3.js'); 25 | } 26 | }); 27 | }; 28 | 29 | application.startWatching(); 30 | application.unit1.showPaths(); 31 | -------------------------------------------------------------------------------- /JavaScript/f-commonjs.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('node:fs').promises; 4 | const vm = require('node:vm'); 5 | 6 | const RUN_OPTIONS = { timeout: 5000, displayErrors: false }; 7 | 8 | const pseudoRequire = (name) => { 9 | console.log(`Intercepted require: ${name}`); 10 | }; 11 | 12 | const load = async (filePath, sandbox) => { 13 | const src = await fs.readFile(filePath, 'utf8'); 14 | const code = `(require, module, __filename, __dirname) => {\n${src}\n}`; 15 | const script = new vm.Script(code); 16 | const context = vm.createContext(Object.freeze({ ...sandbox })); 17 | const wrapper = script.runInContext(context, RUN_OPTIONS); 18 | const module = {}; 19 | wrapper(pseudoRequire, module, filePath, __dirname); 20 | return module.exports; 21 | }; 22 | 23 | const main = async () => { 24 | const sandbox = { Map: class PseudoMap {} }; 25 | const exported = await load('./1-export.js', sandbox); 26 | console.log(exported); 27 | }; 28 | 29 | main(); 30 | -------------------------------------------------------------------------------- /NodeJS/1-npm/traditional.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('node:fs'); 4 | const path = require('node:path'); 5 | const vm = require('node:vm'); 6 | const os = require('node:os'); 7 | const http = require('node:http'); 8 | const util = require('node:util'); 9 | const crypto = require('node:crypto'); 10 | const timers = require('node:timers'); 11 | 12 | const pg = require('pg'); 13 | const redis = require('redis'); 14 | const ws = require('ws'); 15 | const metacom = require('metacom'); 16 | const metalog = require('metalog'); 17 | const metavm = require('metavm'); 18 | 19 | // Use modules as usual 20 | 21 | fs.readFile('./application.js', (error, data) => { 22 | if (error) { 23 | console.log({ error }); 24 | } else { 25 | console.log({ data }); 26 | } 27 | }); 28 | 29 | // Show what we have 30 | 31 | const node = { fs, path, vm, os, http, util, crypto, timers }; 32 | const npm = { pg, redis, ws, metacom, metalog, metavm }; 33 | console.log({ node, npm }); 34 | -------------------------------------------------------------------------------- /NodeJS/4-explicit/traditional.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('node:fs'); 4 | const path = require('node:path'); 5 | const vm = require('node:vm'); 6 | const os = require('node:os'); 7 | const http = require('node:http'); 8 | const util = require('node:util'); 9 | const crypto = require('node:crypto'); 10 | const timers = require('node:timers'); 11 | 12 | const pg = require('pg'); 13 | const redis = require('redis'); 14 | const ws = require('ws'); 15 | const metacom = require('metacom'); 16 | const metalog = require('metalog'); 17 | const metavm = require('metavm'); 18 | 19 | // Use modules as usual 20 | 21 | fs.readFile('./application.js', (error, data) => { 22 | if (error) { 23 | console.log({ error }); 24 | } else { 25 | console.log({ data }); 26 | } 27 | }); 28 | 29 | // Show what we have 30 | 31 | const node = { fs, path, vm, os, http, util, crypto, timers }; 32 | const npm = { pg, redis, ws, metacom, metalog, metavm }; 33 | console.log({ node, npm }); 34 | -------------------------------------------------------------------------------- /NodeJS/2-namespaces/traditional.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('node:fs'); 4 | const path = require('node:path'); 5 | const vm = require('node:vm'); 6 | const os = require('node:os'); 7 | const http = require('node:http'); 8 | const util = require('node:util'); 9 | const crypto = require('node:crypto'); 10 | const timers = require('node:timers'); 11 | 12 | const pg = require('pg'); 13 | const redis = require('redis'); 14 | const ws = require('ws'); 15 | const metacom = require('metacom'); 16 | const metalog = require('metalog'); 17 | const metavm = require('metavm'); 18 | 19 | // Use modules as usual 20 | 21 | fs.readFile('./application.js', (error, data) => { 22 | if (error) { 23 | console.log({ error }); 24 | } else { 25 | console.log({ data }); 26 | } 27 | }); 28 | 29 | // Show what we have 30 | 31 | const node = { fs, path, vm, os, http, util, crypto, timers }; 32 | const npm = { pg, redis, ws, metacom, metalog, metavm }; 33 | console.log({ node, npm }); 34 | -------------------------------------------------------------------------------- /NodeJS/4-explicit/node.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = Object.freeze({ 4 | util: require('node:util'), 5 | path: require('node:path'), 6 | buffer: require('node:buffer'), 7 | os: require('node:os'), 8 | v8: require('node:v8'), 9 | vm: require('node:vm'), 10 | 'child_process': require('node:child_process'), 11 | 'worker_threads': require('node:worker_threads'), 12 | stream: require('node:stream'), 13 | fs: require('node:fs'), 14 | fsp: require('node:fs/promises'), 15 | crypto: require('node:crypto'), 16 | zlib: require('node:zlib'), 17 | readline: require('node:readline'), 18 | 'async_hooks': require('node:async_hooks'), 19 | timers: { 20 | ...require('node:timers'), 21 | promises: require('node:timers/promises'), 22 | }, 23 | events: require('node:events'), 24 | dns: require('node:dns'), 25 | net: require('node:net'), 26 | tls: require('node:tls'), 27 | http: require('node:http'), 28 | https: require('node:https'), 29 | http2: require('node:http2'), 30 | dgram: require('node:dgram'), 31 | process, 32 | }); 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017-2023 How.Programming.Works contributors 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. 22 | -------------------------------------------------------------------------------- /JavaScript/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JavaScript", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "dependencies": { 8 | "ws": "^8.13.0" 9 | } 10 | }, 11 | "node_modules/ws": { 12 | "version": "8.13.0", 13 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 14 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 15 | "engines": { 16 | "node": ">=10.0.0" 17 | }, 18 | "peerDependencies": { 19 | "bufferutil": "^4.0.1", 20 | "utf-8-validate": ">=5.0.2" 21 | }, 22 | "peerDependenciesMeta": { 23 | "bufferutil": { 24 | "optional": true 25 | }, 26 | "utf-8-validate": { 27 | "optional": true 28 | } 29 | } 30 | } 31 | }, 32 | "dependencies": { 33 | "ws": { 34 | "version": "8.13.0", 35 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 36 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 37 | "requires": {} 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /NodeJS/3-esm/global.d.ts: -------------------------------------------------------------------------------- 1 | import * as _util from 'node:util'; 2 | import * as _buffer from 'node:buffer'; 3 | import * as _cp from 'node:child_process'; 4 | import * as _os from 'node:os'; 5 | import * as _v8 from 'node:v8'; 6 | import * as _vm from 'node:vm'; 7 | import * as _path from 'node:path'; 8 | import * as _url from 'node:url'; 9 | import * as _sd from 'node:string_decoder'; 10 | import * as _qs from 'node:querystring'; 11 | import * as _querystring from 'node:querystring'; 12 | import * as _assert from 'node:assert'; 13 | import * as _stream from 'node:stream'; 14 | import * as _fs from 'node:fs'; 15 | import * as _crypto from 'node:crypto'; 16 | import * as _zlib from 'node:zlib'; 17 | import * as _readline from 'node:readline'; 18 | import * as _ph from 'node:perf_hooks'; 19 | import * as _ah from 'node:async_hooks'; 20 | import * as _timers from 'node:timers'; 21 | import * as _events from 'node:events'; 22 | import * as _dns from 'node:dns'; 23 | import * as _net from 'node:net'; 24 | import * as _tls from 'node:tls'; 25 | import * as _http from 'node:http'; 26 | import * as _https from 'node:https'; 27 | import * as _http2 from 'node:http2'; 28 | import * as _dgram from 'node:dgram'; 29 | 30 | import * as _ws from 'ws'; 31 | 32 | import * as _config from 'metaconfiguration'; 33 | import * as _metautil from 'metautil'; 34 | import * as _metavm from 'metavm'; 35 | import * as _metacom from 'metacom'; 36 | import * as _metalog from 'metalog'; 37 | import * as _metawatch from 'metawatch'; 38 | import * as _metaschema from 'metaschema'; 39 | 40 | declare global { 41 | namespace node { 42 | const util: typeof _util; 43 | const buffer: typeof _buffer; 44 | const child_process: typeof _cp; 45 | const childProcess: typeof _cp; 46 | const os: typeof _os; 47 | const v8: typeof _v8; 48 | const vm: typeof _vm; 49 | const path: typeof _path; 50 | const url: typeof _url; 51 | const StringDecoder: typeof _sd; 52 | const querystring: typeof _qs; 53 | const assert: typeof _assert; 54 | const stream: typeof _stream; 55 | const fs: typeof _fs; 56 | const fsp: typeof _fs.promises; 57 | const crypto: typeof _crypto; 58 | const zlib: typeof _zlib; 59 | const readline: typeof _readline; 60 | const perf_hooks: typeof _ph; 61 | const perfHooks: typeof _ph; 62 | const async_hooks: typeof _ah; 63 | const asyncHooks: typeof _ah; 64 | const timers: typeof _timers; 65 | const events: typeof _events; 66 | const dns: typeof _dns; 67 | const net: typeof _net; 68 | const tls: typeof _tls; 69 | const http: typeof _http; 70 | const https: typeof _https; 71 | const http2: typeof _http2; 72 | const dgram: typeof _dgram; 73 | } 74 | 75 | namespace npm { 76 | const ws: typeof _ws; 77 | const config: typeof _config; 78 | const metautil: typeof _metautil; 79 | const metavm: typeof _metavm; 80 | const metacom: typeof _metacom; 81 | const metalog: typeof _metalog; 82 | const metawatch: typeof _metawatch; 83 | const metaschema: typeof _metaschema; 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /NodeJS/2-namespaces/global.d.ts: -------------------------------------------------------------------------------- 1 | import * as _util from 'node:util'; 2 | import * as _buffer from 'node:buffer'; 3 | import * as _cp from 'node:child_process'; 4 | import * as _os from 'node:os'; 5 | import * as _v8 from 'node:v8'; 6 | import * as _vm from 'node:vm'; 7 | import * as _path from 'node:path'; 8 | import * as _url from 'node:url'; 9 | import * as _sd from 'node:string_decoder'; 10 | import * as _qs from 'node:querystring'; 11 | import * as _querystring from 'node:querystring'; 12 | import * as _assert from 'node:assert'; 13 | import * as _stream from 'node:stream'; 14 | import * as _fs from 'node:fs'; 15 | import * as _crypto from 'node:crypto'; 16 | import * as _zlib from 'node:zlib'; 17 | import * as _readline from 'node:readline'; 18 | import * as _ph from 'node:perf_hooks'; 19 | import * as _ah from 'node:async_hooks'; 20 | import * as _timers from 'node:timers'; 21 | import * as _events from 'node:events'; 22 | import * as _dns from 'node:dns'; 23 | import * as _net from 'node:net'; 24 | import * as _tls from 'node:tls'; 25 | import * as _http from 'node:http'; 26 | import * as _https from 'node:https'; 27 | import * as _http2 from 'node:http2'; 28 | import * as _dgram from 'node:dgram'; 29 | 30 | import * as _ws from 'ws'; 31 | 32 | import * as _config from 'metaconfiguration'; 33 | import * as _metautil from 'metautil'; 34 | import * as _metavm from 'metavm'; 35 | import * as _metacom from 'metacom'; 36 | import * as _metalog from 'metalog'; 37 | import * as _metawatch from 'metawatch'; 38 | import * as _metaschema from 'metaschema'; 39 | 40 | declare global { 41 | namespace node { 42 | const util: typeof _util; 43 | const buffer: typeof _buffer; 44 | const child_process: typeof _cp; 45 | const childProcess: typeof _cp; 46 | const os: typeof _os; 47 | const v8: typeof _v8; 48 | const vm: typeof _vm; 49 | const path: typeof _path; 50 | const url: typeof _url; 51 | const StringDecoder: typeof _sd; 52 | const querystring: typeof _qs; 53 | const assert: typeof _assert; 54 | const stream: typeof _stream; 55 | const fs: typeof _fs; 56 | const fsp: typeof _fs.promises; 57 | const crypto: typeof _crypto; 58 | const zlib: typeof _zlib; 59 | const readline: typeof _readline; 60 | const perf_hooks: typeof _ph; 61 | const perfHooks: typeof _ph; 62 | const async_hooks: typeof _ah; 63 | const asyncHooks: typeof _ah; 64 | const timers: typeof _timers; 65 | const events: typeof _events; 66 | const dns: typeof _dns; 67 | const net: typeof _net; 68 | const tls: typeof _tls; 69 | const http: typeof _http; 70 | const https: typeof _https; 71 | const http2: typeof _http2; 72 | const dgram: typeof _dgram; 73 | } 74 | 75 | namespace npm { 76 | const ws: typeof _ws; 77 | const config: typeof _config; 78 | const metautil: typeof _metautil; 79 | const metavm: typeof _metavm; 80 | const metacom: typeof _metacom; 81 | const metalog: typeof _metalog; 82 | const metawatch: typeof _metawatch; 83 | const metaschema: typeof _metaschema; 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "node": true 6 | }, 7 | "extends": "eslint:recommended", 8 | "parserOptions": { 9 | "ecmaVersion": "latest" 10 | }, 11 | "globals": { 12 | "BigInt": true 13 | }, 14 | "rules": { 15 | "indent": [ 16 | "error", 17 | 2 18 | ], 19 | "linebreak-style": [ 20 | "error", 21 | "unix" 22 | ], 23 | "quotes": [ 24 | "error", 25 | "single" 26 | ], 27 | "semi": [ 28 | "error", 29 | "always" 30 | ], 31 | "no-loop-func": [ 32 | "error" 33 | ], 34 | "block-spacing": [ 35 | "error", 36 | "always" 37 | ], 38 | "camelcase": [ 39 | "error" 40 | ], 41 | "eqeqeq": [ 42 | "error", 43 | "always" 44 | ], 45 | "strict": [ 46 | "error", 47 | "global" 48 | ], 49 | "brace-style": [ 50 | "error", 51 | "1tbs", 52 | { 53 | "allowSingleLine": true 54 | } 55 | ], 56 | "comma-style": [ 57 | "error", 58 | "last" 59 | ], 60 | "comma-spacing": [ 61 | "error", 62 | { 63 | "before": false, 64 | "after": true 65 | } 66 | ], 67 | "eol-last": [ 68 | "error" 69 | ], 70 | "func-call-spacing": [ 71 | "error", 72 | "never" 73 | ], 74 | "key-spacing": [ 75 | "error", 76 | { 77 | "beforeColon": false, 78 | "afterColon": true, 79 | "mode": "minimum" 80 | } 81 | ], 82 | "keyword-spacing": [ 83 | "error", 84 | { 85 | "before": true, 86 | "after": true, 87 | "overrides": { 88 | "function": { 89 | "after": false 90 | } 91 | } 92 | } 93 | ], 94 | "max-len": [ 95 | "error", 96 | { 97 | "code": 80, 98 | "ignoreUrls": true 99 | } 100 | ], 101 | "max-nested-callbacks": [ 102 | "error", 103 | { 104 | "max": 7 105 | } 106 | ], 107 | "new-cap": [ 108 | "error", 109 | { 110 | "newIsCap": true, 111 | "capIsNew": false, 112 | "properties": true 113 | } 114 | ], 115 | "new-parens": [ 116 | "error" 117 | ], 118 | "no-lonely-if": [ 119 | "error" 120 | ], 121 | "no-trailing-spaces": [ 122 | "error" 123 | ], 124 | "no-unneeded-ternary": [ 125 | "error" 126 | ], 127 | "no-whitespace-before-property": [ 128 | "error" 129 | ], 130 | "object-curly-spacing": [ 131 | "error", 132 | "always" 133 | ], 134 | "operator-assignment": [ 135 | "error", 136 | "always" 137 | ], 138 | "operator-linebreak": [ 139 | "error", 140 | "after" 141 | ], 142 | "semi-spacing": [ 143 | "error", 144 | { 145 | "before": false, 146 | "after": true 147 | } 148 | ], 149 | "space-before-blocks": [ 150 | "error", 151 | "always" 152 | ], 153 | "space-before-function-paren": [ 154 | "error", 155 | { 156 | "anonymous": "never", 157 | "named": "never", 158 | "asyncArrow": "always" 159 | } 160 | ], 161 | "space-in-parens": [ 162 | "error", 163 | "never" 164 | ], 165 | "space-infix-ops": [ 166 | "error" 167 | ], 168 | "space-unary-ops": [ 169 | "error", 170 | { 171 | "words": true, 172 | "nonwords": false, 173 | "overrides": { 174 | "typeof": false 175 | } 176 | } 177 | ], 178 | "no-unreachable": [ 179 | "error" 180 | ], 181 | "no-global-assign": [ 182 | "error" 183 | ], 184 | "no-self-compare": [ 185 | "error" 186 | ], 187 | "no-unmodified-loop-condition": [ 188 | "error" 189 | ], 190 | "no-constant-condition": [ 191 | "error", 192 | { 193 | "checkLoops": false 194 | } 195 | ], 196 | "no-console": [ 197 | "off" 198 | ], 199 | "no-useless-concat": [ 200 | "error" 201 | ], 202 | "no-useless-escape": [ 203 | "error" 204 | ], 205 | "no-shadow-restricted-names": [ 206 | "error" 207 | ], 208 | "no-use-before-define": [ 209 | "error", 210 | { 211 | "functions": false 212 | } 213 | ], 214 | "arrow-parens": [ 215 | "error", 216 | "always" 217 | ], 218 | "arrow-body-style": [ 219 | "error", 220 | "as-needed" 221 | ], 222 | "arrow-spacing": [ 223 | "error" 224 | ], 225 | "no-confusing-arrow": [ 226 | "error", 227 | { 228 | "allowParens": true 229 | } 230 | ], 231 | "no-useless-computed-key": [ 232 | "error" 233 | ], 234 | "no-useless-rename": [ 235 | "error" 236 | ], 237 | "no-var": [ 238 | "error" 239 | ], 240 | "object-shorthand": [ 241 | "error", 242 | "always" 243 | ], 244 | "prefer-arrow-callback": [ 245 | "error" 246 | ], 247 | "prefer-const": [ 248 | "error" 249 | ], 250 | "prefer-numeric-literals": [ 251 | "error" 252 | ], 253 | "prefer-rest-params": [ 254 | "error" 255 | ], 256 | "prefer-spread": [ 257 | "error" 258 | ], 259 | "rest-spread-spacing": [ 260 | "error", 261 | "never" 262 | ], 263 | "template-curly-spacing": [ 264 | "error", 265 | "never" 266 | ] 267 | } 268 | } 269 | -------------------------------------------------------------------------------- /NodeJS/1-npm/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "metacom": "^3.0.4", 13 | "metaconfiguration": "^2.1.11", 14 | "metalog": "^3.1.12", 15 | "metaschema": "^2.1.5", 16 | "metautil": "^3.12.0", 17 | "metavm": "^1.2.6", 18 | "metawatch": "^1.1.1", 19 | "pg": "^8.11.3", 20 | "redis": "^4.6.8", 21 | "ws": "^8.13.0" 22 | }, 23 | "engines": { 24 | "node": "16 || 18 || 19 || 20" 25 | } 26 | }, 27 | "node_modules/@redis/bloom": { 28 | "version": "1.2.0", 29 | "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", 30 | "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", 31 | "peerDependencies": { 32 | "@redis/client": "^1.0.0" 33 | } 34 | }, 35 | "node_modules/@redis/client": { 36 | "version": "1.5.9", 37 | "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.9.tgz", 38 | "integrity": "sha512-SffgN+P1zdWJWSXBvJeynvEnmnZrYmtKSRW00xl8pOPFOMJjxRR9u0frSxJpPR6Y4V+k54blJjGW7FgxbTI7bQ==", 39 | "dependencies": { 40 | "cluster-key-slot": "1.1.2", 41 | "generic-pool": "3.9.0", 42 | "yallist": "4.0.0" 43 | }, 44 | "engines": { 45 | "node": ">=14" 46 | } 47 | }, 48 | "node_modules/@redis/graph": { 49 | "version": "1.1.0", 50 | "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", 51 | "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", 52 | "peerDependencies": { 53 | "@redis/client": "^1.0.0" 54 | } 55 | }, 56 | "node_modules/@redis/json": { 57 | "version": "1.0.4", 58 | "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", 59 | "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", 60 | "peerDependencies": { 61 | "@redis/client": "^1.0.0" 62 | } 63 | }, 64 | "node_modules/@redis/search": { 65 | "version": "1.1.3", 66 | "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.3.tgz", 67 | "integrity": "sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==", 68 | "peerDependencies": { 69 | "@redis/client": "^1.0.0" 70 | } 71 | }, 72 | "node_modules/@redis/time-series": { 73 | "version": "1.0.5", 74 | "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", 75 | "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", 76 | "peerDependencies": { 77 | "@redis/client": "^1.0.0" 78 | } 79 | }, 80 | "node_modules/buffer-writer": { 81 | "version": "2.0.0", 82 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 83 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", 84 | "engines": { 85 | "node": ">=4" 86 | } 87 | }, 88 | "node_modules/cluster-key-slot": { 89 | "version": "1.1.2", 90 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", 91 | "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", 92 | "engines": { 93 | "node": ">=0.10.0" 94 | } 95 | }, 96 | "node_modules/concolor": { 97 | "version": "1.0.6", 98 | "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.0.6.tgz", 99 | "integrity": "sha512-ddSzRU6ge2AHTzCKyo0Jb6mB2PiBW0CgkiCazYDmZZXlqTNrAwiLv6JDWygaUo30wYwsBJ6q/Qpg/57wkivxBg==", 100 | "engines": { 101 | "node": "16 || 18 || 19 || 20" 102 | }, 103 | "funding": { 104 | "type": "patreon", 105 | "url": "https://www.patreon.com/tshemsedinov" 106 | } 107 | }, 108 | "node_modules/generic-pool": { 109 | "version": "3.9.0", 110 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", 111 | "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", 112 | "engines": { 113 | "node": ">= 4" 114 | } 115 | }, 116 | "node_modules/metacom": { 117 | "version": "3.0.4", 118 | "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.0.4.tgz", 119 | "integrity": "sha512-775Ira35/2SPXCZXPi9OgTP9SY+WZkAiHrdVDGHu/pm6j5OMY/yvPbrQ/aqxGa0HjR/GJ5r5jZQSqffvJQlMdw==", 120 | "dependencies": { 121 | "metautil": "^3.11.0", 122 | "ws": "^8.13.0" 123 | }, 124 | "engines": { 125 | "node": "16 || 18 || 19 || 20" 126 | }, 127 | "funding": { 128 | "type": "patreon", 129 | "url": "https://www.patreon.com/tshemsedinov" 130 | } 131 | }, 132 | "node_modules/metaconfiguration": { 133 | "version": "2.1.11", 134 | "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-2.1.11.tgz", 135 | "integrity": "sha512-rr7KWt0xxeFqQbdA4/puKOxvXWm1mSpw0+Hzd68LxoCZJ0A8/SLkLQwLaQqDwO6gxVKPY67uI6Wfq821pdMKtQ==", 136 | "dependencies": { 137 | "metavm": "^1.2.4" 138 | }, 139 | "engines": { 140 | "node": "16 || 18 || 19 || 20" 141 | }, 142 | "funding": { 143 | "type": "patreon", 144 | "url": "https://www.patreon.com/tshemsedinov" 145 | } 146 | }, 147 | "node_modules/metalog": { 148 | "version": "3.1.12", 149 | "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.12.tgz", 150 | "integrity": "sha512-n5BQrFgkA7EJxLqdXge6P7hEWO0a9hx0hCCquTBSgIjLEQpD/s0V5klNZzM84om+oa46xDMfAgpvtcqOBZ5ZZg==", 151 | "dependencies": { 152 | "concolor": "^1.0.6", 153 | "metautil": "^3.10.0" 154 | }, 155 | "engines": { 156 | "node": "16 || 18 || 19 || 20" 157 | }, 158 | "funding": { 159 | "type": "patreon", 160 | "url": "https://www.patreon.com/tshemsedinov" 161 | } 162 | }, 163 | "node_modules/metaschema": { 164 | "version": "2.1.5", 165 | "resolved": "https://registry.npmjs.org/metaschema/-/metaschema-2.1.5.tgz", 166 | "integrity": "sha512-cnGegYOFCOKrdH2EbmeN/m65M0/N/M2qTWQKHFZQ/UC3S/TXoml3FN9aU4nmuJH3rV2KUID1LOZAgOTYPz98vg==", 167 | "dependencies": { 168 | "metautil": "^3.10.0", 169 | "metavm": "^1.2.5" 170 | }, 171 | "engines": { 172 | "node": "16 || 18 || 19 || 20" 173 | }, 174 | "funding": { 175 | "type": "patreon", 176 | "url": "https://www.patreon.com/tshemsedinov" 177 | } 178 | }, 179 | "node_modules/metautil": { 180 | "version": "3.12.0", 181 | "resolved": "https://registry.npmjs.org/metautil/-/metautil-3.12.0.tgz", 182 | "integrity": "sha512-AZWlIZrKUCKv9jiJB9MyJmD++B8lvnLQFTo/XD/VJI8x8ebyqqrW2nQaaPQACzGWHr7o/idFyEbSTAKEOr4ibA==", 183 | "engines": { 184 | "node": "16 || 18 || 19 || 20" 185 | }, 186 | "funding": { 187 | "type": "patreon", 188 | "url": "https://www.patreon.com/tshemsedinov" 189 | } 190 | }, 191 | "node_modules/metavm": { 192 | "version": "1.2.6", 193 | "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.2.6.tgz", 194 | "integrity": "sha512-mn0dn7/NLbkVoGgYFkYxI6QriBrkbpzL/ZQ4x/RxNnksorkIqD/KeMr1ClYTy2cpoyGpymTpqtuZP2vKweOSEw==", 195 | "engines": { 196 | "node": "16 || 18 || 19 || 20" 197 | }, 198 | "funding": { 199 | "type": "patreon", 200 | "url": "https://www.patreon.com/tshemsedinov" 201 | } 202 | }, 203 | "node_modules/metawatch": { 204 | "version": "1.1.1", 205 | "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.1.1.tgz", 206 | "integrity": "sha512-TIlm93lATgKz/xABKaggJ1xVi5BG0Q6uzTrNSFLZEKEPoAqbRkrF5K+PgqxUtePwMGdXNyg4O9rIxx7tXRKi0g==", 207 | "engines": { 208 | "node": "16 || 18 || 19 || 20" 209 | }, 210 | "funding": { 211 | "type": "patreon", 212 | "url": "https://www.patreon.com/tshemsedinov" 213 | } 214 | }, 215 | "node_modules/packet-reader": { 216 | "version": "1.0.0", 217 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 218 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 219 | }, 220 | "node_modules/pg": { 221 | "version": "8.11.3", 222 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", 223 | "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", 224 | "dependencies": { 225 | "buffer-writer": "2.0.0", 226 | "packet-reader": "1.0.0", 227 | "pg-connection-string": "^2.6.2", 228 | "pg-pool": "^3.6.1", 229 | "pg-protocol": "^1.6.0", 230 | "pg-types": "^2.1.0", 231 | "pgpass": "1.x" 232 | }, 233 | "engines": { 234 | "node": ">= 8.0.0" 235 | }, 236 | "optionalDependencies": { 237 | "pg-cloudflare": "^1.1.1" 238 | }, 239 | "peerDependencies": { 240 | "pg-native": ">=3.0.1" 241 | }, 242 | "peerDependenciesMeta": { 243 | "pg-native": { 244 | "optional": true 245 | } 246 | } 247 | }, 248 | "node_modules/pg-cloudflare": { 249 | "version": "1.1.1", 250 | "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", 251 | "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", 252 | "optional": true 253 | }, 254 | "node_modules/pg-connection-string": { 255 | "version": "2.6.2", 256 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", 257 | "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" 258 | }, 259 | "node_modules/pg-int8": { 260 | "version": "1.0.1", 261 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 262 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", 263 | "engines": { 264 | "node": ">=4.0.0" 265 | } 266 | }, 267 | "node_modules/pg-pool": { 268 | "version": "3.6.1", 269 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", 270 | "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", 271 | "peerDependencies": { 272 | "pg": ">=8.0" 273 | } 274 | }, 275 | "node_modules/pg-protocol": { 276 | "version": "1.6.0", 277 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", 278 | "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" 279 | }, 280 | "node_modules/pg-types": { 281 | "version": "2.2.0", 282 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 283 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 284 | "dependencies": { 285 | "pg-int8": "1.0.1", 286 | "postgres-array": "~2.0.0", 287 | "postgres-bytea": "~1.0.0", 288 | "postgres-date": "~1.0.4", 289 | "postgres-interval": "^1.1.0" 290 | }, 291 | "engines": { 292 | "node": ">=4" 293 | } 294 | }, 295 | "node_modules/pgpass": { 296 | "version": "1.0.5", 297 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", 298 | "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", 299 | "dependencies": { 300 | "split2": "^4.1.0" 301 | } 302 | }, 303 | "node_modules/postgres-array": { 304 | "version": "2.0.0", 305 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 306 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", 307 | "engines": { 308 | "node": ">=4" 309 | } 310 | }, 311 | "node_modules/postgres-bytea": { 312 | "version": "1.0.0", 313 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 314 | "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", 315 | "engines": { 316 | "node": ">=0.10.0" 317 | } 318 | }, 319 | "node_modules/postgres-date": { 320 | "version": "1.0.7", 321 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 322 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", 323 | "engines": { 324 | "node": ">=0.10.0" 325 | } 326 | }, 327 | "node_modules/postgres-interval": { 328 | "version": "1.2.0", 329 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 330 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 331 | "dependencies": { 332 | "xtend": "^4.0.0" 333 | }, 334 | "engines": { 335 | "node": ">=0.10.0" 336 | } 337 | }, 338 | "node_modules/redis": { 339 | "version": "4.6.8", 340 | "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.8.tgz", 341 | "integrity": "sha512-S7qNkPUYrsofQ0ztWlTHSaK0Qqfl1y+WMIxrzeAGNG+9iUZB4HGeBgkHxE6uJJ6iXrkvLd1RVJ2nvu6H1sAzfQ==", 342 | "dependencies": { 343 | "@redis/bloom": "1.2.0", 344 | "@redis/client": "1.5.9", 345 | "@redis/graph": "1.1.0", 346 | "@redis/json": "1.0.4", 347 | "@redis/search": "1.1.3", 348 | "@redis/time-series": "1.0.5" 349 | } 350 | }, 351 | "node_modules/split2": { 352 | "version": "4.2.0", 353 | "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 354 | "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", 355 | "engines": { 356 | "node": ">= 10.x" 357 | } 358 | }, 359 | "node_modules/ws": { 360 | "version": "8.13.0", 361 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 362 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 363 | "engines": { 364 | "node": ">=10.0.0" 365 | }, 366 | "peerDependencies": { 367 | "bufferutil": "^4.0.1", 368 | "utf-8-validate": ">=5.0.2" 369 | }, 370 | "peerDependenciesMeta": { 371 | "bufferutil": { 372 | "optional": true 373 | }, 374 | "utf-8-validate": { 375 | "optional": true 376 | } 377 | } 378 | }, 379 | "node_modules/xtend": { 380 | "version": "4.0.2", 381 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 382 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 383 | "engines": { 384 | "node": ">=0.4" 385 | } 386 | }, 387 | "node_modules/yallist": { 388 | "version": "4.0.0", 389 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 390 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 391 | } 392 | }, 393 | "dependencies": { 394 | "@redis/bloom": { 395 | "version": "1.2.0", 396 | "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", 397 | "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", 398 | "requires": {} 399 | }, 400 | "@redis/client": { 401 | "version": "1.5.9", 402 | "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.9.tgz", 403 | "integrity": "sha512-SffgN+P1zdWJWSXBvJeynvEnmnZrYmtKSRW00xl8pOPFOMJjxRR9u0frSxJpPR6Y4V+k54blJjGW7FgxbTI7bQ==", 404 | "requires": { 405 | "cluster-key-slot": "1.1.2", 406 | "generic-pool": "3.9.0", 407 | "yallist": "4.0.0" 408 | } 409 | }, 410 | "@redis/graph": { 411 | "version": "1.1.0", 412 | "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", 413 | "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", 414 | "requires": {} 415 | }, 416 | "@redis/json": { 417 | "version": "1.0.4", 418 | "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", 419 | "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", 420 | "requires": {} 421 | }, 422 | "@redis/search": { 423 | "version": "1.1.3", 424 | "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.3.tgz", 425 | "integrity": "sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==", 426 | "requires": {} 427 | }, 428 | "@redis/time-series": { 429 | "version": "1.0.5", 430 | "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", 431 | "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", 432 | "requires": {} 433 | }, 434 | "buffer-writer": { 435 | "version": "2.0.0", 436 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 437 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" 438 | }, 439 | "cluster-key-slot": { 440 | "version": "1.1.2", 441 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", 442 | "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==" 443 | }, 444 | "concolor": { 445 | "version": "1.0.6", 446 | "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.0.6.tgz", 447 | "integrity": "sha512-ddSzRU6ge2AHTzCKyo0Jb6mB2PiBW0CgkiCazYDmZZXlqTNrAwiLv6JDWygaUo30wYwsBJ6q/Qpg/57wkivxBg==" 448 | }, 449 | "generic-pool": { 450 | "version": "3.9.0", 451 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", 452 | "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==" 453 | }, 454 | "metacom": { 455 | "version": "3.0.4", 456 | "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.0.4.tgz", 457 | "integrity": "sha512-775Ira35/2SPXCZXPi9OgTP9SY+WZkAiHrdVDGHu/pm6j5OMY/yvPbrQ/aqxGa0HjR/GJ5r5jZQSqffvJQlMdw==", 458 | "requires": { 459 | "metautil": "^3.11.0", 460 | "ws": "^8.13.0" 461 | } 462 | }, 463 | "metaconfiguration": { 464 | "version": "2.1.11", 465 | "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-2.1.11.tgz", 466 | "integrity": "sha512-rr7KWt0xxeFqQbdA4/puKOxvXWm1mSpw0+Hzd68LxoCZJ0A8/SLkLQwLaQqDwO6gxVKPY67uI6Wfq821pdMKtQ==", 467 | "requires": { 468 | "metavm": "^1.2.4" 469 | } 470 | }, 471 | "metalog": { 472 | "version": "3.1.12", 473 | "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.12.tgz", 474 | "integrity": "sha512-n5BQrFgkA7EJxLqdXge6P7hEWO0a9hx0hCCquTBSgIjLEQpD/s0V5klNZzM84om+oa46xDMfAgpvtcqOBZ5ZZg==", 475 | "requires": { 476 | "concolor": "^1.0.6", 477 | "metautil": "^3.10.0" 478 | } 479 | }, 480 | "metaschema": { 481 | "version": "2.1.5", 482 | "resolved": "https://registry.npmjs.org/metaschema/-/metaschema-2.1.5.tgz", 483 | "integrity": "sha512-cnGegYOFCOKrdH2EbmeN/m65M0/N/M2qTWQKHFZQ/UC3S/TXoml3FN9aU4nmuJH3rV2KUID1LOZAgOTYPz98vg==", 484 | "requires": { 485 | "metautil": "^3.10.0", 486 | "metavm": "^1.2.5" 487 | } 488 | }, 489 | "metautil": { 490 | "version": "3.12.0", 491 | "resolved": "https://registry.npmjs.org/metautil/-/metautil-3.12.0.tgz", 492 | "integrity": "sha512-AZWlIZrKUCKv9jiJB9MyJmD++B8lvnLQFTo/XD/VJI8x8ebyqqrW2nQaaPQACzGWHr7o/idFyEbSTAKEOr4ibA==" 493 | }, 494 | "metavm": { 495 | "version": "1.2.6", 496 | "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.2.6.tgz", 497 | "integrity": "sha512-mn0dn7/NLbkVoGgYFkYxI6QriBrkbpzL/ZQ4x/RxNnksorkIqD/KeMr1ClYTy2cpoyGpymTpqtuZP2vKweOSEw==" 498 | }, 499 | "metawatch": { 500 | "version": "1.1.1", 501 | "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.1.1.tgz", 502 | "integrity": "sha512-TIlm93lATgKz/xABKaggJ1xVi5BG0Q6uzTrNSFLZEKEPoAqbRkrF5K+PgqxUtePwMGdXNyg4O9rIxx7tXRKi0g==" 503 | }, 504 | "packet-reader": { 505 | "version": "1.0.0", 506 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 507 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 508 | }, 509 | "pg": { 510 | "version": "8.11.3", 511 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", 512 | "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", 513 | "requires": { 514 | "buffer-writer": "2.0.0", 515 | "packet-reader": "1.0.0", 516 | "pg-cloudflare": "^1.1.1", 517 | "pg-connection-string": "^2.6.2", 518 | "pg-pool": "^3.6.1", 519 | "pg-protocol": "^1.6.0", 520 | "pg-types": "^2.1.0", 521 | "pgpass": "1.x" 522 | } 523 | }, 524 | "pg-cloudflare": { 525 | "version": "1.1.1", 526 | "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", 527 | "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", 528 | "optional": true 529 | }, 530 | "pg-connection-string": { 531 | "version": "2.6.2", 532 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", 533 | "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" 534 | }, 535 | "pg-int8": { 536 | "version": "1.0.1", 537 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 538 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 539 | }, 540 | "pg-pool": { 541 | "version": "3.6.1", 542 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", 543 | "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", 544 | "requires": {} 545 | }, 546 | "pg-protocol": { 547 | "version": "1.6.0", 548 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", 549 | "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" 550 | }, 551 | "pg-types": { 552 | "version": "2.2.0", 553 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 554 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 555 | "requires": { 556 | "pg-int8": "1.0.1", 557 | "postgres-array": "~2.0.0", 558 | "postgres-bytea": "~1.0.0", 559 | "postgres-date": "~1.0.4", 560 | "postgres-interval": "^1.1.0" 561 | } 562 | }, 563 | "pgpass": { 564 | "version": "1.0.5", 565 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", 566 | "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", 567 | "requires": { 568 | "split2": "^4.1.0" 569 | } 570 | }, 571 | "postgres-array": { 572 | "version": "2.0.0", 573 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 574 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 575 | }, 576 | "postgres-bytea": { 577 | "version": "1.0.0", 578 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 579 | "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" 580 | }, 581 | "postgres-date": { 582 | "version": "1.0.7", 583 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 584 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" 585 | }, 586 | "postgres-interval": { 587 | "version": "1.2.0", 588 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 589 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 590 | "requires": { 591 | "xtend": "^4.0.0" 592 | } 593 | }, 594 | "redis": { 595 | "version": "4.6.8", 596 | "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.8.tgz", 597 | "integrity": "sha512-S7qNkPUYrsofQ0ztWlTHSaK0Qqfl1y+WMIxrzeAGNG+9iUZB4HGeBgkHxE6uJJ6iXrkvLd1RVJ2nvu6H1sAzfQ==", 598 | "requires": { 599 | "@redis/bloom": "1.2.0", 600 | "@redis/client": "1.5.9", 601 | "@redis/graph": "1.1.0", 602 | "@redis/json": "1.0.4", 603 | "@redis/search": "1.1.3", 604 | "@redis/time-series": "1.0.5" 605 | } 606 | }, 607 | "split2": { 608 | "version": "4.2.0", 609 | "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 610 | "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" 611 | }, 612 | "ws": { 613 | "version": "8.13.0", 614 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 615 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 616 | "requires": {} 617 | }, 618 | "xtend": { 619 | "version": "4.0.2", 620 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 621 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 622 | }, 623 | "yallist": { 624 | "version": "4.0.0", 625 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 626 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 627 | } 628 | } 629 | } 630 | -------------------------------------------------------------------------------- /NodeJS/3-esm/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "metacom": "^3.0.4", 13 | "metaconfiguration": "^2.1.11", 14 | "metalog": "^3.1.12", 15 | "metaschema": "^2.1.5", 16 | "metautil": "^3.12.0", 17 | "metavm": "^1.2.6", 18 | "metawatch": "^1.1.1", 19 | "pg": "^8.11.3", 20 | "redis": "^4.6.8", 21 | "ws": "^8.13.0" 22 | }, 23 | "engines": { 24 | "node": "16 || 18 || 19 || 20" 25 | } 26 | }, 27 | "node_modules/@redis/bloom": { 28 | "version": "1.2.0", 29 | "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", 30 | "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", 31 | "peerDependencies": { 32 | "@redis/client": "^1.0.0" 33 | } 34 | }, 35 | "node_modules/@redis/client": { 36 | "version": "1.5.9", 37 | "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.9.tgz", 38 | "integrity": "sha512-SffgN+P1zdWJWSXBvJeynvEnmnZrYmtKSRW00xl8pOPFOMJjxRR9u0frSxJpPR6Y4V+k54blJjGW7FgxbTI7bQ==", 39 | "dependencies": { 40 | "cluster-key-slot": "1.1.2", 41 | "generic-pool": "3.9.0", 42 | "yallist": "4.0.0" 43 | }, 44 | "engines": { 45 | "node": ">=14" 46 | } 47 | }, 48 | "node_modules/@redis/graph": { 49 | "version": "1.1.0", 50 | "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", 51 | "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", 52 | "peerDependencies": { 53 | "@redis/client": "^1.0.0" 54 | } 55 | }, 56 | "node_modules/@redis/json": { 57 | "version": "1.0.4", 58 | "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", 59 | "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", 60 | "peerDependencies": { 61 | "@redis/client": "^1.0.0" 62 | } 63 | }, 64 | "node_modules/@redis/search": { 65 | "version": "1.1.3", 66 | "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.3.tgz", 67 | "integrity": "sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==", 68 | "peerDependencies": { 69 | "@redis/client": "^1.0.0" 70 | } 71 | }, 72 | "node_modules/@redis/time-series": { 73 | "version": "1.0.5", 74 | "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", 75 | "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", 76 | "peerDependencies": { 77 | "@redis/client": "^1.0.0" 78 | } 79 | }, 80 | "node_modules/buffer-writer": { 81 | "version": "2.0.0", 82 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 83 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", 84 | "engines": { 85 | "node": ">=4" 86 | } 87 | }, 88 | "node_modules/cluster-key-slot": { 89 | "version": "1.1.2", 90 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", 91 | "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", 92 | "engines": { 93 | "node": ">=0.10.0" 94 | } 95 | }, 96 | "node_modules/concolor": { 97 | "version": "1.0.6", 98 | "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.0.6.tgz", 99 | "integrity": "sha512-ddSzRU6ge2AHTzCKyo0Jb6mB2PiBW0CgkiCazYDmZZXlqTNrAwiLv6JDWygaUo30wYwsBJ6q/Qpg/57wkivxBg==", 100 | "engines": { 101 | "node": "16 || 18 || 19 || 20" 102 | }, 103 | "funding": { 104 | "type": "patreon", 105 | "url": "https://www.patreon.com/tshemsedinov" 106 | } 107 | }, 108 | "node_modules/generic-pool": { 109 | "version": "3.9.0", 110 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", 111 | "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", 112 | "engines": { 113 | "node": ">= 4" 114 | } 115 | }, 116 | "node_modules/metacom": { 117 | "version": "3.0.4", 118 | "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.0.4.tgz", 119 | "integrity": "sha512-775Ira35/2SPXCZXPi9OgTP9SY+WZkAiHrdVDGHu/pm6j5OMY/yvPbrQ/aqxGa0HjR/GJ5r5jZQSqffvJQlMdw==", 120 | "dependencies": { 121 | "metautil": "^3.11.0", 122 | "ws": "^8.13.0" 123 | }, 124 | "engines": { 125 | "node": "16 || 18 || 19 || 20" 126 | }, 127 | "funding": { 128 | "type": "patreon", 129 | "url": "https://www.patreon.com/tshemsedinov" 130 | } 131 | }, 132 | "node_modules/metaconfiguration": { 133 | "version": "2.1.11", 134 | "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-2.1.11.tgz", 135 | "integrity": "sha512-rr7KWt0xxeFqQbdA4/puKOxvXWm1mSpw0+Hzd68LxoCZJ0A8/SLkLQwLaQqDwO6gxVKPY67uI6Wfq821pdMKtQ==", 136 | "dependencies": { 137 | "metavm": "^1.2.4" 138 | }, 139 | "engines": { 140 | "node": "16 || 18 || 19 || 20" 141 | }, 142 | "funding": { 143 | "type": "patreon", 144 | "url": "https://www.patreon.com/tshemsedinov" 145 | } 146 | }, 147 | "node_modules/metalog": { 148 | "version": "3.1.12", 149 | "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.12.tgz", 150 | "integrity": "sha512-n5BQrFgkA7EJxLqdXge6P7hEWO0a9hx0hCCquTBSgIjLEQpD/s0V5klNZzM84om+oa46xDMfAgpvtcqOBZ5ZZg==", 151 | "dependencies": { 152 | "concolor": "^1.0.6", 153 | "metautil": "^3.10.0" 154 | }, 155 | "engines": { 156 | "node": "16 || 18 || 19 || 20" 157 | }, 158 | "funding": { 159 | "type": "patreon", 160 | "url": "https://www.patreon.com/tshemsedinov" 161 | } 162 | }, 163 | "node_modules/metaschema": { 164 | "version": "2.1.5", 165 | "resolved": "https://registry.npmjs.org/metaschema/-/metaschema-2.1.5.tgz", 166 | "integrity": "sha512-cnGegYOFCOKrdH2EbmeN/m65M0/N/M2qTWQKHFZQ/UC3S/TXoml3FN9aU4nmuJH3rV2KUID1LOZAgOTYPz98vg==", 167 | "dependencies": { 168 | "metautil": "^3.10.0", 169 | "metavm": "^1.2.5" 170 | }, 171 | "engines": { 172 | "node": "16 || 18 || 19 || 20" 173 | }, 174 | "funding": { 175 | "type": "patreon", 176 | "url": "https://www.patreon.com/tshemsedinov" 177 | } 178 | }, 179 | "node_modules/metautil": { 180 | "version": "3.12.0", 181 | "resolved": "https://registry.npmjs.org/metautil/-/metautil-3.12.0.tgz", 182 | "integrity": "sha512-AZWlIZrKUCKv9jiJB9MyJmD++B8lvnLQFTo/XD/VJI8x8ebyqqrW2nQaaPQACzGWHr7o/idFyEbSTAKEOr4ibA==", 183 | "engines": { 184 | "node": "16 || 18 || 19 || 20" 185 | }, 186 | "funding": { 187 | "type": "patreon", 188 | "url": "https://www.patreon.com/tshemsedinov" 189 | } 190 | }, 191 | "node_modules/metavm": { 192 | "version": "1.2.6", 193 | "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.2.6.tgz", 194 | "integrity": "sha512-mn0dn7/NLbkVoGgYFkYxI6QriBrkbpzL/ZQ4x/RxNnksorkIqD/KeMr1ClYTy2cpoyGpymTpqtuZP2vKweOSEw==", 195 | "engines": { 196 | "node": "16 || 18 || 19 || 20" 197 | }, 198 | "funding": { 199 | "type": "patreon", 200 | "url": "https://www.patreon.com/tshemsedinov" 201 | } 202 | }, 203 | "node_modules/metawatch": { 204 | "version": "1.1.1", 205 | "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.1.1.tgz", 206 | "integrity": "sha512-TIlm93lATgKz/xABKaggJ1xVi5BG0Q6uzTrNSFLZEKEPoAqbRkrF5K+PgqxUtePwMGdXNyg4O9rIxx7tXRKi0g==", 207 | "engines": { 208 | "node": "16 || 18 || 19 || 20" 209 | }, 210 | "funding": { 211 | "type": "patreon", 212 | "url": "https://www.patreon.com/tshemsedinov" 213 | } 214 | }, 215 | "node_modules/packet-reader": { 216 | "version": "1.0.0", 217 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 218 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 219 | }, 220 | "node_modules/pg": { 221 | "version": "8.11.3", 222 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", 223 | "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", 224 | "dependencies": { 225 | "buffer-writer": "2.0.0", 226 | "packet-reader": "1.0.0", 227 | "pg-connection-string": "^2.6.2", 228 | "pg-pool": "^3.6.1", 229 | "pg-protocol": "^1.6.0", 230 | "pg-types": "^2.1.0", 231 | "pgpass": "1.x" 232 | }, 233 | "engines": { 234 | "node": ">= 8.0.0" 235 | }, 236 | "optionalDependencies": { 237 | "pg-cloudflare": "^1.1.1" 238 | }, 239 | "peerDependencies": { 240 | "pg-native": ">=3.0.1" 241 | }, 242 | "peerDependenciesMeta": { 243 | "pg-native": { 244 | "optional": true 245 | } 246 | } 247 | }, 248 | "node_modules/pg-cloudflare": { 249 | "version": "1.1.1", 250 | "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", 251 | "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", 252 | "optional": true 253 | }, 254 | "node_modules/pg-connection-string": { 255 | "version": "2.6.2", 256 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", 257 | "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" 258 | }, 259 | "node_modules/pg-int8": { 260 | "version": "1.0.1", 261 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 262 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", 263 | "engines": { 264 | "node": ">=4.0.0" 265 | } 266 | }, 267 | "node_modules/pg-pool": { 268 | "version": "3.6.1", 269 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", 270 | "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", 271 | "peerDependencies": { 272 | "pg": ">=8.0" 273 | } 274 | }, 275 | "node_modules/pg-protocol": { 276 | "version": "1.6.0", 277 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", 278 | "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" 279 | }, 280 | "node_modules/pg-types": { 281 | "version": "2.2.0", 282 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 283 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 284 | "dependencies": { 285 | "pg-int8": "1.0.1", 286 | "postgres-array": "~2.0.0", 287 | "postgres-bytea": "~1.0.0", 288 | "postgres-date": "~1.0.4", 289 | "postgres-interval": "^1.1.0" 290 | }, 291 | "engines": { 292 | "node": ">=4" 293 | } 294 | }, 295 | "node_modules/pgpass": { 296 | "version": "1.0.5", 297 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", 298 | "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", 299 | "dependencies": { 300 | "split2": "^4.1.0" 301 | } 302 | }, 303 | "node_modules/postgres-array": { 304 | "version": "2.0.0", 305 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 306 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", 307 | "engines": { 308 | "node": ">=4" 309 | } 310 | }, 311 | "node_modules/postgres-bytea": { 312 | "version": "1.0.0", 313 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 314 | "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", 315 | "engines": { 316 | "node": ">=0.10.0" 317 | } 318 | }, 319 | "node_modules/postgres-date": { 320 | "version": "1.0.7", 321 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 322 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", 323 | "engines": { 324 | "node": ">=0.10.0" 325 | } 326 | }, 327 | "node_modules/postgres-interval": { 328 | "version": "1.2.0", 329 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 330 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 331 | "dependencies": { 332 | "xtend": "^4.0.0" 333 | }, 334 | "engines": { 335 | "node": ">=0.10.0" 336 | } 337 | }, 338 | "node_modules/redis": { 339 | "version": "4.6.8", 340 | "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.8.tgz", 341 | "integrity": "sha512-S7qNkPUYrsofQ0ztWlTHSaK0Qqfl1y+WMIxrzeAGNG+9iUZB4HGeBgkHxE6uJJ6iXrkvLd1RVJ2nvu6H1sAzfQ==", 342 | "dependencies": { 343 | "@redis/bloom": "1.2.0", 344 | "@redis/client": "1.5.9", 345 | "@redis/graph": "1.1.0", 346 | "@redis/json": "1.0.4", 347 | "@redis/search": "1.1.3", 348 | "@redis/time-series": "1.0.5" 349 | } 350 | }, 351 | "node_modules/split2": { 352 | "version": "4.2.0", 353 | "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 354 | "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", 355 | "engines": { 356 | "node": ">= 10.x" 357 | } 358 | }, 359 | "node_modules/ws": { 360 | "version": "8.13.0", 361 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 362 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 363 | "engines": { 364 | "node": ">=10.0.0" 365 | }, 366 | "peerDependencies": { 367 | "bufferutil": "^4.0.1", 368 | "utf-8-validate": ">=5.0.2" 369 | }, 370 | "peerDependenciesMeta": { 371 | "bufferutil": { 372 | "optional": true 373 | }, 374 | "utf-8-validate": { 375 | "optional": true 376 | } 377 | } 378 | }, 379 | "node_modules/xtend": { 380 | "version": "4.0.2", 381 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 382 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 383 | "engines": { 384 | "node": ">=0.4" 385 | } 386 | }, 387 | "node_modules/yallist": { 388 | "version": "4.0.0", 389 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 390 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 391 | } 392 | }, 393 | "dependencies": { 394 | "@redis/bloom": { 395 | "version": "1.2.0", 396 | "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", 397 | "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", 398 | "requires": {} 399 | }, 400 | "@redis/client": { 401 | "version": "1.5.9", 402 | "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.9.tgz", 403 | "integrity": "sha512-SffgN+P1zdWJWSXBvJeynvEnmnZrYmtKSRW00xl8pOPFOMJjxRR9u0frSxJpPR6Y4V+k54blJjGW7FgxbTI7bQ==", 404 | "requires": { 405 | "cluster-key-slot": "1.1.2", 406 | "generic-pool": "3.9.0", 407 | "yallist": "4.0.0" 408 | } 409 | }, 410 | "@redis/graph": { 411 | "version": "1.1.0", 412 | "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", 413 | "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", 414 | "requires": {} 415 | }, 416 | "@redis/json": { 417 | "version": "1.0.4", 418 | "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", 419 | "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", 420 | "requires": {} 421 | }, 422 | "@redis/search": { 423 | "version": "1.1.3", 424 | "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.3.tgz", 425 | "integrity": "sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==", 426 | "requires": {} 427 | }, 428 | "@redis/time-series": { 429 | "version": "1.0.5", 430 | "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", 431 | "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", 432 | "requires": {} 433 | }, 434 | "buffer-writer": { 435 | "version": "2.0.0", 436 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 437 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" 438 | }, 439 | "cluster-key-slot": { 440 | "version": "1.1.2", 441 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", 442 | "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==" 443 | }, 444 | "concolor": { 445 | "version": "1.0.6", 446 | "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.0.6.tgz", 447 | "integrity": "sha512-ddSzRU6ge2AHTzCKyo0Jb6mB2PiBW0CgkiCazYDmZZXlqTNrAwiLv6JDWygaUo30wYwsBJ6q/Qpg/57wkivxBg==" 448 | }, 449 | "generic-pool": { 450 | "version": "3.9.0", 451 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", 452 | "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==" 453 | }, 454 | "metacom": { 455 | "version": "3.0.4", 456 | "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.0.4.tgz", 457 | "integrity": "sha512-775Ira35/2SPXCZXPi9OgTP9SY+WZkAiHrdVDGHu/pm6j5OMY/yvPbrQ/aqxGa0HjR/GJ5r5jZQSqffvJQlMdw==", 458 | "requires": { 459 | "metautil": "^3.11.0", 460 | "ws": "^8.13.0" 461 | } 462 | }, 463 | "metaconfiguration": { 464 | "version": "2.1.11", 465 | "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-2.1.11.tgz", 466 | "integrity": "sha512-rr7KWt0xxeFqQbdA4/puKOxvXWm1mSpw0+Hzd68LxoCZJ0A8/SLkLQwLaQqDwO6gxVKPY67uI6Wfq821pdMKtQ==", 467 | "requires": { 468 | "metavm": "^1.2.4" 469 | } 470 | }, 471 | "metalog": { 472 | "version": "3.1.12", 473 | "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.12.tgz", 474 | "integrity": "sha512-n5BQrFgkA7EJxLqdXge6P7hEWO0a9hx0hCCquTBSgIjLEQpD/s0V5klNZzM84om+oa46xDMfAgpvtcqOBZ5ZZg==", 475 | "requires": { 476 | "concolor": "^1.0.6", 477 | "metautil": "^3.10.0" 478 | } 479 | }, 480 | "metaschema": { 481 | "version": "2.1.5", 482 | "resolved": "https://registry.npmjs.org/metaschema/-/metaschema-2.1.5.tgz", 483 | "integrity": "sha512-cnGegYOFCOKrdH2EbmeN/m65M0/N/M2qTWQKHFZQ/UC3S/TXoml3FN9aU4nmuJH3rV2KUID1LOZAgOTYPz98vg==", 484 | "requires": { 485 | "metautil": "^3.10.0", 486 | "metavm": "^1.2.5" 487 | } 488 | }, 489 | "metautil": { 490 | "version": "3.12.0", 491 | "resolved": "https://registry.npmjs.org/metautil/-/metautil-3.12.0.tgz", 492 | "integrity": "sha512-AZWlIZrKUCKv9jiJB9MyJmD++B8lvnLQFTo/XD/VJI8x8ebyqqrW2nQaaPQACzGWHr7o/idFyEbSTAKEOr4ibA==" 493 | }, 494 | "metavm": { 495 | "version": "1.2.6", 496 | "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.2.6.tgz", 497 | "integrity": "sha512-mn0dn7/NLbkVoGgYFkYxI6QriBrkbpzL/ZQ4x/RxNnksorkIqD/KeMr1ClYTy2cpoyGpymTpqtuZP2vKweOSEw==" 498 | }, 499 | "metawatch": { 500 | "version": "1.1.1", 501 | "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.1.1.tgz", 502 | "integrity": "sha512-TIlm93lATgKz/xABKaggJ1xVi5BG0Q6uzTrNSFLZEKEPoAqbRkrF5K+PgqxUtePwMGdXNyg4O9rIxx7tXRKi0g==" 503 | }, 504 | "packet-reader": { 505 | "version": "1.0.0", 506 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 507 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 508 | }, 509 | "pg": { 510 | "version": "8.11.3", 511 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", 512 | "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", 513 | "requires": { 514 | "buffer-writer": "2.0.0", 515 | "packet-reader": "1.0.0", 516 | "pg-cloudflare": "^1.1.1", 517 | "pg-connection-string": "^2.6.2", 518 | "pg-pool": "^3.6.1", 519 | "pg-protocol": "^1.6.0", 520 | "pg-types": "^2.1.0", 521 | "pgpass": "1.x" 522 | } 523 | }, 524 | "pg-cloudflare": { 525 | "version": "1.1.1", 526 | "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", 527 | "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", 528 | "optional": true 529 | }, 530 | "pg-connection-string": { 531 | "version": "2.6.2", 532 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", 533 | "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" 534 | }, 535 | "pg-int8": { 536 | "version": "1.0.1", 537 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 538 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 539 | }, 540 | "pg-pool": { 541 | "version": "3.6.1", 542 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", 543 | "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", 544 | "requires": {} 545 | }, 546 | "pg-protocol": { 547 | "version": "1.6.0", 548 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", 549 | "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" 550 | }, 551 | "pg-types": { 552 | "version": "2.2.0", 553 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 554 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 555 | "requires": { 556 | "pg-int8": "1.0.1", 557 | "postgres-array": "~2.0.0", 558 | "postgres-bytea": "~1.0.0", 559 | "postgres-date": "~1.0.4", 560 | "postgres-interval": "^1.1.0" 561 | } 562 | }, 563 | "pgpass": { 564 | "version": "1.0.5", 565 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", 566 | "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", 567 | "requires": { 568 | "split2": "^4.1.0" 569 | } 570 | }, 571 | "postgres-array": { 572 | "version": "2.0.0", 573 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 574 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 575 | }, 576 | "postgres-bytea": { 577 | "version": "1.0.0", 578 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 579 | "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" 580 | }, 581 | "postgres-date": { 582 | "version": "1.0.7", 583 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 584 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" 585 | }, 586 | "postgres-interval": { 587 | "version": "1.2.0", 588 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 589 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 590 | "requires": { 591 | "xtend": "^4.0.0" 592 | } 593 | }, 594 | "redis": { 595 | "version": "4.6.8", 596 | "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.8.tgz", 597 | "integrity": "sha512-S7qNkPUYrsofQ0ztWlTHSaK0Qqfl1y+WMIxrzeAGNG+9iUZB4HGeBgkHxE6uJJ6iXrkvLd1RVJ2nvu6H1sAzfQ==", 598 | "requires": { 599 | "@redis/bloom": "1.2.0", 600 | "@redis/client": "1.5.9", 601 | "@redis/graph": "1.1.0", 602 | "@redis/json": "1.0.4", 603 | "@redis/search": "1.1.3", 604 | "@redis/time-series": "1.0.5" 605 | } 606 | }, 607 | "split2": { 608 | "version": "4.2.0", 609 | "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 610 | "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" 611 | }, 612 | "ws": { 613 | "version": "8.13.0", 614 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 615 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 616 | "requires": {} 617 | }, 618 | "xtend": { 619 | "version": "4.0.2", 620 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 621 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 622 | }, 623 | "yallist": { 624 | "version": "4.0.0", 625 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 626 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 627 | } 628 | } 629 | } 630 | -------------------------------------------------------------------------------- /NodeJS/2-namespaces/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "metacom": "^3.0.4", 13 | "metaconfiguration": "^2.1.11", 14 | "metalog": "^3.1.12", 15 | "metaschema": "^2.1.5", 16 | "metautil": "^3.12.0", 17 | "metavm": "^1.2.6", 18 | "metawatch": "^1.1.1", 19 | "pg": "^8.11.3", 20 | "redis": "^4.6.8", 21 | "ws": "^8.13.0" 22 | }, 23 | "engines": { 24 | "node": "16 || 18 || 19 || 20" 25 | } 26 | }, 27 | "node_modules/@redis/bloom": { 28 | "version": "1.2.0", 29 | "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", 30 | "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", 31 | "peerDependencies": { 32 | "@redis/client": "^1.0.0" 33 | } 34 | }, 35 | "node_modules/@redis/client": { 36 | "version": "1.5.9", 37 | "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.9.tgz", 38 | "integrity": "sha512-SffgN+P1zdWJWSXBvJeynvEnmnZrYmtKSRW00xl8pOPFOMJjxRR9u0frSxJpPR6Y4V+k54blJjGW7FgxbTI7bQ==", 39 | "dependencies": { 40 | "cluster-key-slot": "1.1.2", 41 | "generic-pool": "3.9.0", 42 | "yallist": "4.0.0" 43 | }, 44 | "engines": { 45 | "node": ">=14" 46 | } 47 | }, 48 | "node_modules/@redis/graph": { 49 | "version": "1.1.0", 50 | "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", 51 | "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", 52 | "peerDependencies": { 53 | "@redis/client": "^1.0.0" 54 | } 55 | }, 56 | "node_modules/@redis/json": { 57 | "version": "1.0.4", 58 | "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", 59 | "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", 60 | "peerDependencies": { 61 | "@redis/client": "^1.0.0" 62 | } 63 | }, 64 | "node_modules/@redis/search": { 65 | "version": "1.1.3", 66 | "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.3.tgz", 67 | "integrity": "sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==", 68 | "peerDependencies": { 69 | "@redis/client": "^1.0.0" 70 | } 71 | }, 72 | "node_modules/@redis/time-series": { 73 | "version": "1.0.5", 74 | "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", 75 | "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", 76 | "peerDependencies": { 77 | "@redis/client": "^1.0.0" 78 | } 79 | }, 80 | "node_modules/buffer-writer": { 81 | "version": "2.0.0", 82 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 83 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", 84 | "engines": { 85 | "node": ">=4" 86 | } 87 | }, 88 | "node_modules/cluster-key-slot": { 89 | "version": "1.1.2", 90 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", 91 | "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", 92 | "engines": { 93 | "node": ">=0.10.0" 94 | } 95 | }, 96 | "node_modules/concolor": { 97 | "version": "1.0.6", 98 | "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.0.6.tgz", 99 | "integrity": "sha512-ddSzRU6ge2AHTzCKyo0Jb6mB2PiBW0CgkiCazYDmZZXlqTNrAwiLv6JDWygaUo30wYwsBJ6q/Qpg/57wkivxBg==", 100 | "engines": { 101 | "node": "16 || 18 || 19 || 20" 102 | }, 103 | "funding": { 104 | "type": "patreon", 105 | "url": "https://www.patreon.com/tshemsedinov" 106 | } 107 | }, 108 | "node_modules/generic-pool": { 109 | "version": "3.9.0", 110 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", 111 | "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", 112 | "engines": { 113 | "node": ">= 4" 114 | } 115 | }, 116 | "node_modules/metacom": { 117 | "version": "3.0.4", 118 | "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.0.4.tgz", 119 | "integrity": "sha512-775Ira35/2SPXCZXPi9OgTP9SY+WZkAiHrdVDGHu/pm6j5OMY/yvPbrQ/aqxGa0HjR/GJ5r5jZQSqffvJQlMdw==", 120 | "dependencies": { 121 | "metautil": "^3.11.0", 122 | "ws": "^8.13.0" 123 | }, 124 | "engines": { 125 | "node": "16 || 18 || 19 || 20" 126 | }, 127 | "funding": { 128 | "type": "patreon", 129 | "url": "https://www.patreon.com/tshemsedinov" 130 | } 131 | }, 132 | "node_modules/metaconfiguration": { 133 | "version": "2.1.11", 134 | "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-2.1.11.tgz", 135 | "integrity": "sha512-rr7KWt0xxeFqQbdA4/puKOxvXWm1mSpw0+Hzd68LxoCZJ0A8/SLkLQwLaQqDwO6gxVKPY67uI6Wfq821pdMKtQ==", 136 | "dependencies": { 137 | "metavm": "^1.2.4" 138 | }, 139 | "engines": { 140 | "node": "16 || 18 || 19 || 20" 141 | }, 142 | "funding": { 143 | "type": "patreon", 144 | "url": "https://www.patreon.com/tshemsedinov" 145 | } 146 | }, 147 | "node_modules/metalog": { 148 | "version": "3.1.12", 149 | "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.12.tgz", 150 | "integrity": "sha512-n5BQrFgkA7EJxLqdXge6P7hEWO0a9hx0hCCquTBSgIjLEQpD/s0V5klNZzM84om+oa46xDMfAgpvtcqOBZ5ZZg==", 151 | "dependencies": { 152 | "concolor": "^1.0.6", 153 | "metautil": "^3.10.0" 154 | }, 155 | "engines": { 156 | "node": "16 || 18 || 19 || 20" 157 | }, 158 | "funding": { 159 | "type": "patreon", 160 | "url": "https://www.patreon.com/tshemsedinov" 161 | } 162 | }, 163 | "node_modules/metaschema": { 164 | "version": "2.1.5", 165 | "resolved": "https://registry.npmjs.org/metaschema/-/metaschema-2.1.5.tgz", 166 | "integrity": "sha512-cnGegYOFCOKrdH2EbmeN/m65M0/N/M2qTWQKHFZQ/UC3S/TXoml3FN9aU4nmuJH3rV2KUID1LOZAgOTYPz98vg==", 167 | "dependencies": { 168 | "metautil": "^3.10.0", 169 | "metavm": "^1.2.5" 170 | }, 171 | "engines": { 172 | "node": "16 || 18 || 19 || 20" 173 | }, 174 | "funding": { 175 | "type": "patreon", 176 | "url": "https://www.patreon.com/tshemsedinov" 177 | } 178 | }, 179 | "node_modules/metautil": { 180 | "version": "3.12.0", 181 | "resolved": "https://registry.npmjs.org/metautil/-/metautil-3.12.0.tgz", 182 | "integrity": "sha512-AZWlIZrKUCKv9jiJB9MyJmD++B8lvnLQFTo/XD/VJI8x8ebyqqrW2nQaaPQACzGWHr7o/idFyEbSTAKEOr4ibA==", 183 | "engines": { 184 | "node": "16 || 18 || 19 || 20" 185 | }, 186 | "funding": { 187 | "type": "patreon", 188 | "url": "https://www.patreon.com/tshemsedinov" 189 | } 190 | }, 191 | "node_modules/metavm": { 192 | "version": "1.2.6", 193 | "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.2.6.tgz", 194 | "integrity": "sha512-mn0dn7/NLbkVoGgYFkYxI6QriBrkbpzL/ZQ4x/RxNnksorkIqD/KeMr1ClYTy2cpoyGpymTpqtuZP2vKweOSEw==", 195 | "engines": { 196 | "node": "16 || 18 || 19 || 20" 197 | }, 198 | "funding": { 199 | "type": "patreon", 200 | "url": "https://www.patreon.com/tshemsedinov" 201 | } 202 | }, 203 | "node_modules/metawatch": { 204 | "version": "1.1.1", 205 | "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.1.1.tgz", 206 | "integrity": "sha512-TIlm93lATgKz/xABKaggJ1xVi5BG0Q6uzTrNSFLZEKEPoAqbRkrF5K+PgqxUtePwMGdXNyg4O9rIxx7tXRKi0g==", 207 | "engines": { 208 | "node": "16 || 18 || 19 || 20" 209 | }, 210 | "funding": { 211 | "type": "patreon", 212 | "url": "https://www.patreon.com/tshemsedinov" 213 | } 214 | }, 215 | "node_modules/packet-reader": { 216 | "version": "1.0.0", 217 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 218 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 219 | }, 220 | "node_modules/pg": { 221 | "version": "8.11.3", 222 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", 223 | "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", 224 | "dependencies": { 225 | "buffer-writer": "2.0.0", 226 | "packet-reader": "1.0.0", 227 | "pg-connection-string": "^2.6.2", 228 | "pg-pool": "^3.6.1", 229 | "pg-protocol": "^1.6.0", 230 | "pg-types": "^2.1.0", 231 | "pgpass": "1.x" 232 | }, 233 | "engines": { 234 | "node": ">= 8.0.0" 235 | }, 236 | "optionalDependencies": { 237 | "pg-cloudflare": "^1.1.1" 238 | }, 239 | "peerDependencies": { 240 | "pg-native": ">=3.0.1" 241 | }, 242 | "peerDependenciesMeta": { 243 | "pg-native": { 244 | "optional": true 245 | } 246 | } 247 | }, 248 | "node_modules/pg-cloudflare": { 249 | "version": "1.1.1", 250 | "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", 251 | "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", 252 | "optional": true 253 | }, 254 | "node_modules/pg-connection-string": { 255 | "version": "2.6.2", 256 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", 257 | "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" 258 | }, 259 | "node_modules/pg-int8": { 260 | "version": "1.0.1", 261 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 262 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", 263 | "engines": { 264 | "node": ">=4.0.0" 265 | } 266 | }, 267 | "node_modules/pg-pool": { 268 | "version": "3.6.1", 269 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", 270 | "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", 271 | "peerDependencies": { 272 | "pg": ">=8.0" 273 | } 274 | }, 275 | "node_modules/pg-protocol": { 276 | "version": "1.6.0", 277 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", 278 | "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" 279 | }, 280 | "node_modules/pg-types": { 281 | "version": "2.2.0", 282 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 283 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 284 | "dependencies": { 285 | "pg-int8": "1.0.1", 286 | "postgres-array": "~2.0.0", 287 | "postgres-bytea": "~1.0.0", 288 | "postgres-date": "~1.0.4", 289 | "postgres-interval": "^1.1.0" 290 | }, 291 | "engines": { 292 | "node": ">=4" 293 | } 294 | }, 295 | "node_modules/pgpass": { 296 | "version": "1.0.5", 297 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", 298 | "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", 299 | "dependencies": { 300 | "split2": "^4.1.0" 301 | } 302 | }, 303 | "node_modules/postgres-array": { 304 | "version": "2.0.0", 305 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 306 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", 307 | "engines": { 308 | "node": ">=4" 309 | } 310 | }, 311 | "node_modules/postgres-bytea": { 312 | "version": "1.0.0", 313 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 314 | "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", 315 | "engines": { 316 | "node": ">=0.10.0" 317 | } 318 | }, 319 | "node_modules/postgres-date": { 320 | "version": "1.0.7", 321 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 322 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", 323 | "engines": { 324 | "node": ">=0.10.0" 325 | } 326 | }, 327 | "node_modules/postgres-interval": { 328 | "version": "1.2.0", 329 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 330 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 331 | "dependencies": { 332 | "xtend": "^4.0.0" 333 | }, 334 | "engines": { 335 | "node": ">=0.10.0" 336 | } 337 | }, 338 | "node_modules/redis": { 339 | "version": "4.6.8", 340 | "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.8.tgz", 341 | "integrity": "sha512-S7qNkPUYrsofQ0ztWlTHSaK0Qqfl1y+WMIxrzeAGNG+9iUZB4HGeBgkHxE6uJJ6iXrkvLd1RVJ2nvu6H1sAzfQ==", 342 | "dependencies": { 343 | "@redis/bloom": "1.2.0", 344 | "@redis/client": "1.5.9", 345 | "@redis/graph": "1.1.0", 346 | "@redis/json": "1.0.4", 347 | "@redis/search": "1.1.3", 348 | "@redis/time-series": "1.0.5" 349 | } 350 | }, 351 | "node_modules/split2": { 352 | "version": "4.2.0", 353 | "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 354 | "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", 355 | "engines": { 356 | "node": ">= 10.x" 357 | } 358 | }, 359 | "node_modules/ws": { 360 | "version": "8.13.0", 361 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 362 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 363 | "engines": { 364 | "node": ">=10.0.0" 365 | }, 366 | "peerDependencies": { 367 | "bufferutil": "^4.0.1", 368 | "utf-8-validate": ">=5.0.2" 369 | }, 370 | "peerDependenciesMeta": { 371 | "bufferutil": { 372 | "optional": true 373 | }, 374 | "utf-8-validate": { 375 | "optional": true 376 | } 377 | } 378 | }, 379 | "node_modules/xtend": { 380 | "version": "4.0.2", 381 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 382 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 383 | "engines": { 384 | "node": ">=0.4" 385 | } 386 | }, 387 | "node_modules/yallist": { 388 | "version": "4.0.0", 389 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 390 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 391 | } 392 | }, 393 | "dependencies": { 394 | "@redis/bloom": { 395 | "version": "1.2.0", 396 | "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", 397 | "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", 398 | "requires": {} 399 | }, 400 | "@redis/client": { 401 | "version": "1.5.9", 402 | "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.9.tgz", 403 | "integrity": "sha512-SffgN+P1zdWJWSXBvJeynvEnmnZrYmtKSRW00xl8pOPFOMJjxRR9u0frSxJpPR6Y4V+k54blJjGW7FgxbTI7bQ==", 404 | "requires": { 405 | "cluster-key-slot": "1.1.2", 406 | "generic-pool": "3.9.0", 407 | "yallist": "4.0.0" 408 | } 409 | }, 410 | "@redis/graph": { 411 | "version": "1.1.0", 412 | "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", 413 | "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", 414 | "requires": {} 415 | }, 416 | "@redis/json": { 417 | "version": "1.0.4", 418 | "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", 419 | "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", 420 | "requires": {} 421 | }, 422 | "@redis/search": { 423 | "version": "1.1.3", 424 | "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.3.tgz", 425 | "integrity": "sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==", 426 | "requires": {} 427 | }, 428 | "@redis/time-series": { 429 | "version": "1.0.5", 430 | "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", 431 | "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", 432 | "requires": {} 433 | }, 434 | "buffer-writer": { 435 | "version": "2.0.0", 436 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 437 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" 438 | }, 439 | "cluster-key-slot": { 440 | "version": "1.1.2", 441 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", 442 | "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==" 443 | }, 444 | "concolor": { 445 | "version": "1.0.6", 446 | "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.0.6.tgz", 447 | "integrity": "sha512-ddSzRU6ge2AHTzCKyo0Jb6mB2PiBW0CgkiCazYDmZZXlqTNrAwiLv6JDWygaUo30wYwsBJ6q/Qpg/57wkivxBg==" 448 | }, 449 | "generic-pool": { 450 | "version": "3.9.0", 451 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", 452 | "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==" 453 | }, 454 | "metacom": { 455 | "version": "3.0.4", 456 | "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.0.4.tgz", 457 | "integrity": "sha512-775Ira35/2SPXCZXPi9OgTP9SY+WZkAiHrdVDGHu/pm6j5OMY/yvPbrQ/aqxGa0HjR/GJ5r5jZQSqffvJQlMdw==", 458 | "requires": { 459 | "metautil": "^3.11.0", 460 | "ws": "^8.13.0" 461 | } 462 | }, 463 | "metaconfiguration": { 464 | "version": "2.1.11", 465 | "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-2.1.11.tgz", 466 | "integrity": "sha512-rr7KWt0xxeFqQbdA4/puKOxvXWm1mSpw0+Hzd68LxoCZJ0A8/SLkLQwLaQqDwO6gxVKPY67uI6Wfq821pdMKtQ==", 467 | "requires": { 468 | "metavm": "^1.2.4" 469 | } 470 | }, 471 | "metalog": { 472 | "version": "3.1.12", 473 | "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.12.tgz", 474 | "integrity": "sha512-n5BQrFgkA7EJxLqdXge6P7hEWO0a9hx0hCCquTBSgIjLEQpD/s0V5klNZzM84om+oa46xDMfAgpvtcqOBZ5ZZg==", 475 | "requires": { 476 | "concolor": "^1.0.6", 477 | "metautil": "^3.10.0" 478 | } 479 | }, 480 | "metaschema": { 481 | "version": "2.1.5", 482 | "resolved": "https://registry.npmjs.org/metaschema/-/metaschema-2.1.5.tgz", 483 | "integrity": "sha512-cnGegYOFCOKrdH2EbmeN/m65M0/N/M2qTWQKHFZQ/UC3S/TXoml3FN9aU4nmuJH3rV2KUID1LOZAgOTYPz98vg==", 484 | "requires": { 485 | "metautil": "^3.10.0", 486 | "metavm": "^1.2.5" 487 | } 488 | }, 489 | "metautil": { 490 | "version": "3.12.0", 491 | "resolved": "https://registry.npmjs.org/metautil/-/metautil-3.12.0.tgz", 492 | "integrity": "sha512-AZWlIZrKUCKv9jiJB9MyJmD++B8lvnLQFTo/XD/VJI8x8ebyqqrW2nQaaPQACzGWHr7o/idFyEbSTAKEOr4ibA==" 493 | }, 494 | "metavm": { 495 | "version": "1.2.6", 496 | "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.2.6.tgz", 497 | "integrity": "sha512-mn0dn7/NLbkVoGgYFkYxI6QriBrkbpzL/ZQ4x/RxNnksorkIqD/KeMr1ClYTy2cpoyGpymTpqtuZP2vKweOSEw==" 498 | }, 499 | "metawatch": { 500 | "version": "1.1.1", 501 | "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.1.1.tgz", 502 | "integrity": "sha512-TIlm93lATgKz/xABKaggJ1xVi5BG0Q6uzTrNSFLZEKEPoAqbRkrF5K+PgqxUtePwMGdXNyg4O9rIxx7tXRKi0g==" 503 | }, 504 | "packet-reader": { 505 | "version": "1.0.0", 506 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 507 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 508 | }, 509 | "pg": { 510 | "version": "8.11.3", 511 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", 512 | "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", 513 | "requires": { 514 | "buffer-writer": "2.0.0", 515 | "packet-reader": "1.0.0", 516 | "pg-cloudflare": "^1.1.1", 517 | "pg-connection-string": "^2.6.2", 518 | "pg-pool": "^3.6.1", 519 | "pg-protocol": "^1.6.0", 520 | "pg-types": "^2.1.0", 521 | "pgpass": "1.x" 522 | } 523 | }, 524 | "pg-cloudflare": { 525 | "version": "1.1.1", 526 | "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", 527 | "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", 528 | "optional": true 529 | }, 530 | "pg-connection-string": { 531 | "version": "2.6.2", 532 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", 533 | "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" 534 | }, 535 | "pg-int8": { 536 | "version": "1.0.1", 537 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 538 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 539 | }, 540 | "pg-pool": { 541 | "version": "3.6.1", 542 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", 543 | "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", 544 | "requires": {} 545 | }, 546 | "pg-protocol": { 547 | "version": "1.6.0", 548 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", 549 | "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" 550 | }, 551 | "pg-types": { 552 | "version": "2.2.0", 553 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 554 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 555 | "requires": { 556 | "pg-int8": "1.0.1", 557 | "postgres-array": "~2.0.0", 558 | "postgres-bytea": "~1.0.0", 559 | "postgres-date": "~1.0.4", 560 | "postgres-interval": "^1.1.0" 561 | } 562 | }, 563 | "pgpass": { 564 | "version": "1.0.5", 565 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", 566 | "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", 567 | "requires": { 568 | "split2": "^4.1.0" 569 | } 570 | }, 571 | "postgres-array": { 572 | "version": "2.0.0", 573 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 574 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 575 | }, 576 | "postgres-bytea": { 577 | "version": "1.0.0", 578 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 579 | "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" 580 | }, 581 | "postgres-date": { 582 | "version": "1.0.7", 583 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 584 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" 585 | }, 586 | "postgres-interval": { 587 | "version": "1.2.0", 588 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 589 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 590 | "requires": { 591 | "xtend": "^4.0.0" 592 | } 593 | }, 594 | "redis": { 595 | "version": "4.6.8", 596 | "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.8.tgz", 597 | "integrity": "sha512-S7qNkPUYrsofQ0ztWlTHSaK0Qqfl1y+WMIxrzeAGNG+9iUZB4HGeBgkHxE6uJJ6iXrkvLd1RVJ2nvu6H1sAzfQ==", 598 | "requires": { 599 | "@redis/bloom": "1.2.0", 600 | "@redis/client": "1.5.9", 601 | "@redis/graph": "1.1.0", 602 | "@redis/json": "1.0.4", 603 | "@redis/search": "1.1.3", 604 | "@redis/time-series": "1.0.5" 605 | } 606 | }, 607 | "split2": { 608 | "version": "4.2.0", 609 | "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 610 | "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" 611 | }, 612 | "ws": { 613 | "version": "8.13.0", 614 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 615 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 616 | "requires": {} 617 | }, 618 | "xtend": { 619 | "version": "4.0.2", 620 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 621 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 622 | }, 623 | "yallist": { 624 | "version": "4.0.0", 625 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 626 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 627 | } 628 | } 629 | } 630 | -------------------------------------------------------------------------------- /NodeJS/4-explicit/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "metacom": "^3.0.4", 13 | "metaconfiguration": "^2.1.11", 14 | "metalog": "^3.1.12", 15 | "metaschema": "^2.1.5", 16 | "metautil": "^3.12.0", 17 | "metavm": "^1.2.6", 18 | "metawatch": "^1.1.1", 19 | "pg": "^8.11.3", 20 | "redis": "^4.6.8", 21 | "ws": "^8.13.0" 22 | }, 23 | "engines": { 24 | "node": "16 || 18 || 19 || 20" 25 | } 26 | }, 27 | "node_modules/@redis/bloom": { 28 | "version": "1.2.0", 29 | "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", 30 | "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", 31 | "peerDependencies": { 32 | "@redis/client": "^1.0.0" 33 | } 34 | }, 35 | "node_modules/@redis/client": { 36 | "version": "1.5.9", 37 | "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.9.tgz", 38 | "integrity": "sha512-SffgN+P1zdWJWSXBvJeynvEnmnZrYmtKSRW00xl8pOPFOMJjxRR9u0frSxJpPR6Y4V+k54blJjGW7FgxbTI7bQ==", 39 | "dependencies": { 40 | "cluster-key-slot": "1.1.2", 41 | "generic-pool": "3.9.0", 42 | "yallist": "4.0.0" 43 | }, 44 | "engines": { 45 | "node": ">=14" 46 | } 47 | }, 48 | "node_modules/@redis/graph": { 49 | "version": "1.1.0", 50 | "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", 51 | "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", 52 | "peerDependencies": { 53 | "@redis/client": "^1.0.0" 54 | } 55 | }, 56 | "node_modules/@redis/json": { 57 | "version": "1.0.4", 58 | "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", 59 | "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", 60 | "peerDependencies": { 61 | "@redis/client": "^1.0.0" 62 | } 63 | }, 64 | "node_modules/@redis/search": { 65 | "version": "1.1.3", 66 | "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.3.tgz", 67 | "integrity": "sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==", 68 | "peerDependencies": { 69 | "@redis/client": "^1.0.0" 70 | } 71 | }, 72 | "node_modules/@redis/time-series": { 73 | "version": "1.0.5", 74 | "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", 75 | "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", 76 | "peerDependencies": { 77 | "@redis/client": "^1.0.0" 78 | } 79 | }, 80 | "node_modules/buffer-writer": { 81 | "version": "2.0.0", 82 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 83 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", 84 | "engines": { 85 | "node": ">=4" 86 | } 87 | }, 88 | "node_modules/cluster-key-slot": { 89 | "version": "1.1.2", 90 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", 91 | "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", 92 | "engines": { 93 | "node": ">=0.10.0" 94 | } 95 | }, 96 | "node_modules/concolor": { 97 | "version": "1.0.6", 98 | "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.0.6.tgz", 99 | "integrity": "sha512-ddSzRU6ge2AHTzCKyo0Jb6mB2PiBW0CgkiCazYDmZZXlqTNrAwiLv6JDWygaUo30wYwsBJ6q/Qpg/57wkivxBg==", 100 | "engines": { 101 | "node": "16 || 18 || 19 || 20" 102 | }, 103 | "funding": { 104 | "type": "patreon", 105 | "url": "https://www.patreon.com/tshemsedinov" 106 | } 107 | }, 108 | "node_modules/generic-pool": { 109 | "version": "3.9.0", 110 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", 111 | "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", 112 | "engines": { 113 | "node": ">= 4" 114 | } 115 | }, 116 | "node_modules/metacom": { 117 | "version": "3.0.4", 118 | "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.0.4.tgz", 119 | "integrity": "sha512-775Ira35/2SPXCZXPi9OgTP9SY+WZkAiHrdVDGHu/pm6j5OMY/yvPbrQ/aqxGa0HjR/GJ5r5jZQSqffvJQlMdw==", 120 | "dependencies": { 121 | "metautil": "^3.11.0", 122 | "ws": "^8.13.0" 123 | }, 124 | "engines": { 125 | "node": "16 || 18 || 19 || 20" 126 | }, 127 | "funding": { 128 | "type": "patreon", 129 | "url": "https://www.patreon.com/tshemsedinov" 130 | } 131 | }, 132 | "node_modules/metaconfiguration": { 133 | "version": "2.1.11", 134 | "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-2.1.11.tgz", 135 | "integrity": "sha512-rr7KWt0xxeFqQbdA4/puKOxvXWm1mSpw0+Hzd68LxoCZJ0A8/SLkLQwLaQqDwO6gxVKPY67uI6Wfq821pdMKtQ==", 136 | "dependencies": { 137 | "metavm": "^1.2.4" 138 | }, 139 | "engines": { 140 | "node": "16 || 18 || 19 || 20" 141 | }, 142 | "funding": { 143 | "type": "patreon", 144 | "url": "https://www.patreon.com/tshemsedinov" 145 | } 146 | }, 147 | "node_modules/metalog": { 148 | "version": "3.1.12", 149 | "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.12.tgz", 150 | "integrity": "sha512-n5BQrFgkA7EJxLqdXge6P7hEWO0a9hx0hCCquTBSgIjLEQpD/s0V5klNZzM84om+oa46xDMfAgpvtcqOBZ5ZZg==", 151 | "dependencies": { 152 | "concolor": "^1.0.6", 153 | "metautil": "^3.10.0" 154 | }, 155 | "engines": { 156 | "node": "16 || 18 || 19 || 20" 157 | }, 158 | "funding": { 159 | "type": "patreon", 160 | "url": "https://www.patreon.com/tshemsedinov" 161 | } 162 | }, 163 | "node_modules/metaschema": { 164 | "version": "2.1.5", 165 | "resolved": "https://registry.npmjs.org/metaschema/-/metaschema-2.1.5.tgz", 166 | "integrity": "sha512-cnGegYOFCOKrdH2EbmeN/m65M0/N/M2qTWQKHFZQ/UC3S/TXoml3FN9aU4nmuJH3rV2KUID1LOZAgOTYPz98vg==", 167 | "dependencies": { 168 | "metautil": "^3.10.0", 169 | "metavm": "^1.2.5" 170 | }, 171 | "engines": { 172 | "node": "16 || 18 || 19 || 20" 173 | }, 174 | "funding": { 175 | "type": "patreon", 176 | "url": "https://www.patreon.com/tshemsedinov" 177 | } 178 | }, 179 | "node_modules/metautil": { 180 | "version": "3.12.0", 181 | "resolved": "https://registry.npmjs.org/metautil/-/metautil-3.12.0.tgz", 182 | "integrity": "sha512-AZWlIZrKUCKv9jiJB9MyJmD++B8lvnLQFTo/XD/VJI8x8ebyqqrW2nQaaPQACzGWHr7o/idFyEbSTAKEOr4ibA==", 183 | "engines": { 184 | "node": "16 || 18 || 19 || 20" 185 | }, 186 | "funding": { 187 | "type": "patreon", 188 | "url": "https://www.patreon.com/tshemsedinov" 189 | } 190 | }, 191 | "node_modules/metavm": { 192 | "version": "1.2.6", 193 | "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.2.6.tgz", 194 | "integrity": "sha512-mn0dn7/NLbkVoGgYFkYxI6QriBrkbpzL/ZQ4x/RxNnksorkIqD/KeMr1ClYTy2cpoyGpymTpqtuZP2vKweOSEw==", 195 | "engines": { 196 | "node": "16 || 18 || 19 || 20" 197 | }, 198 | "funding": { 199 | "type": "patreon", 200 | "url": "https://www.patreon.com/tshemsedinov" 201 | } 202 | }, 203 | "node_modules/metawatch": { 204 | "version": "1.1.1", 205 | "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.1.1.tgz", 206 | "integrity": "sha512-TIlm93lATgKz/xABKaggJ1xVi5BG0Q6uzTrNSFLZEKEPoAqbRkrF5K+PgqxUtePwMGdXNyg4O9rIxx7tXRKi0g==", 207 | "engines": { 208 | "node": "16 || 18 || 19 || 20" 209 | }, 210 | "funding": { 211 | "type": "patreon", 212 | "url": "https://www.patreon.com/tshemsedinov" 213 | } 214 | }, 215 | "node_modules/packet-reader": { 216 | "version": "1.0.0", 217 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 218 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 219 | }, 220 | "node_modules/pg": { 221 | "version": "8.11.3", 222 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", 223 | "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", 224 | "dependencies": { 225 | "buffer-writer": "2.0.0", 226 | "packet-reader": "1.0.0", 227 | "pg-connection-string": "^2.6.2", 228 | "pg-pool": "^3.6.1", 229 | "pg-protocol": "^1.6.0", 230 | "pg-types": "^2.1.0", 231 | "pgpass": "1.x" 232 | }, 233 | "engines": { 234 | "node": ">= 8.0.0" 235 | }, 236 | "optionalDependencies": { 237 | "pg-cloudflare": "^1.1.1" 238 | }, 239 | "peerDependencies": { 240 | "pg-native": ">=3.0.1" 241 | }, 242 | "peerDependenciesMeta": { 243 | "pg-native": { 244 | "optional": true 245 | } 246 | } 247 | }, 248 | "node_modules/pg-cloudflare": { 249 | "version": "1.1.1", 250 | "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", 251 | "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", 252 | "optional": true 253 | }, 254 | "node_modules/pg-connection-string": { 255 | "version": "2.6.2", 256 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", 257 | "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" 258 | }, 259 | "node_modules/pg-int8": { 260 | "version": "1.0.1", 261 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 262 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", 263 | "engines": { 264 | "node": ">=4.0.0" 265 | } 266 | }, 267 | "node_modules/pg-pool": { 268 | "version": "3.6.1", 269 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", 270 | "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", 271 | "peerDependencies": { 272 | "pg": ">=8.0" 273 | } 274 | }, 275 | "node_modules/pg-protocol": { 276 | "version": "1.6.0", 277 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", 278 | "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" 279 | }, 280 | "node_modules/pg-types": { 281 | "version": "2.2.0", 282 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 283 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 284 | "dependencies": { 285 | "pg-int8": "1.0.1", 286 | "postgres-array": "~2.0.0", 287 | "postgres-bytea": "~1.0.0", 288 | "postgres-date": "~1.0.4", 289 | "postgres-interval": "^1.1.0" 290 | }, 291 | "engines": { 292 | "node": ">=4" 293 | } 294 | }, 295 | "node_modules/pgpass": { 296 | "version": "1.0.5", 297 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", 298 | "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", 299 | "dependencies": { 300 | "split2": "^4.1.0" 301 | } 302 | }, 303 | "node_modules/postgres-array": { 304 | "version": "2.0.0", 305 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 306 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", 307 | "engines": { 308 | "node": ">=4" 309 | } 310 | }, 311 | "node_modules/postgres-bytea": { 312 | "version": "1.0.0", 313 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 314 | "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", 315 | "engines": { 316 | "node": ">=0.10.0" 317 | } 318 | }, 319 | "node_modules/postgres-date": { 320 | "version": "1.0.7", 321 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 322 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", 323 | "engines": { 324 | "node": ">=0.10.0" 325 | } 326 | }, 327 | "node_modules/postgres-interval": { 328 | "version": "1.2.0", 329 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 330 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 331 | "dependencies": { 332 | "xtend": "^4.0.0" 333 | }, 334 | "engines": { 335 | "node": ">=0.10.0" 336 | } 337 | }, 338 | "node_modules/redis": { 339 | "version": "4.6.8", 340 | "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.8.tgz", 341 | "integrity": "sha512-S7qNkPUYrsofQ0ztWlTHSaK0Qqfl1y+WMIxrzeAGNG+9iUZB4HGeBgkHxE6uJJ6iXrkvLd1RVJ2nvu6H1sAzfQ==", 342 | "dependencies": { 343 | "@redis/bloom": "1.2.0", 344 | "@redis/client": "1.5.9", 345 | "@redis/graph": "1.1.0", 346 | "@redis/json": "1.0.4", 347 | "@redis/search": "1.1.3", 348 | "@redis/time-series": "1.0.5" 349 | } 350 | }, 351 | "node_modules/split2": { 352 | "version": "4.2.0", 353 | "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 354 | "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", 355 | "engines": { 356 | "node": ">= 10.x" 357 | } 358 | }, 359 | "node_modules/ws": { 360 | "version": "8.13.0", 361 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 362 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 363 | "engines": { 364 | "node": ">=10.0.0" 365 | }, 366 | "peerDependencies": { 367 | "bufferutil": "^4.0.1", 368 | "utf-8-validate": ">=5.0.2" 369 | }, 370 | "peerDependenciesMeta": { 371 | "bufferutil": { 372 | "optional": true 373 | }, 374 | "utf-8-validate": { 375 | "optional": true 376 | } 377 | } 378 | }, 379 | "node_modules/xtend": { 380 | "version": "4.0.2", 381 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 382 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 383 | "engines": { 384 | "node": ">=0.4" 385 | } 386 | }, 387 | "node_modules/yallist": { 388 | "version": "4.0.0", 389 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 390 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 391 | } 392 | }, 393 | "dependencies": { 394 | "@redis/bloom": { 395 | "version": "1.2.0", 396 | "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", 397 | "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", 398 | "requires": {} 399 | }, 400 | "@redis/client": { 401 | "version": "1.5.9", 402 | "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.9.tgz", 403 | "integrity": "sha512-SffgN+P1zdWJWSXBvJeynvEnmnZrYmtKSRW00xl8pOPFOMJjxRR9u0frSxJpPR6Y4V+k54blJjGW7FgxbTI7bQ==", 404 | "requires": { 405 | "cluster-key-slot": "1.1.2", 406 | "generic-pool": "3.9.0", 407 | "yallist": "4.0.0" 408 | } 409 | }, 410 | "@redis/graph": { 411 | "version": "1.1.0", 412 | "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", 413 | "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", 414 | "requires": {} 415 | }, 416 | "@redis/json": { 417 | "version": "1.0.4", 418 | "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", 419 | "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", 420 | "requires": {} 421 | }, 422 | "@redis/search": { 423 | "version": "1.1.3", 424 | "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.3.tgz", 425 | "integrity": "sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==", 426 | "requires": {} 427 | }, 428 | "@redis/time-series": { 429 | "version": "1.0.5", 430 | "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", 431 | "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", 432 | "requires": {} 433 | }, 434 | "buffer-writer": { 435 | "version": "2.0.0", 436 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 437 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" 438 | }, 439 | "cluster-key-slot": { 440 | "version": "1.1.2", 441 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", 442 | "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==" 443 | }, 444 | "concolor": { 445 | "version": "1.0.6", 446 | "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.0.6.tgz", 447 | "integrity": "sha512-ddSzRU6ge2AHTzCKyo0Jb6mB2PiBW0CgkiCazYDmZZXlqTNrAwiLv6JDWygaUo30wYwsBJ6q/Qpg/57wkivxBg==" 448 | }, 449 | "generic-pool": { 450 | "version": "3.9.0", 451 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", 452 | "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==" 453 | }, 454 | "metacom": { 455 | "version": "3.0.4", 456 | "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.0.4.tgz", 457 | "integrity": "sha512-775Ira35/2SPXCZXPi9OgTP9SY+WZkAiHrdVDGHu/pm6j5OMY/yvPbrQ/aqxGa0HjR/GJ5r5jZQSqffvJQlMdw==", 458 | "requires": { 459 | "metautil": "^3.11.0", 460 | "ws": "^8.13.0" 461 | } 462 | }, 463 | "metaconfiguration": { 464 | "version": "2.1.11", 465 | "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-2.1.11.tgz", 466 | "integrity": "sha512-rr7KWt0xxeFqQbdA4/puKOxvXWm1mSpw0+Hzd68LxoCZJ0A8/SLkLQwLaQqDwO6gxVKPY67uI6Wfq821pdMKtQ==", 467 | "requires": { 468 | "metavm": "^1.2.4" 469 | } 470 | }, 471 | "metalog": { 472 | "version": "3.1.12", 473 | "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.12.tgz", 474 | "integrity": "sha512-n5BQrFgkA7EJxLqdXge6P7hEWO0a9hx0hCCquTBSgIjLEQpD/s0V5klNZzM84om+oa46xDMfAgpvtcqOBZ5ZZg==", 475 | "requires": { 476 | "concolor": "^1.0.6", 477 | "metautil": "^3.10.0" 478 | } 479 | }, 480 | "metaschema": { 481 | "version": "2.1.5", 482 | "resolved": "https://registry.npmjs.org/metaschema/-/metaschema-2.1.5.tgz", 483 | "integrity": "sha512-cnGegYOFCOKrdH2EbmeN/m65M0/N/M2qTWQKHFZQ/UC3S/TXoml3FN9aU4nmuJH3rV2KUID1LOZAgOTYPz98vg==", 484 | "requires": { 485 | "metautil": "^3.10.0", 486 | "metavm": "^1.2.5" 487 | } 488 | }, 489 | "metautil": { 490 | "version": "3.12.0", 491 | "resolved": "https://registry.npmjs.org/metautil/-/metautil-3.12.0.tgz", 492 | "integrity": "sha512-AZWlIZrKUCKv9jiJB9MyJmD++B8lvnLQFTo/XD/VJI8x8ebyqqrW2nQaaPQACzGWHr7o/idFyEbSTAKEOr4ibA==" 493 | }, 494 | "metavm": { 495 | "version": "1.2.6", 496 | "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.2.6.tgz", 497 | "integrity": "sha512-mn0dn7/NLbkVoGgYFkYxI6QriBrkbpzL/ZQ4x/RxNnksorkIqD/KeMr1ClYTy2cpoyGpymTpqtuZP2vKweOSEw==" 498 | }, 499 | "metawatch": { 500 | "version": "1.1.1", 501 | "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.1.1.tgz", 502 | "integrity": "sha512-TIlm93lATgKz/xABKaggJ1xVi5BG0Q6uzTrNSFLZEKEPoAqbRkrF5K+PgqxUtePwMGdXNyg4O9rIxx7tXRKi0g==" 503 | }, 504 | "packet-reader": { 505 | "version": "1.0.0", 506 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 507 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 508 | }, 509 | "pg": { 510 | "version": "8.11.3", 511 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", 512 | "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", 513 | "requires": { 514 | "buffer-writer": "2.0.0", 515 | "packet-reader": "1.0.0", 516 | "pg-cloudflare": "^1.1.1", 517 | "pg-connection-string": "^2.6.2", 518 | "pg-pool": "^3.6.1", 519 | "pg-protocol": "^1.6.0", 520 | "pg-types": "^2.1.0", 521 | "pgpass": "1.x" 522 | } 523 | }, 524 | "pg-cloudflare": { 525 | "version": "1.1.1", 526 | "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", 527 | "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", 528 | "optional": true 529 | }, 530 | "pg-connection-string": { 531 | "version": "2.6.2", 532 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", 533 | "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" 534 | }, 535 | "pg-int8": { 536 | "version": "1.0.1", 537 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 538 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 539 | }, 540 | "pg-pool": { 541 | "version": "3.6.1", 542 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", 543 | "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", 544 | "requires": {} 545 | }, 546 | "pg-protocol": { 547 | "version": "1.6.0", 548 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", 549 | "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" 550 | }, 551 | "pg-types": { 552 | "version": "2.2.0", 553 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 554 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 555 | "requires": { 556 | "pg-int8": "1.0.1", 557 | "postgres-array": "~2.0.0", 558 | "postgres-bytea": "~1.0.0", 559 | "postgres-date": "~1.0.4", 560 | "postgres-interval": "^1.1.0" 561 | } 562 | }, 563 | "pgpass": { 564 | "version": "1.0.5", 565 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", 566 | "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", 567 | "requires": { 568 | "split2": "^4.1.0" 569 | } 570 | }, 571 | "postgres-array": { 572 | "version": "2.0.0", 573 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 574 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 575 | }, 576 | "postgres-bytea": { 577 | "version": "1.0.0", 578 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 579 | "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" 580 | }, 581 | "postgres-date": { 582 | "version": "1.0.7", 583 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 584 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" 585 | }, 586 | "postgres-interval": { 587 | "version": "1.2.0", 588 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 589 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 590 | "requires": { 591 | "xtend": "^4.0.0" 592 | } 593 | }, 594 | "redis": { 595 | "version": "4.6.8", 596 | "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.8.tgz", 597 | "integrity": "sha512-S7qNkPUYrsofQ0ztWlTHSaK0Qqfl1y+WMIxrzeAGNG+9iUZB4HGeBgkHxE6uJJ6iXrkvLd1RVJ2nvu6H1sAzfQ==", 598 | "requires": { 599 | "@redis/bloom": "1.2.0", 600 | "@redis/client": "1.5.9", 601 | "@redis/graph": "1.1.0", 602 | "@redis/json": "1.0.4", 603 | "@redis/search": "1.1.3", 604 | "@redis/time-series": "1.0.5" 605 | } 606 | }, 607 | "split2": { 608 | "version": "4.2.0", 609 | "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 610 | "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" 611 | }, 612 | "ws": { 613 | "version": "8.13.0", 614 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 615 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 616 | "requires": {} 617 | }, 618 | "xtend": { 619 | "version": "4.0.2", 620 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 621 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 622 | }, 623 | "yallist": { 624 | "version": "4.0.0", 625 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 626 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 627 | } 628 | } 629 | } 630 | -------------------------------------------------------------------------------- /NodeJS/5-esm-explicit/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "metacom": "^3.0.4", 13 | "metaconfiguration": "^2.1.11", 14 | "metalog": "^3.1.12", 15 | "metaschema": "^2.1.5", 16 | "metautil": "^3.12.0", 17 | "metavm": "^1.2.6", 18 | "metawatch": "^1.1.1", 19 | "pg": "^8.11.3", 20 | "redis": "^4.6.8", 21 | "ws": "^8.13.0" 22 | }, 23 | "engines": { 24 | "node": "16 || 18 || 19 || 20" 25 | } 26 | }, 27 | "node_modules/@redis/bloom": { 28 | "version": "1.2.0", 29 | "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", 30 | "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", 31 | "peerDependencies": { 32 | "@redis/client": "^1.0.0" 33 | } 34 | }, 35 | "node_modules/@redis/client": { 36 | "version": "1.5.9", 37 | "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.9.tgz", 38 | "integrity": "sha512-SffgN+P1zdWJWSXBvJeynvEnmnZrYmtKSRW00xl8pOPFOMJjxRR9u0frSxJpPR6Y4V+k54blJjGW7FgxbTI7bQ==", 39 | "dependencies": { 40 | "cluster-key-slot": "1.1.2", 41 | "generic-pool": "3.9.0", 42 | "yallist": "4.0.0" 43 | }, 44 | "engines": { 45 | "node": ">=14" 46 | } 47 | }, 48 | "node_modules/@redis/graph": { 49 | "version": "1.1.0", 50 | "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", 51 | "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", 52 | "peerDependencies": { 53 | "@redis/client": "^1.0.0" 54 | } 55 | }, 56 | "node_modules/@redis/json": { 57 | "version": "1.0.4", 58 | "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", 59 | "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", 60 | "peerDependencies": { 61 | "@redis/client": "^1.0.0" 62 | } 63 | }, 64 | "node_modules/@redis/search": { 65 | "version": "1.1.3", 66 | "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.3.tgz", 67 | "integrity": "sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==", 68 | "peerDependencies": { 69 | "@redis/client": "^1.0.0" 70 | } 71 | }, 72 | "node_modules/@redis/time-series": { 73 | "version": "1.0.5", 74 | "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", 75 | "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", 76 | "peerDependencies": { 77 | "@redis/client": "^1.0.0" 78 | } 79 | }, 80 | "node_modules/buffer-writer": { 81 | "version": "2.0.0", 82 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 83 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", 84 | "engines": { 85 | "node": ">=4" 86 | } 87 | }, 88 | "node_modules/cluster-key-slot": { 89 | "version": "1.1.2", 90 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", 91 | "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", 92 | "engines": { 93 | "node": ">=0.10.0" 94 | } 95 | }, 96 | "node_modules/concolor": { 97 | "version": "1.0.6", 98 | "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.0.6.tgz", 99 | "integrity": "sha512-ddSzRU6ge2AHTzCKyo0Jb6mB2PiBW0CgkiCazYDmZZXlqTNrAwiLv6JDWygaUo30wYwsBJ6q/Qpg/57wkivxBg==", 100 | "engines": { 101 | "node": "16 || 18 || 19 || 20" 102 | }, 103 | "funding": { 104 | "type": "patreon", 105 | "url": "https://www.patreon.com/tshemsedinov" 106 | } 107 | }, 108 | "node_modules/generic-pool": { 109 | "version": "3.9.0", 110 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", 111 | "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", 112 | "engines": { 113 | "node": ">= 4" 114 | } 115 | }, 116 | "node_modules/metacom": { 117 | "version": "3.0.4", 118 | "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.0.4.tgz", 119 | "integrity": "sha512-775Ira35/2SPXCZXPi9OgTP9SY+WZkAiHrdVDGHu/pm6j5OMY/yvPbrQ/aqxGa0HjR/GJ5r5jZQSqffvJQlMdw==", 120 | "dependencies": { 121 | "metautil": "^3.11.0", 122 | "ws": "^8.13.0" 123 | }, 124 | "engines": { 125 | "node": "16 || 18 || 19 || 20" 126 | }, 127 | "funding": { 128 | "type": "patreon", 129 | "url": "https://www.patreon.com/tshemsedinov" 130 | } 131 | }, 132 | "node_modules/metaconfiguration": { 133 | "version": "2.1.11", 134 | "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-2.1.11.tgz", 135 | "integrity": "sha512-rr7KWt0xxeFqQbdA4/puKOxvXWm1mSpw0+Hzd68LxoCZJ0A8/SLkLQwLaQqDwO6gxVKPY67uI6Wfq821pdMKtQ==", 136 | "dependencies": { 137 | "metavm": "^1.2.4" 138 | }, 139 | "engines": { 140 | "node": "16 || 18 || 19 || 20" 141 | }, 142 | "funding": { 143 | "type": "patreon", 144 | "url": "https://www.patreon.com/tshemsedinov" 145 | } 146 | }, 147 | "node_modules/metalog": { 148 | "version": "3.1.12", 149 | "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.12.tgz", 150 | "integrity": "sha512-n5BQrFgkA7EJxLqdXge6P7hEWO0a9hx0hCCquTBSgIjLEQpD/s0V5klNZzM84om+oa46xDMfAgpvtcqOBZ5ZZg==", 151 | "dependencies": { 152 | "concolor": "^1.0.6", 153 | "metautil": "^3.10.0" 154 | }, 155 | "engines": { 156 | "node": "16 || 18 || 19 || 20" 157 | }, 158 | "funding": { 159 | "type": "patreon", 160 | "url": "https://www.patreon.com/tshemsedinov" 161 | } 162 | }, 163 | "node_modules/metaschema": { 164 | "version": "2.1.5", 165 | "resolved": "https://registry.npmjs.org/metaschema/-/metaschema-2.1.5.tgz", 166 | "integrity": "sha512-cnGegYOFCOKrdH2EbmeN/m65M0/N/M2qTWQKHFZQ/UC3S/TXoml3FN9aU4nmuJH3rV2KUID1LOZAgOTYPz98vg==", 167 | "dependencies": { 168 | "metautil": "^3.10.0", 169 | "metavm": "^1.2.5" 170 | }, 171 | "engines": { 172 | "node": "16 || 18 || 19 || 20" 173 | }, 174 | "funding": { 175 | "type": "patreon", 176 | "url": "https://www.patreon.com/tshemsedinov" 177 | } 178 | }, 179 | "node_modules/metautil": { 180 | "version": "3.12.0", 181 | "resolved": "https://registry.npmjs.org/metautil/-/metautil-3.12.0.tgz", 182 | "integrity": "sha512-AZWlIZrKUCKv9jiJB9MyJmD++B8lvnLQFTo/XD/VJI8x8ebyqqrW2nQaaPQACzGWHr7o/idFyEbSTAKEOr4ibA==", 183 | "engines": { 184 | "node": "16 || 18 || 19 || 20" 185 | }, 186 | "funding": { 187 | "type": "patreon", 188 | "url": "https://www.patreon.com/tshemsedinov" 189 | } 190 | }, 191 | "node_modules/metavm": { 192 | "version": "1.2.6", 193 | "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.2.6.tgz", 194 | "integrity": "sha512-mn0dn7/NLbkVoGgYFkYxI6QriBrkbpzL/ZQ4x/RxNnksorkIqD/KeMr1ClYTy2cpoyGpymTpqtuZP2vKweOSEw==", 195 | "engines": { 196 | "node": "16 || 18 || 19 || 20" 197 | }, 198 | "funding": { 199 | "type": "patreon", 200 | "url": "https://www.patreon.com/tshemsedinov" 201 | } 202 | }, 203 | "node_modules/metawatch": { 204 | "version": "1.1.1", 205 | "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.1.1.tgz", 206 | "integrity": "sha512-TIlm93lATgKz/xABKaggJ1xVi5BG0Q6uzTrNSFLZEKEPoAqbRkrF5K+PgqxUtePwMGdXNyg4O9rIxx7tXRKi0g==", 207 | "engines": { 208 | "node": "16 || 18 || 19 || 20" 209 | }, 210 | "funding": { 211 | "type": "patreon", 212 | "url": "https://www.patreon.com/tshemsedinov" 213 | } 214 | }, 215 | "node_modules/packet-reader": { 216 | "version": "1.0.0", 217 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 218 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 219 | }, 220 | "node_modules/pg": { 221 | "version": "8.11.3", 222 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", 223 | "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", 224 | "dependencies": { 225 | "buffer-writer": "2.0.0", 226 | "packet-reader": "1.0.0", 227 | "pg-connection-string": "^2.6.2", 228 | "pg-pool": "^3.6.1", 229 | "pg-protocol": "^1.6.0", 230 | "pg-types": "^2.1.0", 231 | "pgpass": "1.x" 232 | }, 233 | "engines": { 234 | "node": ">= 8.0.0" 235 | }, 236 | "optionalDependencies": { 237 | "pg-cloudflare": "^1.1.1" 238 | }, 239 | "peerDependencies": { 240 | "pg-native": ">=3.0.1" 241 | }, 242 | "peerDependenciesMeta": { 243 | "pg-native": { 244 | "optional": true 245 | } 246 | } 247 | }, 248 | "node_modules/pg-cloudflare": { 249 | "version": "1.1.1", 250 | "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", 251 | "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", 252 | "optional": true 253 | }, 254 | "node_modules/pg-connection-string": { 255 | "version": "2.6.2", 256 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", 257 | "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" 258 | }, 259 | "node_modules/pg-int8": { 260 | "version": "1.0.1", 261 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 262 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", 263 | "engines": { 264 | "node": ">=4.0.0" 265 | } 266 | }, 267 | "node_modules/pg-pool": { 268 | "version": "3.6.1", 269 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", 270 | "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", 271 | "peerDependencies": { 272 | "pg": ">=8.0" 273 | } 274 | }, 275 | "node_modules/pg-protocol": { 276 | "version": "1.6.0", 277 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", 278 | "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" 279 | }, 280 | "node_modules/pg-types": { 281 | "version": "2.2.0", 282 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 283 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 284 | "dependencies": { 285 | "pg-int8": "1.0.1", 286 | "postgres-array": "~2.0.0", 287 | "postgres-bytea": "~1.0.0", 288 | "postgres-date": "~1.0.4", 289 | "postgres-interval": "^1.1.0" 290 | }, 291 | "engines": { 292 | "node": ">=4" 293 | } 294 | }, 295 | "node_modules/pgpass": { 296 | "version": "1.0.5", 297 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", 298 | "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", 299 | "dependencies": { 300 | "split2": "^4.1.0" 301 | } 302 | }, 303 | "node_modules/postgres-array": { 304 | "version": "2.0.0", 305 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 306 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", 307 | "engines": { 308 | "node": ">=4" 309 | } 310 | }, 311 | "node_modules/postgres-bytea": { 312 | "version": "1.0.0", 313 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 314 | "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", 315 | "engines": { 316 | "node": ">=0.10.0" 317 | } 318 | }, 319 | "node_modules/postgres-date": { 320 | "version": "1.0.7", 321 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 322 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", 323 | "engines": { 324 | "node": ">=0.10.0" 325 | } 326 | }, 327 | "node_modules/postgres-interval": { 328 | "version": "1.2.0", 329 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 330 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 331 | "dependencies": { 332 | "xtend": "^4.0.0" 333 | }, 334 | "engines": { 335 | "node": ">=0.10.0" 336 | } 337 | }, 338 | "node_modules/redis": { 339 | "version": "4.6.8", 340 | "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.8.tgz", 341 | "integrity": "sha512-S7qNkPUYrsofQ0ztWlTHSaK0Qqfl1y+WMIxrzeAGNG+9iUZB4HGeBgkHxE6uJJ6iXrkvLd1RVJ2nvu6H1sAzfQ==", 342 | "dependencies": { 343 | "@redis/bloom": "1.2.0", 344 | "@redis/client": "1.5.9", 345 | "@redis/graph": "1.1.0", 346 | "@redis/json": "1.0.4", 347 | "@redis/search": "1.1.3", 348 | "@redis/time-series": "1.0.5" 349 | } 350 | }, 351 | "node_modules/split2": { 352 | "version": "4.2.0", 353 | "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 354 | "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", 355 | "engines": { 356 | "node": ">= 10.x" 357 | } 358 | }, 359 | "node_modules/ws": { 360 | "version": "8.13.0", 361 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 362 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 363 | "engines": { 364 | "node": ">=10.0.0" 365 | }, 366 | "peerDependencies": { 367 | "bufferutil": "^4.0.1", 368 | "utf-8-validate": ">=5.0.2" 369 | }, 370 | "peerDependenciesMeta": { 371 | "bufferutil": { 372 | "optional": true 373 | }, 374 | "utf-8-validate": { 375 | "optional": true 376 | } 377 | } 378 | }, 379 | "node_modules/xtend": { 380 | "version": "4.0.2", 381 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 382 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 383 | "engines": { 384 | "node": ">=0.4" 385 | } 386 | }, 387 | "node_modules/yallist": { 388 | "version": "4.0.0", 389 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 390 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 391 | } 392 | }, 393 | "dependencies": { 394 | "@redis/bloom": { 395 | "version": "1.2.0", 396 | "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", 397 | "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", 398 | "requires": {} 399 | }, 400 | "@redis/client": { 401 | "version": "1.5.9", 402 | "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.9.tgz", 403 | "integrity": "sha512-SffgN+P1zdWJWSXBvJeynvEnmnZrYmtKSRW00xl8pOPFOMJjxRR9u0frSxJpPR6Y4V+k54blJjGW7FgxbTI7bQ==", 404 | "requires": { 405 | "cluster-key-slot": "1.1.2", 406 | "generic-pool": "3.9.0", 407 | "yallist": "4.0.0" 408 | } 409 | }, 410 | "@redis/graph": { 411 | "version": "1.1.0", 412 | "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", 413 | "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", 414 | "requires": {} 415 | }, 416 | "@redis/json": { 417 | "version": "1.0.4", 418 | "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", 419 | "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", 420 | "requires": {} 421 | }, 422 | "@redis/search": { 423 | "version": "1.1.3", 424 | "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.3.tgz", 425 | "integrity": "sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==", 426 | "requires": {} 427 | }, 428 | "@redis/time-series": { 429 | "version": "1.0.5", 430 | "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", 431 | "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", 432 | "requires": {} 433 | }, 434 | "buffer-writer": { 435 | "version": "2.0.0", 436 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 437 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" 438 | }, 439 | "cluster-key-slot": { 440 | "version": "1.1.2", 441 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", 442 | "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==" 443 | }, 444 | "concolor": { 445 | "version": "1.0.6", 446 | "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.0.6.tgz", 447 | "integrity": "sha512-ddSzRU6ge2AHTzCKyo0Jb6mB2PiBW0CgkiCazYDmZZXlqTNrAwiLv6JDWygaUo30wYwsBJ6q/Qpg/57wkivxBg==" 448 | }, 449 | "generic-pool": { 450 | "version": "3.9.0", 451 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", 452 | "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==" 453 | }, 454 | "metacom": { 455 | "version": "3.0.4", 456 | "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.0.4.tgz", 457 | "integrity": "sha512-775Ira35/2SPXCZXPi9OgTP9SY+WZkAiHrdVDGHu/pm6j5OMY/yvPbrQ/aqxGa0HjR/GJ5r5jZQSqffvJQlMdw==", 458 | "requires": { 459 | "metautil": "^3.11.0", 460 | "ws": "^8.13.0" 461 | } 462 | }, 463 | "metaconfiguration": { 464 | "version": "2.1.11", 465 | "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-2.1.11.tgz", 466 | "integrity": "sha512-rr7KWt0xxeFqQbdA4/puKOxvXWm1mSpw0+Hzd68LxoCZJ0A8/SLkLQwLaQqDwO6gxVKPY67uI6Wfq821pdMKtQ==", 467 | "requires": { 468 | "metavm": "^1.2.4" 469 | } 470 | }, 471 | "metalog": { 472 | "version": "3.1.12", 473 | "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.12.tgz", 474 | "integrity": "sha512-n5BQrFgkA7EJxLqdXge6P7hEWO0a9hx0hCCquTBSgIjLEQpD/s0V5klNZzM84om+oa46xDMfAgpvtcqOBZ5ZZg==", 475 | "requires": { 476 | "concolor": "^1.0.6", 477 | "metautil": "^3.10.0" 478 | } 479 | }, 480 | "metaschema": { 481 | "version": "2.1.5", 482 | "resolved": "https://registry.npmjs.org/metaschema/-/metaschema-2.1.5.tgz", 483 | "integrity": "sha512-cnGegYOFCOKrdH2EbmeN/m65M0/N/M2qTWQKHFZQ/UC3S/TXoml3FN9aU4nmuJH3rV2KUID1LOZAgOTYPz98vg==", 484 | "requires": { 485 | "metautil": "^3.10.0", 486 | "metavm": "^1.2.5" 487 | } 488 | }, 489 | "metautil": { 490 | "version": "3.12.0", 491 | "resolved": "https://registry.npmjs.org/metautil/-/metautil-3.12.0.tgz", 492 | "integrity": "sha512-AZWlIZrKUCKv9jiJB9MyJmD++B8lvnLQFTo/XD/VJI8x8ebyqqrW2nQaaPQACzGWHr7o/idFyEbSTAKEOr4ibA==" 493 | }, 494 | "metavm": { 495 | "version": "1.2.6", 496 | "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.2.6.tgz", 497 | "integrity": "sha512-mn0dn7/NLbkVoGgYFkYxI6QriBrkbpzL/ZQ4x/RxNnksorkIqD/KeMr1ClYTy2cpoyGpymTpqtuZP2vKweOSEw==" 498 | }, 499 | "metawatch": { 500 | "version": "1.1.1", 501 | "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.1.1.tgz", 502 | "integrity": "sha512-TIlm93lATgKz/xABKaggJ1xVi5BG0Q6uzTrNSFLZEKEPoAqbRkrF5K+PgqxUtePwMGdXNyg4O9rIxx7tXRKi0g==" 503 | }, 504 | "packet-reader": { 505 | "version": "1.0.0", 506 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 507 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 508 | }, 509 | "pg": { 510 | "version": "8.11.3", 511 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", 512 | "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", 513 | "requires": { 514 | "buffer-writer": "2.0.0", 515 | "packet-reader": "1.0.0", 516 | "pg-cloudflare": "^1.1.1", 517 | "pg-connection-string": "^2.6.2", 518 | "pg-pool": "^3.6.1", 519 | "pg-protocol": "^1.6.0", 520 | "pg-types": "^2.1.0", 521 | "pgpass": "1.x" 522 | } 523 | }, 524 | "pg-cloudflare": { 525 | "version": "1.1.1", 526 | "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", 527 | "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", 528 | "optional": true 529 | }, 530 | "pg-connection-string": { 531 | "version": "2.6.2", 532 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", 533 | "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" 534 | }, 535 | "pg-int8": { 536 | "version": "1.0.1", 537 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 538 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 539 | }, 540 | "pg-pool": { 541 | "version": "3.6.1", 542 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", 543 | "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", 544 | "requires": {} 545 | }, 546 | "pg-protocol": { 547 | "version": "1.6.0", 548 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", 549 | "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" 550 | }, 551 | "pg-types": { 552 | "version": "2.2.0", 553 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 554 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 555 | "requires": { 556 | "pg-int8": "1.0.1", 557 | "postgres-array": "~2.0.0", 558 | "postgres-bytea": "~1.0.0", 559 | "postgres-date": "~1.0.4", 560 | "postgres-interval": "^1.1.0" 561 | } 562 | }, 563 | "pgpass": { 564 | "version": "1.0.5", 565 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", 566 | "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", 567 | "requires": { 568 | "split2": "^4.1.0" 569 | } 570 | }, 571 | "postgres-array": { 572 | "version": "2.0.0", 573 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 574 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 575 | }, 576 | "postgres-bytea": { 577 | "version": "1.0.0", 578 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 579 | "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" 580 | }, 581 | "postgres-date": { 582 | "version": "1.0.7", 583 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 584 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" 585 | }, 586 | "postgres-interval": { 587 | "version": "1.2.0", 588 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 589 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 590 | "requires": { 591 | "xtend": "^4.0.0" 592 | } 593 | }, 594 | "redis": { 595 | "version": "4.6.8", 596 | "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.8.tgz", 597 | "integrity": "sha512-S7qNkPUYrsofQ0ztWlTHSaK0Qqfl1y+WMIxrzeAGNG+9iUZB4HGeBgkHxE6uJJ6iXrkvLd1RVJ2nvu6H1sAzfQ==", 598 | "requires": { 599 | "@redis/bloom": "1.2.0", 600 | "@redis/client": "1.5.9", 601 | "@redis/graph": "1.1.0", 602 | "@redis/json": "1.0.4", 603 | "@redis/search": "1.1.3", 604 | "@redis/time-series": "1.0.5" 605 | } 606 | }, 607 | "split2": { 608 | "version": "4.2.0", 609 | "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 610 | "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" 611 | }, 612 | "ws": { 613 | "version": "8.13.0", 614 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 615 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 616 | "requires": {} 617 | }, 618 | "xtend": { 619 | "version": "4.0.2", 620 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 621 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 622 | }, 623 | "yallist": { 624 | "version": "4.0.0", 625 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 626 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 627 | } 628 | } 629 | } 630 | --------------------------------------------------------------------------------