chore: move dioc out of monorepo
This commit is contained in:
24
packages/dioc/.gitignore
vendored
24
packages/dioc/.gitignore
vendored
@@ -1,24 +0,0 @@
|
|||||||
# Logs
|
|
||||||
logs
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
pnpm-debug.log*
|
|
||||||
lerna-debug.log*
|
|
||||||
|
|
||||||
node_modules
|
|
||||||
dist
|
|
||||||
dist-ssr
|
|
||||||
*.local
|
|
||||||
|
|
||||||
# Editor directories and files
|
|
||||||
.vscode/*
|
|
||||||
!.vscode/extensions.json
|
|
||||||
.idea
|
|
||||||
.DS_Store
|
|
||||||
*.suo
|
|
||||||
*.ntvs*
|
|
||||||
*.njsproj
|
|
||||||
*.sln
|
|
||||||
*.sw?
|
|
||||||
@@ -1,141 +0,0 @@
|
|||||||
# dioc
|
|
||||||
|
|
||||||
A small and lightweight dependency injection / inversion of control system.
|
|
||||||
|
|
||||||
### About
|
|
||||||
|
|
||||||
`dioc` is a really simple **DI/IOC** system where you write services (which are singletons per container) that can depend on each other and emit events that can be listened upon.
|
|
||||||
|
|
||||||
### Demo
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import { Service, Container } from "dioc"
|
|
||||||
|
|
||||||
// Here is a simple service, which you can define by extending the Service class
|
|
||||||
// and providing an ID static field (of type string)
|
|
||||||
export class PersistenceService extends Service {
|
|
||||||
// This should be unique for each container
|
|
||||||
public static ID = "PERSISTENCE_SERVICE"
|
|
||||||
|
|
||||||
public read(key: string): string | undefined {
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
|
|
||||||
public write(key: string, value: string) {
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type TodoServiceEvent =
|
|
||||||
| { type: "TODO_CREATED"; index: number }
|
|
||||||
| { type: "TODO_DELETED"; index: number }
|
|
||||||
|
|
||||||
// Services have a built in event system
|
|
||||||
// Define the generic argument to say what are the possible emitted values
|
|
||||||
export class TodoService extends Service<TodoServiceEvent> {
|
|
||||||
public static ID = "TODO_SERVICE"
|
|
||||||
|
|
||||||
// Inject persistence service into this service
|
|
||||||
private readonly persistence = this.bind(PersistenceService)
|
|
||||||
|
|
||||||
public todos = []
|
|
||||||
|
|
||||||
// Service constructors cannot have arguments
|
|
||||||
constructor() {
|
|
||||||
super()
|
|
||||||
|
|
||||||
this.todos = JSON.parse(this.persistence.read("todos") ?? "[]")
|
|
||||||
}
|
|
||||||
|
|
||||||
public addTodo(text: string) {
|
|
||||||
// ...
|
|
||||||
|
|
||||||
// You can access services via the bound fields
|
|
||||||
this.persistence.write("todos", JSON.stringify(this.todos))
|
|
||||||
|
|
||||||
// This is how you emit an event
|
|
||||||
this.emit({
|
|
||||||
type: "TODO_CREATED",
|
|
||||||
index,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
public removeTodo(index: number) {
|
|
||||||
// ...
|
|
||||||
|
|
||||||
this.emit({
|
|
||||||
type: "TODO_DELETED",
|
|
||||||
index,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Services need a container to run in
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
// You can initialize and get services using Container#bind
|
|
||||||
// It will automatically initialize the service (and its dependencies)
|
|
||||||
const todoService = container.bind(TodoService) // Returns an instance of TodoService
|
|
||||||
```
|
|
||||||
|
|
||||||
### Demo (Unit Test)
|
|
||||||
|
|
||||||
`dioc/testing` contains `TestContainer` which lets you bind mocked services to the container.
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import { TestContainer } from "dioc/testing"
|
|
||||||
import { TodoService, PersistenceService } from "./demo.ts" // The above demo code snippet
|
|
||||||
import { describe, it, expect, vi } from "vitest"
|
|
||||||
|
|
||||||
describe("TodoService", () => {
|
|
||||||
it("addTodo writes to persistence", () => {
|
|
||||||
const container = new TestContainer()
|
|
||||||
|
|
||||||
const writeFn = vi.fn()
|
|
||||||
|
|
||||||
// The first parameter is the service to mock and the second parameter
|
|
||||||
// is the mocked service fields and functions
|
|
||||||
container.bindMock(PersistenceService, {
|
|
||||||
read: () => undefined, // Not really important for this test
|
|
||||||
write: writeFn,
|
|
||||||
})
|
|
||||||
|
|
||||||
// the peristence service bind in TodoService will now use the
|
|
||||||
// above defined mocked implementation
|
|
||||||
const todoService = container.bind(TodoService)
|
|
||||||
|
|
||||||
todoService.addTodo("sup")
|
|
||||||
|
|
||||||
expect(writeFn).toHaveBeenCalledOnce()
|
|
||||||
expect(writeFn).toHaveBeenCalledWith("todos", JSON.stringify(["sup"]))
|
|
||||||
})
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
### Demo (Vue)
|
|
||||||
|
|
||||||
`dioc/vue` contains a Vue Plugin and a `useService` composable that allows Vue components to use the defined services.
|
|
||||||
|
|
||||||
In the app entry point:
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import { createApp } from "vue"
|
|
||||||
import { diocPlugin } from "dioc/vue"
|
|
||||||
|
|
||||||
const app = createApp()
|
|
||||||
|
|
||||||
app.use(diocPlugin, {
|
|
||||||
container: new Container(), // You can pass in the container you want to provide to the components here
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
In your Vue components:
|
|
||||||
|
|
||||||
```vue
|
|
||||||
<script setup>
|
|
||||||
import { TodoService } from "./demo.ts" // The above demo
|
|
||||||
import { useService } from "dioc/vue"
|
|
||||||
|
|
||||||
const todoService = useService(TodoService) // Returns an instance of the TodoService class
|
|
||||||
</script>
|
|
||||||
```
|
|
||||||
2
packages/dioc/index.d.ts
vendored
2
packages/dioc/index.d.ts
vendored
@@ -1,2 +0,0 @@
|
|||||||
export { default } from "./dist/main.d.ts"
|
|
||||||
export * from "./dist/main.d.ts"
|
|
||||||
@@ -1,147 +0,0 @@
|
|||||||
import { Service } from "./service"
|
|
||||||
import { Observable, Subject } from 'rxjs'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Stores the current container instance in the current operating context.
|
|
||||||
*
|
|
||||||
* NOTE: This should not be used outside of dioc library code
|
|
||||||
*/
|
|
||||||
export let currentContainer: Container | null = null
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The events emitted by the container
|
|
||||||
*
|
|
||||||
* `SERVICE_BIND` - emitted when a service is bound to the container directly or as a dependency to another service
|
|
||||||
* `SERVICE_INIT` - emitted when a service is initialized
|
|
||||||
*/
|
|
||||||
export type ContainerEvent =
|
|
||||||
| {
|
|
||||||
type: 'SERVICE_BIND';
|
|
||||||
|
|
||||||
/** The Service ID of the service being bounded (the dependency) */
|
|
||||||
boundeeID: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Service ID of the bounder that is binding the boundee (the dependent)
|
|
||||||
*
|
|
||||||
* NOTE: This will be undefined if the service is bound directly to the container
|
|
||||||
*/
|
|
||||||
bounderID: string | undefined
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
type: 'SERVICE_INIT';
|
|
||||||
|
|
||||||
/** The Service ID of the service being initialized */
|
|
||||||
serviceID: string
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The dependency injection container, allows for services to be initialized and maintains the dependency trees.
|
|
||||||
*/
|
|
||||||
export class Container {
|
|
||||||
/** Used during the `bind` operation to detect circular dependencies */
|
|
||||||
private bindStack: string[] = []
|
|
||||||
|
|
||||||
/** The map of bound services to their IDs */
|
|
||||||
protected boundMap = new Map<string, Service<unknown>>()
|
|
||||||
|
|
||||||
/** The RxJS observable representing the event stream */
|
|
||||||
protected event$ = new Subject<ContainerEvent>()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns whether a container has the given service bound
|
|
||||||
* @param service The service to check for
|
|
||||||
*/
|
|
||||||
public hasBound<
|
|
||||||
T extends typeof Service<any> & { ID: string }
|
|
||||||
>(service: T): boolean {
|
|
||||||
return this.boundMap.has(service.ID)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the service bound to the container with the given ID or if not found, undefined.
|
|
||||||
*
|
|
||||||
* NOTE: This is an advanced method and should not be used as much as possible.
|
|
||||||
*
|
|
||||||
* @param serviceID The ID of the service to get
|
|
||||||
*/
|
|
||||||
public getBoundServiceWithID(serviceID: string): Service<unknown> | undefined {
|
|
||||||
return this.boundMap.get(serviceID)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Binds a service to the container. This is equivalent to marking a service as a dependency.
|
|
||||||
* @param service The class reference of a service to bind
|
|
||||||
* @param bounder The class reference of the service that is binding the service (if bound directly to the container, this should be undefined)
|
|
||||||
*/
|
|
||||||
public bind<T extends typeof Service<any> & { ID: string }>(
|
|
||||||
service: T,
|
|
||||||
bounder: ((typeof Service<T>) & { ID: string }) | undefined = undefined
|
|
||||||
): InstanceType<T> {
|
|
||||||
// We need to store the current container in a variable so that we can restore it after the bind operation
|
|
||||||
const oldCurrentContainer = currentContainer;
|
|
||||||
currentContainer = this;
|
|
||||||
|
|
||||||
// If the service is already bound, return the existing instance
|
|
||||||
if (this.hasBound(service)) {
|
|
||||||
this.event$.next({
|
|
||||||
type: 'SERVICE_BIND',
|
|
||||||
boundeeID: service.ID,
|
|
||||||
bounderID: bounder?.ID // Return the bounder ID if it is defined, else assume its the container
|
|
||||||
})
|
|
||||||
|
|
||||||
return this.boundMap.get(service.ID) as InstanceType<T> // Casted as InstanceType<T> because service IDs and types are expected to match
|
|
||||||
}
|
|
||||||
|
|
||||||
// Detect circular dependency and throw error
|
|
||||||
if (this.bindStack.findIndex((serviceID) => serviceID === service.ID) !== -1) {
|
|
||||||
const circularServices = `${this.bindStack.join(' -> ')} -> ${service.ID}`
|
|
||||||
|
|
||||||
throw new Error(`Circular dependency detected.\nChain: ${circularServices}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Push the service ID onto the bind stack to detect circular dependencies
|
|
||||||
this.bindStack.push(service.ID)
|
|
||||||
|
|
||||||
// Initialize the service and emit events
|
|
||||||
|
|
||||||
// NOTE: We need to cast the service to any as TypeScript thinks that the service is abstract
|
|
||||||
const instance: Service<any> = new (service as any)()
|
|
||||||
|
|
||||||
this.boundMap.set(service.ID, instance)
|
|
||||||
|
|
||||||
this.bindStack.pop()
|
|
||||||
|
|
||||||
this.event$.next({
|
|
||||||
type: 'SERVICE_INIT',
|
|
||||||
serviceID: service.ID,
|
|
||||||
})
|
|
||||||
|
|
||||||
this.event$.next({
|
|
||||||
type: 'SERVICE_BIND',
|
|
||||||
boundeeID: service.ID,
|
|
||||||
bounderID: bounder?.ID
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
// Restore the current container
|
|
||||||
currentContainer = oldCurrentContainer;
|
|
||||||
|
|
||||||
// We expect the return type to match the service definition
|
|
||||||
return instance as InstanceType<T>
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an iterator of the currently bound service IDs and their instances
|
|
||||||
*/
|
|
||||||
public getBoundServices(): IterableIterator<[string, Service<any>]> {
|
|
||||||
return this.boundMap.entries()
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the public container event stream
|
|
||||||
*/
|
|
||||||
public getEventStream(): Observable<ContainerEvent> {
|
|
||||||
return this.event$.asObservable()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
export * from "./container"
|
|
||||||
export * from "./service"
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
import { Observable, Subject } from 'rxjs'
|
|
||||||
import { Container, currentContainer } from './container'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A Dioc service that can bound to a container and can bind dependency services.
|
|
||||||
*
|
|
||||||
* NOTE: Services cannot have a constructor that takes arguments.
|
|
||||||
*
|
|
||||||
* @template EventDef The type of events that can be emitted by the service. These will be accessible by event streams
|
|
||||||
*/
|
|
||||||
export abstract class Service<EventDef = {}> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The internal event stream of the service
|
|
||||||
*/
|
|
||||||
private event$ = new Subject<EventDef>()
|
|
||||||
|
|
||||||
/** The container the service is bound to */
|
|
||||||
#container: Container
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
if (!currentContainer) {
|
|
||||||
throw new Error(
|
|
||||||
`Tried to initialize service with no container (ID: ${ (this.constructor as any).ID })`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
this.#container = currentContainer
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Binds a dependency service into this service.
|
|
||||||
* @param service The class reference of the service to bind
|
|
||||||
*/
|
|
||||||
protected bind<T extends typeof Service<any> & { ID: string }>(service: T): InstanceType<T> {
|
|
||||||
if (!currentContainer) {
|
|
||||||
throw new Error('No currentContainer defined.')
|
|
||||||
}
|
|
||||||
|
|
||||||
return currentContainer.bind(service, this.constructor as typeof Service<any> & { ID: string })
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the container the service is bound to
|
|
||||||
*/
|
|
||||||
protected getContainer(): Container {
|
|
||||||
return this.#container
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Emits an event on the service's event stream
|
|
||||||
* @param event The event to emit
|
|
||||||
*/
|
|
||||||
protected emit(event: EventDef) {
|
|
||||||
this.event$.next(event)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the event stream of the service
|
|
||||||
*/
|
|
||||||
public getEventStream(): Observable<EventDef> {
|
|
||||||
|
|
||||||
return this.event$.asObservable()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
import { Container, Service } from "./main";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A container that can be used for writing tests, contains additional methods
|
|
||||||
* for binding suitable for writing tests. (see `bindMock`).
|
|
||||||
*/
|
|
||||||
export class TestContainer extends Container {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Binds a mock service to the container.
|
|
||||||
*
|
|
||||||
* @param service
|
|
||||||
* @param mock
|
|
||||||
*/
|
|
||||||
public bindMock<
|
|
||||||
T extends typeof Service<any> & { ID: string },
|
|
||||||
U extends Partial<InstanceType<T>>
|
|
||||||
>(service: T, mock: U): U {
|
|
||||||
if (this.boundMap.has(service.ID)) {
|
|
||||||
throw new Error(`Service '${service.ID}' already bound to container. Did you already call bindMock on this ?`)
|
|
||||||
}
|
|
||||||
|
|
||||||
this.boundMap.set(service.ID, mock as any)
|
|
||||||
|
|
||||||
this.event$.next({
|
|
||||||
type: "SERVICE_BIND",
|
|
||||||
boundeeID: service.ID,
|
|
||||||
bounderID: undefined,
|
|
||||||
})
|
|
||||||
|
|
||||||
return mock
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
import { Plugin, inject } from "vue"
|
|
||||||
import { Container } from "./container"
|
|
||||||
import { Service } from "./service"
|
|
||||||
|
|
||||||
const VUE_CONTAINER_KEY = Symbol()
|
|
||||||
|
|
||||||
// TODO: Some Vue version issue with plugin generics is breaking type checking
|
|
||||||
/**
|
|
||||||
* The Vue Dioc Plugin, this allows the composables to work and access the container
|
|
||||||
*
|
|
||||||
* NOTE: Make sure you add `vue` as dependency to be able to use this plugin (duh)
|
|
||||||
*/
|
|
||||||
export const diocPlugin: Plugin = {
|
|
||||||
install(app, { container }) {
|
|
||||||
app.provide(VUE_CONTAINER_KEY, container)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A composable that binds a service to a Vue Component
|
|
||||||
*
|
|
||||||
* @param service The class reference of the service to bind
|
|
||||||
*/
|
|
||||||
export function useService<
|
|
||||||
T extends typeof Service<any> & { ID: string }
|
|
||||||
>(service: T): InstanceType<T> {
|
|
||||||
const container = inject(VUE_CONTAINER_KEY) as Container | undefined | null
|
|
||||||
|
|
||||||
if (!container) {
|
|
||||||
throw new Error("Container not found, did you forget to install the dioc plugin?")
|
|
||||||
}
|
|
||||||
|
|
||||||
return container.bind(service)
|
|
||||||
}
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "dioc",
|
|
||||||
"private": true,
|
|
||||||
"version": "0.1.0",
|
|
||||||
"type": "module",
|
|
||||||
"files": [
|
|
||||||
"dist",
|
|
||||||
"index.d.ts"
|
|
||||||
],
|
|
||||||
"main": "./dist/counter.umd.cjs",
|
|
||||||
"module": "./dist/counter.js",
|
|
||||||
"types": "./index.d.ts",
|
|
||||||
"exports": {
|
|
||||||
".": {
|
|
||||||
"types": "./dist/main.d.ts",
|
|
||||||
"require": "./dist/index.cjs",
|
|
||||||
"import": "./dist/index.js"
|
|
||||||
},
|
|
||||||
"./vue": {
|
|
||||||
"types": "./dist/vue.d.ts",
|
|
||||||
"require": "./dist/vue.cjs",
|
|
||||||
"import": "./dist/vue.js"
|
|
||||||
},
|
|
||||||
"./testing": {
|
|
||||||
"types": "./dist/testing.d.ts",
|
|
||||||
"require": "./dist/testing.cjs",
|
|
||||||
"import": "./dist/testing.js"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"dev": "vite",
|
|
||||||
"build": "vite build && tsc --emitDeclarationOnly",
|
|
||||||
"prepare": "pnpm run build",
|
|
||||||
"test": "vitest run",
|
|
||||||
"do-test": "pnpm run test",
|
|
||||||
"test:watch": "vitest"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"typescript": "^4.9.4",
|
|
||||||
"vite": "^4.0.4",
|
|
||||||
"vitest": "^0.29.3"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"rxjs": "^7.8.1"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"vue": "^3.2.25"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"vue": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,262 +0,0 @@
|
|||||||
import { it, expect, describe, vi } from "vitest"
|
|
||||||
import { Service } from "../lib/service"
|
|
||||||
import { Container, currentContainer, ContainerEvent } from "../lib/container"
|
|
||||||
|
|
||||||
class TestServiceA extends Service {
|
|
||||||
public static ID = "TestServiceA"
|
|
||||||
}
|
|
||||||
|
|
||||||
class TestServiceB extends Service {
|
|
||||||
public static ID = "TestServiceB"
|
|
||||||
|
|
||||||
// Marked public to allow for testing
|
|
||||||
public readonly serviceA = this.bind(TestServiceA)
|
|
||||||
}
|
|
||||||
|
|
||||||
describe("Container", () => {
|
|
||||||
describe("getBoundServiceWithID", () => {
|
|
||||||
it("returns the service instance if it is bound to the container", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const service = container.bind(TestServiceA)
|
|
||||||
|
|
||||||
expect(container.getBoundServiceWithID(TestServiceA.ID)).toBe(service)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("returns undefined if the service is not bound to the container", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
expect(container.getBoundServiceWithID(TestServiceA.ID)).toBeUndefined()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("bind", () => {
|
|
||||||
it("correctly binds the service to it", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const service = container.bind(TestServiceA)
|
|
||||||
|
|
||||||
// @ts-expect-error getContainer is defined as a protected property, but we are leveraging it here to check
|
|
||||||
expect(service.getContainer()).toBe(container)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("after bind, the current container is set back to its previous value", () => {
|
|
||||||
const originalValue = currentContainer
|
|
||||||
|
|
||||||
const container = new Container()
|
|
||||||
container.bind(TestServiceA)
|
|
||||||
|
|
||||||
expect(currentContainer).toBe(originalValue)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("dependent services are registered in the same container", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceB = container.bind(TestServiceB)
|
|
||||||
|
|
||||||
// @ts-expect-error getContainer is defined as a protected property, but we are leveraging it here to check
|
|
||||||
expect(serviceB.serviceA.getContainer()).toBe(container)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("binding an already initialized service returns the initialized instance (services are singletons)", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceA = container.bind(TestServiceA)
|
|
||||||
const serviceA2 = container.bind(TestServiceA)
|
|
||||||
|
|
||||||
expect(serviceA).toBe(serviceA2)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("binding a service which is a dependency of another service returns the same instance created from the dependency resolution (services are singletons)", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceB = container.bind(TestServiceB)
|
|
||||||
const serviceA = container.bind(TestServiceA)
|
|
||||||
|
|
||||||
expect(serviceB.serviceA).toBe(serviceA)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("binding an initialized service as a dependency returns the same instance", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceA = container.bind(TestServiceA)
|
|
||||||
const serviceB = container.bind(TestServiceB)
|
|
||||||
|
|
||||||
expect(serviceB.serviceA).toBe(serviceA)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("container emits an init event when an uninitialized service is initialized via bind and event only called once", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceFunc = vi.fn<
|
|
||||||
[ContainerEvent & { type: "SERVICE_INIT" }],
|
|
||||||
void
|
|
||||||
>()
|
|
||||||
|
|
||||||
container.getEventStream().subscribe((ev) => {
|
|
||||||
if (ev.type === "SERVICE_INIT") {
|
|
||||||
serviceFunc(ev)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const instance = container.bind(TestServiceA)
|
|
||||||
|
|
||||||
expect(serviceFunc).toHaveBeenCalledOnce()
|
|
||||||
expect(serviceFunc).toHaveBeenCalledWith(<ContainerEvent>{
|
|
||||||
type: "SERVICE_INIT",
|
|
||||||
serviceID: TestServiceA.ID,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("the bind event emitted has an undefined bounderID when the service is bound directly to the container", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceFunc = vi.fn<
|
|
||||||
[ContainerEvent & { type: "SERVICE_BIND" }],
|
|
||||||
void
|
|
||||||
>()
|
|
||||||
|
|
||||||
container.getEventStream().subscribe((ev) => {
|
|
||||||
if (ev.type === "SERVICE_BIND") {
|
|
||||||
serviceFunc(ev)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
container.bind(TestServiceA)
|
|
||||||
|
|
||||||
expect(serviceFunc).toHaveBeenCalledOnce()
|
|
||||||
expect(serviceFunc).toHaveBeenCalledWith(<ContainerEvent>{
|
|
||||||
type: "SERVICE_BIND",
|
|
||||||
boundeeID: TestServiceA.ID,
|
|
||||||
bounderID: undefined,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("the bind event emitted has the correct bounderID when the service is bound to another service", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceFunc = vi.fn<
|
|
||||||
[ContainerEvent & { type: "SERVICE_BIND" }],
|
|
||||||
void
|
|
||||||
>()
|
|
||||||
|
|
||||||
container.getEventStream().subscribe((ev) => {
|
|
||||||
// We only care about the bind event of TestServiceA
|
|
||||||
if (ev.type === "SERVICE_BIND" && ev.boundeeID === TestServiceA.ID) {
|
|
||||||
serviceFunc(ev)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
container.bind(TestServiceB)
|
|
||||||
|
|
||||||
expect(serviceFunc).toHaveBeenCalledOnce()
|
|
||||||
expect(serviceFunc).toHaveBeenCalledWith(<ContainerEvent>{
|
|
||||||
type: "SERVICE_BIND",
|
|
||||||
boundeeID: TestServiceA.ID,
|
|
||||||
bounderID: TestServiceB.ID,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("hasBound", () => {
|
|
||||||
it("returns true if the given service is bound to the container", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
container.bind(TestServiceA)
|
|
||||||
|
|
||||||
expect(container.hasBound(TestServiceA)).toEqual(true)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("returns false if the given service is not bound to the container", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
expect(container.hasBound(TestServiceA)).toEqual(false)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("returns true when the service is bound because it is a dependency of another service", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
container.bind(TestServiceB)
|
|
||||||
|
|
||||||
expect(container.hasBound(TestServiceA)).toEqual(true)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("getEventStream", () => {
|
|
||||||
it("returns an observable which emits events correctly when services are initialized", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceFunc = vi.fn<
|
|
||||||
[ContainerEvent & { type: "SERVICE_INIT" }],
|
|
||||||
void
|
|
||||||
>()
|
|
||||||
|
|
||||||
container.getEventStream().subscribe((ev) => {
|
|
||||||
if (ev.type === "SERVICE_INIT") {
|
|
||||||
serviceFunc(ev)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
container.bind(TestServiceB)
|
|
||||||
|
|
||||||
expect(serviceFunc).toHaveBeenCalledTimes(2)
|
|
||||||
expect(serviceFunc).toHaveBeenNthCalledWith(1, <ContainerEvent>{
|
|
||||||
type: "SERVICE_INIT",
|
|
||||||
serviceID: TestServiceA.ID,
|
|
||||||
})
|
|
||||||
expect(serviceFunc).toHaveBeenNthCalledWith(2, <ContainerEvent>{
|
|
||||||
type: "SERVICE_INIT",
|
|
||||||
serviceID: TestServiceB.ID,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("returns an observable which emits events correctly when services are bound", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceFunc = vi.fn<
|
|
||||||
[ContainerEvent & { type: "SERVICE_BIND" }],
|
|
||||||
void
|
|
||||||
>()
|
|
||||||
|
|
||||||
container.getEventStream().subscribe((ev) => {
|
|
||||||
if (ev.type === "SERVICE_BIND") {
|
|
||||||
serviceFunc(ev)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
container.bind(TestServiceB)
|
|
||||||
|
|
||||||
expect(serviceFunc).toHaveBeenCalledTimes(2)
|
|
||||||
expect(serviceFunc).toHaveBeenNthCalledWith(1, <ContainerEvent>{
|
|
||||||
type: "SERVICE_BIND",
|
|
||||||
boundeeID: TestServiceA.ID,
|
|
||||||
bounderID: TestServiceB.ID,
|
|
||||||
})
|
|
||||||
expect(serviceFunc).toHaveBeenNthCalledWith(2, <ContainerEvent>{
|
|
||||||
type: "SERVICE_BIND",
|
|
||||||
boundeeID: TestServiceB.ID,
|
|
||||||
bounderID: undefined,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("getBoundServices", () => {
|
|
||||||
it("returns an iterator over all services bound to the container in the format [service id, service instance]", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const instanceB = container.bind(TestServiceB)
|
|
||||||
const instanceA = instanceB.serviceA
|
|
||||||
|
|
||||||
expect(Array.from(container.getBoundServices())).toEqual([
|
|
||||||
[TestServiceA.ID, instanceA],
|
|
||||||
[TestServiceB.ID, instanceB],
|
|
||||||
])
|
|
||||||
})
|
|
||||||
|
|
||||||
it("returns an empty iterator if no services are bound", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
expect(Array.from(container.getBoundServices())).toEqual([])
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
import { describe, expect, it, vi } from "vitest"
|
|
||||||
import { Service, Container } from "../lib/main"
|
|
||||||
|
|
||||||
class TestServiceA extends Service {
|
|
||||||
public static ID = "TestServiceA"
|
|
||||||
}
|
|
||||||
|
|
||||||
class TestServiceB extends Service<"test"> {
|
|
||||||
public static ID = "TestServiceB"
|
|
||||||
|
|
||||||
// Marked public to allow for testing
|
|
||||||
public readonly serviceA = this.bind(TestServiceA)
|
|
||||||
|
|
||||||
public emitTestEvent() {
|
|
||||||
this.emit("test")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
describe("Service", () => {
|
|
||||||
describe("constructor", () => {
|
|
||||||
it("throws an error if the service is initialized without a container", () => {
|
|
||||||
expect(() => new TestServiceA()).toThrowError(
|
|
||||||
"Tried to initialize service with no container (ID: TestServiceA)"
|
|
||||||
)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("bind", () => {
|
|
||||||
it("correctly binds the dependency service using the container", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceA = container.bind(TestServiceA)
|
|
||||||
|
|
||||||
const serviceB = container.bind(TestServiceB)
|
|
||||||
expect(serviceB.serviceA).toBe(serviceA)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("getContainer", () => {
|
|
||||||
it("returns the container the service is bound to", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceA = container.bind(TestServiceA)
|
|
||||||
|
|
||||||
// @ts-expect-error getContainer is a protected member, we are just using it to help with testing
|
|
||||||
expect(serviceA.getContainer()).toBe(container)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("getEventStream", () => {
|
|
||||||
it("returns the valid event stream of the service", () => {
|
|
||||||
const container = new Container()
|
|
||||||
|
|
||||||
const serviceB = container.bind(TestServiceB)
|
|
||||||
|
|
||||||
const serviceFunc = vi.fn()
|
|
||||||
|
|
||||||
serviceB.getEventStream().subscribe(serviceFunc)
|
|
||||||
|
|
||||||
serviceB.emitTestEvent()
|
|
||||||
|
|
||||||
expect(serviceFunc).toHaveBeenCalledOnce()
|
|
||||||
expect(serviceFunc).toHaveBeenCalledWith("test")
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
import { describe, expect, it, vi } from "vitest"
|
|
||||||
import { TestContainer } from "../lib/testing"
|
|
||||||
import { Service } from "../lib/service"
|
|
||||||
import { ContainerEvent } from "../lib/container"
|
|
||||||
|
|
||||||
class TestServiceA extends Service {
|
|
||||||
public static ID = "TestServiceA"
|
|
||||||
|
|
||||||
public test() {
|
|
||||||
return "real"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class TestServiceB extends Service {
|
|
||||||
public static ID = "TestServiceB"
|
|
||||||
|
|
||||||
// declared public to help with testing
|
|
||||||
public readonly serviceA = this.bind(TestServiceA)
|
|
||||||
|
|
||||||
public test() {
|
|
||||||
return this.serviceA.test()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
describe("TestContainer", () => {
|
|
||||||
describe("bindMock", () => {
|
|
||||||
it("returns the fake service defined", () => {
|
|
||||||
const container = new TestContainer()
|
|
||||||
|
|
||||||
const fakeService = {
|
|
||||||
test: () => "fake",
|
|
||||||
}
|
|
||||||
|
|
||||||
const result = container.bindMock(TestServiceA, fakeService)
|
|
||||||
|
|
||||||
expect(result).toBe(fakeService)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("new services bound to the container get the mock service", () => {
|
|
||||||
const container = new TestContainer()
|
|
||||||
|
|
||||||
const fakeServiceA = {
|
|
||||||
test: () => "fake",
|
|
||||||
}
|
|
||||||
|
|
||||||
container.bindMock(TestServiceA, fakeServiceA)
|
|
||||||
|
|
||||||
const serviceB = container.bind(TestServiceB)
|
|
||||||
|
|
||||||
expect(serviceB.serviceA).toBe(fakeServiceA)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("container emits SERVICE_BIND event", () => {
|
|
||||||
const container = new TestContainer()
|
|
||||||
|
|
||||||
const fakeServiceA = {
|
|
||||||
test: () => "fake",
|
|
||||||
}
|
|
||||||
|
|
||||||
const serviceFunc = vi.fn<[ContainerEvent, void]>()
|
|
||||||
|
|
||||||
container.getEventStream().subscribe((ev) => {
|
|
||||||
serviceFunc(ev)
|
|
||||||
})
|
|
||||||
|
|
||||||
container.bindMock(TestServiceA, fakeServiceA)
|
|
||||||
|
|
||||||
expect(serviceFunc).toHaveBeenCalledOnce()
|
|
||||||
expect(serviceFunc).toHaveBeenCalledWith(<ContainerEvent>{
|
|
||||||
type: "SERVICE_BIND",
|
|
||||||
boundeeID: TestServiceA.ID,
|
|
||||||
bounderID: undefined,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("throws if service already bound", () => {
|
|
||||||
const container = new TestContainer()
|
|
||||||
|
|
||||||
const fakeServiceA = {
|
|
||||||
test: () => "fake",
|
|
||||||
}
|
|
||||||
|
|
||||||
container.bindMock(TestServiceA, fakeServiceA)
|
|
||||||
|
|
||||||
expect(() => {
|
|
||||||
container.bindMock(TestServiceA, fakeServiceA)
|
|
||||||
}).toThrowError(
|
|
||||||
"Service 'TestServiceA' already bound to container. Did you already call bindMock on this ?"
|
|
||||||
)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
2
packages/dioc/testing.d.ts
vendored
2
packages/dioc/testing.d.ts
vendored
@@ -1,2 +0,0 @@
|
|||||||
export { default } from "./dist/testing.d.ts"
|
|
||||||
export * from "./dist/testing.d.ts"
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "ESNext",
|
|
||||||
"useDefineForClassFields": true,
|
|
||||||
"module": "ESNext",
|
|
||||||
"lib": ["ESNext", "DOM"],
|
|
||||||
"moduleResolution": "Node",
|
|
||||||
"strict": true,
|
|
||||||
"declaration": true,
|
|
||||||
"sourceMap": true,
|
|
||||||
"outDir": "dist",
|
|
||||||
"resolveJsonModule": true,
|
|
||||||
"isolatedModules": true,
|
|
||||||
"esModuleInterop": true,
|
|
||||||
"noUnusedLocals": true,
|
|
||||||
"noUnusedParameters": true,
|
|
||||||
"noImplicitReturns": true,
|
|
||||||
"skipLibCheck": true
|
|
||||||
},
|
|
||||||
"include": ["lib"]
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
import { defineConfig } from 'vite'
|
|
||||||
|
|
||||||
export default defineConfig({
|
|
||||||
build: {
|
|
||||||
lib: {
|
|
||||||
entry: {
|
|
||||||
index: './lib/main.ts',
|
|
||||||
vue: './lib/vue.ts',
|
|
||||||
testing: './lib/testing.ts',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
rollupOptions: {
|
|
||||||
external: ['vue'],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
})
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
import { defineConfig } from "vitest/config"
|
|
||||||
|
|
||||||
export default defineConfig({
|
|
||||||
test: {
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
2
packages/dioc/vue.d.ts
vendored
2
packages/dioc/vue.d.ts
vendored
@@ -1,2 +0,0 @@
|
|||||||
export { default } from "./dist/vue.d.ts"
|
|
||||||
export * from "./dist/vue.d.ts"
|
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
"axios": "^1.6.2",
|
"axios": "^1.6.2",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"cookie-es": "^1.0.0",
|
"cookie-es": "^1.0.0",
|
||||||
"dioc": "workspace:^",
|
"dioc": "^1.0.1",
|
||||||
"esprima": "^4.0.1",
|
"esprima": "^4.0.1",
|
||||||
"events": "^3.3.0",
|
"events": "^3.3.0",
|
||||||
"fp-ts": "^2.16.1",
|
"fp-ts": "^2.16.1",
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import {
|
|||||||
} from ".."
|
} from ".."
|
||||||
|
|
||||||
import { Service } from "dioc"
|
import { Service } from "dioc"
|
||||||
import { useService } from "dioc/vue"
|
|
||||||
import MiniSearch from "minisearch"
|
import MiniSearch from "minisearch"
|
||||||
import IconCheckCircle from "~/components/app/spotlight/entry/IconSelected.vue"
|
import IconCheckCircle from "~/components/app/spotlight/entry/IconSelected.vue"
|
||||||
import { InterceptorService } from "~/services/interceptor.service"
|
import { InterceptorService } from "~/services/interceptor.service"
|
||||||
@@ -30,6 +29,7 @@ export class InterceptorSpotlightSearcherService
|
|||||||
public searcherSectionTitle = this.t("settings.interceptor")
|
public searcherSectionTitle = this.t("settings.interceptor")
|
||||||
|
|
||||||
private readonly spotlight = this.bind(SpotlightService)
|
private readonly spotlight = this.bind(SpotlightService)
|
||||||
|
private interceptorService = this.bind(InterceptorService)
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super()
|
super()
|
||||||
@@ -37,8 +37,6 @@ export class InterceptorSpotlightSearcherService
|
|||||||
this.spotlight.registerSearcher(this)
|
this.spotlight.registerSearcher(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
private interceptorService = useService(InterceptorService)
|
|
||||||
|
|
||||||
createSearchSession(
|
createSearchSession(
|
||||||
query: Readonly<Ref<string>>
|
query: Readonly<Ref<string>>
|
||||||
): [Ref<SpotlightSearcherSessionState>, () => void] {
|
): [Ref<SpotlightSearcherSessionState>, () => void] {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
"@vueuse/core": "^10.4.1",
|
"@vueuse/core": "^10.4.1",
|
||||||
"axios": "^0.21.4",
|
"axios": "^0.21.4",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"dioc": "workspace:^",
|
"dioc": "^1.0.1",
|
||||||
"environments.api": "link:@platform/environments/environments.api",
|
"environments.api": "link:@platform/environments/environments.api",
|
||||||
"event": "link:@tauri-apps/api/event",
|
"event": "link:@tauri-apps/api/event",
|
||||||
"fp-ts": "^2.16.0",
|
"fp-ts": "^2.16.0",
|
||||||
|
|||||||
571
pnpm-lock.yaml
generated
571
pnpm-lock.yaml
generated
@@ -66,25 +66,6 @@ importers:
|
|||||||
specifier: ^5.2.2
|
specifier: ^5.2.2
|
||||||
version: 5.2.2
|
version: 5.2.2
|
||||||
|
|
||||||
packages/dioc:
|
|
||||||
dependencies:
|
|
||||||
rxjs:
|
|
||||||
specifier: ^7.8.1
|
|
||||||
version: 7.8.1
|
|
||||||
vue:
|
|
||||||
specifier: 3.3.9
|
|
||||||
version: 3.3.9(typescript@4.9.4)
|
|
||||||
devDependencies:
|
|
||||||
typescript:
|
|
||||||
specifier: ^4.9.4
|
|
||||||
version: 4.9.4
|
|
||||||
vite:
|
|
||||||
specifier: ^4.0.4
|
|
||||||
version: 4.0.4(@types/node@17.0.27)
|
|
||||||
vitest:
|
|
||||||
specifier: ^0.29.3
|
|
||||||
version: 0.29.8
|
|
||||||
|
|
||||||
packages/hoppscotch-backend:
|
packages/hoppscotch-backend:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@apollo/server':
|
'@apollo/server':
|
||||||
@@ -458,8 +439,8 @@ importers:
|
|||||||
specifier: ^1.0.0
|
specifier: ^1.0.0
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
dioc:
|
dioc:
|
||||||
specifier: workspace:^
|
specifier: ^1.0.1
|
||||||
version: link:../dioc
|
version: 1.0.1(vue@3.3.9)
|
||||||
esprima:
|
esprima:
|
||||||
specifier: ^4.0.1
|
specifier: ^4.0.1
|
||||||
version: 4.0.1
|
version: 4.0.1
|
||||||
@@ -914,8 +895,8 @@ importers:
|
|||||||
specifier: ^6.0.3
|
specifier: ^6.0.3
|
||||||
version: 6.0.3
|
version: 6.0.3
|
||||||
dioc:
|
dioc:
|
||||||
specifier: workspace:^
|
specifier: ^1.0.1
|
||||||
version: link:../dioc
|
version: 1.0.1(vue@3.3.9)
|
||||||
environments.api:
|
environments.api:
|
||||||
specifier: link:@platform/environments/environments.api
|
specifier: link:@platform/environments/environments.api
|
||||||
version: link:@platform/environments/environments.api
|
version: link:@platform/environments/environments.api
|
||||||
@@ -4773,15 +4754,6 @@ packages:
|
|||||||
rollup-plugin-node-polyfills: 0.2.1
|
rollup-plugin-node-polyfills: 0.2.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@esbuild/android-arm64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [android]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/android-arm64@0.18.20:
|
/@esbuild/android-arm64@0.18.20:
|
||||||
resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
|
resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -4807,15 +4779,6 @@ packages:
|
|||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/android-arm@0.16.17:
|
|
||||||
resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm]
|
|
||||||
os: [android]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/android-arm@0.18.20:
|
/@esbuild/android-arm@0.18.20:
|
||||||
resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
|
resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -4833,15 +4796,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/android-x64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [android]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/android-x64@0.18.20:
|
/@esbuild/android-x64@0.18.20:
|
||||||
resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
|
resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -4859,15 +4813,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/darwin-arm64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [darwin]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/darwin-arm64@0.18.20:
|
/@esbuild/darwin-arm64@0.18.20:
|
||||||
resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
|
resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -4885,15 +4830,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/darwin-x64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [darwin]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/darwin-x64@0.18.20:
|
/@esbuild/darwin-x64@0.18.20:
|
||||||
resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
|
resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -4911,15 +4847,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/freebsd-arm64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [freebsd]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/freebsd-arm64@0.18.20:
|
/@esbuild/freebsd-arm64@0.18.20:
|
||||||
resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
|
resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -4937,15 +4864,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/freebsd-x64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [freebsd]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/freebsd-x64@0.18.20:
|
/@esbuild/freebsd-x64@0.18.20:
|
||||||
resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
|
resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -4963,15 +4881,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-arm64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-arm64@0.18.20:
|
/@esbuild/linux-arm64@0.18.20:
|
||||||
resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
|
resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -4989,15 +4898,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-arm@0.16.17:
|
|
||||||
resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-arm@0.18.20:
|
/@esbuild/linux-arm@0.18.20:
|
||||||
resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
|
resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5015,15 +4915,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-ia32@0.16.17:
|
|
||||||
resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [ia32]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-ia32@0.18.20:
|
/@esbuild/linux-ia32@0.18.20:
|
||||||
resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
|
resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5049,15 +4940,6 @@ packages:
|
|||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-loong64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [loong64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-loong64@0.18.20:
|
/@esbuild/linux-loong64@0.18.20:
|
||||||
resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
|
resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5075,15 +4957,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-mips64el@0.16.17:
|
|
||||||
resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [mips64el]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-mips64el@0.18.20:
|
/@esbuild/linux-mips64el@0.18.20:
|
||||||
resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
|
resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5101,15 +4974,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-ppc64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [ppc64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-ppc64@0.18.20:
|
/@esbuild/linux-ppc64@0.18.20:
|
||||||
resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
|
resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5127,15 +4991,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-riscv64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [riscv64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-riscv64@0.18.20:
|
/@esbuild/linux-riscv64@0.18.20:
|
||||||
resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
|
resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5153,15 +5008,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-s390x@0.16.17:
|
|
||||||
resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [s390x]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-s390x@0.18.20:
|
/@esbuild/linux-s390x@0.18.20:
|
||||||
resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
|
resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5179,15 +5025,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-x64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/linux-x64@0.18.20:
|
/@esbuild/linux-x64@0.18.20:
|
||||||
resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
|
resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5205,15 +5042,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/netbsd-x64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [netbsd]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/netbsd-x64@0.18.20:
|
/@esbuild/netbsd-x64@0.18.20:
|
||||||
resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
|
resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5231,15 +5059,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/openbsd-x64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [openbsd]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/openbsd-x64@0.18.20:
|
/@esbuild/openbsd-x64@0.18.20:
|
||||||
resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
|
resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5257,15 +5076,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/sunos-x64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [sunos]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/sunos-x64@0.18.20:
|
/@esbuild/sunos-x64@0.18.20:
|
||||||
resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
|
resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5283,15 +5093,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/win32-arm64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [win32]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/win32-arm64@0.18.20:
|
/@esbuild/win32-arm64@0.18.20:
|
||||||
resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
|
resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5309,15 +5110,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/win32-ia32@0.16.17:
|
|
||||||
resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [ia32]
|
|
||||||
os: [win32]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/win32-ia32@0.18.20:
|
/@esbuild/win32-ia32@0.18.20:
|
||||||
resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
|
resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -5335,15 +5127,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@esbuild/win32-x64@0.16.17:
|
|
||||||
resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [win32]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@esbuild/win32-x64@0.18.20:
|
/@esbuild/win32-x64@0.18.20:
|
||||||
resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
|
resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -10366,10 +10149,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==}
|
resolution: {integrity: sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/node@18.17.6:
|
|
||||||
resolution: {integrity: sha512-fGmT/P7z7ecA6bv/ia5DlaWCH4YeZvAQMNpUhrJjtAhOhZfoxS1VLUgU2pdk63efSjQaOJWdXMuAJsws+8I6dg==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@types/node@18.18.8:
|
/@types/node@18.18.8:
|
||||||
resolution: {integrity: sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==}
|
resolution: {integrity: sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -11444,14 +11223,6 @@ packages:
|
|||||||
vue: 3.3.9(typescript@5.3.2)
|
vue: 3.3.9(typescript@5.3.2)
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vitest/expect@0.29.8:
|
|
||||||
resolution: {integrity: sha512-xlcVXn5I5oTq6NiZSY3ykyWixBxr5mG8HYtjvpgg6KaqHm0mvhX18xuwl5YGxIRNt/A5jidd7CWcNHrSvgaQqQ==}
|
|
||||||
dependencies:
|
|
||||||
'@vitest/spy': 0.29.8
|
|
||||||
'@vitest/utils': 0.29.8
|
|
||||||
chai: 4.3.7
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@vitest/expect@0.34.6:
|
/@vitest/expect@0.34.6:
|
||||||
resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==}
|
resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -11460,14 +11231,6 @@ packages:
|
|||||||
chai: 4.3.10
|
chai: 4.3.10
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vitest/runner@0.29.8:
|
|
||||||
resolution: {integrity: sha512-FzdhnRDwEr/A3Oo1jtIk/B952BBvP32n1ObMEb23oEJNO+qO5cBet6M2XWIDQmA7BDKGKvmhUf2naXyp/2JEwQ==}
|
|
||||||
dependencies:
|
|
||||||
'@vitest/utils': 0.29.8
|
|
||||||
p-limit: 4.0.0
|
|
||||||
pathe: 1.1.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@vitest/runner@0.34.6:
|
/@vitest/runner@0.34.6:
|
||||||
resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==}
|
resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -11484,27 +11247,12 @@ packages:
|
|||||||
pretty-format: 29.7.0
|
pretty-format: 29.7.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vitest/spy@0.29.8:
|
|
||||||
resolution: {integrity: sha512-VdjBe9w34vOMl5I5mYEzNX8inTxrZ+tYUVk9jxaZJmHFwmDFC/GV3KBFTA/JKswr3XHvZL+FE/yq5EVhb6pSAw==}
|
|
||||||
dependencies:
|
|
||||||
tinyspy: 1.1.1
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@vitest/spy@0.34.6:
|
/@vitest/spy@0.34.6:
|
||||||
resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==}
|
resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
tinyspy: 2.1.1
|
tinyspy: 2.1.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vitest/utils@0.29.8:
|
|
||||||
resolution: {integrity: sha512-qGzuf3vrTbnoY+RjjVVIBYfuWMjn3UMUqyQtdGNZ6ZIIyte7B37exj6LaVkrZiUTvzSadVvO/tJm8AEgbGCBPg==}
|
|
||||||
dependencies:
|
|
||||||
cli-truncate: 3.1.0
|
|
||||||
diff: 5.1.0
|
|
||||||
loupe: 2.3.6
|
|
||||||
pretty-format: 27.5.1
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@vitest/utils@0.34.6:
|
/@vitest/utils@0.34.6:
|
||||||
resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==}
|
resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -11965,7 +11713,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-ssr': 3.3.9
|
'@vue/compiler-ssr': 3.3.9
|
||||||
'@vue/shared': 3.3.9
|
'@vue/shared': 3.3.9
|
||||||
vue: 3.3.9(typescript@4.9.4)
|
vue: 3.3.9(typescript@4.9.5)
|
||||||
|
|
||||||
/@vue/shared@3.2.45:
|
/@vue/shared@3.2.45:
|
||||||
resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==}
|
resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==}
|
||||||
@@ -13440,19 +13188,6 @@ packages:
|
|||||||
type-detect: 4.0.8
|
type-detect: 4.0.8
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/chai@4.3.7:
|
|
||||||
resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==}
|
|
||||||
engines: {node: '>=4'}
|
|
||||||
dependencies:
|
|
||||||
assertion-error: 1.1.0
|
|
||||||
check-error: 1.0.2
|
|
||||||
deep-eql: 4.1.3
|
|
||||||
get-func-name: 2.0.0
|
|
||||||
loupe: 2.3.6
|
|
||||||
pathval: 1.1.1
|
|
||||||
type-detect: 4.0.8
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/chalk@2.4.2:
|
/chalk@2.4.2:
|
||||||
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -13546,10 +13281,6 @@ packages:
|
|||||||
engines: {node: '>=4.0.0'}
|
engines: {node: '>=4.0.0'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/check-error@1.0.2:
|
|
||||||
resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/check-error@1.0.3:
|
/check-error@1.0.3:
|
||||||
resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
|
resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -14548,10 +14279,17 @@ packages:
|
|||||||
engines: {node: '>=0.3.1'}
|
engines: {node: '>=0.3.1'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/diff@5.1.0:
|
/dioc@1.0.1(vue@3.3.9):
|
||||||
resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==}
|
resolution: {integrity: sha512-G3T8ThO2WehWJFrKp687wpXU//WLueJA6t5L7yirhWN/jn7BFNRKwskbJn0LEEd6gqI6rwiQE48f2Zqt5jvYVw==}
|
||||||
engines: {node: '>=0.3.1'}
|
peerDependencies:
|
||||||
dev: true
|
vue: 3.3.9
|
||||||
|
peerDependenciesMeta:
|
||||||
|
vue:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
rxjs: 7.8.1
|
||||||
|
vue: 3.3.9(typescript@5.3.2)
|
||||||
|
dev: false
|
||||||
|
|
||||||
/dir-glob@3.0.1:
|
/dir-glob@3.0.1:
|
||||||
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
|
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
|
||||||
@@ -15387,36 +15125,6 @@ packages:
|
|||||||
esbuild-windows-64: 0.15.15
|
esbuild-windows-64: 0.15.15
|
||||||
esbuild-windows-arm64: 0.15.15
|
esbuild-windows-arm64: 0.15.15
|
||||||
|
|
||||||
/esbuild@0.16.17:
|
|
||||||
resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
hasBin: true
|
|
||||||
requiresBuild: true
|
|
||||||
optionalDependencies:
|
|
||||||
'@esbuild/android-arm': 0.16.17
|
|
||||||
'@esbuild/android-arm64': 0.16.17
|
|
||||||
'@esbuild/android-x64': 0.16.17
|
|
||||||
'@esbuild/darwin-arm64': 0.16.17
|
|
||||||
'@esbuild/darwin-x64': 0.16.17
|
|
||||||
'@esbuild/freebsd-arm64': 0.16.17
|
|
||||||
'@esbuild/freebsd-x64': 0.16.17
|
|
||||||
'@esbuild/linux-arm': 0.16.17
|
|
||||||
'@esbuild/linux-arm64': 0.16.17
|
|
||||||
'@esbuild/linux-ia32': 0.16.17
|
|
||||||
'@esbuild/linux-loong64': 0.16.17
|
|
||||||
'@esbuild/linux-mips64el': 0.16.17
|
|
||||||
'@esbuild/linux-ppc64': 0.16.17
|
|
||||||
'@esbuild/linux-riscv64': 0.16.17
|
|
||||||
'@esbuild/linux-s390x': 0.16.17
|
|
||||||
'@esbuild/linux-x64': 0.16.17
|
|
||||||
'@esbuild/netbsd-x64': 0.16.17
|
|
||||||
'@esbuild/openbsd-x64': 0.16.17
|
|
||||||
'@esbuild/sunos-x64': 0.16.17
|
|
||||||
'@esbuild/win32-arm64': 0.16.17
|
|
||||||
'@esbuild/win32-ia32': 0.16.17
|
|
||||||
'@esbuild/win32-x64': 0.16.17
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/esbuild@0.18.20:
|
/esbuild@0.18.20:
|
||||||
resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
|
resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -18060,6 +17768,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==}
|
resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==}
|
||||||
dependencies:
|
dependencies:
|
||||||
has: 1.0.3
|
has: 1.0.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
/is-date-object@1.0.5:
|
/is-date-object@1.0.5:
|
||||||
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
|
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
|
||||||
@@ -21381,15 +21090,6 @@ packages:
|
|||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
/mlly@1.2.0:
|
|
||||||
resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==}
|
|
||||||
dependencies:
|
|
||||||
acorn: 8.11.2
|
|
||||||
pathe: 1.1.1
|
|
||||||
pkg-types: 1.0.3
|
|
||||||
ufo: 1.2.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/mlly@1.4.0:
|
/mlly@1.4.0:
|
||||||
resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==}
|
resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -22241,10 +21941,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==}
|
resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/pathe@1.1.0:
|
|
||||||
resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/pathe@1.1.1:
|
/pathe@1.1.1:
|
||||||
resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
|
resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
|
||||||
|
|
||||||
@@ -22398,15 +22094,6 @@ packages:
|
|||||||
/postcss-value-parser@4.2.0:
|
/postcss-value-parser@4.2.0:
|
||||||
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
|
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
|
||||||
|
|
||||||
/postcss@8.4.21:
|
|
||||||
resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==}
|
|
||||||
engines: {node: ^10 || ^12 || >=14}
|
|
||||||
dependencies:
|
|
||||||
nanoid: 3.3.6
|
|
||||||
picocolors: 1.0.0
|
|
||||||
source-map-js: 1.0.2
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/postcss@8.4.31:
|
/postcss@8.4.31:
|
||||||
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
|
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
|
||||||
engines: {node: ^10 || ^12 || >=14}
|
engines: {node: ^10 || ^12 || >=14}
|
||||||
@@ -23265,6 +22952,7 @@ packages:
|
|||||||
is-core-module: 2.9.0
|
is-core-module: 2.9.0
|
||||||
path-parse: 1.0.7
|
path-parse: 1.0.7
|
||||||
supports-preserve-symlinks-flag: 1.0.0
|
supports-preserve-symlinks-flag: 1.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/resolve@1.22.4:
|
/resolve@1.22.4:
|
||||||
resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==}
|
resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==}
|
||||||
@@ -24760,21 +24448,11 @@ packages:
|
|||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/tinypool@0.4.0:
|
|
||||||
resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==}
|
|
||||||
engines: {node: '>=14.0.0'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/tinypool@0.7.0:
|
/tinypool@0.7.0:
|
||||||
resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==}
|
resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/tinyspy@1.1.1:
|
|
||||||
resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==}
|
|
||||||
engines: {node: '>=14.0.0'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/tinyspy@2.1.1:
|
/tinyspy@2.1.1:
|
||||||
resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==}
|
resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
@@ -25389,11 +25067,6 @@ packages:
|
|||||||
engines: {node: '>=4.2.0'}
|
engines: {node: '>=4.2.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
/typescript@4.9.4:
|
|
||||||
resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==}
|
|
||||||
engines: {node: '>=4.2.0'}
|
|
||||||
hasBin: true
|
|
||||||
|
|
||||||
/typescript@4.9.5:
|
/typescript@4.9.5:
|
||||||
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
|
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
|
||||||
engines: {node: '>=4.2.0'}
|
engines: {node: '>=4.2.0'}
|
||||||
@@ -26222,28 +25895,6 @@ packages:
|
|||||||
- terser
|
- terser
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vite-node@0.29.8(@types/node@18.17.6):
|
|
||||||
resolution: {integrity: sha512-b6OtCXfk65L6SElVM20q5G546yu10/kNrhg08afEoWlFRJXFq9/6glsvSVY+aI6YeC1tu2TtAqI2jHEQmOmsFw==}
|
|
||||||
engines: {node: '>=v14.16.0'}
|
|
||||||
hasBin: true
|
|
||||||
dependencies:
|
|
||||||
cac: 6.7.14
|
|
||||||
debug: 4.3.4(supports-color@9.2.2)
|
|
||||||
mlly: 1.2.0
|
|
||||||
pathe: 1.1.0
|
|
||||||
picocolors: 1.0.0
|
|
||||||
vite: 4.5.0(@types/node@18.17.6)
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- '@types/node'
|
|
||||||
- less
|
|
||||||
- lightningcss
|
|
||||||
- sass
|
|
||||||
- stylus
|
|
||||||
- sugarss
|
|
||||||
- supports-color
|
|
||||||
- terser
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/vite-node@0.34.6(@types/node@18.18.8)(sass@1.69.5)(terser@5.24.0):
|
/vite-node@0.34.6(@types/node@18.18.8)(sass@1.69.5)(terser@5.24.0):
|
||||||
resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==}
|
resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==}
|
||||||
engines: {node: '>=v14.18.0'}
|
engines: {node: '>=v14.18.0'}
|
||||||
@@ -26870,74 +26521,6 @@ packages:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
|
|
||||||
/vite@4.0.4(@types/node@17.0.27):
|
|
||||||
resolution: {integrity: sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==}
|
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
|
||||||
hasBin: true
|
|
||||||
peerDependencies:
|
|
||||||
'@types/node': '>= 14'
|
|
||||||
less: '*'
|
|
||||||
sass: '*'
|
|
||||||
stylus: '*'
|
|
||||||
sugarss: '*'
|
|
||||||
terser: ^5.4.0
|
|
||||||
peerDependenciesMeta:
|
|
||||||
'@types/node':
|
|
||||||
optional: true
|
|
||||||
less:
|
|
||||||
optional: true
|
|
||||||
sass:
|
|
||||||
optional: true
|
|
||||||
stylus:
|
|
||||||
optional: true
|
|
||||||
sugarss:
|
|
||||||
optional: true
|
|
||||||
terser:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
|
||||||
'@types/node': 17.0.27
|
|
||||||
esbuild: 0.16.17
|
|
||||||
postcss: 8.4.21
|
|
||||||
resolve: 1.22.1
|
|
||||||
rollup: 3.29.4
|
|
||||||
optionalDependencies:
|
|
||||||
fsevents: 2.3.3
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/vite@4.0.4(@types/node@18.17.6):
|
|
||||||
resolution: {integrity: sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==}
|
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
|
||||||
hasBin: true
|
|
||||||
peerDependencies:
|
|
||||||
'@types/node': '>= 14'
|
|
||||||
less: '*'
|
|
||||||
sass: '*'
|
|
||||||
stylus: '*'
|
|
||||||
sugarss: '*'
|
|
||||||
terser: ^5.4.0
|
|
||||||
peerDependenciesMeta:
|
|
||||||
'@types/node':
|
|
||||||
optional: true
|
|
||||||
less:
|
|
||||||
optional: true
|
|
||||||
sass:
|
|
||||||
optional: true
|
|
||||||
stylus:
|
|
||||||
optional: true
|
|
||||||
sugarss:
|
|
||||||
optional: true
|
|
||||||
terser:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
|
||||||
'@types/node': 18.17.6
|
|
||||||
esbuild: 0.16.17
|
|
||||||
postcss: 8.4.21
|
|
||||||
resolve: 1.22.1
|
|
||||||
rollup: 3.29.4
|
|
||||||
optionalDependencies:
|
|
||||||
fsevents: 2.3.3
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/vite@4.5.0(@types/node@17.0.27)(sass@1.53.0)(terser@5.24.0):
|
/vite@4.5.0(@types/node@17.0.27)(sass@1.53.0)(terser@5.24.0):
|
||||||
resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==}
|
resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
@@ -27006,49 +26589,13 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 17.0.27
|
'@types/node': 17.0.27
|
||||||
esbuild: 0.18.20
|
esbuild: 0.18.20
|
||||||
postcss: 8.4.31
|
postcss: 8.4.32
|
||||||
rollup: 3.29.4
|
rollup: 3.29.4
|
||||||
sass: 1.69.5
|
sass: 1.69.5
|
||||||
terser: 5.24.0
|
terser: 5.24.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
|
|
||||||
/vite@4.5.0(@types/node@18.17.6):
|
|
||||||
resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==}
|
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
|
||||||
hasBin: true
|
|
||||||
peerDependencies:
|
|
||||||
'@types/node': '>= 14'
|
|
||||||
less: '*'
|
|
||||||
lightningcss: ^1.21.0
|
|
||||||
sass: '*'
|
|
||||||
stylus: '*'
|
|
||||||
sugarss: '*'
|
|
||||||
terser: ^5.4.0
|
|
||||||
peerDependenciesMeta:
|
|
||||||
'@types/node':
|
|
||||||
optional: true
|
|
||||||
less:
|
|
||||||
optional: true
|
|
||||||
lightningcss:
|
|
||||||
optional: true
|
|
||||||
sass:
|
|
||||||
optional: true
|
|
||||||
stylus:
|
|
||||||
optional: true
|
|
||||||
sugarss:
|
|
||||||
optional: true
|
|
||||||
terser:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
|
||||||
'@types/node': 18.17.6
|
|
||||||
esbuild: 0.18.20
|
|
||||||
postcss: 8.4.32
|
|
||||||
rollup: 3.29.4
|
|
||||||
optionalDependencies:
|
|
||||||
fsevents: 2.3.3
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.24.0):
|
/vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.24.0):
|
||||||
resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==}
|
resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
@@ -27123,71 +26670,6 @@ packages:
|
|||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vitest@0.29.8:
|
|
||||||
resolution: {integrity: sha512-JIAVi2GK5cvA6awGpH0HvH/gEG9PZ0a/WoxdiV3PmqK+3CjQMf8c+J/Vhv4mdZ2nRyXFw66sAg6qz7VNkaHfDQ==}
|
|
||||||
engines: {node: '>=v14.16.0'}
|
|
||||||
hasBin: true
|
|
||||||
peerDependencies:
|
|
||||||
'@edge-runtime/vm': '*'
|
|
||||||
'@vitest/browser': '*'
|
|
||||||
'@vitest/ui': '*'
|
|
||||||
happy-dom: '*'
|
|
||||||
jsdom: '*'
|
|
||||||
playwright: '*'
|
|
||||||
safaridriver: '*'
|
|
||||||
webdriverio: '*'
|
|
||||||
peerDependenciesMeta:
|
|
||||||
'@edge-runtime/vm':
|
|
||||||
optional: true
|
|
||||||
'@vitest/browser':
|
|
||||||
optional: true
|
|
||||||
'@vitest/ui':
|
|
||||||
optional: true
|
|
||||||
happy-dom:
|
|
||||||
optional: true
|
|
||||||
jsdom:
|
|
||||||
optional: true
|
|
||||||
playwright:
|
|
||||||
optional: true
|
|
||||||
safaridriver:
|
|
||||||
optional: true
|
|
||||||
webdriverio:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
|
||||||
'@types/chai': 4.3.5
|
|
||||||
'@types/chai-subset': 1.3.3
|
|
||||||
'@types/node': 18.17.6
|
|
||||||
'@vitest/expect': 0.29.8
|
|
||||||
'@vitest/runner': 0.29.8
|
|
||||||
'@vitest/spy': 0.29.8
|
|
||||||
'@vitest/utils': 0.29.8
|
|
||||||
acorn: 8.10.0
|
|
||||||
acorn-walk: 8.2.0
|
|
||||||
cac: 6.7.14
|
|
||||||
chai: 4.3.7
|
|
||||||
debug: 4.3.4(supports-color@9.2.2)
|
|
||||||
local-pkg: 0.4.3
|
|
||||||
pathe: 1.1.1
|
|
||||||
picocolors: 1.0.0
|
|
||||||
source-map: 0.6.1
|
|
||||||
std-env: 3.4.0
|
|
||||||
strip-literal: 1.3.0
|
|
||||||
tinybench: 2.5.0
|
|
||||||
tinypool: 0.4.0
|
|
||||||
tinyspy: 1.1.1
|
|
||||||
vite: 4.0.4(@types/node@18.17.6)
|
|
||||||
vite-node: 0.29.8(@types/node@18.17.6)
|
|
||||||
why-is-node-running: 2.2.2
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- less
|
|
||||||
- lightningcss
|
|
||||||
- sass
|
|
||||||
- stylus
|
|
||||||
- sugarss
|
|
||||||
- supports-color
|
|
||||||
- terser
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/vitest@0.34.6(sass@1.69.5)(terser@5.24.0):
|
/vitest@0.34.6(sass@1.69.5)(terser@5.24.0):
|
||||||
resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==}
|
resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==}
|
||||||
engines: {node: '>=v14.18.0'}
|
engines: {node: '>=v14.18.0'}
|
||||||
@@ -27703,21 +27185,6 @@ packages:
|
|||||||
'@vue/shared': 3.3.9
|
'@vue/shared': 3.3.9
|
||||||
typescript: 4.9.3
|
typescript: 4.9.3
|
||||||
|
|
||||||
/vue@3.3.9(typescript@4.9.4):
|
|
||||||
resolution: {integrity: sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==}
|
|
||||||
peerDependencies:
|
|
||||||
typescript: '*'
|
|
||||||
peerDependenciesMeta:
|
|
||||||
typescript:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
|
||||||
'@vue/compiler-dom': 3.3.9
|
|
||||||
'@vue/compiler-sfc': 3.3.9
|
|
||||||
'@vue/runtime-dom': 3.3.9
|
|
||||||
'@vue/server-renderer': 3.3.9(vue@3.3.9)
|
|
||||||
'@vue/shared': 3.3.9
|
|
||||||
typescript: 4.9.4
|
|
||||||
|
|
||||||
/vue@3.3.9(typescript@4.9.5):
|
/vue@3.3.9(typescript@4.9.5):
|
||||||
resolution: {integrity: sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==}
|
resolution: {integrity: sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
|||||||
Reference in New Issue
Block a user