WIP: bootstrap and partial real Solana watcher implementation
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"name": "undici-types",
|
||||
"version": "8.3.0",
|
||||
"description": "A stand-alone types package for Undici",
|
||||
"homepage": "https://undici.nodejs.org",
|
||||
"bugs": {
|
||||
"url": "https://github.com/nodejs/undici/issues"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/nodejs/undici.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"types": "index.d.ts",
|
||||
"files": [
|
||||
"*.d.ts"
|
||||
],
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Daniele Belardi",
|
||||
"url": "https://github.com/dnlup",
|
||||
"author": true
|
||||
},
|
||||
{
|
||||
"name": "Ethan Arrowood",
|
||||
"url": "https://github.com/ethan-arrowood",
|
||||
"author": true
|
||||
},
|
||||
{
|
||||
"name": "Matteo Collina",
|
||||
"url": "https://github.com/mcollina",
|
||||
"author": true
|
||||
},
|
||||
{
|
||||
"name": "Matthew Aitken",
|
||||
"url": "https://github.com/KhafraDev",
|
||||
"author": true
|
||||
},
|
||||
{
|
||||
"name": "Robert Nagy",
|
||||
"url": "https://github.com/ronag",
|
||||
"author": true
|
||||
},
|
||||
{
|
||||
"name": "Szymon Marczak",
|
||||
"url": "https://github.com/szmarczak",
|
||||
"author": true
|
||||
},
|
||||
{
|
||||
"name": "Tomas Della Vedova",
|
||||
"url": "https://github.com/delvedor",
|
||||
"author": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
import type { LibDefinition } from '../variable';
|
||||
export declare const decorators_legacy: LibDefinition;
|
||||
@@ -0,0 +1,80 @@
|
||||
import { Nullable, Arrayable } from './types.js';
|
||||
|
||||
declare function nanoid(size?: number): string;
|
||||
|
||||
declare function shuffle<T>(array: T[], seed?: number): T[];
|
||||
|
||||
interface CloneOptions {
|
||||
forceWritable?: boolean;
|
||||
}
|
||||
interface ErrorOptions {
|
||||
message?: string;
|
||||
stackTraceLimit?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get original stacktrace without source map support the most performant way.
|
||||
* - Create only 1 stack frame.
|
||||
* - Rewrite prepareStackTrace to bypass "support-stack-trace" (usually takes ~250ms).
|
||||
*/
|
||||
declare function createSimpleStackTrace(options?: ErrorOptions): string;
|
||||
declare function notNullish<T>(v: T | null | undefined): v is NonNullable<T>;
|
||||
declare function assertTypes(value: unknown, name: string, types: string[]): void;
|
||||
declare function isPrimitive(value: unknown): boolean;
|
||||
declare function slash(path: string): string;
|
||||
declare function cleanUrl(url: string): string;
|
||||
declare function splitFileAndPostfix(path: string): {
|
||||
file: string;
|
||||
postfix: string;
|
||||
};
|
||||
declare const isExternalUrl: (url: string) => boolean;
|
||||
/**
|
||||
* Prepend `/@id/` and replace null byte so the id is URL-safe.
|
||||
* This is prepended to resolved ids that are not valid browser
|
||||
* import specifiers by the importAnalysis plugin.
|
||||
*/
|
||||
declare function wrapId(id: string): string;
|
||||
/**
|
||||
* Undo {@link wrapId}'s `/@id/` and null byte replacements.
|
||||
*/
|
||||
declare function unwrapId(id: string): string;
|
||||
declare function withTrailingSlash(path: string): string;
|
||||
declare function filterOutComments(s: string): string;
|
||||
declare function isBareImport(id: string): boolean;
|
||||
declare function toArray<T>(array?: Nullable<Arrayable<T>>): Array<T>;
|
||||
declare function isObject(item: unknown): boolean;
|
||||
declare function getType(value: unknown): string;
|
||||
declare function getOwnProperties(obj: any): (string | symbol)[];
|
||||
declare function deepClone<T>(val: T, options?: CloneOptions): T;
|
||||
declare function clone<T>(val: T, seen: WeakMap<any, any>, options?: CloneOptions): T;
|
||||
declare function noop(): void;
|
||||
declare function objectAttr(source: any, path: string, defaultValue?: undefined): any;
|
||||
type DeferPromise<T> = Promise<T> & {
|
||||
resolve: (value: T | PromiseLike<T>) => void;
|
||||
reject: (reason?: any) => void;
|
||||
};
|
||||
declare function createDefer<T>(): DeferPromise<T>;
|
||||
/**
|
||||
* If code starts with a function call, will return its last index, respecting arguments.
|
||||
* This will return 25 - last ending character of toMatch ")"
|
||||
* Also works with callbacks
|
||||
* ```
|
||||
* toMatch({ test: '123' });
|
||||
* toBeAliased('123')
|
||||
* ```
|
||||
*/
|
||||
declare function getCallLastIndex(code: string): number | null;
|
||||
declare function isNegativeNaN(val: number): boolean;
|
||||
declare function ordinal(i: number): string;
|
||||
/**
|
||||
* Deep merge :P
|
||||
*
|
||||
* Will merge objects only if they are plain
|
||||
*
|
||||
* Do not merge types - it is very expensive and usually it's better to case a type here
|
||||
*/
|
||||
declare function deepMerge<T extends object = object>(target: T, ...sources: any[]): T;
|
||||
declare function unique<T>(array: T[]): T[];
|
||||
|
||||
export { assertTypes, cleanUrl, clone, createDefer, createSimpleStackTrace, deepClone, deepMerge, filterOutComments, getCallLastIndex, getOwnProperties, getType, isBareImport, isExternalUrl, isNegativeNaN, isObject, isPrimitive, nanoid, noop, notNullish, objectAttr, ordinal, shuffle, slash, splitFileAndPostfix, toArray, unique, unwrapId, withTrailingSlash, wrapId };
|
||||
export type { DeferPromise };
|
||||
@@ -0,0 +1,20 @@
|
||||
# Vite ⚡
|
||||
|
||||
> Next Generation Frontend Tooling
|
||||
|
||||
- 💡 Instant Server Start
|
||||
- ⚡️ Lightning Fast HMR
|
||||
- 🛠️ Rich Features
|
||||
- 📦 Optimized Build
|
||||
- 🔩 Universal Plugin Interface
|
||||
- 🔑 Fully Typed APIs
|
||||
|
||||
Vite (French word for "quick", pronounced [`/viːt/`](https://cdn.jsdelivr.net/gh/vitejs/vite@main/docs/public/vite.mp3), like "veet") is a build tool that aims to provide a faster and leaner development experience for modern web projects. It consists of two major parts:
|
||||
|
||||
- A dev server that provides [rich feature enhancements](https://vite.dev/guide/features) over [native ES modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules), for example extremely fast [Hot Module Replacement (HMR)](https://vite.dev/guide/features#hot-module-replacement).
|
||||
|
||||
- A build command that bundles your code with [Rolldown](https://rolldown.rs), pre-configured to output highly optimized static assets for production.
|
||||
|
||||
In addition, Vite is highly extensible via its [Plugin API](https://vite.dev/guide/api-plugin.html) and [JavaScript API](https://vite.dev/guide/api-javascript.html) with full typing support.
|
||||
|
||||
[Read the Docs to Learn More](https://vite.dev).
|
||||
@@ -0,0 +1,54 @@
|
||||
# on-exit-leak-free
|
||||
|
||||
This module helps dispose of an object gracefully when the Node.js process exits.
|
||||
It executes a function with a given parameter
|
||||
on [`'exit'`](https://nodejs.org/api/process.html#event-exit) without leaking memory,
|
||||
cleaning things up appropriately if the object is garbage collected.
|
||||
|
||||
Requires `WeakRef` and `FinalizationRegistry`, i.e. use Node v14+.
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
npm i on-exit-leak-free
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
```js
|
||||
'use strict'
|
||||
|
||||
const { register, unregister } = require('on-exit-leak-free')
|
||||
const assert = require('assert')
|
||||
|
||||
function setup () {
|
||||
// This object can be safely garbage collected,
|
||||
// and the resulting shutdown function will not be called.
|
||||
// There are no leaks.
|
||||
const obj = { foo: 'bar' }
|
||||
register(obj, shutdown)
|
||||
// use registerBeforeExit(obj, shutdown) to execute the function only
|
||||
// on beforeExit
|
||||
// call unregister(obj) to remove
|
||||
}
|
||||
|
||||
let shutdownCalled = false
|
||||
|
||||
// Please make sure that the function passed to register()
|
||||
// does not create a closure around unnecessary objects.
|
||||
function shutdown (obj, eventName) {
|
||||
console.log(eventName) // beforeExit
|
||||
shutdownCalled = true
|
||||
assert.strictEqual(obj.foo, 'bar')
|
||||
}
|
||||
|
||||
setup()
|
||||
|
||||
process.on('exit', function () {
|
||||
assert.strictEqual(shutdownCalled, true)
|
||||
})
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
@@ -0,0 +1,46 @@
|
||||
|
||||
// v8 builtin format stack trace
|
||||
// for when there was no previous prepareStackTrace function to call
|
||||
var FormatStackTrace = require('./formatstack');
|
||||
|
||||
// some notes on the behavior below:
|
||||
// because the 'stack' member is a one shot access variable (the raw stack is
|
||||
// formatted on accessing it)
|
||||
// we try to avoid modifying what the user would have wanted
|
||||
// thus we use the previous value for prepareStackTrace
|
||||
//
|
||||
// The reason we store the callsite variable is because prepareStackTrace
|
||||
// will not be called again once it has been called for a given error object
|
||||
// but we want to support getting the stack out of the error multiple times (cause why not)
|
||||
module.exports = function(err) {
|
||||
|
||||
// save original stacktrace
|
||||
var save = Error.prepareStackTrace;
|
||||
|
||||
// replace capture with our function
|
||||
Error.prepareStackTrace = function(err, trace) {
|
||||
|
||||
// cache stack frames so we don't have to get them again
|
||||
// use a non-enumerable property
|
||||
Object.defineProperty(err, '_sb_callsites', {
|
||||
value: trace
|
||||
});
|
||||
|
||||
return (save || FormatStackTrace)(err, trace);
|
||||
};
|
||||
|
||||
// force capture of the stack frames
|
||||
err.stack;
|
||||
|
||||
// someone already asked for the stack so we can't do this trick
|
||||
// TODO fallback to string parsing?
|
||||
if (!err._sb_callsites) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// return original capture function
|
||||
Error.prepareStackTrace = save;
|
||||
|
||||
return err._sb_callsites;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
"use strict";
|
||||
// THIS CODE WAS AUTOMATICALLY GENERATED
|
||||
// DO NOT EDIT THIS CODE BY HAND
|
||||
// SEE https://typescript-eslint.io/users/configs
|
||||
//
|
||||
// For developers working in the typescript-eslint monorepo:
|
||||
// You can regenerate it using `pnpm run generate-configs`
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const base_1 = __importDefault(require("./base"));
|
||||
const eslint_recommended_1 = __importDefault(require("./eslint-recommended"));
|
||||
/**
|
||||
* Contains all of `stylistic`, along with additional stylistic rules that require type information.
|
||||
* @see {@link https://typescript-eslint.io/users/configs#stylistic-type-checked}
|
||||
*/
|
||||
exports.default = (plugin, parser) => [
|
||||
(0, base_1.default)(plugin, parser),
|
||||
(0, eslint_recommended_1.default)(plugin, parser),
|
||||
{
|
||||
name: 'typescript-eslint/stylistic-type-checked',
|
||||
rules: {
|
||||
'@typescript-eslint/adjacent-overload-signatures': 'error',
|
||||
'@typescript-eslint/array-type': 'error',
|
||||
'@typescript-eslint/ban-tslint-comment': 'error',
|
||||
'@typescript-eslint/class-literal-property-style': 'error',
|
||||
'@typescript-eslint/consistent-generic-constructors': 'error',
|
||||
'@typescript-eslint/consistent-indexed-object-style': 'error',
|
||||
'@typescript-eslint/consistent-type-assertions': 'error',
|
||||
'@typescript-eslint/consistent-type-definitions': 'error',
|
||||
'dot-notation': 'off',
|
||||
'@typescript-eslint/dot-notation': 'error',
|
||||
'@typescript-eslint/no-confusing-non-null-assertion': 'error',
|
||||
'no-empty-function': 'off',
|
||||
'@typescript-eslint/no-empty-function': 'error',
|
||||
'@typescript-eslint/no-inferrable-types': 'error',
|
||||
'@typescript-eslint/non-nullable-type-assertion-style': 'error',
|
||||
'@typescript-eslint/prefer-find': 'error',
|
||||
'@typescript-eslint/prefer-for-of': 'error',
|
||||
'@typescript-eslint/prefer-function-type': 'error',
|
||||
'@typescript-eslint/prefer-includes': 'error',
|
||||
'@typescript-eslint/prefer-nullish-coalescing': 'error',
|
||||
'@typescript-eslint/prefer-optional-chain': 'error',
|
||||
'@typescript-eslint/prefer-regexp-exec': 'error',
|
||||
'@typescript-eslint/prefer-string-starts-ends-with': 'error',
|
||||
},
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,9 @@
|
||||
// Code generated by Herebyfile.mjs generate:enums from internal/checker/types.go. DO NOT EDIT.
|
||||
export var TypePredicateKind;
|
||||
(function (TypePredicateKind) {
|
||||
TypePredicateKind[TypePredicateKind["This"] = 0] = "This";
|
||||
TypePredicateKind[TypePredicateKind["Identifier"] = 1] = "Identifier";
|
||||
TypePredicateKind[TypePredicateKind["AssertsThis"] = 2] = "AssertsThis";
|
||||
TypePredicateKind[TypePredicateKind["AssertsIdentifier"] = 3] = "AssertsIdentifier";
|
||||
})(TypePredicateKind || (TypePredicateKind = {}));
|
||||
//# sourceMappingURL=typePredicateKind.js.map
|
||||
@@ -0,0 +1,2 @@
|
||||
import { _ as queries, a as and, c as exprInterpreter, d as include, f as interpreter, g as or, h as not, i as filterVitePlugins, l as id, m as moduleType, n as makeIdFiltersToMatchWithQuery, o as code, p as interpreterImpl, r as prefixRegex, s as exclude, t as exactRegex, u as importerId, v as query } from "./filter-B_mD-HGz.mjs";
|
||||
export { and, code, exactRegex, exclude, exprInterpreter, filterVitePlugins, id, importerId, include, interpreter, interpreterImpl, makeIdFiltersToMatchWithQuery, moduleType, not, or, prefixRegex, queries, query };
|
||||
@@ -0,0 +1,5 @@
|
||||
'use strict'
|
||||
|
||||
const SemVer = require('../classes/semver')
|
||||
const patch = (a, loose) => new SemVer(a, loose).patch
|
||||
module.exports = patch
|
||||
@@ -0,0 +1,33 @@
|
||||
'use strict'
|
||||
|
||||
const { test } = require('node:test')
|
||||
const { createWarning } = require('..')
|
||||
const { withResolvers } = require('./promise')
|
||||
|
||||
test('emit should emit a given code only once', t => {
|
||||
t.plan(6)
|
||||
|
||||
const { promise, resolve } = withResolvers()
|
||||
|
||||
process.on('warning', onWarning)
|
||||
function onWarning (warning) {
|
||||
t.assert.deepStrictEqual(warning.name, 'TestDeprecation')
|
||||
t.assert.deepStrictEqual(warning.code, 'CODE')
|
||||
t.assert.deepStrictEqual(warning.message, 'Hello world')
|
||||
t.assert.ok(warn.emitted)
|
||||
}
|
||||
|
||||
const warn = createWarning({
|
||||
name: 'TestDeprecation',
|
||||
code: 'CODE',
|
||||
message: 'Hello world'
|
||||
})
|
||||
t.assert.strictEqual(warn(), true)
|
||||
t.assert.strictEqual(warn(), false)
|
||||
setImmediate(() => {
|
||||
process.removeListener('warning', onWarning)
|
||||
resolve()
|
||||
})
|
||||
|
||||
return promise
|
||||
})
|
||||
@@ -0,0 +1,18 @@
|
||||
'use strict'
|
||||
|
||||
const SemVer = require('../classes/semver')
|
||||
const parse = (version, options, throwErrors = false) => {
|
||||
if (version instanceof SemVer) {
|
||||
return version
|
||||
}
|
||||
try {
|
||||
return new SemVer(version, options)
|
||||
} catch (er) {
|
||||
if (!throwErrors) {
|
||||
return null
|
||||
}
|
||||
throw er
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = parse
|
||||
@@ -0,0 +1,7 @@
|
||||
import type { FlatConfig } from '@typescript-eslint/utils/ts-eslint';
|
||||
export default _default;
|
||||
/**
|
||||
* Enables each the rules provided as a part of typescript-eslint. Note that many rules are not applicable in all codebases, or are meant to be configured.
|
||||
* @see {@link https://typescript-eslint.io/users/configs#all}
|
||||
*/
|
||||
declare function _default(plugin: FlatConfig.Plugin, parser: FlatConfig.Parser): FlatConfig.ConfigArray;
|
||||
@@ -0,0 +1,234 @@
|
||||
'use strict'
|
||||
|
||||
const os = require('node:os')
|
||||
const stdSerializers = require('pino-std-serializers')
|
||||
const caller = require('./lib/caller')
|
||||
const redaction = require('./lib/redaction')
|
||||
const time = require('./lib/time')
|
||||
const proto = require('./lib/proto')
|
||||
const symbols = require('./lib/symbols')
|
||||
const { configure } = require('safe-stable-stringify')
|
||||
const { assertDefaultLevelFound, mappings, genLsCache, genLevelComparison, assertLevelComparison } = require('./lib/levels')
|
||||
const { DEFAULT_LEVELS, SORTING_ORDER } = require('./lib/constants')
|
||||
const {
|
||||
createArgsNormalizer,
|
||||
asChindings,
|
||||
buildSafeSonicBoom,
|
||||
buildFormatters,
|
||||
stringify,
|
||||
normalizeDestFileDescriptor,
|
||||
noop
|
||||
} = require('./lib/tools')
|
||||
const { version } = require('./lib/meta')
|
||||
const {
|
||||
chindingsSym,
|
||||
redactFmtSym,
|
||||
serializersSym,
|
||||
timeSym,
|
||||
timeSliceIndexSym,
|
||||
streamSym,
|
||||
stringifySym,
|
||||
stringifySafeSym,
|
||||
stringifiersSym,
|
||||
setLevelSym,
|
||||
endSym,
|
||||
formatOptsSym,
|
||||
messageKeySym,
|
||||
errorKeySym,
|
||||
nestedKeySym,
|
||||
mixinSym,
|
||||
levelCompSym,
|
||||
useOnlyCustomLevelsSym,
|
||||
formattersSym,
|
||||
hooksSym,
|
||||
nestedKeyStrSym,
|
||||
mixinMergeStrategySym,
|
||||
msgPrefixSym
|
||||
} = symbols
|
||||
const { epochTime, nullTime } = time
|
||||
const { pid } = process
|
||||
const hostname = os.hostname()
|
||||
const defaultErrorSerializer = stdSerializers.err
|
||||
const defaultOptions = {
|
||||
level: 'info',
|
||||
levelComparison: SORTING_ORDER.ASC,
|
||||
levels: DEFAULT_LEVELS,
|
||||
messageKey: 'msg',
|
||||
errorKey: 'err',
|
||||
nestedKey: null,
|
||||
enabled: true,
|
||||
base: { pid, hostname },
|
||||
serializers: Object.assign(Object.create(null), {
|
||||
err: defaultErrorSerializer
|
||||
}),
|
||||
formatters: Object.assign(Object.create(null), {
|
||||
bindings (bindings) {
|
||||
return bindings
|
||||
},
|
||||
level (label, number) {
|
||||
return { level: number }
|
||||
}
|
||||
}),
|
||||
hooks: {
|
||||
logMethod: undefined,
|
||||
streamWrite: undefined
|
||||
},
|
||||
timestamp: epochTime,
|
||||
name: undefined,
|
||||
redact: null,
|
||||
customLevels: null,
|
||||
useOnlyCustomLevels: false,
|
||||
depthLimit: 5,
|
||||
edgeLimit: 100
|
||||
}
|
||||
|
||||
const normalize = createArgsNormalizer(defaultOptions)
|
||||
|
||||
const serializers = Object.assign(Object.create(null), stdSerializers)
|
||||
|
||||
function pino (...args) {
|
||||
const instance = {}
|
||||
const { opts, stream } = normalize(instance, caller(), ...args)
|
||||
|
||||
if (opts.level && typeof opts.level === 'string' && DEFAULT_LEVELS[opts.level.toLowerCase()] !== undefined) opts.level = opts.level.toLowerCase()
|
||||
|
||||
const {
|
||||
redact,
|
||||
crlf,
|
||||
serializers,
|
||||
timestamp,
|
||||
messageKey,
|
||||
errorKey,
|
||||
nestedKey,
|
||||
base,
|
||||
name,
|
||||
level,
|
||||
customLevels,
|
||||
levelComparison,
|
||||
mixin,
|
||||
mixinMergeStrategy,
|
||||
useOnlyCustomLevels,
|
||||
formatters,
|
||||
hooks,
|
||||
depthLimit,
|
||||
edgeLimit,
|
||||
onChild,
|
||||
msgPrefix
|
||||
} = opts
|
||||
|
||||
const stringifySafe = configure({
|
||||
maximumDepth: depthLimit,
|
||||
maximumBreadth: edgeLimit
|
||||
})
|
||||
|
||||
const allFormatters = buildFormatters(
|
||||
formatters.level,
|
||||
formatters.bindings,
|
||||
formatters.log
|
||||
)
|
||||
|
||||
const stringifyFn = stringify.bind({
|
||||
[stringifySafeSym]: stringifySafe
|
||||
})
|
||||
const stringifiers = redact ? redaction(redact, stringifyFn) : {}
|
||||
const formatOpts = redact
|
||||
? { stringify: stringifiers[redactFmtSym] }
|
||||
: { stringify: stringifyFn }
|
||||
const end = '}' + (crlf ? '\r\n' : '\n')
|
||||
const coreChindings = asChindings.bind(null, {
|
||||
[chindingsSym]: '',
|
||||
[serializersSym]: serializers,
|
||||
[stringifiersSym]: stringifiers,
|
||||
[stringifySym]: stringify,
|
||||
[stringifySafeSym]: stringifySafe,
|
||||
[formattersSym]: allFormatters
|
||||
})
|
||||
|
||||
let chindings = ''
|
||||
if (base !== null) {
|
||||
if (name === undefined) {
|
||||
chindings = coreChindings(base)
|
||||
} else {
|
||||
chindings = coreChindings(Object.assign({}, base, { name }))
|
||||
}
|
||||
}
|
||||
|
||||
const time = (timestamp instanceof Function)
|
||||
? timestamp
|
||||
: (timestamp ? epochTime : nullTime)
|
||||
const timeSliceIndex = time().indexOf(':') + 1
|
||||
|
||||
if (useOnlyCustomLevels && !customLevels) throw Error('customLevels is required if useOnlyCustomLevels is set true')
|
||||
if (mixin && typeof mixin !== 'function') throw Error(`Unknown mixin type "${typeof mixin}" - expected "function"`)
|
||||
if (msgPrefix && typeof msgPrefix !== 'string') throw Error(`Unknown msgPrefix type "${typeof msgPrefix}" - expected "string"`)
|
||||
|
||||
assertDefaultLevelFound(level, customLevels, useOnlyCustomLevels)
|
||||
const levels = mappings(customLevels, useOnlyCustomLevels)
|
||||
|
||||
if (typeof stream.emit === 'function') {
|
||||
stream.emit('message', { code: 'PINO_CONFIG', config: { levels, messageKey, errorKey } })
|
||||
}
|
||||
|
||||
assertLevelComparison(levelComparison)
|
||||
const levelCompFunc = genLevelComparison(levelComparison)
|
||||
|
||||
Object.assign(instance, {
|
||||
levels,
|
||||
[levelCompSym]: levelCompFunc,
|
||||
[useOnlyCustomLevelsSym]: useOnlyCustomLevels,
|
||||
[streamSym]: stream,
|
||||
[timeSym]: time,
|
||||
[timeSliceIndexSym]: timeSliceIndex,
|
||||
[stringifySym]: stringify,
|
||||
[stringifySafeSym]: stringifySafe,
|
||||
[stringifiersSym]: stringifiers,
|
||||
[endSym]: end,
|
||||
[formatOptsSym]: formatOpts,
|
||||
[messageKeySym]: messageKey,
|
||||
[errorKeySym]: errorKey,
|
||||
[nestedKeySym]: nestedKey,
|
||||
// protect against injection
|
||||
[nestedKeyStrSym]: nestedKey ? `,${JSON.stringify(nestedKey)}:{` : '',
|
||||
[serializersSym]: serializers,
|
||||
[mixinSym]: mixin,
|
||||
[mixinMergeStrategySym]: mixinMergeStrategy,
|
||||
[chindingsSym]: chindings,
|
||||
[formattersSym]: allFormatters,
|
||||
[hooksSym]: hooks,
|
||||
silent: noop,
|
||||
onChild,
|
||||
[msgPrefixSym]: msgPrefix
|
||||
})
|
||||
|
||||
Object.setPrototypeOf(instance, proto())
|
||||
|
||||
genLsCache(instance)
|
||||
|
||||
instance[setLevelSym](level)
|
||||
|
||||
return instance
|
||||
}
|
||||
|
||||
module.exports = pino
|
||||
|
||||
module.exports.destination = (dest = process.stdout.fd) => {
|
||||
if (typeof dest === 'object') {
|
||||
dest.dest = normalizeDestFileDescriptor(dest.dest || process.stdout.fd)
|
||||
return buildSafeSonicBoom(dest)
|
||||
} else {
|
||||
return buildSafeSonicBoom({ dest: normalizeDestFileDescriptor(dest), minLength: 0 })
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.transport = require('./lib/transport')
|
||||
module.exports.multistream = require('./lib/multistream')
|
||||
|
||||
module.exports.levels = mappings()
|
||||
module.exports.stdSerializers = serializers
|
||||
module.exports.stdTimeFunctions = Object.assign({}, time)
|
||||
module.exports.symbols = symbols
|
||||
module.exports.version = version
|
||||
|
||||
// Enables default and name export with TypeScript and Babel
|
||||
module.exports.default = pino
|
||||
module.exports.pino = pino
|
||||
@@ -0,0 +1,35 @@
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
this file except in compliance with the License. You may obtain a copy of the
|
||||
License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABILITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
|
||||
|
||||
interface String {
|
||||
/** Removes the trailing white space and line terminator characters from a string. */
|
||||
trimEnd(): string;
|
||||
|
||||
/** Removes the leading white space and line terminator characters from a string. */
|
||||
trimStart(): string;
|
||||
|
||||
/**
|
||||
* Removes the leading white space and line terminator characters from a string.
|
||||
* @deprecated A legacy feature for browser compatibility. Use `trimStart` instead
|
||||
*/
|
||||
trimLeft(): string;
|
||||
|
||||
/**
|
||||
* Removes the trailing white space and line terminator characters from a string.
|
||||
* @deprecated A legacy feature for browser compatibility. Use `trimEnd` instead
|
||||
*/
|
||||
trimRight(): string;
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
'use strict';
|
||||
|
||||
var argv = require('../')(process.argv.slice(2));
|
||||
console.log(argv);
|
||||
@@ -0,0 +1,116 @@
|
||||
'use strict'
|
||||
|
||||
const test = require('node:test')
|
||||
const assert = require('node:assert')
|
||||
const { EventEmitter } = require('node:events')
|
||||
const { join } = require('node:path')
|
||||
const { pathToFileURL } = require('node:url')
|
||||
const proxyquire = require('proxyquire')
|
||||
|
||||
function buildTransportWithFakeThreadStream () {
|
||||
let lastCtorOpts
|
||||
|
||||
class FakeThreadStream extends EventEmitter {
|
||||
constructor (opts) {
|
||||
super()
|
||||
this._closed = false
|
||||
lastCtorOpts = opts
|
||||
}
|
||||
|
||||
unref () {}
|
||||
ref () {}
|
||||
flushSync () {}
|
||||
end () {
|
||||
this._closed = true
|
||||
this.emit('close')
|
||||
}
|
||||
|
||||
get closed () {
|
||||
return this._closed
|
||||
}
|
||||
}
|
||||
|
||||
const transport = proxyquire('../../lib/transport', {
|
||||
'thread-stream': FakeThreadStream
|
||||
})
|
||||
|
||||
return {
|
||||
transport,
|
||||
getLastCtorOpts () {
|
||||
return lastCtorOpts
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test('pino.transport sanitizes missing absolute preload in NODE_OPTIONS', () => {
|
||||
const previous = process.env.NODE_OPTIONS
|
||||
const missing = join(__dirname, '..', 'fixtures', 'missing-preload.js')
|
||||
process.env.NODE_OPTIONS = `--require ${missing} --trace-warnings`
|
||||
|
||||
const { transport, getLastCtorOpts } = buildTransportWithFakeThreadStream()
|
||||
transport({ target: join(__dirname, '..', 'fixtures', 'to-file-transport.js') })
|
||||
|
||||
assert.equal(getLastCtorOpts().workerOpts.env.NODE_OPTIONS, '--trace-warnings')
|
||||
|
||||
if (previous === undefined) {
|
||||
delete process.env.NODE_OPTIONS
|
||||
} else {
|
||||
process.env.NODE_OPTIONS = previous
|
||||
}
|
||||
})
|
||||
|
||||
test('pino.transport sanitizes missing file:// preload in NODE_OPTIONS', () => {
|
||||
const previous = process.env.NODE_OPTIONS
|
||||
const missingFileUrl = pathToFileURL(join(__dirname, '..', 'fixtures', 'missing-import.mjs')).href
|
||||
process.env.NODE_OPTIONS = `--import=${missingFileUrl}`
|
||||
|
||||
const { transport, getLastCtorOpts } = buildTransportWithFakeThreadStream()
|
||||
transport({ target: join(__dirname, '..', 'fixtures', 'to-file-transport.js') })
|
||||
|
||||
assert.equal(getLastCtorOpts().workerOpts.env.NODE_OPTIONS, '')
|
||||
|
||||
if (previous === undefined) {
|
||||
delete process.env.NODE_OPTIONS
|
||||
} else {
|
||||
process.env.NODE_OPTIONS = previous
|
||||
}
|
||||
})
|
||||
|
||||
test('pino.transport keeps relative preload flags in NODE_OPTIONS', () => {
|
||||
const previous = process.env.NODE_OPTIONS
|
||||
process.env.NODE_OPTIONS = '--require ./relative-preload.js'
|
||||
|
||||
const { transport, getLastCtorOpts } = buildTransportWithFakeThreadStream()
|
||||
transport({ target: join(__dirname, '..', 'fixtures', 'to-file-transport.js') })
|
||||
|
||||
assert.equal(getLastCtorOpts().workerOpts.env, undefined)
|
||||
|
||||
if (previous === undefined) {
|
||||
delete process.env.NODE_OPTIONS
|
||||
} else {
|
||||
process.env.NODE_OPTIONS = previous
|
||||
}
|
||||
})
|
||||
|
||||
test('pino.transport does not override explicit worker.env', () => {
|
||||
const previous = process.env.NODE_OPTIONS
|
||||
process.env.NODE_OPTIONS = `--require ${join(__dirname, '..', 'fixtures', 'missing-preload.js')}`
|
||||
|
||||
const explicitEnv = { NODE_OPTIONS: '--trace-warnings' }
|
||||
|
||||
const { transport, getLastCtorOpts } = buildTransportWithFakeThreadStream()
|
||||
transport({
|
||||
target: join(__dirname, '..', 'fixtures', 'to-file-transport.js'),
|
||||
worker: {
|
||||
env: explicitEnv
|
||||
}
|
||||
})
|
||||
|
||||
assert.equal(getLastCtorOpts().workerOpts.env, explicitEnv)
|
||||
|
||||
if (previous === undefined) {
|
||||
delete process.env.NODE_OPTIONS
|
||||
} else {
|
||||
process.env.NODE_OPTIONS = previous
|
||||
}
|
||||
})
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,71 @@
|
||||
// @ts-ignore TS6133
|
||||
import { expect, test } from "vitest";
|
||||
|
||||
import * as z from "zod/v3";
|
||||
import { util } from "../helpers/util.js";
|
||||
|
||||
const minTwo = z.string().array().min(2);
|
||||
const maxTwo = z.string().array().max(2);
|
||||
const justTwo = z.string().array().length(2);
|
||||
const intNum = z.string().array().nonempty();
|
||||
const nonEmptyMax = z.string().array().nonempty().max(2);
|
||||
|
||||
type t1 = z.infer<typeof nonEmptyMax>;
|
||||
util.assertEqual<[string, ...string[]], t1>(true);
|
||||
|
||||
type t2 = z.infer<typeof minTwo>;
|
||||
util.assertEqual<string[], t2>(true);
|
||||
|
||||
test("passing validations", () => {
|
||||
minTwo.parse(["a", "a"]);
|
||||
minTwo.parse(["a", "a", "a"]);
|
||||
maxTwo.parse(["a", "a"]);
|
||||
maxTwo.parse(["a"]);
|
||||
justTwo.parse(["a", "a"]);
|
||||
intNum.parse(["a"]);
|
||||
nonEmptyMax.parse(["a"]);
|
||||
});
|
||||
|
||||
test("failing validations", () => {
|
||||
expect(() => minTwo.parse(["a"])).toThrow();
|
||||
expect(() => maxTwo.parse(["a", "a", "a"])).toThrow();
|
||||
expect(() => justTwo.parse(["a"])).toThrow();
|
||||
expect(() => justTwo.parse(["a", "a", "a"])).toThrow();
|
||||
expect(() => intNum.parse([])).toThrow();
|
||||
expect(() => nonEmptyMax.parse([])).toThrow();
|
||||
expect(() => nonEmptyMax.parse(["a", "a", "a"])).toThrow();
|
||||
});
|
||||
|
||||
test("parse empty array in nonempty", () => {
|
||||
expect(() =>
|
||||
z
|
||||
.array(z.string())
|
||||
.nonempty()
|
||||
.parse([] as any)
|
||||
).toThrow();
|
||||
});
|
||||
|
||||
test("get element", () => {
|
||||
justTwo.element.parse("asdf");
|
||||
expect(() => justTwo.element.parse(12)).toThrow();
|
||||
});
|
||||
|
||||
test("continue parsing despite array size error", () => {
|
||||
const schema = z.object({
|
||||
people: z.string().array().min(2),
|
||||
});
|
||||
|
||||
const result = schema.safeParse({
|
||||
people: [123],
|
||||
});
|
||||
expect(result.success).toEqual(false);
|
||||
if (!result.success) {
|
||||
expect(result.error.issues.length).toEqual(2);
|
||||
}
|
||||
});
|
||||
|
||||
test("parse should fail given sparse array", () => {
|
||||
const schema = z.array(z.string()).nonempty().min(1).max(3);
|
||||
|
||||
expect(() => schema.parse(new Array(3))).toThrow();
|
||||
});
|
||||
@@ -0,0 +1,4 @@
|
||||
test:
|
||||
@@node test/eyes-test.js
|
||||
|
||||
.PHONY: test
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"main": "../../cjs/_object_without_properties_loose.cjs",
|
||||
"module": "../../esm/_object_without_properties_loose.js"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use strict'
|
||||
|
||||
const { test } = require('node:test')
|
||||
const splitPropertyKey = require('./split-property-key')
|
||||
|
||||
test('splitPropertyKey does not change key', t => {
|
||||
const result = splitPropertyKey('data1')
|
||||
t.assert.deepStrictEqual(result, ['data1'])
|
||||
})
|
||||
|
||||
test('splitPropertyKey splits nested key', t => {
|
||||
const result = splitPropertyKey('data1.data2.data-3')
|
||||
t.assert.deepStrictEqual(result, ['data1', 'data2', 'data-3'])
|
||||
})
|
||||
|
||||
test('splitPropertyKey splits nested keys ending with a dot', t => {
|
||||
const result = splitPropertyKey('data1.data2.data-3.')
|
||||
t.assert.deepStrictEqual(result, ['data1', 'data2', 'data-3'])
|
||||
})
|
||||
|
||||
test('splitPropertyKey splits nested escaped key', t => {
|
||||
const result = splitPropertyKey('logging\\.domain\\.corp/operation.foo.bar-2')
|
||||
t.assert.deepStrictEqual(result, ['logging.domain.corp/operation', 'foo', 'bar-2'])
|
||||
})
|
||||
|
||||
test('splitPropertyKey splits nested escaped key with special characters', t => {
|
||||
const result = splitPropertyKey('logging\\.domain\\.corp/operation.!\t@#$%^&*()_+=-<>.bar\\.2')
|
||||
t.assert.deepStrictEqual(result, ['logging.domain.corp/operation', '!\t@#$%^&*()_+=-<>', 'bar.2'])
|
||||
})
|
||||
@@ -0,0 +1,10 @@
|
||||
export type Options = [
|
||||
{
|
||||
allow: string[];
|
||||
}
|
||||
];
|
||||
export type MessageIds = 'noVarReqs';
|
||||
declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noVarReqs", Options, import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
||||
name: string;
|
||||
};
|
||||
export default _default;
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,36 @@
|
||||
import type { RequestInfo, Response, Request } from './fetch'
|
||||
|
||||
export interface CacheStorage {
|
||||
match (request: RequestInfo, options?: MultiCacheQueryOptions): Promise<Response | undefined>,
|
||||
has (cacheName: string): Promise<boolean>,
|
||||
open (cacheName: string): Promise<Cache>,
|
||||
delete (cacheName: string): Promise<boolean>,
|
||||
keys (): Promise<string[]>
|
||||
}
|
||||
|
||||
declare const CacheStorage: {
|
||||
prototype: CacheStorage
|
||||
new(): CacheStorage
|
||||
}
|
||||
|
||||
export interface Cache {
|
||||
match (request: RequestInfo, options?: CacheQueryOptions): Promise<Response | undefined>,
|
||||
matchAll (request?: RequestInfo, options?: CacheQueryOptions): Promise<readonly Response[]>,
|
||||
add (request: RequestInfo): Promise<undefined>,
|
||||
addAll (requests: RequestInfo[]): Promise<undefined>,
|
||||
put (request: RequestInfo, response: Response): Promise<undefined>,
|
||||
delete (request: RequestInfo, options?: CacheQueryOptions): Promise<boolean>,
|
||||
keys (request?: RequestInfo, options?: CacheQueryOptions): Promise<readonly Request[]>
|
||||
}
|
||||
|
||||
export interface CacheQueryOptions {
|
||||
ignoreSearch?: boolean,
|
||||
ignoreMethod?: boolean,
|
||||
ignoreVary?: boolean
|
||||
}
|
||||
|
||||
export interface MultiCacheQueryOptions extends CacheQueryOptions {
|
||||
cacheName?: string
|
||||
}
|
||||
|
||||
export declare const caches: CacheStorage
|
||||
Reference in New Issue
Block a user