From 0cae9034dd7244b5a53b16975617350bced5eb8d Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Wed, 12 Oct 2022 12:03:38 -0700 Subject: [PATCH 01/16] Removing packages that were moved to the tools repo --- language/dsl/BUILD | 31 -- language/dsl/README.md | 9 - language/dsl/src/__tests__/asset-api.test.tsx | 353 ------------------ .../dsl/src/__tests__/edge-cases.test.tsx | 64 ---- .../src/__tests__/helpers/asset-library.tsx | 297 --------------- .../src/__tests__/helpers/mock-data-refs.ts | 21 -- language/dsl/src/__tests__/json.test.ts | 11 - language/dsl/src/__tests__/jsx.test.tsx | 107 ------ language/dsl/src/__tests__/schema.test.tsx | 294 --------------- language/dsl/src/__tests__/switch.test.tsx | 250 ------------- language/dsl/src/__tests__/template.test.tsx | 266 ------------- language/dsl/src/auto-id.tsx | 136 ------- .../src/compiler/__tests__/compiler.test.tsx | 113 ------ .../dsl/src/compiler/__tests__/schema.test.ts | 49 --- language/dsl/src/compiler/compiler.ts | 219 ----------- language/dsl/src/compiler/index.ts | 2 - language/dsl/src/compiler/schema.ts | 250 ------------- language/dsl/src/compiler/types.ts | 18 - language/dsl/src/components.tsx | 234 ------------ language/dsl/src/index.ts | 10 - .../__tests__/binding.test.ts | 36 -- .../__tests__/expression.test.ts | 8 - .../string-templates/__tests__/react.test.tsx | 74 ---- language/dsl/src/string-templates/index.ts | 172 --------- language/dsl/src/switch.tsx | 136 ------- language/dsl/src/template.tsx | 186 --------- language/dsl/src/types.ts | 81 ---- language/dsl/src/utils.tsx | 109 ------ language/vscode-player-syntax/.vscodeignore | 4 - language/vscode-player-syntax/BUILD | 15 - .../language-configuration.json | 30 -- language/vscode-player-syntax/package.json | 78 ---- .../syntaxes/player-binding-inline.json | 24 -- .../syntaxes/player-binding.tmLanguage.json | 95 ----- .../syntaxes/player-expression-inline.json | 24 -- .../player-expression.tmLanguage.json | 71 ---- tools/cli/BUILD | 110 ------ tools/cli/README.md | 65 ---- tools/cli/bin/dev | 17 - tools/cli/bin/run | 7 - tools/cli/package.json | 18 - tools/cli/src/__tests__/config.test.json | 5 - tools/cli/src/__tests__/config.test.ts | 101 ----- tools/cli/src/commands/dsl/compile.ts | 192 ---------- tools/cli/src/config.ts | 35 -- tools/cli/src/index.ts | 3 - tools/cli/src/plugins/index.ts | 22 -- tools/cli/src/utils/babel-register.ts | 15 - tools/cli/src/utils/base-command.ts | 169 --------- tools/cli/src/utils/compile-renderer.ts | 62 --- tools/cli/src/utils/diag-renderer.ts | 242 ------------ tools/cli/src/utils/fs.ts | 20 - tools/cli/src/utils/task-runner.ts | 137 ------- tools/cli/tsconfig.json | 6 - 54 files changed, 5103 deletions(-) delete mode 100644 language/dsl/BUILD delete mode 100644 language/dsl/README.md delete mode 100644 language/dsl/src/__tests__/asset-api.test.tsx delete mode 100644 language/dsl/src/__tests__/edge-cases.test.tsx delete mode 100644 language/dsl/src/__tests__/helpers/asset-library.tsx delete mode 100644 language/dsl/src/__tests__/helpers/mock-data-refs.ts delete mode 100644 language/dsl/src/__tests__/json.test.ts delete mode 100644 language/dsl/src/__tests__/jsx.test.tsx delete mode 100644 language/dsl/src/__tests__/schema.test.tsx delete mode 100644 language/dsl/src/__tests__/switch.test.tsx delete mode 100644 language/dsl/src/__tests__/template.test.tsx delete mode 100644 language/dsl/src/auto-id.tsx delete mode 100644 language/dsl/src/compiler/__tests__/compiler.test.tsx delete mode 100644 language/dsl/src/compiler/__tests__/schema.test.ts delete mode 100644 language/dsl/src/compiler/compiler.ts delete mode 100644 language/dsl/src/compiler/index.ts delete mode 100644 language/dsl/src/compiler/schema.ts delete mode 100644 language/dsl/src/compiler/types.ts delete mode 100644 language/dsl/src/components.tsx delete mode 100644 language/dsl/src/index.ts delete mode 100644 language/dsl/src/string-templates/__tests__/binding.test.ts delete mode 100644 language/dsl/src/string-templates/__tests__/expression.test.ts delete mode 100644 language/dsl/src/string-templates/__tests__/react.test.tsx delete mode 100644 language/dsl/src/string-templates/index.ts delete mode 100644 language/dsl/src/switch.tsx delete mode 100644 language/dsl/src/template.tsx delete mode 100644 language/dsl/src/types.ts delete mode 100644 language/dsl/src/utils.tsx delete mode 100644 language/vscode-player-syntax/.vscodeignore delete mode 100644 language/vscode-player-syntax/BUILD delete mode 100644 language/vscode-player-syntax/language-configuration.json delete mode 100644 language/vscode-player-syntax/package.json delete mode 100644 language/vscode-player-syntax/syntaxes/player-binding-inline.json delete mode 100644 language/vscode-player-syntax/syntaxes/player-binding.tmLanguage.json delete mode 100644 language/vscode-player-syntax/syntaxes/player-expression-inline.json delete mode 100644 language/vscode-player-syntax/syntaxes/player-expression.tmLanguage.json delete mode 100644 tools/cli/BUILD delete mode 100644 tools/cli/README.md delete mode 100755 tools/cli/bin/dev delete mode 100755 tools/cli/bin/run delete mode 100644 tools/cli/package.json delete mode 100644 tools/cli/src/__tests__/config.test.json delete mode 100644 tools/cli/src/__tests__/config.test.ts delete mode 100644 tools/cli/src/commands/dsl/compile.ts delete mode 100644 tools/cli/src/config.ts delete mode 100644 tools/cli/src/index.ts delete mode 100644 tools/cli/src/plugins/index.ts delete mode 100644 tools/cli/src/utils/babel-register.ts delete mode 100644 tools/cli/src/utils/base-command.ts delete mode 100644 tools/cli/src/utils/compile-renderer.ts delete mode 100644 tools/cli/src/utils/diag-renderer.ts delete mode 100644 tools/cli/src/utils/fs.ts delete mode 100644 tools/cli/src/utils/task-runner.ts delete mode 100644 tools/cli/tsconfig.json diff --git a/language/dsl/BUILD b/language/dsl/BUILD deleted file mode 100644 index 1865a8ed3..000000000 --- a/language/dsl/BUILD +++ /dev/null @@ -1,31 +0,0 @@ -load("//:index.bzl", "javascript_pipeline") - -javascript_pipeline( - name = "@player-ui/dsl", - dependencies = [ - "//core/types:@player-ui/types", - "@npm//@types/mkdirp", - "@npm//@types/signale", - "@npm//chalk", - "@npm//command-line-application", - "@npm//fs-extra", - "@npm//globby", - "@npm//jsonc-parser", - "@npm//mkdirp", - "@npm//react-flatten-children", - "@npm//react-json-reconciler", - "@npm//react-merge-refs", - "@npm//source-map-js", - "@npm//signale", - "@npm//ts-node", - "@npm//typescript", - "@npm//tapable-ts", - "@npm//dequal" - ], - peer_dependencies = [ - "@npm//react" - ], - test_data = [ - "@npm//@types/react" - ], -) diff --git a/language/dsl/README.md b/language/dsl/README.md deleted file mode 100644 index 07d409a59..000000000 --- a/language/dsl/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# DSL - -The `@player-ui/dsl` package provides the primitives and build tools to create Player Asset Component libraries, and statically generate Player JSON content using TSX. - -## Asset Component Libraries - -Similar to React, Vue, or other component libraries, in order for users to take advantage of the JSX capabilities, they need a library of common components to pull from. - -As an asset author, you can create and share a library of `Components` for content authors to import and leverage. diff --git a/language/dsl/src/__tests__/asset-api.test.tsx b/language/dsl/src/__tests__/asset-api.test.tsx deleted file mode 100644 index 8a871580c..000000000 --- a/language/dsl/src/__tests__/asset-api.test.tsx +++ /dev/null @@ -1,353 +0,0 @@ -import React from 'react'; -import { render } from 'react-json-reconciler'; -import { binding as b } from '../string-templates'; -import { Switch } from '../switch'; -import { Collection, Text, Input, ArrayProp } from './helpers/asset-library'; - -describe('components', () => { - it('automatically creates collections', async () => { - const element = ( - - - Foo - Bar - - - Foo - Bar - - - ); - - expect((await render(element)).jsonValue).toStrictEqual({ - id: 'root', - type: 'collection', - label: { - asset: { - id: 'label', - type: 'collection', - values: [ - { asset: { id: 'label-values-0', type: 'text', value: 'Foo' } }, - { asset: { id: 'label-values-1', type: 'text', value: 'Bar' } }, - ], - }, - }, - values: [ - { asset: { id: 'values-0', type: 'text', value: 'Foo' } }, - { asset: { id: 'values-1', type: 'text', value: 'Bar' } }, - ], - }); - }); - - it('automatically creates text assets', async () => { - const element = ( - - Foo {b`bar`.toString()} - - Foo - Bar - - - ); - - expect((await render(element)).jsonValue).toStrictEqual({ - id: 'root', - type: 'collection', - label: { - asset: { - id: 'label', - type: 'text', - value: 'Foo {{bar}}', - }, - }, - values: [ - { asset: { id: 'values-0', type: 'text', value: 'Foo' } }, - { asset: { id: 'values-1', type: 'text', value: 'Bar' } }, - ], - }); - }); - - it('works with fragments', async () => { - const element = ( - - - Label - - - <> - Foo - Bar - <> - Foo - Bar - - - - - - ); - - expect((await render(element)).jsonValue).toStrictEqual({ - id: 'root', - type: 'collection', - label: { asset: { id: 'label', type: 'text', value: 'Label' } }, - values: [ - { - asset: { - id: 'values-0', - type: 'text', - value: 'Foo', - }, - }, - { - asset: { - id: 'values-1', - type: 'text', - value: 'Bar', - }, - }, - { - asset: { - id: 'values-2', - type: 'text', - value: 'Foo', - }, - }, - { - asset: { - id: 'values-3', - type: 'text', - value: 'Bar', - }, - }, - { - asset: { - id: 'values-4', - type: 'text', - value: 'value-4', - }, - }, - ], - }); - }); - - describe('custom text modifier component', () => { - it('works with refs and layout effects', async () => { - const element = await render( - - Foo{' '} - - Bar - - - ); - - expect(element.jsonValue).toMatchInlineSnapshot(` - Object { - "id": "root", - "modifiers": Array [ - Object { - "name": "M0", - "type": "tag", - "value": "important", - }, - ], - "type": "text", - "value": "Foo [[M0]]Bar[[/M0]]", - } - `); - }); - }); - - describe('bindings', () => { - it('converts just a binding node into a ref', async () => { - const element = await render({b`foo.bar`.toString()}); - - expect(element.jsonValue).toStrictEqual({ - id: 'root', - type: 'text', - value: '{{foo.bar}}', - }); - }); - - it('converts a text string into refs', async () => { - const element = await render( - Label {b`foo.bar`.toString()} End - ); - - expect(element.jsonValue).toStrictEqual({ - id: 'root', - type: 'text', - value: 'Label {{foo.bar}} End', - }); - }); - - it('leaves bindings for expected props', async () => { - const element = await render( - - Input Label - - ); - - expect(element.jsonValue).toStrictEqual({ - id: 'root', - type: 'input', - binding: 'foo.bar.baz', - label: { - asset: { - type: 'text', - id: 'label', - value: 'Input Label', - }, - }, - }); - }); - }); - - describe('applicability', () => { - test('works with applicability prop', async () => { - const element = await render( - - Input Label - - ); - - expect(element.jsonValue).toStrictEqual({ - id: 'custom-id', - type: 'input', - applicability: '{{foo.bar.baz}}', - label: { - asset: { - type: 'text', - id: 'custom-id-label', - value: 'Input Label', - }, - }, - }); - }); - - test('works for boolean literals', async () => { - const element = await render( - - Input Label - - ); - - expect(element.jsonValue).toStrictEqual({ - id: 'custom-id', - type: 'input', - applicability: false, - label: { - asset: { - type: 'text', - id: 'custom-id-label', - value: 'Input Label', - }, - }, - }); - }); - }); - - it('auto-id', async () => { - const element = ( - - Text - - ); - - expect((await render(element)).jsonValue).toStrictEqual({ - id: 'first-thing', - type: 'collection', - label: { - asset: { - type: 'text', - id: 'first-thing-label', - value: 'Text', - }, - }, - }); - }); - - it('should allow for a binding-ref on any leaf property', async () => { - const element = ( - - ); - - expect((await render(element)).jsonValue).toStrictEqual({ - id: 'root', - metaData: { - optionalUnion: { - other: '{{foo}}', - }, - }, - optionalNumber: '{{foo.bar}}', - stuff: [], - type: 'assetWithArray', - }); - }); -}); - -describe('allows other props to be added to a slot', () => { - it('works with asset children', async () => { - const element = await render( - - - Input Label - - - ); - - expect(element.jsonValue).toStrictEqual({ - id: 'custom-id', - type: 'input', - label: { - customLabelProp: 'custom label slot value', - asset: { - type: 'text', - id: 'custom-id-label', - value: 'Input Label', - }, - }, - }); - }); - - it('works with switch children', async () => { - const element = await render( - - - - - Test - - - - - ); - - expect(element.jsonValue).toStrictEqual({ - id: 'custom-id', - type: 'input', - label: { - customLabelProp: 'custom label slot value', - staticSwitch: [ - { - asset: { - type: 'text', - id: 'custom-id-label-staticSwitch-0', - value: 'Test', - }, - case: true, - }, - ], - }, - }); - }); -}); diff --git a/language/dsl/src/__tests__/edge-cases.test.tsx b/language/dsl/src/__tests__/edge-cases.test.tsx deleted file mode 100644 index 5f35e1540..000000000 --- a/language/dsl/src/__tests__/edge-cases.test.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; -import { render } from '..'; -import { Collection, Input, Text } from './helpers/asset-library'; - -test('works with a Component that returns a Fragment of items', async () => { - const NestedItems = () => { - return ( - <> - Before Input - - After Input - - ); - }; - - const expected = { - id: 'root', - type: 'collection', - values: [ - { - asset: { - id: 'values-0', - type: 'text', - value: 'Before Input', - }, - }, - { - asset: { - id: 'values-1', - type: 'input', - }, - }, - { - asset: { - id: 'values-2', - type: 'text', - value: 'After Input', - }, - }, - ], - }; - - const contentWithFragment = await render( - - - - - - ); - - expect(contentWithFragment.jsonValue).toStrictEqual(expected); - - const contentWithoutFragment = await render( - - - Before Input - - After Input - - - ); - - expect(contentWithoutFragment.jsonValue).toStrictEqual(expected); -}); diff --git a/language/dsl/src/__tests__/helpers/asset-library.tsx b/language/dsl/src/__tests__/helpers/asset-library.tsx deleted file mode 100644 index e8d7e1b37..000000000 --- a/language/dsl/src/__tests__/helpers/asset-library.tsx +++ /dev/null @@ -1,297 +0,0 @@ -import React from 'react'; -import type { - Asset as AssetType, - AssetWrapper, - Binding, - Expression, -} from '@player-ui/types'; -import type { JsonNode, ValueType } from 'react-json-reconciler'; -import { - ArrayNode, - ObjectNode, - PropertyNode, - ValueNode, -} from 'react-json-reconciler'; -import { Asset, createSlot } from '../../components'; -import type { AssetPropsWithChildren, WithChildren } from '../../types'; -import type { BindingTemplateInstance } from '../../string-templates'; - -// #region - Asset Types - -const ActionRoles = [ - 'primary', - 'secondary', - 'tertiary', - 'upsell', - 'back', - 'link', -] as const; - -export type ActionRole = typeof ActionRoles[number]; - -export interface TextAsset extends AssetType<'text'> { - /** value of the text asset */ - value?: string; -} - -export interface CollectionAsset extends AssetType<'collection'> { - /** The collection items to show */ - values?: Array; - - /** The additional information to show */ - additionalInfo?: AssetWrapper; - - /** The result text to show */ - resultText?: AssetWrapper; - - /** The label defining the collection */ - label?: AssetWrapper; - - /** Actions attached to the collection */ - actions?: Array>; -} - -export interface ActionAsset extends AssetType<'action'> { - /** The transition value of the action in the state machine */ - value?: string; - - /** A text-like asset for the action's label */ - label?: AssetWrapper; - - /** An optional expression to execute before transitioning */ - exp?: Expression; - - /** more data */ - metaData?: { - /** Additional data to beacon */ - beacon?: string; - - /** A semantic hint to render the action in different user contexts */ - role?: ActionRole; - - /** Force transition to the next view without checking for validation TODO need to update this to support an expression */ - skipValidation?: boolean; - - /** Size of the button */ - size?: 'small' | 'medium' | 'large'; - - /** true to indicate the button should be disabled */ - disabled?: boolean; - }; -} - -export interface InputAsset extends AssetType<'input'> { - /** The location in the data-model to store the data */ - binding: Binding; - - /** Placeholder text when there is no value */ - placeholder?: string; - - /** Asset container for a field label. */ - label?: AssetWrapper; - - /** More stuff to show under the field */ - note?: AssetWrapper; -} - -export interface InfoAsset extends AssetType<'info'> { - /** Top level title for the view. */ - title?: AssetWrapper; - - /** Displayed below the top level title, typically in smaller text with a different color. */ - subtitle?: AssetWrapper; - - /** Actions for navigating in between views. */ - actions?: Array; - - /** Where the main content goes, this should be the body of the page. */ - primaryInfo?: AssetWrapper; - - /** Below the main content but above the actions, typically used for important links at the bottom of a view. */ - additionalInfo?: AssetWrapper; -} - -export interface ArrayProp { - /** A dummy id */ - id: string; -} -export interface AssetWithArrayProp extends AssetType<'assetWithArray'> { - /** An array of stuff to mimic validations */ - stuff: ArrayProp[]; - /** Want to make sure this will accept a binding */ - optionalNumber?: number; - - /** and nest into other */ - metaData?: { - /** more complicated types */ - optionalUnion?: - | 'foo' - | 'bar' - | { - /** including unions */ - other?: 'bar'; - }; - }; -} - -// #endregion - -// #region - Components - -/** Text asset */ -export const Text = (props: AssetPropsWithChildren) => { - return ( - - {props.children} - - ); -}; - -/** get the parent object of a node */ -const getParentObject = (node: JsonNode): ObjectNode | undefined => { - if (node.type === 'object') { - return node; - } - - if (!node.parent) { - return; - } - - return getParentObject(node.parent); -}; - -/** text modifier */ -const TextModifier = (props: { - /** value of modifier */ - value: string; - - /** type of modifier */ - type: string; - - /** the modifier content */ - children: React.ReactNode; -}) => { - const ref = React.useRef>(null); - - const [modifierName, setModifierName] = React.useState('M0'); - - React.useEffect(() => { - if (!ref.current) { - return; - } - - const objParent = getParentObject(ref.current); - - if (objParent?.type === 'object') { - const existingModifierArray = objParent.properties.find( - (p) => p.keyNode.value === 'modifiers' && p.valueNode?.type === 'array' - ); - - const newModifierLength = existingModifierArray - ? (existingModifierArray.valueNode as ArrayNode)?.items.length - : 0; - - const newModifierName = `M${newModifierLength}`; - - const modifierObject = new ObjectNode(); - modifierObject.properties.push( - new PropertyNode(new ValueNode('value'), new ValueNode(props.value)), - new PropertyNode(new ValueNode('type'), new ValueNode(props.type)), - new PropertyNode(new ValueNode('name'), new ValueNode(newModifierName)) - ); - - if (existingModifierArray) { - (existingModifierArray.valueNode as ArrayNode)?.items.push( - modifierObject - ); - } else { - const modifiers = new ArrayNode(); - modifiers.items.push(modifierObject); - objParent.properties.push( - new PropertyNode(new ValueNode('modifiers'), modifiers) - ); - } - - setModifierName(newModifierName); - } - }, []); - - return ( - - {`[[${modifierName}]]`} - {props.children} - {`[[/${modifierName}]]`} - - ); -}; - -Text.Modifier = TextModifier; - -/** collection asset */ -export const Collection = (props: AssetPropsWithChildren) => { - return ; -}; - -/** an asset to test setting keys on arrays */ -export const ArrayProp = ( - props: AssetPropsWithChildren -) => { - return ; -}; - -Collection.Values = createSlot({ - name: 'values', - isArray: true, - wrapInAsset: true, - TextComp: Text, -}); - -Collection.Actions = createSlot({ - name: 'actions', - isArray: true, -}); - -/** the factory for making a collection */ -const CollectionComp = (props: WithChildren) => { - return ( - - {props.children} - - ); -}; - -Collection.Label = createSlot({ - name: 'label', - TextComp: Text, - wrapInAsset: true, - CollectionComp, -}); - -/** input asset */ -export const Input = ( - props: Omit, 'binding'> & { - /** A binding type */ - binding?: BindingTemplateInstance; - } -) => { - const { binding, children, ...rest } = props; - - return ( - - {binding?.toValue()} - {children} - - ); -}; - -Input.Label = createSlot<{ - /** Some thing not in the asset */ - customLabelProp?: string; -}>({ - name: 'label', - TextComp: Text, - wrapInAsset: true, - CollectionComp, -}); - -// #endregion - Components diff --git a/language/dsl/src/__tests__/helpers/mock-data-refs.ts b/language/dsl/src/__tests__/helpers/mock-data-refs.ts deleted file mode 100644 index fa58436d7..000000000 --- a/language/dsl/src/__tests__/helpers/mock-data-refs.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { Language, Schema } from '@player-ui/types'; - -export const FooTypeRef: Language.DataTypeRef = { - type: 'FooType', -}; - -export const BarTypeRef: Language.DataTypeRef = { - type: 'BarType', -}; - -export const LocalBazType: Schema.DataType = { - type: 'BazType', - default: false, - validation: [ - { - type: 'someValidation', - message: 'some message', - options: ['1', '2'], - }, - ], -}; diff --git a/language/dsl/src/__tests__/json.test.ts b/language/dsl/src/__tests__/json.test.ts deleted file mode 100644 index bdca1e06f..000000000 --- a/language/dsl/src/__tests__/json.test.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { fromJSON, toJSON } from '..'; - -test('converts back and forth', () => { - const testObj = { - foo: [true, 'bar', { key: 'val' }], - bar: null, - other: 2, - }; - - expect(toJSON(fromJSON(testObj))).toStrictEqual(testObj); -}); diff --git a/language/dsl/src/__tests__/jsx.test.tsx b/language/dsl/src/__tests__/jsx.test.tsx deleted file mode 100644 index 446b2df96..000000000 --- a/language/dsl/src/__tests__/jsx.test.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import React from 'react'; -import { render } from 'react-json-reconciler'; -import { toJsonProperties } from '../utils'; -import { ArrayProp, Collection, Text } from './helpers/asset-library'; -import { binding as b, expression as e } from '..'; - -const expectedBasicCollection = { - id: 'root', - type: 'collection', - label: { asset: { id: 'label', type: 'text', value: 'Label' } }, - values: [ - { - asset: { - id: 'values-0', - type: 'text', - value: 'value-1', - }, - }, - { - asset: { - id: 'values-1', - type: 'text', - value: 'value-2', - }, - }, - ], -}; - -const expectedTemplateInstanceObjects = { - page_experience: '@[foo.bar.GetDataResult]@', - request_uuid: '{{foo.bar.UUID}}', -}; - -it('works with JSX', async () => { - const element = ( - - - Label - - - value-1 - - - - ); - - expect((await render(element)).jsonValue).toStrictEqual( - expectedBasicCollection - ); -}); - -it('works for any json props', async () => { - const testObj = { - foo: false, - bar: true, - other: '', - }; - expect( - (await render({toJsonProperties(testObj)})).jsonValue - ).toStrictEqual(testObj); -}); - -it('works for BindingTemplateInstances and ExpressionTemplateInstances', async () => { - const testObj = { - request_uuid: b`foo.bar.UUID`, - page_experience: e`foo.bar.GetDataResult`, - }; - expect( - (await render({toJsonProperties(testObj)})).jsonValue - ).toStrictEqual(expectedTemplateInstanceObjects); -}); - -it('handles array props', async () => { - const expected = { - id: 'root', - type: 'assetWithArray', - stuff: [{ id: '1' }, { id: '2' }], - }; - - const things = [{ id: '1' }, { id: '2' }]; - - const element = ; - - expect((await render(element)).jsonValue).toStrictEqual(expected); -}); - -test('flattens fragments', async () => { - const element = ( - - <> - - Label - - - <> - value-1 - - - - - - ); - - expect((await render(element)).jsonValue).toStrictEqual( - expectedBasicCollection - ); -}); diff --git a/language/dsl/src/__tests__/schema.test.tsx b/language/dsl/src/__tests__/schema.test.tsx deleted file mode 100644 index c93ac2dd2..000000000 --- a/language/dsl/src/__tests__/schema.test.tsx +++ /dev/null @@ -1,294 +0,0 @@ -import React from 'react'; -import { render } from 'react-json-reconciler'; -import { - makeBindingsForObject, - SchemaGenerator, - SchemaTypeName, -} from '../compiler/schema'; -import { FooTypeRef, BarTypeRef, LocalBazType } from './helpers/mock-data-refs'; - -describe('Schema Bindings Generate Properly', () => { - const testObj = { - main: { - sub: { - a: FooTypeRef, - b: BarTypeRef, - }, - sub2: [ - { - [SchemaTypeName]: 'sub2a', - val: LocalBazType, - }, - ], - sub4: { - [SchemaTypeName]: 'sub3', - c: FooTypeRef, - }, - }, - }; - - it('is able to get bindings for all paths', () => { - const schema = makeBindingsForObject(testObj); - expect(schema.main.toRefString()).toStrictEqual('{{main}}'); - expect(schema.main.sub.toRefString()).toStrictEqual('{{main.sub}}'); - expect(schema.main.sub.a.toRefString()).toStrictEqual('{{main.sub.a}}'); - expect(schema.main.sub.b.toRefString()).toStrictEqual('{{main.sub.b}}'); - expect(schema.main.sub2.toRefString()).toStrictEqual('{{main.sub2}}'); - expect(schema.main.sub2[0].toRefString()).toStrictEqual('{{main.sub2.0}}'); - expect(schema.main.sub2._index_.toRefString()).toStrictEqual( - '{{main.sub2._index_}}' - ); - - expect(schema.main.sub2[0].val.toRefString()).toStrictEqual( - '{{main.sub2.0.val}}' - ); - expect( - // eslint-disable-next-line dot-notation - schema.main.sub2['_index_'].toRefString() - ).toStrictEqual('{{main.sub2._index_}}'); - expect( - // eslint-disable-next-line dot-notation - schema.main.sub2['_index_'].val.toRefString() - ).toStrictEqual('{{main.sub2._index_.val}}'); - }); - - it('is able to serialize to a schema object', () => { - const g = new SchemaGenerator(); - const schema = g.toSchema(testObj); - expect(schema).toMatchInlineSnapshot(` - Object { - "ROOT": Object { - "main": Object { - "type": "mainType", - }, - }, - "mainType": Object { - "sub": Object { - "type": "subType", - }, - "sub2": Object { - "isArray": true, - "type": "sub2aType", - }, - "sub4": Object { - "type": "sub3Type", - }, - }, - "sub2aType": Object { - "val": Object { - "default": false, - "type": "BazType", - "validation": Array [ - Object { - "message": "some message", - "options": Array [ - "1", - "2", - ], - "type": "someValidation", - }, - ], - }, - }, - "sub3Type": Object { - "c": Object { - "type": "FooType", - }, - }, - "subType": Object { - "a": Object { - "type": "FooType", - }, - "b": Object { - "type": "BarType", - }, - }, - } - `); - }); - - it('is able to serialize to a schema object with a custom array indicator', () => { - const g = new SchemaGenerator(); - const schema = g.toSchema(testObj); - expect(schema).toMatchInlineSnapshot(` - Object { - "ROOT": Object { - "main": Object { - "type": "mainType", - }, - }, - "mainType": Object { - "sub": Object { - "type": "subType", - }, - "sub2": Object { - "isArray": true, - "type": "sub2aType", - }, - "sub4": Object { - "type": "sub3Type", - }, - }, - "sub2aType": Object { - "val": Object { - "default": false, - "type": "BazType", - "validation": Array [ - Object { - "message": "some message", - "options": Array [ - "1", - "2", - ], - "type": "someValidation", - }, - ], - }, - }, - "sub3Type": Object { - "c": Object { - "type": "FooType", - }, - }, - "subType": Object { - "a": Object { - "type": "FooType", - }, - "b": Object { - "type": "BarType", - }, - }, - } - `); - }); - - it('throws errors if two types have the same name but are different', () => { - const g = new SchemaGenerator(); - - const badObj = { - main: { - sub: { - a: FooTypeRef, - b: BarTypeRef, - c: BarTypeRef, - }, - sub2: { - sub: { - a: FooTypeRef, - b: BarTypeRef, - }, - }, - }, - }; - - expect(() => g.toSchema(badObj)).toThrowError( - 'Error: Generated two intermediate types with the name: subType' - ); - }); - - it('doesnt throw errors if two types have the same name and are the same', () => { - const g = new SchemaGenerator(); - - const badObj = { - main: { - sub: { - a: FooTypeRef, - b: BarTypeRef, - }, - sub2: { - sub: { - a: FooTypeRef, - b: BarTypeRef, - }, - }, - }, - }; - - expect(g.toSchema(badObj)).toMatchInlineSnapshot(` - Object { - "ROOT": Object { - "main": Object { - "type": "mainType", - }, - }, - "mainType": Object { - "sub": Object { - "type": "subType", - }, - "sub2": Object { - "type": "sub2Type", - }, - }, - "sub2Type": Object { - "sub": Object { - "type": "subType", - }, - }, - "subType": Object { - "a": Object { - "type": "FooType", - }, - "b": Object { - "type": "BarType", - }, - }, - } - `); - }); - - it('works when used as a jsx element', async () => { - const schema = makeBindingsForObject(testObj); - - const content = await render( - - {schema.main.sub.a} - - ); - - expect(content.jsonValue).toMatchInlineSnapshot(` - Object { - "test": "{{main.sub.a}}", - } - `); - }); -}); - -describe('schema plugins', () => { - const MetaData = Symbol('Meta Data'); - const testObj = { - foo: { - [MetaData]: { - testProp: false, - }, - }, - }; - - it('enables node modification', () => { - const schemaGenerator = new SchemaGenerator(); - - schemaGenerator.hooks.createSchemaNode.tap('test', (node, prop) => { - if (prop[MetaData]) { - return { - ...node, - metaData: prop[MetaData], - }; - } - - return node; - }); - - expect(schemaGenerator.toSchema(testObj)).toMatchInlineSnapshot(` - Object { - "ROOT": Object { - "foo": Object { - "metaData": Object { - "testProp": false, - }, - "type": "fooType", - }, - }, - "fooType": Object {}, - } - `); - }); -}); diff --git a/language/dsl/src/__tests__/switch.test.tsx b/language/dsl/src/__tests__/switch.test.tsx deleted file mode 100644 index 4e3ab85e3..000000000 --- a/language/dsl/src/__tests__/switch.test.tsx +++ /dev/null @@ -1,250 +0,0 @@ -import React from 'react'; -import { render } from 'react-json-reconciler'; -import { expression as e } from '..'; -import { Switch } from '../switch'; -import { Text, Collection, Input } from './helpers/asset-library'; - -describe('staticSwitch', () => { - it('works for basic cases', async () => { - const element = ( - - - - - Text 1 - - - Text 1 - - - - - ); - - expect((await render(element)).jsonValue).toStrictEqual({ - id: 'root', - type: 'collection', - label: { - staticSwitch: [ - { - case: 'foo() = bar()', - asset: { - id: 'label-staticSwitch-0', - type: 'text', - value: 'Text 1', - }, - }, - { - case: true, - asset: { - id: 'label-staticSwitch-1', - type: 'text', - value: 'Text 1', - }, - }, - ], - }, - }); - }); - - it('works for dynamic switch', async () => { - const element = ( - - - - - Text 1 - - - - - - - Text 1 - - - - - - - - - ); - - expect((await render(element)).jsonValue).toMatchInlineSnapshot(` - Object { - "id": "root", - "label": Object { - "dynamicSwitch": Array [ - Object { - "asset": Object { - "id": "label-dynamicSwitch-0", - "type": "text", - "value": "Text 1", - }, - "case": "foo() = bar()", - }, - Object { - "asset": Object { - "id": "label-dynamicSwitch-1", - "label": Object { - "staticSwitch": Array [ - Object { - "asset": Object { - "id": "label-dynamicSwitch-1-label-staticSwitch-0", - "type": "text", - "value": "Text 1", - }, - "case": "bar() == bar()", - }, - ], - }, - "type": "input", - }, - "case": true, - }, - ], - }, - "type": "collection", - } - `); - }); - - it('static switch with boolean exp', async () => { - const element = ( - - - - - Text 1 - - - Text 1 - - - - - ); - - expect((await render(element)).jsonValue).toStrictEqual({ - id: 'root', - type: 'collection', - label: { - staticSwitch: [ - { - case: true, - asset: { - id: 'label-staticSwitch-0', - type: 'text', - value: 'Text 1', - }, - }, - { - case: false, - asset: { - id: 'label-staticSwitch-1', - type: 'text', - value: 'Text 1', - }, - }, - ], - }, - }); - }); - - it('dynamic switch with boolean exp', async () => { - const element = ( - - - - - Text 1 - - - Text 1 - - - - - ); - - expect((await render(element)).jsonValue).toStrictEqual({ - id: 'root', - type: 'collection', - label: { - dynamicSwitch: [ - { - case: true, - asset: { - id: 'label-dynamicSwitch-0', - type: 'text', - value: 'Text 1', - }, - }, - { - case: false, - asset: { - id: 'label-dynamicSwitch-1', - type: 'text', - value: 'Text 1', - }, - }, - ], - }, - }); - }); -}); - -describe('generates ids', () => { - it('works for collection items', async () => { - const content = ( - - - - - Test 1 - - - - - Test 2 - - - - - ); - - expect((await render(content)).jsonValue).toMatchInlineSnapshot(` - Object { - "id": "root", - "type": "collection", - "values": Array [ - Object { - "staticSwitch": Array [ - Object { - "asset": Object { - "id": "values-0-staticSwitch-0", - "type": "text", - "value": "Test 1", - }, - "case": true, - }, - ], - }, - Object { - "staticSwitch": Array [ - Object { - "asset": Object { - "id": "values-1-staticSwitch-0", - "type": "text", - "value": "Test 2", - }, - "case": true, - }, - ], - }, - ], - } - `); - }); -}); diff --git a/language/dsl/src/__tests__/template.test.tsx b/language/dsl/src/__tests__/template.test.tsx deleted file mode 100644 index 2fd642244..000000000 --- a/language/dsl/src/__tests__/template.test.tsx +++ /dev/null @@ -1,266 +0,0 @@ -import React from 'react'; -import { render } from 'react-json-reconciler'; -import { binding as b } from '..'; -import { Template } from '../template'; -import { Text, Collection } from './helpers/asset-library'; - -test('finds output property based on array context', async () => { - const element = ( - - - - Foo - - - - - ); - - expect((await render(element)).jsonValue).toStrictEqual({ - foo: ['Foo'], - template: [ - { - data: 'foo.output', - value: 'bar', - output: 'foo', - }, - ], - }); -}); - -test('works if already in a template array', async () => { - const element = ( - - - - - - - - ); - expect((await render(element)).jsonValue).toStrictEqual({ - template: [{ output: 'output', data: 'foo.output', value: 'bar' }], - }); -}); - -test('template will delete empty arrays related to the template only', async () => { - const element = ( - - - - - - - - - {/* "actions": [] will not be deleted since it's not related to template */} - - {/* "values": [] will not be deleted */} - - - - - - - This should not be deleted by template - {/* "values" array will have text so it will not be deleted, only empty arrays are deleted */} - - - - - - ); - expect((await render(element)).jsonValue).toStrictEqual({ - id: 'root', - type: 'collection', - template: [ - { - data: 'foo.bar', - output: 'actions', - value: { - id: 'actions-_index_', - type: 'text', - value: 'Template action', - }, - }, - { - data: 'foo.bar', - output: 'values', - value: { - asset: { - id: 'values-_index_', - type: 'text', - value: 'Template Value 1', - }, - }, - }, - ], - values: [ - { - asset: { - actions: [], - id: 'values-1', - type: 'collection', - template: [ - { - data: 'foo.bar', - output: 'values', - value: { - asset: { - id: 'values-1-values-_index_', - type: 'text', - value: 'Template Value 2', - }, - }, - }, - ], - }, - }, - { - asset: { - actions: [], - id: 'values-2', - type: 'collection', - template: [ - { - data: 'foo.bar', - output: 'values', - value: { - asset: { - id: 'values-2-values-_index_', - type: 'text', - value: 'Template Value 3', - }, - }, - }, - ], - values: [ - { - asset: { - id: 'values-2-values-0', - type: 'text', - value: 'This should not be deleted by template', - }, - }, - ], - }, - }, - ], - }); -}); - -describe('template auto id', () => { - test('s1mple', async () => { - const element = ( - - - - Value 1 - - - ); - - const actual = (await render(element)).jsonValue; - - expect(actual).toStrictEqual({ - id: 'root', - type: 'collection', - values: [ - { - asset: { - id: 'static', - type: 'text', - value: 'Value 1', - }, - }, - ], - template: [ - { - data: 'foo.bar', - output: 'values', - value: { - asset: { - id: 'values-_index_', - type: 'text', - value: 'Template Value', - }, - }, - }, - ], - }); - }); - - test('nested', async () => { - const element = ( - - - - Value 1 - - - ); - - const actual = (await render(element)).jsonValue; - - expect(actual).toStrictEqual({ - id: 'root', - type: 'collection', - values: [ - { - asset: { - id: 'static', - type: 'text', - value: 'Value 1', - }, - }, - ], - template: [ - { - data: 'foo.bar', - output: 'values', - value: { - asset: { - id: 'values-_index_', - template: [ - { - output: 'values', - data: 'foo.baz', - value: { - asset: { - id: 'values-_index_-values-_index1_', - type: 'text', - value: 'Nested Templates', - }, - }, - }, - ], - type: 'collection', - }, - }, - }, - ], - }); - }); -}); diff --git a/language/dsl/src/auto-id.tsx b/language/dsl/src/auto-id.tsx deleted file mode 100644 index f4e51b5e0..000000000 --- a/language/dsl/src/auto-id.tsx +++ /dev/null @@ -1,136 +0,0 @@ -import React from 'react'; -import type { JsonNode } from 'react-json-reconciler'; -import { flattenNodes } from 'react-json-reconciler'; -import { SlotContext } from './components'; -import type { WithChildren } from './types'; - -const IDSuffixContext = React.createContext('root'); - -export const IndexSuffixStopContext = React.createContext(false); - -/** Get the generated id */ -export const useGetIdPrefix = () => { - return React.useContext(IDSuffixContext); -}; - -/** Add a suffix to a generated id */ -export const IDSuffixProvider = ( - props: WithChildren<{ - /** The suffix to append */ - suffix: string; - }> -) => { - const currentPrefix = useGetIdPrefix(); - - return ( - - {props.children} - - ); -}; - -/** Override the generated id with the supplied one */ -export const IDProvider = ( - props: WithChildren<{ - /** The new id to use */ - id?: string; - }> -) => { - if (props.id) { - return ( - - {props.children} - - ); - } - - // eslint-disable-next-line react/jsx-no-useless-fragment - return <>{props.children}; -}; - -/** Get the index of an item in a slot */ -export const useIndexInSlot = (ref: React.RefObject) => { - const [index, setIndex] = React.useState(-1); - const slotContext = React.useContext(SlotContext); - - React.useEffect(() => { - if (!slotContext?.isArray) { - throw new Error('Cannot get index in non-array slot'); - } - - if (ref.current && slotContext?.ref.current?.valueNode?.type === 'array') { - const allChildren = flattenNodes( - slotContext.ref.current.valueNode.children - ); - const foundIndex = allChildren.indexOf(ref.current); - - if (foundIndex !== index) { - setIndex(foundIndex); - } - } - }, [index, ref, slotContext?.isArray, slotContext?.ref]); - - return index; -}; - -/** Add the index to the id path when in an array slot */ -export const IDSuffixIndexProvider = ( - props: WithChildren<{ - /** The ref to use */ - wrapperRef: React.RefObject; - - /** if the suffix is in a template, the id to use */ - templateIndex?: string; - }> -) => { - const slotIndex = useIndexInSlot(props.wrapperRef); - - const stopIndex = React.useContext(IndexSuffixStopContext); - - if (stopIndex) { - // eslint-disable-next-line react/jsx-no-useless-fragment - return <>{props.children}; - } - - return ( - - - {props.children} - - - ); -}; - -/** Wrap a slot with the index if in an array slot */ -export const OptionalIDSuffixProvider = ( - props: WithChildren<{ - /** The ref to walk upwards and use as an index */ - wrapperRef: React.RefObject; - - /** if the suffix is in a template, the id to use */ - templateIndex?: string; - }> -) => { - const slotContext = React.useContext(SlotContext); - - if (slotContext?.isArray) { - return ( - - {props.children} - - ); - } - - // eslint-disable-next-line react/jsx-no-useless-fragment - return <>{props.children}; -}; diff --git a/language/dsl/src/compiler/__tests__/compiler.test.tsx b/language/dsl/src/compiler/__tests__/compiler.test.tsx deleted file mode 100644 index 560ebcdc2..000000000 --- a/language/dsl/src/compiler/__tests__/compiler.test.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import React from 'react'; -import { expression as e } from '../../string-templates'; -import { DSLCompiler } from '../compiler'; -import type { Navigation } from '../../types'; - -test('treats jsx as view', async () => { - const compiler = new DSLCompiler(); - - const result = await compiler.serialize( - - bar - - ); - expect(result.contentType).toBe('view'); - expect(result.value).toStrictEqual({ - foo: 'bar', - }); -}); - -test('treats unknown objects as schema', async () => { - const compiler = new DSLCompiler(); - const result = await compiler.serialize({ - foo: { bar: { type: 'StringType' } }, - }); - - expect(result.contentType).toBe('schema'); - expect(result.value).toStrictEqual({ - ROOT: { - foo: { - type: 'fooType', - }, - }, - fooType: { - bar: { - type: 'StringType', - }, - }, - }); -}); - -test('expressions in navigation', async () => { - const compiler = new DSLCompiler(); - const navigation: Navigation = { - BEGIN: 'Flow', - onStart: e`foo`, - Flow: { - startState: 'VIEW_page', - onStart: [e`foo`, e`foo`], - VIEW_page: { - onStart: { - exp: e`foo`, - }, - state_type: `VIEW`, - ref: 'test', - transitions: { - '*': 'ShowView1Or2', - }, - }, - ShowView1Or2: { - state_type: 'ACTION', - exp: e`foo`, - transitions: { - '*': 'VIEW_Other', - }, - }, - END_back: { - state_type: 'END', - outcome: 'BACK', - }, - END_done: { - state_type: 'END', - outcome: 'doneWithFlow', - }, - }, - }; - const result = await compiler.serialize({ navigation }); - expect(result.value).toStrictEqual({ - navigation: { - BEGIN: 'Flow', - onStart: `foo`, - Flow: { - startState: 'VIEW_page', - onStart: [`foo`, `foo`], - VIEW_page: { - onStart: { - exp: `foo`, - }, - state_type: `VIEW`, - ref: 'test', - transitions: { - '*': 'ShowView1Or2', - }, - }, - ShowView1Or2: { - state_type: 'ACTION', - exp: `foo`, - transitions: { - '*': 'VIEW_Other', - }, - }, - END_back: { - state_type: 'END', - outcome: 'BACK', - }, - END_done: { - state_type: 'END', - outcome: 'doneWithFlow', - }, - }, - }, - views: [], - }); -}); diff --git a/language/dsl/src/compiler/__tests__/schema.test.ts b/language/dsl/src/compiler/__tests__/schema.test.ts deleted file mode 100644 index d7080b4ca..000000000 --- a/language/dsl/src/compiler/__tests__/schema.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { SchemaGenerator } from '../schema'; - -const BasicDataType = { - type: 'StringType', -}; - -test('generates proper schema', () => { - const schemaGenerator = new SchemaGenerator(); - - expect( - schemaGenerator.toSchema({ - foo: { - bar: { - baz: BasicDataType, - }, - }, - other: [ - { - item1: BasicDataType, - }, - ], - }) - ).toStrictEqual({ - ROOT: { - foo: { - type: 'fooType', - }, - other: { - type: 'otherType', - isArray: true, - }, - }, - fooType: { - bar: { - type: 'barType', - }, - }, - barType: { - baz: { - type: 'StringType', - }, - }, - otherType: { - item1: { - type: 'StringType', - }, - }, - }); -}); diff --git a/language/dsl/src/compiler/compiler.ts b/language/dsl/src/compiler/compiler.ts deleted file mode 100644 index 180070861..000000000 --- a/language/dsl/src/compiler/compiler.ts +++ /dev/null @@ -1,219 +0,0 @@ -import React from 'react'; -import type { JsonType } from 'react-json-reconciler'; -import { SourceMapGenerator, SourceMapConsumer } from 'source-map-js'; -import { render } from 'react-json-reconciler'; -import type { Flow, View, Navigation as PlayerNav } from '@player-ui/types'; -import { SyncHook } from 'tapable-ts'; -import type { SerializeType } from './types'; -import type { Navigation } from '../types'; -import { SchemaGenerator } from './schema'; - -/** Recursively find BindingTemplateInstance and call toValue on them */ -const parseNavigationExpressions = (nav: Navigation): PlayerNav => { - /** Same as above but signature changed */ - function replaceExpWithStr(obj: any): any { - /** call toValue if BindingTemplateInstance otherwise continue */ - function convExp(value: any): any { - return value && typeof value === 'object' && value.__type === 'expression' - ? value.toValue() // exp, onStart, and onEnd don't need to be wrapped in @[]@ - : replaceExpWithStr(value); - } - - if (Array.isArray(obj)) { - return obj.map(convExp); - } - - if (typeof obj === 'object') { - return Object.fromEntries( - Object.entries(obj).map(([key, value]) => [key, convExp(value)]) - ); - } - - return obj; - } - - return replaceExpWithStr(nav); -}; - -type SourceMapList = Array<{ - /** The mappings of the original */ - sourceMap: string; - /** - * The id of the view we're indexing off of - * This should be a unique global identifier within the generated code - * e.g. `"id": "view_0",` - */ - offsetIndexSearch: string; - /** The generated source that produced the map */ - source: string; -}>; - -/** Given a list of source maps for all generated views, merge them into 1 */ -const mergeSourceMaps = ( - sourceMaps: SourceMapList, - generated: string -): string => { - const generator = new SourceMapGenerator(); - sourceMaps.forEach(({ sourceMap, offsetIndexSearch, source }) => { - const generatedLineOffset = generated - .split('\n') - .findIndex((line) => line.includes(offsetIndexSearch)); - - const sourceLineOffset = source - .split('\n') - .findIndex((line) => line.includes(offsetIndexSearch)); - - const lineOffset = generatedLineOffset - sourceLineOffset; - - const generatedLine = generated.split('\n')[generatedLineOffset]; - const sourceLine = source.split('\n')[sourceLineOffset]; - - const generatedColumn = generatedLine.indexOf(offsetIndexSearch); - const sourceColumn = sourceLine.indexOf(offsetIndexSearch); - const columnOffset = generatedColumn - sourceColumn; - - const consumer = new SourceMapConsumer(JSON.parse(sourceMap)); - consumer.eachMapping((mapping) => { - generator.addMapping({ - generated: { - line: mapping.generatedLine + lineOffset, - column: mapping.generatedColumn + columnOffset, - }, - original: { - line: mapping.originalLine, - column: mapping.originalColumn, - }, - source: mapping.source, - }); - }); - }); - - return generator.toString(); -}; - -/** A compiler for transforming DSL content into JSON */ -export class DSLCompiler { - public hooks = { - schemaGenerator: new SyncHook<[SchemaGenerator]>(), - }; - - /** Convert an object (flow, view, schema, etc) into it's JSON representation */ - async serialize(value: unknown): Promise<{ - /** the JSON value of the source */ - value: JsonType | undefined; - - /** the fingerprinted content type of the source */ - contentType: SerializeType; - - /** The sourcemap of the content */ - sourceMap?: string; - }> { - if (typeof value !== 'object' || value === null) { - throw new Error('Unable to serialize non-object'); - } - - if (React.isValidElement(value)) { - const { jsonValue, sourceMap } = await render(value, { - collectSourceMap: true, - }); - - return { - value: jsonValue, - sourceMap, - contentType: 'view', - }; - } - - if ('navigation' in value) { - // Source maps from all the nested views - // Merge these together before returning - const allSourceMaps: SourceMapList = []; - - // Assume this is a flow - const copiedValue: Flow = { - ...(value as any), - }; - - copiedValue.views = (await Promise.all( - copiedValue?.views?.map(async (node: any) => { - const { jsonValue, sourceMap, stringValue } = await render(node, { - collectSourceMap: true, - }); - - if (sourceMap) { - // Find the line that is the id of the view - // Use that as the identifier for the sourcemap offset calc - const searchIdLine = stringValue - .split('\n') - .find((line) => - line.includes( - `"id": "${(jsonValue as Record).id}"` - ) - ); - - if (searchIdLine) { - allSourceMaps.push({ - sourceMap, - offsetIndexSearch: searchIdLine, - source: stringValue, - }); - } - } - - return jsonValue; - }) ?? [] - )) as View[]; - - // Go through the flow and sub out any view refs that are react elements w/ the right id - if ('navigation' in value) { - Object.entries((value as Flow).navigation).forEach(([navKey, node]) => { - if (typeof node === 'object') { - Object.entries(node).forEach(([nodeKey, flowNode]) => { - if ( - flowNode && - typeof flowNode === 'object' && - 'state_type' in flowNode && - flowNode.state_type === 'VIEW' && - React.isValidElement(flowNode.ref) - ) { - const actualViewIndex = (value as Flow).views?.indexOf?.( - flowNode.ref as any - ); - - if (actualViewIndex !== undefined && actualViewIndex > -1) { - const actualId = copiedValue.views?.[actualViewIndex]?.id; - - (copiedValue as any).navigation[navKey][nodeKey].ref = - actualId; - } - } - }); - } - }); - - copiedValue.navigation = parseNavigationExpressions( - copiedValue.navigation - ); - } - - if (value) { - return { - value: copiedValue as JsonType, - contentType: 'flow', - sourceMap: mergeSourceMaps( - allSourceMaps, - JSON.stringify(copiedValue, null, 2) - ), - }; - } - } - - const schemaGenerator = new SchemaGenerator(); - this.hooks.schemaGenerator.call(schemaGenerator); - - return { - value: schemaGenerator.toSchema(value) as JsonType, - contentType: 'schema', - }; - } -} diff --git a/language/dsl/src/compiler/index.ts b/language/dsl/src/compiler/index.ts deleted file mode 100644 index 7a8093c8e..000000000 --- a/language/dsl/src/compiler/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './compiler'; -export * from './types'; diff --git a/language/dsl/src/compiler/schema.ts b/language/dsl/src/compiler/schema.ts deleted file mode 100644 index 925b93730..000000000 --- a/language/dsl/src/compiler/schema.ts +++ /dev/null @@ -1,250 +0,0 @@ -import type { Schema, Language } from '@player-ui/types'; -import signale from 'signale'; -import { dequal } from 'dequal'; -import { SyncWaterfallHook } from 'tapable-ts'; -import { binding as b } from '..'; -import type { BindingTemplateInstance } from '../string-templates'; - -const bindingSymbol = Symbol('binding'); - -export const SchemaTypeName = Symbol('Schema Rename'); - -interface SchemaChildren { - /** Object property that will be used to create the intermediate type */ - name: string; - - /** Object properties children that will be parsed */ - child: object; -} - -type SchemaNode = (Schema.DataType | Language.DataTypeRef) & { - /** Overwrite the name of the generated type */ - [SchemaTypeName]?: string; -}; - -/** - * Type Guard for the `Schema.DataType` and `Language.DataTypeRef` type - * A bit hacky but since `Schema.Schema` must have a `Schema.DataType` as - * the final product we have to call it that even if it is a `Language.DataTypeRef` - */ -const isTypeDef = (property: SchemaNode): property is Schema.DataType => { - return (property as Schema.DataType).type !== undefined; -}; - -/** - * Generator for `Schema.Schema` Objects - */ -export class SchemaGenerator { - private children: Array; - private generatedDataTypeNames: Map; - - public hooks = { - createSchemaNode: new SyncWaterfallHook< - [ - node: Schema.DataType, - originalProperty: Record - ] - >(), - }; - - constructor() { - this.children = []; - this.generatedDataTypeNames = new Map(); - } - - /** - * Converts an object to a `Schema.Schema` representation - * Note: uses iteration to prevent potentially very deep recursion on large objects - */ - public toSchema = (schema: any): Schema.Schema => { - const newSchema: Schema.Schema = { - ROOT: {}, - }; - - this.children = []; - this.generatedDataTypeNames.clear(); - - Object.keys(schema).forEach((property) => { - const subType = schema[property] as SchemaNode; - newSchema.ROOT[property] = this.hooks.createSchemaNode.call( - this.processChildren(property, subType), - subType as any - ); - }); - - while (this.children.length > 0) { - const c = this.children.pop(); - if (c === undefined) { - break; - } - - const { name, child } = c; - const typeDef = {} as any; - - Object.keys(child).forEach((property) => { - const subType = (child as any)[property] as SchemaNode; - typeDef[property] = this.hooks.createSchemaNode.call( - this.processChildren(property, subType), - subType as any - ); - }); - newSchema[name] = typeDef; - } - - return newSchema; - }; - - /** - * Processes the children of an object Node - * Newly discovered children get added to the provided array - */ - private processChildren( - property: string, - subType: SchemaNode - ): Schema.DataType { - if (isTypeDef(subType)) { - return subType; - } - - let intermediateType; - - if (Array.isArray(subType)) { - if (subType.length > 1) { - signale.warn( - `Type ${property} has multiple types in array, should only contain one top level object type. Only taking first defined type` - ); - } - - const subTypeName = subType[0][SchemaTypeName] ?? property; - intermediateType = this.makePlaceholderArrayType(subTypeName); - this.children.push({ name: intermediateType.type, child: subType[0] }); - } else { - const subTypeName = subType[SchemaTypeName] ?? property; - intermediateType = this.makePlaceholderType(subTypeName); - this.children.push({ name: intermediateType.type, child: subType }); - } - - if (this.generatedDataTypeNames.has(intermediateType.type)) { - if ( - !dequal( - subType, - this.generatedDataTypeNames.get(intermediateType.type) as object - ) - ) { - throw new Error( - `Error: Generated two intermediate types with the name: ${intermediateType.type} that are of different shapes` - ); - } - - // remove last added type since we don't need to reprocess it - this.children.pop(); - } - - this.generatedDataTypeNames.set(intermediateType.type, subType); - return intermediateType; - } - - /** - * Make an intermediate `Schema.DataType` object given a name - */ - private makePlaceholderType = (typeName: string): Schema.DataType => { - return { - type: `${typeName}Type`, - }; - }; - - /** - * Make an intermediate `Schema.DataType` object with array support given a name - */ - private makePlaceholderArrayType(typeName: string): Schema.DataType { - return { - type: `${typeName}Type`, - isArray: true, - }; - } -} - -export type MakeArrayIntoIndexRef = { - [key: number]: MakeBindingRefable; - /** Used when referencing bindings from within a template */ - _index_: MakeBindingRefable; -} & BindingTemplateInstance; - -export type MakeBindingRefable = { - [P in keyof T]: T[P] extends any[] - ? MakeArrayIntoIndexRef - : MakeBindingRefable; -} & BindingTemplateInstance; - -/** - * Adds bindings to an object so that the object can be directly used in JSX - */ -export function makeBindingsForObject( - obj: Type, - arrayAccessorKeys = ['_index_'] -): MakeBindingRefable { - /** Proxy to track binding callbacks */ - const accessor = (paths: string[]) => { - const bindingMap = new WeakMap(); - - return { - ownKeys(target: any) { - return Reflect.ownKeys(target); - }, - - get(target: any, key: any): any { - const bindingKeys = Object.keys(target); - - if (!bindingMap.has(target)) { - bindingMap.set(target, b`${paths.join('.')}`); - } - - if (key === bindingSymbol) { - return paths; - } - - if ( - Array.isArray(target) && - (arrayAccessorKeys.includes(key) || typeof key === 'number') - ) { - return new Proxy(target[0], accessor(paths.concat([key]))); - } - - if (bindingKeys.includes(key) && typeof target[key] === 'object') { - return new Proxy(target[key], accessor(paths.concat([key]))); - } - - const createdInstance = bindingMap.get(target) as any; - return createdInstance?.[key]; - }, - }; - }; - - return new Proxy(obj, accessor([])) as MakeBindingRefable; -} - -/** - * Generates binding for an object property - */ -export const getBindingFromObject = (obj: any) => { - const baseBindings = obj[bindingSymbol] as string[]; - if (!Array.isArray(baseBindings) || baseBindings.length === 0) { - throw new Error(`Unable to get binding for ${obj}`); - } - - return b`${baseBindings.join('.')}`; -}; - -/** - * Returns the binding string from an object path - */ -export const getBindingStringFromObject = (obj: any) => { - return getBindingFromObject(obj).toString(); -}; - -/** - * Returns the ref string from an object path - */ -export const getRefStringFromObject = (obj: any) => { - return getBindingFromObject(obj).toRefString(); -}; diff --git a/language/dsl/src/compiler/types.ts b/language/dsl/src/compiler/types.ts deleted file mode 100644 index e3b7f7072..000000000 --- a/language/dsl/src/compiler/types.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { Schema, Navigation, Flow } from '@player-ui/types'; -import type { RemoveUnknownIndex, AddUnknownIndex } from '../types'; - -export type FlowWithoutUnknown = RemoveUnknownIndex; -export type FlowWithReactViews = AddUnknownIndex< - Omit & { - /** An array of JSX view elements */ - views?: Array; - } ->; - -export type SerializeType = 'view' | 'flow' | 'schema' | 'navigation'; - -export type SerializablePlayerExportTypes = - | React.ReactElement - | FlowWithReactViews - | Schema.Schema - | Navigation; diff --git a/language/dsl/src/components.tsx b/language/dsl/src/components.tsx deleted file mode 100644 index 088c077e1..000000000 --- a/language/dsl/src/components.tsx +++ /dev/null @@ -1,234 +0,0 @@ -import React from 'react'; -import flattenChildren from 'react-flatten-children'; -import type { ObjectNode, PropertyNode } from 'react-json-reconciler'; -import mergeRefs from 'react-merge-refs'; -import type { PlayerApplicability, WithChildren } from './types'; -import { - IDProvider, - IDSuffixProvider, - IndexSuffixStopContext, - OptionalIDSuffixProvider, - useGetIdPrefix, -} from './auto-id'; -import { - normalizeText, - normalizeToCollection, - toJsonProperties, -} from './utils'; - -export const SlotContext = React.createContext< - | { - /** The property name for the slot */ - propertyName: string; - /** If the slot represents an array */ - isArray: boolean; - /** If the items in the slot should be wrapped in an "asset" object */ - wrapInAsset: boolean; - /** Other props to add to the slot */ - additionalProperties?: any; - /** The ref to the property node */ - ref: React.RefObject; - /** A text component if we hit a string but expect an asset */ - TextComp?: React.ComponentType; - /** A component to create a collection asset is we get an array but need a single element */ - CollectionComp?: React.ComponentType; - } - | undefined ->(undefined); - -/** - * Wraps the children in an `asset` object. - * Additional props are added to the top level object - */ -export const AssetWrapper = React.forwardRef< - ObjectNode, - WithChildren<{ [key: string]: any }> ->((props, ref) => { - const { children, ...rest } = props; - - return ( - - {toJsonProperties(rest)} - {children} - - ); -}); - -/** Create a ID property for a node */ -export const GeneratedIDProperty = (props: { - /** the id to use if supplied by the user */ - id?: string; -}) => { - const currentPrefixId = useGetIdPrefix(); - return {props.id ?? currentPrefixId}; -}; - -/** An asset */ -export const Asset = React.forwardRef< - ObjectNode, - { - /** id of the asset */ - id?: string; - - /** the asset type */ - type: string; - - /** Any other properties on the asset */ - children?: React.ReactNode; - - /** other things that we don't know about */ - [key: string]: unknown; - } & PlayerApplicability ->((props, ref) => { - const { id, type, applicability, children, ...rest } = props; - const slotContext = React.useContext(SlotContext); - const localRef = React.useRef(null); - const Wrapper = slotContext?.wrapInAsset ? AssetWrapper : React.Fragment; - - return ( - - - - - - - {type} - {applicability !== undefined && ( - - - - )} - {toJsonProperties(rest)} - {children} - - - - - - ); -}); - -Asset.defaultProps = { - id: undefined, - children: undefined, -}; - -/** A component to generate a named property slot */ -export const Slot = (props: { - /** The name of the slot */ - name: string; - - /** if the slot is an array or single object */ - isArray?: boolean; - - /** if each item should be wrapped in an asset */ - wrapInAsset?: boolean; - - /** Any children to render in the slot */ - children?: React.ReactNode; - - /** Other properties to add to the slot */ - additionalProperties?: any; - - /** A text component if we hit a string but expect an asset */ - TextComp?: React.ComponentType; - - /** A component to create a collection asset is we get an array but need a single element */ - CollectionComp?: React.ComponentType; -}) => { - const { TextComp, CollectionComp } = props; - const children = flattenChildren(props.children); - const propRef = React.useRef(null); - - return ( - - - - - {props.isArray && ( - - {React.Children.map(children, (child, index) => { - return ( - // eslint-disable-next-line react/no-array-index-key - - {normalizeText({ node: child, TextComp })} - - ); - })} - - )} - - {!props.isArray && - normalizeToCollection({ - node: children, - TextComp, - CollectionComp, - })} - - - - - ); -}; - -/** Create a slot for a given property */ -export function createSlot(options: { - /** The name of the slot */ - name: string; - - /** if the slot is an array or single object */ - isArray?: boolean; - - /** if each item should be wrapped in an asset */ - wrapInAsset?: boolean; - - /** Any children to render in the slot */ - children?: React.ReactNode; - - /** A text component if we hit a string but expect an asset */ - TextComp?: React.ComponentType; - - /** A component to create a collection asset is we get an array but need a single element */ - CollectionComp?: React.ComponentType; -}) { - return ( - props: { - /** An object to include in this property */ - children?: React.ReactNode; - } & SlotProps - ) => { - const { children, ...other } = props; - return ( - - {children} - - ); - }; -} diff --git a/language/dsl/src/index.ts b/language/dsl/src/index.ts deleted file mode 100644 index d15848242..000000000 --- a/language/dsl/src/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -export * from './components'; -export * from './auto-id'; -export * from './types'; -export * from './string-templates'; -export * from './utils'; -export * from './switch'; -export * from './template'; -export * from 'react-json-reconciler'; -export * from './compiler/schema'; -export * from './compiler'; diff --git a/language/dsl/src/string-templates/__tests__/binding.test.ts b/language/dsl/src/string-templates/__tests__/binding.test.ts deleted file mode 100644 index 01a7842f2..000000000 --- a/language/dsl/src/string-templates/__tests__/binding.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { binding as b, expression as e } from '..'; - -describe('string template binding', () => { - it('returns string versions', () => { - expect(b`foo.bar.baz`.toValue()).toBe('foo.bar.baz'); - expect(b`foo.bar.${b`foo.bar`}`.toValue()).toBe('foo.bar.{{foo.bar}}'); - }); - - it('returns string ref versions', () => { - expect(b`foo.bar.baz`.toRefString()).toBe('{{foo.bar.baz}}'); - expect(b`foo.bar.${b`foo.bar`}`.toRefString()).toBe( - '{{foo.bar.{{foo.bar}}}}' - ); - }); - - it('works with nested expressions', () => { - expect(b`foo.bar.${e`test()`}`.toValue()).toBe('foo.bar.`test()`'); - expect(b`foo.bar.${e`test()`}`.toRefString()).toBe('{{foo.bar.`test()`}}'); - - const expr = e`test() == 'foo'`; - expect(b`${expr}.${expr}`.toValue()).toBe( - "`test() == 'foo'`.`test() == 'foo'`" - ); - }); - - it('works when in a string', () => { - expect(`This is a ${b`foo.bar`} reference.`).toBe( - 'This is a {{foo.bar}} reference.' - ); - }); - - it('works when template is just a string', () => { - const segments = ['foo', 'bar', '_index_', 'baz']; - expect(b`${segments.join('.')}`.toValue()).toBe('foo.bar._index_.baz'); - }); -}); diff --git a/language/dsl/src/string-templates/__tests__/expression.test.ts b/language/dsl/src/string-templates/__tests__/expression.test.ts deleted file mode 100644 index 7b055dec6..000000000 --- a/language/dsl/src/string-templates/__tests__/expression.test.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { expression as e } from '..'; - -test('works with nested expressions', () => { - const exp1 = e`foo() == bar()`; - const exp2 = e`conditional(${exp1})`; - - expect(exp2.toString()).toBe(`@[conditional(foo() == bar())]@`); -}); diff --git a/language/dsl/src/string-templates/__tests__/react.test.tsx b/language/dsl/src/string-templates/__tests__/react.test.tsx deleted file mode 100644 index 6d433d558..000000000 --- a/language/dsl/src/string-templates/__tests__/react.test.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import React from 'react'; -import { render } from 'react-json-reconciler'; -import { binding as b, expression as e } from '..'; -import { Switch } from '../../switch'; -import { Collection } from '../../__tests__/helpers/asset-library'; - -test('can be used as a react child element', async () => { - const content = ( - await render( - - {e`test()`} - {b`foo.bar`} - - ) - ).jsonValue; - - expect(content).toStrictEqual({ - expression: '@[test()]@', - binding: '{{foo.bar}}', - }); -}); - -test('Works when used as a child asset', async () => { - const content = ( - await render( - - {b`foo.bar`} - - ) - ).jsonValue; - - expect(content).toStrictEqual({ - id: 'root', - type: 'collection', - label: { - asset: { - id: 'label', - type: 'text', - value: '{{foo.bar}}', - }, - }, - }); -}); - -test('Works as a switch child', async () => { - const content = ( - await render( - - - - Testing 123 {b`foo.bar`} - - - - ) - ).jsonValue; - - expect(content).toStrictEqual({ - id: 'root', - type: 'collection', - label: { - staticSwitch: [ - { - case: true, - asset: { - id: 'label-staticSwitch-0', - type: 'text', - value: 'Testing 123 {{foo.bar}}', - }, - }, - ], - }, - }); -}); diff --git a/language/dsl/src/string-templates/index.ts b/language/dsl/src/string-templates/index.ts deleted file mode 100644 index 42239782b..000000000 --- a/language/dsl/src/string-templates/index.ts +++ /dev/null @@ -1,172 +0,0 @@ -import React from 'react'; - -export type TemplateInstanceRefStringContext = 'binding' | 'expression'; -export interface TemplateRefStringOptions { - /** If this template string is inside of another binding or expression */ - nestedContext?: TemplateInstanceRefStringContext; -} -export interface TemplateInstanceRefStringOptions { - /** The array of strings for the template */ - strings: TemplateStringsArray; - /** the other data that's present in the template */ - other: Array; - - /** If this template string is inside of another binding or expression */ - nestedContext?: TemplateInstanceRefStringContext; - - /** Convert the value to a reference nested in the given context */ - toRefString: ( - options: TemplateRefStringOptions | undefined, - value: string - ) => string; -} - -const OpaqueIdentifier = Symbol('TemplateStringType'); - -export type TemplateStringType = React.ReactElement & { - /** An identifier to show that this is a template type */ - [OpaqueIdentifier]: true; - /** The value of the template string when in another string */ - toString: () => string; - /** the raw value of the template string */ - toValue: () => string; - /** the dereferenced value when used in another */ - toRefString: (options?: TemplateRefStringOptions) => string; -}; - -export type BindingTemplateInstance = TemplateStringType & { - /** An identifier for a binding instance */ - __type: 'binding'; -}; - -export type ExpressionTemplateInstance = TemplateStringType & { - /** The identifier for an expression instance */ - __type: 'expression'; -}; - -/** A react component for rendering a template string type */ -export const TemplateStringComponent = (props: { - /** The string value of the child template string */ - value: string; -}) => { - return React.createElement( - 'value', - { - value: props.value, - }, - null - ); -}; - -/** The generic template string handler */ -const createTemplateInstance = ( - options: TemplateInstanceRefStringOptions -): TemplateStringType => { - const value = options.strings.reduce((sum, next, i) => { - const element = options.other[i]; - if (typeof element === 'string') { - return sum + next + element; - } - - return sum + next + (element?.toRefString(options) ?? ''); - }, ''); - - /** get the unwrapped version */ - const toString = () => { - return options.toRefString({}, value); - }; - - /** get the raw value of the template */ - const toValue = () => { - return value; - }; - - /** This lets us use it directly as a child element in React */ - const element = React.createElement( - TemplateStringComponent, - { - value: toString(), - }, - null - ) as TemplateStringType; - - return { - ...element, - [OpaqueIdentifier]: true, - toString, - toValue, - toRefString: (refStringOptions?: TemplateRefStringOptions) => { - return options.toRefString(refStringOptions, value); - }, - }; -}; - -/** Creating an instance of a handler for bindings */ -const createBindingTemplateInstance = ( - options: Omit -): BindingTemplateInstance => { - const templateInstance = createTemplateInstance({ - ...options, - toRefString: (context, value) => { - return `{{${value}}}`; - }, - }) as BindingTemplateInstance; - - templateInstance.__type = 'binding'; - - return templateInstance; -}; - -/** Creating an instance of a handler for bindings */ -const createExpressionTemplateInstance = ( - options: Omit -) => { - const templateInstance = createTemplateInstance({ - ...options, - toRefString: (contextOptions, value) => { - if (contextOptions?.nestedContext === 'expression') { - return value; - } - - const inBinding = contextOptions?.nestedContext === 'binding'; - return `${inBinding ? '`' : '@['}${value}${inBinding ? '`' : ']@'}`; - }, - }) as ExpressionTemplateInstance; - - templateInstance.__type = 'expression'; - - return templateInstance; -}; - -/** A tagged-template constructor for a binding */ -export const binding = ( - strings: TemplateStringsArray, - ...nested: Array -): BindingTemplateInstance => { - return createBindingTemplateInstance({ - strings, - other: nested, - nestedContext: 'binding', - }); -}; - -/** A tagged-template constructor for an expression */ -export const expression = ( - strings: TemplateStringsArray, - ...nested: Array< - ExpressionTemplateInstance | BindingTemplateInstance | string - > -): ExpressionTemplateInstance => { - return createExpressionTemplateInstance({ - strings, - other: nested, - nestedContext: 'expression', - }); -}; - -/** Check if a value is a template string */ -export const isTemplateStringInstance = ( - val: unknown -): val is ExpressionTemplateInstance | BindingTemplateInstance => { - return typeof val === 'object' && (val as any)[OpaqueIdentifier] === true; -}; diff --git a/language/dsl/src/switch.tsx b/language/dsl/src/switch.tsx deleted file mode 100644 index 522f41c71..000000000 --- a/language/dsl/src/switch.tsx +++ /dev/null @@ -1,136 +0,0 @@ -import type { PropsWithChildren } from 'react'; -import React from 'react'; -import type { ArrayNode, JsonNode, ObjectNode } from 'react-json-reconciler'; -import { flattenNodes, PropertyNode } from 'react-json-reconciler'; -import { SlotContext } from '.'; -import { IDSuffixProvider, OptionalIDSuffixProvider } from './auto-id'; -import type { - BindingTemplateInstance, - ExpressionTemplateInstance, -} from './string-templates'; -import { isTemplateStringInstance } from './string-templates'; -import { normalizeToCollection, toJsonProperties } from './utils'; - -export interface SwitchProps { - /** defaults to a staticSwitch */ - isDynamic?: boolean; -} - -const SwitchContext = React.createContext< - SwitchProps & { - /** A text component if we hit a string but expect an asset */ - TextComp?: React.ComponentType; - - /** A component to create a collection asset is we get an array but need a single element */ - CollectionComp?: React.ComponentType; - } ->({}); - -/** - * Switches allow users to fork content between 1 or more assets - */ -export const Switch = (props: PropsWithChildren) => { - const slotContext = React.useContext(SlotContext); - const propertyNode = React.useRef(null); - - return ( - - - - - - {props.children} - - - - - {slotContext?.additionalProperties && - toJsonProperties(slotContext.additionalProperties)} - - ); -}; - -export interface CaseProps { - /** the test for this case statement */ - exp?: ExpressionTemplateInstance | BindingTemplateInstance | boolean; -} - -/** Find the first parent array */ -const findParentArray = (node: JsonNode): ArrayNode => { - if (node.type === 'array') { - return node; - } - - if (node.parent) { - return findParentArray(node.parent); - } - - throw new Error("can't find parent array"); -}; - -/** Find the index of the item in an array */ -const findArrayIndex = (node: JsonNode): number => { - const parentArray = findParentArray(node); - const allSearch = flattenNodes(parentArray.children); - return allSearch.indexOf(node); -}; - -/** A case for a switch */ -const Case = (props: PropsWithChildren) => { - const slotContext = React.useContext(SlotContext); - const switchContext = React.useContext(SwitchContext); - const [caseIndex, setCaseIndex] = React.useState(-1); - const caseNode = React.useRef(null); - - React.useLayoutEffect(() => { - if (caseNode.current) { - const index = findArrayIndex(caseNode.current); - if (index !== caseIndex) { - setCaseIndex(index); - } - } - }, [caseIndex]); - - let expValue: string | boolean = true; - - if (props.exp !== undefined) { - expValue = isTemplateStringInstance(props.exp) - ? props.exp.toValue() - : props.exp; - } - - return ( - - - - - - - - {normalizeToCollection({ - node: props.children, - TextComp: switchContext?.TextComp, - CollectionComp: switchContext?.CollectionComp, - })} - - - - - ); -}; - -Switch.Case = Case; diff --git a/language/dsl/src/template.tsx b/language/dsl/src/template.tsx deleted file mode 100644 index 793c6f263..000000000 --- a/language/dsl/src/template.tsx +++ /dev/null @@ -1,186 +0,0 @@ -import React from 'react'; -import type { ObjectNode, JsonNode } from 'react-json-reconciler'; -import { - ArrayNode, - PropertyNode, - ValueNode, - createPortal, - ProxyNode, - toJSON, -} from 'react-json-reconciler'; -import { OptionalIDSuffixProvider } from './auto-id'; -import type { BindingTemplateInstance } from './string-templates'; -import type { WithChildren } from './types'; - -export interface TemplateContextType { - /** The number of nested templates */ - depth: number; -} - -export const TemplateContext = React.createContext({ - depth: 0, -}); - -export interface TemplateProps { - /** The source binding */ - data: BindingTemplateInstance; - - /** The target property */ - output?: string; - - /** The template value */ - children: React.ReactNode; -} - -/** Add a template instance to the object */ -function addTemplateToObject( - obj: ObjectNode, - templateObj: ObjectNode, - templateParentNodeType: string -): () => void { - // find a template property - // add one if none exists - - let templateProp = obj.properties.find( - (p) => p.keyNode.value === 'template' && p.valueNode?.type === 'array' - ); - - if (!templateProp) { - templateProp = new PropertyNode(new ValueNode('template'), new ArrayNode()); - templateProp.parent = obj; - obj.properties.push(templateProp); - } - - const templateItems = templateProp.valueNode as ArrayNode; - - templateItems.items.push(templateObj); - // eslint-disable-next-line no-param-reassign - templateObj.parent = templateItems; - - const templateParentProp = obj.properties.find( - (p) => - p.keyNode.value === templateParentNodeType && - p.valueNode?.type === 'array' - ); - - if (templateParentProp) { - const indexOfTemplateParent = obj.properties.indexOf(templateParentProp, 1); - const templateParentValueNode = - obj.properties[indexOfTemplateParent]?.valueNode; - if (templateParentValueNode) { - const templateParentArray = toJSON(templateParentValueNode); - - // Delete the parent of template if it is an empty array - if ( - Array.isArray(templateParentArray) && - templateParentArray.length === 0 - ) { - obj.properties.splice(indexOfTemplateParent, 1); - } - } - } - - return () => { - // Remove the template item from the list - templateItems.items = templateItems.items.filter((t) => t !== templateObj); - - // Clean up the whole template if it's removed - if (templateItems.children.length === 0 && templateProp) { - obj.properties.splice(obj.properties.indexOf(templateProp, 1)); - } - }; -} - -/** Context provider wrapper to handle nested templates */ -const TemplateProvider = (props: WithChildren) => { - const baseContext = React.useContext(TemplateContext); - - return ( - - {props.children} - - ); -}; - -/** Find the first object node in the tree */ -const getParentObject = (node: JsonNode): ObjectNode | undefined => { - if (node.type === 'object') { - return node; - } - - if (node.parent) { - return getParentObject(node.parent); - } -}; - -/** Find the property of the node on the parent */ -const getParentProperty = (node: JsonNode): PropertyNode | undefined => { - if (node.type === 'property') { - return node; - } - - if (node.parent) { - return getParentProperty(node.parent); - } -}; - -/** A template allows users to dynamically map over an array of data */ -export const Template = (props: TemplateProps) => { - const baseContext = React.useContext(TemplateContext); - const [outputProp, setOutputProp] = React.useState( - props.output - ); - const proxyRef = React.useRef(null); - const valueRef = React.useRef(null); - const outputElement = React.useMemo(() => new ProxyNode(), []); - - React.useLayoutEffect(() => { - // Get the output prop - const propNode = proxyRef.current && getParentProperty(proxyRef.current); - - if (outputProp === undefined && propNode) { - setOutputProp(propNode.keyNode.value); - } - }, [proxyRef, outputProp]); - - React.useEffect(() => { - const templateObj = outputElement.items[0] as ObjectNode; - if (proxyRef.current) { - const parentObject = getParentObject(proxyRef.current); - - if (!parentObject) { - throw new Error('Unable to find parent to add template to'); - } - - if (!outputProp) { - return; - } - - // remove the template when unmounted - return addTemplateToObject(parentObject, templateObj, outputProp); - } - }, [proxyRef, outputProp, outputElement.items]); - - return ( - - {createPortal( - - - - {props.data.toValue()} - {outputProp} - {props.children} - - - , - outputElement - )} - - - ); -}; diff --git a/language/dsl/src/types.ts b/language/dsl/src/types.ts deleted file mode 100644 index 99af35e87..000000000 --- a/language/dsl/src/types.ts +++ /dev/null @@ -1,81 +0,0 @@ -import type { - Asset, - Expression, - Navigation as PlayerNav, -} from '@player-ui/types'; -import type { - BindingTemplateInstance, - ExpressionTemplateInstance, -} from './string-templates'; - -export type WithChildren> = T & { - /** child nodes */ - children?: React.ReactNode; -}; - -export type RemoveUnknownIndex = { - [P in keyof T as T[P] extends unknown - ? unknown extends T[P] - ? never - : P - : P]: T[P]; -}; - -export type AddUnknownIndex = T & { - [key: string]: unknown; -}; - -/** Make an ID prop optional an a type */ -export type OmitProp = { - [P in keyof T as P extends K ? never : P]: T[P]; -}; - -export interface PlayerApplicability { - /** An expression to evaluate to determine if this node should appear in a view or not */ - applicability?: - | BindingTemplateInstance - | ExpressionTemplateInstance - | boolean; -} - -export type AssetPropsWithChildren = WithChildren< - WithTemplateTypes< - OmitProp, 'id' | 'type'> & Partial> - > & - PlayerApplicability ->; - -export type SwapKeysToType = { - [P in keyof T]: P extends K ? NewType : T[P]; -}; - -export type WithTemplateTypes = T extends Record - ? { - [P in keyof T]: WithTemplateTypes; - } - : T | BindingTemplateInstance | ExpressionTemplateInstance; - -type ValidKeys = 'exp' | 'onStart' | 'onEnd'; - -type DeepReplace = { - [P in keyof T]: T[P] extends Old - ? P extends ValidKeys - ? New - : DeepReplace // Set to new if one of the valid keys: replace with `? New` for all keys - : T[P] extends (infer R)[] // Is this a Tuple or array - ? DeepReplace[] // Replace the type of the tuple/array - : T[P] extends object - ? DeepReplace - : Extract extends Old // Is this a union with the searched for type? - ? - | DeepReplace, Old, New> // Replace all object types of the union - | Exclude // Get all types that are not objects (handled above) or Old (handled below - | New // Direct Replacement of Old - : T[P]; -}; - -export type Navigation = DeepReplace< - PlayerNav, - Expression, - ExpressionTemplateInstance | ExpressionTemplateInstance[] | Expression ->; diff --git a/language/dsl/src/utils.tsx b/language/dsl/src/utils.tsx deleted file mode 100644 index effc1b345..000000000 --- a/language/dsl/src/utils.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import React from 'react'; -import { - isTemplateStringInstance, - TemplateStringComponent, -} from './string-templates'; - -/** Get an array version of the value */ -export function toArray(val: T | Array): Array { - return Array.isArray(val) ? val : [val]; -} - -/** Create a component version */ -export function toJsonElement(value: any, index?: number): React.ReactElement { - const keyProp = index === undefined ? null : { key: index }; - - if (Array.isArray(value)) { - return ( - - {value.map((item, idx) => toJsonElement(item, idx))} - - ); - } - - /** Allow users to pass in BindingTemplateInstance and ExpressionTemplateInstance directly without turning them into strings first */ - if (isTemplateStringInstance(value)) { - return {value.toRefString()}; - } - - if (typeof value === 'object' && value !== null) { - return ( - - {Object.keys(value).map((key) => ( - - {toJsonElement(value[key])} - - ))} - - ); - } - - return ; -} - -/** Create a fragment for the properties */ -export function toJsonProperties(value: Record) { - return Object.keys(value).map((key) => ( - - {toJsonElement(value[key])} - - )); -} - -/** Create a text asset if needed */ -export function normalizeText(options: { - /** The current node */ - node: React.ReactNode; - - /** A component to render a text asset */ - TextComp?: React.ComponentType; -}): React.ReactNode { - const { node, TextComp } = options; - - const nodeArr = React.Children.toArray(node); - - if ( - nodeArr.every( - (n) => React.isValidElement(n) && n.type !== TemplateStringComponent - ) - ) { - return node; - } - - if (TextComp) { - return {nodeArr}; - } - - throw new Error( - `Tried to convert node to Text Asset, but no Component was supplied.` - ); -} - -/** Create a collection if needed */ -export function normalizeToCollection(options: { - /** the node to look at */ - node: React.ReactNode; - - /** A Text asset */ - TextComp?: React.ComponentType; - - /** A collection asset */ - CollectionComp?: React.ComponentType; -}) { - const { node, CollectionComp } = options; - - if ( - React.Children.count(node) > 1 && - React.Children.toArray(node).every((n) => typeof n !== 'string') - ) { - if (!CollectionComp) { - throw new Error( - `Tried to convert array to a collection asset, but no Component was given.` - ); - } - - return {node}; - } - - return normalizeText({ ...options, node }); -} diff --git a/language/vscode-player-syntax/.vscodeignore b/language/vscode-player-syntax/.vscodeignore deleted file mode 100644 index f369b5e55..000000000 --- a/language/vscode-player-syntax/.vscodeignore +++ /dev/null @@ -1,4 +0,0 @@ -.vscode/** -.vscode-test/** -.gitignore -vsc-extension-quickstart.md diff --git a/language/vscode-player-syntax/BUILD b/language/vscode-player-syntax/BUILD deleted file mode 100644 index 0998062c6..000000000 --- a/language/vscode-player-syntax/BUILD +++ /dev/null @@ -1,15 +0,0 @@ -load("@rules_player//player/vsce:index.bzl", "vsce") - -vsce( - name = "vscode-plugin", - substitutions = { - "__VERSION__": "{STABLE_VERSION}", - "0.0.0-PLACEHOLDER": "{STABLE_VERSION}", - "__GIT_COMMIT__": "{STABLE_GIT_COMMIT}", - }, - data = [ - "package.json", - ".vscodeignore", - "language-configuration.json" - ] + glob(["syntaxes/*"]) -) \ No newline at end of file diff --git a/language/vscode-player-syntax/language-configuration.json b/language/vscode-player-syntax/language-configuration.json deleted file mode 100644 index 2b1e4e94f..000000000 --- a/language/vscode-player-syntax/language-configuration.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "comments": { - // symbol used for single line comment. Remove this entry if your language does not support line comments - "lineComment": "//", - // symbols used for start and end a block comment. Remove this entry if your language does not support block comments - "blockComment": ["/*", "*/"] - }, - // symbols used as brackets - "brackets": [ - ["{", "}"], - ["[", "]"], - ["(", ")"] - ], - // symbols that are auto closed when typing - "autoClosingPairs": [ - ["{", "}"], - ["[", "]"], - ["(", ")"], - ["\"", "\""], - ["'", "'"] - ], - // symbols that can be used to surround a selection - "surroundingPairs": [ - ["{", "}"], - ["[", "]"], - ["(", ")"], - ["\"", "\""], - ["'", "'"] - ] -} diff --git a/language/vscode-player-syntax/package.json b/language/vscode-player-syntax/package.json deleted file mode 100644 index e8fb9a8fb..000000000 --- a/language/vscode-player-syntax/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "player-ui-vscode-syntax", - "displayName": "Player VSCode Syntax", - "description": "", - "publisher": "player-oss", - "version": "0.0.0-PLACEHOLDER", - "engines": { - "vscode": "^1.56.0" - }, - "files": [ - "player-syntax.vsix", - "syntaxes", - "language-configuration.json" - ], - "categories": [ - "Programming Languages" - ], - "keywords": [ - "player", - "vscode" - ], - "contributes": { - "languages": [ - { - "id": "source.player.binding", - "extensions": [ - ".player.binding" - ] - }, - { - "id": "source.player.expression", - "extensions": [ - ".player.expression" - ] - } - ], - "grammars": [ - { - "language": "source.player.binding", - "scopeName": "source.player.binding", - "path": "./syntaxes/player-binding.tmLanguage.json" - }, - { - "language": "source.player.expression", - "scopeName": "source.player.expression", - "path": "./syntaxes/player-expression.tmLanguage.json" - }, - { - "injectTo": [ - "source.js", - "source.ts", - "source.js.jsx", - "source.tsx", - "source.vue" - ], - "scopeName": "inline.player.expression", - "path": "./syntaxes/player-expression-inline.json", - "embeddedLanguages": { - "meta.embedded.block.expression": "source.player.expression" - } - }, - { - "injectTo": [ - "source.js", - "source.ts", - "source.js.jsx", - "source.tsx", - "source.vue" - ], - "scopeName": "inline.player.binding", - "path": "./syntaxes/player-binding-inline.json", - "embeddedLanguages": { - "meta.embedded.block.binding": "source.player.binding" - } - } - ] - } -} diff --git a/language/vscode-player-syntax/syntaxes/player-binding-inline.json b/language/vscode-player-syntax/syntaxes/player-binding-inline.json deleted file mode 100644 index 3cd1354a9..000000000 --- a/language/vscode-player-syntax/syntaxes/player-binding-inline.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "fileTypes": ["js", "jsx", "ts", "tsx", "vue"], - "injectionSelector": "L:source -string -comment", - "patterns": [ - { - "name": "taggedTemplates", - "contentName": "meta.embedded.block.binding", - "begin": "b(`)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.string.template.begin.js" - } - }, - "end": "`", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.template.end.js" - } - }, - "patterns": [{ "include": "source.player.binding" }] - } - ], - "scopeName": "inline.player.binding" -} diff --git a/language/vscode-player-syntax/syntaxes/player-binding.tmLanguage.json b/language/vscode-player-syntax/syntaxes/player-binding.tmLanguage.json deleted file mode 100644 index 62178b511..000000000 --- a/language/vscode-player-syntax/syntaxes/player-binding.tmLanguage.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", - "name": "Player Binding", - "patterns": [{ "include": "#binding" }], - "scopeName": "source.player.binding", - "repository": { - "binding": { - "patterns": [ - { "include": "#modelRef" }, - { "include": "#separator" }, - { "include": "#optionallyQuotedSegment" }, - { "include": "#identifier" } - ] - }, - "bracketSegment": { - "begin": "\\[", - "end": "\\]", - "beginCaptures": { "0": { "name": "keyword.operator.eq" } }, - "endCaptures": { "0": { "name": "keyword.operator.eq" } }, - - "patterns": [ - { "include": "#optionallyQuotedSegment" }, - { "name": "keyword.operator.eq", "match": "={1,3}" }, - { "include": "#optionallyQuotedSegment" } - ] - }, - "expressionRef": { - "begin": "`", - "end": "`", - "patterns": [{ "include": "source.player.expression" }] - }, - "identifier": { - "name": "entity.other.attribute-name", - "match": "[\\w\\-@]+" - }, - "modelRef": { - "begin": "{{", - "end": "}}", - "patterns": [{ "include": "source.player.binding" }] - }, - "separator": { - "name": "keyword.control", - "match": "\\." - }, - "optionallyQuotedSegment": { - "patterns": [ - { - "name": "string.quoted.single.js", - "begin": "'", - "end": "'", - "beginCaptures": { - "0": { "name": "punctuation.definition.string.begin.js" } - }, - "endCaptures": { - "0": { "name": "punctuation.definition.string.end.js" } - }, - "patterns": [ - { "include": "#escapes" }, - { - "name": "constant.character.escape.newline.js", - "match": "\\\n" - }, - { - "name": "invalid.illegal.character-not-allowed-here.js", - "match": "\n" - } - ] - }, - { - "name": "string.quoted.double.js", - "begin": "\"", - "end": "\"", - "beginCaptures": { - "0": { "name": "punctuation.definition.string.begin.js" } - }, - "endCaptures": { - "0": { "name": "punctuation.definition.string.end.js" } - }, - "patterns": [ - { "include": "#escapes" }, - { - "name": "constant.character.escape.newline.js", - "match": "\\\n" - }, - { - "name": "invalid.illegal.character-not-allowed-here.js", - "match": "\n" - } - ] - }, - { "include": "#identifier" } - ] - } - } -} diff --git a/language/vscode-player-syntax/syntaxes/player-expression-inline.json b/language/vscode-player-syntax/syntaxes/player-expression-inline.json deleted file mode 100644 index bfc73dc2b..000000000 --- a/language/vscode-player-syntax/syntaxes/player-expression-inline.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "fileTypes": ["js", "jsx", "ts", "tsx", "vue"], - "injectionSelector": "L:source -string -comment", - "patterns": [ - { - "name": "taggedTemplates", - "contentName": "meta.embedded.block.expression", - "begin": "e(`)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.string.template.begin.js" - } - }, - "end": "`", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.template.end.js" - } - }, - "patterns": [{ "include": "source.player.expression" }] - } - ], - "scopeName": "inline.player.expression" -} diff --git a/language/vscode-player-syntax/syntaxes/player-expression.tmLanguage.json b/language/vscode-player-syntax/syntaxes/player-expression.tmLanguage.json deleted file mode 100644 index ccfe3ceb8..000000000 --- a/language/vscode-player-syntax/syntaxes/player-expression.tmLanguage.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", - "name": "Player Expressions", - "patterns": [{ "include": "#expression" }], - "scopeName": "source.player.expression", - "repository": { - "expression": { - "patterns": [ - { "include": "#function-call" }, - { "include": "#templateExpression" }, - { "include": "#number" }, - { "include": "#operator" }, - { "include": "#separator" }, - { "include": "source.player.binding#modelRef" }, - { "include": "source.player.binding#optionallyQuotedSegment" }, - { "include": "#identifier" } - ] - }, - "templateExpression": { - "name": "meta.template.expression.js", - "begin": "\\$\\{", - "end": "\\}", - "beginCaptures": { - "0": { "name": "punctuation.definition.template-expression.begin.js" } - }, - "endCaptures": { - "0": { "name": "punctuation.definition.template-expression.end.js" } - }, - "patterns": [{ "include": "source.js" }] - }, - "identifier": { - "name": "entity.other.attribute-name", - "match": "\\w+" - }, - "number": { - "match": "(\\d+)(\\.)?(\\d+)?", - "captures": { - "1": { "name": "constant.numerical.decimal.js" }, - "2": { "name": "meta.delimiter.decimal.period.js" }, - "3": { "name": "constant.numerical.decimal.js" } - } - }, - "operator": { - "name": "keyword.operator.arithmetic.js", - "match": "[*-+/=]" - }, - "separator": { - "name": "punctuation.separator.comma.js", - "match": "\\," - }, - "function-call": { - "begin": "(\\w+)(\\()", - "end": "\\)", - "beginCaptures": { - "1": { "name": "entity.name.function.js" }, - "2": { "name": "keyword.operator.eq" } - }, - "endCaptures": { - "0": { "name": "keyword.operator.eq" } - }, - "patterns": [ - { "include": "#templateExpression" }, - { "include": "#number" }, - { "include": "#separator" }, - { "include": "#operator" }, - { "include": "source.player.binding" }, - { "include": "#identifier" } - ] - } - } -} diff --git a/tools/cli/BUILD b/tools/cli/BUILD deleted file mode 100644 index 4f8bd23e3..000000000 --- a/tools/cli/BUILD +++ /dev/null @@ -1,110 +0,0 @@ -load("@rules_player//javascript:js_library_pipeline.bzl", "PLACEHOLDER_VERSION") -load("@rules_player//javascript/package_json:package_json.bzl", "create_package_json") -load("@rules_player//javascript:utils.bzl", "filter_empty", "without_tests", "remove_duplicates", "include_exts") -load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") -load("@npm//jest-cli:index.bzl", "jest_test") -load("@npm//eslint:index.bzl", "eslint_test") -load("//:index.bzl", "expand_ts_outputs", "TEST_DATA", "LINT_DATA", "lint_exts") -load("@npm//oclif:index.bzl", "oclif") -load("@npm//typescript:index.bzl", "tsc") - -BUILD_DATA = [ - "@npm//@babel/core", - "@npm//@babel/preset-env", - "@npm//@babel/preset-react", - "@npm//@babel/preset-typescript", - "@npm//@babel/plugin-transform-react-jsx-source", - "@npm//@babel/register", - "@npm//@types/babel__register", - "@npm//@oclif/core", - "@npm//chalk", - "@npm//cosmiconfig", - "@npm//cross-fetch", - "@npm//elegant-spinner", - "@npm//figures", - "@npm//globby", - "@npm//log-symbols", - "@npm//log-update", - "@npm//mkdirp", - "@npm//vscode-languageserver-textdocument", - "@npm//vscode-languageserver-types", - "//language/dsl:@player-ui/dsl" -] - -SRCS = glob(include = ["src/**/*"], exclude=["**/__tests__/**", "**/*.test.*"]) -ALL_SRCS = glob(include = ["src/**/*"]) - -tsc( - name = "cli-build", - outs = expand_ts_outputs(SRCS), - args = [ - "-p", - "$(execpath tsconfig.json)", - "--outDir", - "$(RULEDIR)/dist", - ], - data = SRCS + [ - "tsconfig.json", - "//:tsconfig.json", - "//:typings" - ] + BUILD_DATA -) - -create_package_json( - name = "cli-package_json", - package_name = "@player-ui/cli", - entry = "./src/index.ts", - out_dir = "dist", - registry = "https://registry.npmjs.org", - placeholder_version = PLACEHOLDER_VERSION, - dependencies = BUILD_DATA, - peer_dependencies = None, - root_package_json = "//:package.json", - base_package_json = "package.json", -) - -oclif( - name="cli-manifest", - chdir = "$(RULEDIR)", - args=["manifest"], - data = [ - ":cli-package_json", - ":cli-build" - ] + BUILD_DATA, - outs = ["oclif.manifest.json"] -) - -eslint_test( - name = "player-cli-lint", - data = remove_duplicates(filter_empty(["//:.eslintrc.js"] + BUILD_DATA + LINT_DATA + TEST_DATA + ALL_SRCS)), - args = [ - "--ext", - ",".join(lint_exts), - ] + ["$(execpath %s)" % (f) for f in include_exts(ALL_SRCS, lint_exts)], -) - -jest_test( - name = "player-cli-unit", - env = { - "JEST_JUNIT_OUTPUT_FILE": "$XML_OUTPUT_FILE", - # Unset the coverage_dir so the default rules don't try to gather coverage - "COVERAGE_DIR": "", - }, - args = [ - "--no-cache", - "--ci", - "--colors", - ], - data = remove_duplicates(filter_empty(["//:jest.config.js", "package.json"] + BUILD_DATA + TEST_DATA + ALL_SRCS)), -) - -pkg_npm( - name = "cli-publish", - deps = [":cli-build", ":cli-manifest", ":cli-package_json", ":README.md", "bin/run"], - substitutions = { - "__VERSION__": "{STABLE_VERSION}", - "0.0.0-PLACEHOLDER": "{STABLE_VERSION}", - "__GIT_COMMIT__": "{STABLE_GIT_COMMIT}", - }, - validate = False, -) diff --git a/tools/cli/README.md b/tools/cli/README.md deleted file mode 100644 index 4b397d9c3..000000000 --- a/tools/cli/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Player CLI - -## Config - -Config files are able to customize the behavior of the CLI commands without requiring args. Behavior specific to execution can leverage `plugins`, which can be composed together using `presets`. Full configs can also be shared using `extensions`. - -To resolve a full configuration, the `extension` is taken as the base, the `presets` are applied in order, then local `plugins`. -The format is similar to `eslint`, `babel` and other .rc/json/js based approaches. - -Config files are searched using cosmiconfig, which will look for: - -- a `player` property in package.json -- a `.playerrc` file in JSON or YAML format -- a `.player.json`, `.playerrc.yaml`, `.playerrc.yml`, `.playerrc.js`, or `.playerrc.cjs` file -- a `player.config.js` or `player.config.cjs` CommonJS module exporting an object - -Example: - -```js -module.exports = { - extends: '@my-scope/base', - plugins: [ - 'plugin-npm-package', - ['some-plugin-with-config', { config: true }], - { - // Plugins can also be defined inline - handler: () => {}, - }, - ], -}; -``` - -Options defined via the CLI arguments will take precedence over the config files (for things that overlap). - -## Plugins - -Plugins are the way to change runtime behavior of the CLI actions. This includes augmenting the behavior of the DSL compiler, language-service, and more. - -# Commands - - - -- [`player dsl compile`](#player-dsl-compile) - -## `player dsl compile` - -Compile Player DSL files into JSON - -``` -USAGE - $ player dsl compile -i [-c ] [-o ] [--skip-validation] - -FLAGS - -c, --config= Path to a specific config file to load. - By default, will automatically search for an rc or config file to load - -i, --input= (required) An input directory to compile. - Any jsx/ts/tsx files will be loaded via babel-require automatically. - -o, --output= [default: _out] Output directory to write results to - --skip-validation Option to skip validating the generated JSON - -DESCRIPTION - Compile Player DSL files into JSON -``` - - diff --git a/tools/cli/bin/dev b/tools/cli/bin/dev deleted file mode 100755 index 9cff7dcac..000000000 --- a/tools/cli/bin/dev +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env node - -const oclif = require('@oclif/core') - -const path = require('path') -const project = path.join(__dirname, '..', 'tsconfig.json') - -// In dev mode -> use ts-node and dev plugins -process.env.NODE_ENV = 'development' - -require('ts-node').register({project}) - -// In dev mode, always show stack traces -oclif.settings.debug = true; - -// Start the CLI -oclif.run().then(oclif.flush).catch(oclif.Errors.handle) \ No newline at end of file diff --git a/tools/cli/bin/run b/tools/cli/bin/run deleted file mode 100755 index 58aa54cdb..000000000 --- a/tools/cli/bin/run +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node - -const oclif = require('@oclif/core') -// Setting this to prod break source-map generation for react dsl stuff -process.env.NODE_ENV = 'dev' - -oclif.run().then(require('@oclif/core/flush')).catch(require('@oclif/core/handle')) \ No newline at end of file diff --git a/tools/cli/package.json b/tools/cli/package.json deleted file mode 100644 index a6c02c395..000000000 --- a/tools/cli/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@player-ui/cli", - "main": "./dist/index.js", - "files": [ - "bin", - "dist", - "oclif.manifest.json" - ], - "oclif": { - "bin": "player", - "dirname": "player", - "topicSeparator": " ", - "commands": "./dist/commands" - }, - "bin": { - "player": "bin/run" - } -} diff --git a/tools/cli/src/__tests__/config.test.json b/tools/cli/src/__tests__/config.test.json deleted file mode 100644 index 59e7fcce4..000000000 --- a/tools/cli/src/__tests__/config.test.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "@test-extension", - "presets": ["@test-preset-1"], - "plugins": ["@test-plugin-1"] -} diff --git a/tools/cli/src/__tests__/config.test.ts b/tools/cli/src/__tests__/config.test.ts deleted file mode 100644 index 06162b7d8..000000000 --- a/tools/cli/src/__tests__/config.test.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @jest-environment node - */ -import path from 'path'; -import { BaseCommand } from '../utils/base-command'; - -test('resolves config correctly', async () => { - jest.setTimeout(10000); - - const configCallback = jest.fn(); - - class ConfigLoader extends BaseCommand { - async run() { - configCallback(await this.getPlayerConfig()); - } - } - - jest.mock( - '@test-extension', - () => { - return { - dsl: { - src: 'test-src', - outDir: 'output-directory', - }, - }; - }, - { virtual: true } - ); - - jest.mock( - '@test-preset-1', - () => { - return { - presets: ['@test-preset-2'], - plugins: ['@test-plugin-2'], - }; - }, - { virtual: true } - ); - - jest.mock( - '@test-preset-2', - () => { - return { - plugins: ['@test-plugin-3'], - }; - }, - { virtual: true } - ); - - jest.mock( - '@test-plugin-1', - () => { - return { - name: 'test-plugin-1', - }; - }, - { virtual: true } - ); - - jest.mock( - '@test-plugin-2', - () => { - return { - name: 'test-plugin-2', - }; - }, - { virtual: true } - ); - - jest.mock( - '@test-plugin-3', - () => { - return { - name: 'test-plugin-3', - }; - }, - { virtual: true } - ); - - await ConfigLoader.run([`-c`, `${path.join(__dirname, 'config.test.json')}`]); - - expect(configCallback).toBeCalledWith({ - dsl: { - src: 'test-src', - outDir: 'output-directory', - }, - plugins: [ - { - name: 'test-plugin-3', - }, - { - name: 'test-plugin-2', - }, - { - name: 'test-plugin-1', - }, - ], - }); -}); diff --git a/tools/cli/src/commands/dsl/compile.ts b/tools/cli/src/commands/dsl/compile.ts deleted file mode 100644 index 5df909e65..000000000 --- a/tools/cli/src/commands/dsl/compile.ts +++ /dev/null @@ -1,192 +0,0 @@ -/* eslint-disable no-await-in-loop */ -/* eslint-disable @typescript-eslint/no-var-requires */ -/* eslint-disable global-require */ -/* eslint-disable import/no-dynamic-require */ -import { Flags } from '@oclif/core'; -import glob from 'globby'; -import path from 'path'; -import { promises as fs } from 'fs'; -import mkdirp from 'mkdirp'; -import logSymbols from 'log-symbols'; -import figures from 'figures'; -import chalk from 'chalk'; -import type { SerializeType } from '@player-ui/dsl'; -import { BaseCommand } from '../../utils/base-command'; -import { convertToFileGlob, normalizePath } from '../../utils/fs'; -import type { CompletedTask } from '../../utils/task-runner'; -import { registerForPaths } from '../../utils/babel-register'; -// import Validate from '../json/validate'; - -/** A command to compile player DSL content into JSON */ -export default class DSLCompile extends BaseCommand { - static description = 'Compile Player DSL files into JSON'; - - static flags = { - ...BaseCommand.flags, - input: Flags.string({ - char: 'i', - description: - 'An input directory to compile.\nAny jsx/ts/tsx files will be loaded via babel-require automatically.', - }), - output: Flags.string({ - char: 'o', - description: 'Output directory to write results to.', - }), - 'skip-validation': Flags.boolean({ - description: 'Option to skip validating the generated JSON', - }), - }; - - private async getOptions() { - const { flags } = await this.parse(DSLCompile); - const config = await this.getPlayerConfig(); - - const input = flags.input ?? config.dsl?.src; - - if (!input) { - throw new Error(`Input files are required for DSL compilation`); - } - - return { - input, - output: flags.output ?? config.dsl?.outDir ?? '_out', - skipValidation: - flags['skip-validation'] ?? config.dsl?.skipValidation ?? false, - }; - } - - async run(): Promise<{ - /** the status code */ - exitCode: number; - }> { - const { input, output, skipValidation } = await this.getOptions(); - - const files = await glob( - convertToFileGlob([input], '**/*.(tsx|jsx|js|ts)'), - { - expandDirectories: true, - } - ); - - registerForPaths(); - - this.debug('Found %i files to process', files.length); - - const results = { - exitCode: 0, - }; - - /** Compile a file from the DSL format into JSON */ - const compileFile = async (file: string) => { - const compiler = await this.createDSLCompiler(); - const requiredModule = require(path.resolve(file)); - const defaultExport = requiredModule.default; - - if (!defaultExport) { - return; - } - - let relativePath = path.relative(input, file); - if (!relativePath) { - relativePath = path.basename(file); - } - - const outputFile = path.join( - output, - path.format({ - ...path.parse(relativePath), - base: undefined, - ext: '.json', - }) - ); - - this.log( - `${logSymbols.info} Compiling %s ${figures.arrowRight} %s`, - normalizePath(file), - normalizePath(outputFile) - ); - - const { value, contentType, sourceMap } = await compiler.serialize( - defaultExport - ); - - const contentStr = JSON.stringify(value, null, 2); - - await mkdirp(path.dirname(outputFile)); - await fs.writeFile(outputFile, contentStr); - - if (sourceMap) { - await fs.writeFile(`${outputFile}.map`, sourceMap); - } - - return { - contentType, - outputFile, - inputFile: file, - }; - }; - - const compilerResults: Array< - Omit< - CompletedTask< - { - /** What type of file is generated */ - contentType: SerializeType; - /** The output path */ - outputFile: string; - /** the input file */ - inputFile: string; - }, - any - >, - 'run' - > - > = []; - - // This has to be done serially b/c of the way React logs messages to console.error - // Otherwise the errors in console will be randomly interspersed between update messages - for (let fIndex = 0; fIndex < files.length; fIndex += 1) { - const file = files[fIndex]; - try { - const result = await compileFile(file); - compilerResults.push({ - output: result, - state: 'completed', - }); - } catch (e: any) { - results.exitCode = 100; - console.log(''); - console.log( - chalk.red(`${logSymbols.error} Error compiling ${file}: ${e.message}`) - ); - this.debug(e); - compilerResults.push({ - state: 'completed', - error: e, - }); - } - } - - // if (!skipValidation) { - // console.log(''); - // const hasOutput = compilerResults.some( - // (r) => r.output?.contentType === 'flow' - // ); - // if (hasOutput) { - // await Validate.run([ - // '-f', - // ...compilerResults - // .filter((r) => r.output?.contentType === 'flow') - // .map((result) => { - // return result.output?.outputFile ?? ''; - // }), - // ]); - // } else { - // console.log('No output to validate'); - // } - // } - - this.exit(results.exitCode); - return results; - } -} diff --git a/tools/cli/src/config.ts b/tools/cli/src/config.ts deleted file mode 100644 index 0dfb4bdbb..000000000 --- a/tools/cli/src/config.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { PlayerCLIPlugin } from './plugins'; - -export interface PlayerConfigFileShape { - /** A base config to inherit defaults from */ - extends?: string | PlayerConfigFileShape; - - /** A list of plugins to apply */ - plugins?: Array; - - /** A list of presets to apply */ - presets?: Array; -} - -export interface PlayerConfigResolvedShape { - /** Options related to the DSL and compilation */ - dsl?: { - /** An input directory for compilation */ - src?: string; - - /** An output directory to use */ - outDir?: string; - - /** Flag to omit validating the resulting JSON */ - skipValidation?: boolean; - }; - - /** Options related to JSON and validation */ - json?: { - /** An input file, directory, glob, or list of any of the above to use as inputs for validation */ - src?: string | string[]; - }; - - /** Flattened list of plugins */ - plugins: Array; -} diff --git a/tools/cli/src/index.ts b/tools/cli/src/index.ts deleted file mode 100644 index cc1290642..000000000 --- a/tools/cli/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { run } from '@oclif/core'; -export * from './config'; -export * from './plugins'; diff --git a/tools/cli/src/plugins/index.ts b/tools/cli/src/plugins/index.ts deleted file mode 100644 index 6dd4da314..000000000 --- a/tools/cli/src/plugins/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -// import { PlayerLanguageService } from '@player-ui/service'; -import type { DSLCompiler } from '@player-ui/dsl'; - -export interface PlayerCLIPlugin { - // /** - // * Handler when an LSP instance is created - // * Use this to add custom rule-sets, load asset types, etc - // */ - // onCreateLanguageService?: ( - // lsp: PlayerLanguageService - // ) => void | Promise; - - /** - * Handler when a DSL compiler is created - * Use this to change how content is generated - */ - onCreateDSLCompiler?: (compiler: DSLCompiler) => void | Promise; -} - -export type PlayerCLIClass = { - new (): PlayerCLIPlugin; -}; diff --git a/tools/cli/src/utils/babel-register.ts b/tools/cli/src/utils/babel-register.ts deleted file mode 100644 index 97be7f5b6..000000000 --- a/tools/cli/src/utils/babel-register.ts +++ /dev/null @@ -1,15 +0,0 @@ -import register from '@babel/register'; - -/** Register a `require()` loader for any of the given paths */ -export const registerForPaths = () => { - register({ - extensions: ['.es6', '.es', '.jsx', '.js', '.mjs', '.tsx', '.ts'], - - presets: [ - ['@babel/preset-env', { modules: 'cjs' }], - '@babel/preset-typescript', - '@babel/preset-react', - ], - plugins: ['@babel/plugin-transform-react-jsx-source'], - }); -}; diff --git a/tools/cli/src/utils/base-command.ts b/tools/cli/src/utils/base-command.ts deleted file mode 100644 index a36c38723..000000000 --- a/tools/cli/src/utils/base-command.ts +++ /dev/null @@ -1,169 +0,0 @@ -/* eslint-disable import/no-dynamic-require */ -/* eslint-disable global-require */ -/* eslint-disable @typescript-eslint/no-var-requires */ -import { Command, Flags } from '@oclif/core'; -import path from 'path'; -import { cosmiconfig } from 'cosmiconfig'; -// import { PlayerLanguageService } from '@player-ui/language-service'; -import { DSLCompiler } from '@player-ui/dsl'; -import type { - PlayerConfigFileShape, - PlayerConfigResolvedShape, -} from '../config'; - -const configLoader = cosmiconfig('player'); - -/** The common configs for all */ -export abstract class BaseCommand extends Command { - static flags = { - config: Flags.string({ - description: - 'Path to a specific config file to load.\nBy default, will automatically search for an rc or config file to load', - char: 'c', - }), - }; - - private resolvedConfig: PlayerConfigResolvedShape | undefined; - - private async loadConfig(configFilePath?: string) { - if (configFilePath) { - try { - return await configLoader.load(configFilePath); - } catch (e: unknown) { - this.warn(`Error loading config file: ${configFilePath}`); - } - } - - return configLoader.search(); - } - - private async resolveConfig( - conf?: PlayerConfigFileShape, - relativePath?: string - ): Promise { - let config: PlayerConfigResolvedShape = { - ...(conf ?? {}), - plugins: [], - }; - - // If there's an extension load it - - if (conf?.extends) { - let normalizedExtension: PlayerConfigFileShape; - - if (typeof conf.extends === 'string') { - const requiredExtendedConfig = require(conf.extends); - normalizedExtension = - requiredExtendedConfig.default ?? requiredExtendedConfig; - } else { - normalizedExtension = conf.extends; - } - - config = { - ...(await this.resolveConfig(normalizedExtension, relativePath)), - }; - } - - await Promise.all( - conf?.presets?.map(async (preset) => { - if (typeof preset === 'string') { - const requiredExtendedConfig = require(preset); - const normalizedExtension = - requiredExtendedConfig.default ?? requiredExtendedConfig; - - const extendedConfig = await this.resolveConfig(normalizedExtension); - - config.plugins = [...extendedConfig.plugins, ...config.plugins]; - - return; - } - - const presetConfig = await this.resolveConfig(preset); - config.plugins = [...presetConfig.plugins, ...config.plugins]; - }) ?? [] - ); - - // Go through each plugin and load/create it - - conf?.plugins?.forEach((pluginInfo) => { - if (typeof pluginInfo === 'object' && !Array.isArray(pluginInfo)) { - config.plugins.push(pluginInfo); - return; - } - - const pluginName = - typeof pluginInfo === 'string' ? pluginInfo : pluginInfo[0]; - const pluginArgs = - typeof pluginInfo === 'string' ? undefined : pluginInfo[1]; - - let pluginLoadPath = pluginName; - - if (pluginName.startsWith('.')) { - pluginLoadPath = path.resolve(relativePath ?? '', pluginName); - } - - this.debug('loading plugin from %s', pluginLoadPath); - // Get the instance for the plugin - const required = require(pluginLoadPath); - - const PluginExport = required.default ?? required; - - if (!PluginExport) { - return; - } - - const pluginInstance = - typeof PluginExport === 'object' - ? PluginExport - : new PluginExport(pluginArgs); - config.plugins.push(pluginInstance); - }); - - return config; - } - - private async readConfig(): Promise { - const { flags } = await this.parse(); - const configFile = await this.loadConfig(flags.config); - return this.resolveConfig(configFile?.config); - } - - protected async getPlayerConfig(): Promise { - if (this.resolvedConfig) { - return this.resolvedConfig; - } - - const c = await this.readConfig(); - this.resolvedConfig = c; - return c; - } - - // async createLanguageService(): Promise { - // const lsp = new PlayerLanguageService(); - // const { plugins } = await this.getPlayerConfig(); - - // for (let i = 0; i < plugins.length; i++) { - // // eslint-disable-next-line no-await-in-loop - // await plugins[i].onCreateLanguageService?.(lsp); - // } - - // return lsp; - // } - - async createDSLCompiler(): Promise { - const compiler = new DSLCompiler(); - const { plugins } = await this.getPlayerConfig(); - for (let i = 0; i < plugins.length; i++) { - // eslint-disable-next-line no-await-in-loop - await plugins[i].onCreateDSLCompiler?.(compiler); - } - - return compiler; - } - - exit(code?: number): void { - if (process.env.NODE_ENV !== 'test') { - super.exit(code); - } - } -} diff --git a/tools/cli/src/utils/compile-renderer.ts b/tools/cli/src/utils/compile-renderer.ts deleted file mode 100644 index a7d8f9959..000000000 --- a/tools/cli/src/utils/compile-renderer.ts +++ /dev/null @@ -1,62 +0,0 @@ -import chalk from 'chalk'; -import figureSet from 'figures'; -import type { SerializeType } from '@player-ui/dsl'; -import type { TaskProgressRenderer } from './task-runner'; -import { getTaskSymbol } from './diag-renderer'; - -export interface DSLCompileFileData { - /** the file name */ - file: string; - - /** the name of the output file */ - outputFile?: string; -} - -export const compileRenderer: TaskProgressRenderer< - | { - /** the type of content generated */ - contentType: SerializeType; - } - | undefined, - DSLCompileFileData -> = { - onUpdate: (ctx) => { - const output: string[] = ['']; - - ctx.tasks.forEach((task) => { - const outputType = - task.state === 'completed' && task.output?.contentType - ? task.output.contentType - : undefined; - - let titleLine = [ - getTaskSymbol(task), - outputType && `(${outputType})`, - task.data?.file, - ] - .filter(Boolean) - .join(' '); - - if (task.data?.outputFile) { - titleLine = [ - titleLine, - figureSet.arrowRight, - task.data.outputFile, - ].join(' '); - } - - output.push(titleLine); - - if (task.state === 'completed') { - if (task.error) { - output.push(` ${figureSet.arrowRight} ${chalk.red('bad')}`); - } - } - }); - - return output.join('\n'); - }, - onEnd: (ctx) => { - return [compileRenderer.onUpdate(ctx)].join('\n'); - }, -}; diff --git a/tools/cli/src/utils/diag-renderer.ts b/tools/cli/src/utils/diag-renderer.ts deleted file mode 100644 index 9a9954f1e..000000000 --- a/tools/cli/src/utils/diag-renderer.ts +++ /dev/null @@ -1,242 +0,0 @@ -import type { Diagnostic, Range } from 'vscode-languageserver-types'; -import { DiagnosticSeverity } from 'vscode-languageserver-types'; -import chalk from 'chalk'; -import logSymbols from 'log-symbols'; -import elegantSpinner from 'elegant-spinner'; -import type { Task, TaskProgressRenderer } from './task-runner'; -import { normalizePath } from './fs'; - -/** Compare the ranges and return the one that starts of finishes first */ -function rangeComparator(first: Range, second: Range): number { - if (first.start.line < second.start.line) { - return -1; - } - - if (first.start.line > second.start.line) { - return 1; - } - - if (first.start.character < second.start.character) { - return -1; - } - - if (first.start.character > second.start.character) { - return 1; - } - - return 0; -} - -/** Sort a list of digs by position */ -const sortDiagnostics = (validations: Diagnostic[]) => { - // Sort the validations by line/char number - return validations.sort((a, b) => { - return rangeComparator(a.range, b.range); - }); -}; - -/** Get the text representing the line range */ -function getLineRange(range: Range): string { - return `${range.start.line + 1}:${range.start.character + 1}`; -} - -/** Fix the plurality of a word */ -function maybePlural(word: string, count: number) { - return count > 1 ? `${word}s` : word; -} - -/** Get the lines representing the summary of the results */ -export function getSummary({ - errors, - warnings, - skipped, - fileCount, - duration, -}: { - /** Error count */ - errors: number; - - /** Warning count */ - warnings: number; - - /** number of skipped files */ - skipped?: number; - - /** File Count */ - fileCount: number; - - /** How long this took */ - duration: number | undefined; -}) { - return [ - '\n', - (errors > 0 || warnings === 0) && - chalk.red(`${errors} ${maybePlural('error', errors)}`), - warnings > 0 && - chalk.yellow(`${warnings} ${maybePlural('warning', warnings)}`), - skipped !== undefined && - skipped > 0 && - chalk.gray(`${skipped} ${maybePlural('skipped', skipped)}`), - - chalk.gray(`in ${fileCount} ${maybePlural('file', fileCount)}`), - - chalk.gray(`took ${duration}ms`), - ] - .filter(Boolean) - .join(' '); -} - -/** Format a diag for printing on the console */ -function formatDiagnostic( - diag: Diagnostic, - longestLine: number, - fName: string -): string { - const type = - diag.severity === DiagnosticSeverity.Error - ? chalk.red(`${logSymbols.error} `) - : chalk.yellow(`${logSymbols.warning} `); - const msg = chalk.bold(diag.message); - const range = getLineRange(diag.range); - - return [ - `${type}`, - range.padEnd(longestLine), - msg, - `${fName}:${range.padEnd(longestLine)}`, - ].join(' '); -} - -/** Format the results for printing on the console */ -export function formatDiagnosticResults( - filePath: string, - results: Diagnostic[], - verbose = false -) { - const count = { - errors: 0, - warnings: 0, - }; - const linePrefix = ' '; - const longestLine = Math.max( - ...results.map((r) => getLineRange(r.range).length) - ); - - let lines: string[] = results - .map((diag) => { - if (diag.severity === DiagnosticSeverity.Error) { - count.errors += 1; - } else if (diag.severity === DiagnosticSeverity.Warning) { - count.warnings += 1; - } - - if (diag.severity === DiagnosticSeverity.Error || verbose) { - return linePrefix + formatDiagnostic(diag, longestLine + 1, filePath); - } - - return ''; - }) - .filter((line) => line !== ''); - - if (count.errors > 0) { - lines = ['', `${chalk.red(logSymbols.error)} ${filePath}`, ...lines, '']; - } else if (verbose) { - if (count.warnings > 0) { - lines = [ - '', - `${chalk.yellow(logSymbols.warning)} ${filePath}`, - ...lines, - '', - ]; - } else { - lines = [`${chalk.green(logSymbols.success)} ${filePath}`, ...lines]; - } - } - - return { - ...count, - lines, - }; -} - -const spinnerState = new WeakMap< - Task, - ReturnType ->(); - -/** Get the symbol for a given task */ -export const getTaskSymbol = (task: Task) => { - if (task.state === 'pending' || task.state === 'idle') { - const spinner = spinnerState.get(task) ?? elegantSpinner(); - spinnerState.set(task, spinner); - return chalk.yellow(spinner()); - } - - if (task.state === 'completed' && task.error) { - return logSymbols.error; - } - - if (task.state === 'completed') { - return chalk.yellow(logSymbols.success); - } - - return ' '; -}; - -export const validationRenderer: TaskProgressRenderer< - Diagnostic[], - { - /** the file name */ - file: string; - } -> = { - onUpdate(ctx) { - const { tasks } = ctx; - const output: string[] = ['Validating content']; - - tasks.forEach((task) => { - if (task.state === 'completed' && task.output) { - const formattedDiags = formatDiagnosticResults( - task.data?.file ? normalizePath(task.data.file) : '', - sortDiagnostics(task.output), - true - ); - - output.push(...formattedDiags.lines); - } else { - output.push( - `${getTaskSymbol(task)} ${ - task.data?.file ? normalizePath(task.data.file) : '' - }` - ); - } - }); - - return output.join('\n'); - }, - - onEnd(ctx) { - const count = { - errors: 0, - warnings: 0, - skipped: 0, - fileCount: ctx.tasks.length, - duration: ctx.duration, - }; - - ctx.tasks.forEach((t) => { - if (t.state === 'completed' && t.output) { - const formattedDiags = formatDiagnosticResults( - t.data?.file ?? '', - t.output, - true - ); - - count.errors += formattedDiags.errors; - count.warnings += formattedDiags.warnings; - } - }); - - return [validationRenderer.onUpdate(ctx), getSummary(count)].join('\n'); - }, -}; diff --git a/tools/cli/src/utils/fs.ts b/tools/cli/src/utils/fs.ts deleted file mode 100644 index 824b367f8..000000000 --- a/tools/cli/src/utils/fs.ts +++ /dev/null @@ -1,20 +0,0 @@ -import path from 'path'; -import fs from 'fs'; - -/** Check if an input is a directory, if it is, then swap it to a globbed path */ -export const convertToFileGlob = (input: string[], glob: string): string[] => { - return input.map((i) => { - try { - if (fs.statSync(i).isDirectory()) { - return path.join(i, glob); - } - } catch (e: any) {} - - return i; - }); -}; - -/** Normalize a path for display */ -export const normalizePath = (p: string): string => { - return path.relative(process.cwd(), p); -}; diff --git a/tools/cli/src/utils/task-runner.ts b/tools/cli/src/utils/task-runner.ts deleted file mode 100644 index d36b3b0f9..000000000 --- a/tools/cli/src/utils/task-runner.ts +++ /dev/null @@ -1,137 +0,0 @@ -import logUpdate from 'log-update'; - -/* eslint-disable no-param-reassign */ -interface BaseTask { - /** The state of the task */ - state: 'idle' | 'pending'; - - /** A function to run */ - run: () => Promise; - - /** other metadata about the task */ - data?: Data; -} - -export type CompletedTask = Omit< - BaseTask, - 'state' -> & { - /** The state of the task */ - state: 'completed'; -} & ( - | { - /** The results */ - output: Results; - - /** An error if any */ - error?: never; - } - | { - /** The error if any */ - error: Error; - - /** No output on error */ - output?: never; - } - ); - -export type Task = - | BaseTask - | CompletedTask; - -export interface TaskProgressRenderer { - /** Call back to paint update on the page */ - onUpdate: (ctx: { - /** The tasks that are running */ - tasks: Array>; - }) => string; - - /** Called for a summary */ - onEnd: (ctx: { - /** The completed tasks */ - tasks: Array>; - - /** Number of ms it took to run */ - duration: number; - }) => string; -} - -interface TaskRunner { - /** The list of tasks */ - tasks: Array>; - - /** A trigger to start it */ - run: () => Promise>>; -} - -/** Create a runner to kick off tasks in parallel */ -export const createTaskRunner = ({ - tasks, - renderer, -}: { - /** A list of tasks to run */ - tasks: Array, 'data' | 'run'>>; - - /** How to report progress */ - renderer: TaskProgressRenderer; -}): TaskRunner => { - const statefulTasks: Array> = tasks.map((t) => { - return { - ...t, - state: 'idle', - }; - }); - - /** Kick off the task list */ - const run = async () => { - const startTime = Date.now(); - - let ended = false; - - const paintInterval = setInterval(() => { - if (ended) { - return; - } - - const output = renderer.onUpdate({ tasks: statefulTasks }); - if (process.stdout.isTTY) { - logUpdate(output); - } - }, 10); - - await Promise.all( - statefulTasks.map(async (t) => { - t.state = 'pending'; - try { - const r = await t.run(); - t.state = 'completed'; - (t as CompletedTask).output = r; - } catch (e: unknown) { - if (e instanceof Error) { - t.state = 'completed'; - (t as CompletedTask).error = e; - } - } - }) - ); - ended = true; - clearInterval(paintInterval); - - const duration = Date.now() - startTime; - - const output = renderer.onEnd({ - duration, - tasks: statefulTasks as Array>, - }); - - console.log(output); - logUpdate.done(); - - return statefulTasks as Array>; - }; - - return { - tasks: statefulTasks, - run, - }; -}; diff --git a/tools/cli/tsconfig.json b/tools/cli/tsconfig.json deleted file mode 100644 index 7627af39a..000000000 --- a/tools/cli/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "emitDeclarationOnly": false - } -} \ No newline at end of file From 9f938290705aad8df434f9019219f9f22a4465ad Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Thu, 13 Oct 2022 12:19:07 -0700 Subject: [PATCH 02/16] Add xlr export rule to build pipeline --- core/player/src/player.ts | 12 ++ core/types/BUILD | 4 +- index.bzl | 14 +- package.json | 1 + plugins/reference-assets/core/BUILD | 3 +- plugins/reference-assets/core/src/plugin.ts | 21 ++- yarn.lock | 150 +++++++++++++++++++- 7 files changed, 194 insertions(+), 11 deletions(-) diff --git a/core/player/src/player.ts b/core/player/src/player.ts index 356712e72..30e599076 100644 --- a/core/player/src/player.ts +++ b/core/player/src/player.ts @@ -46,6 +46,18 @@ export interface PlayerPlugin { apply: (player: Player) => void; } +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ExtendedPlayerPlugin< + // eslint-disable-next-line @typescript-eslint/no-unused-vars + Assets = void, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + Views = void, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + Expressions = void, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + DataTypes = void +> {} + export interface PlayerConfigOptions { /** A set of plugins to load */ plugins?: PlayerPlugin[]; diff --git a/core/types/BUILD b/core/types/BUILD index 79b7a3eda..a47a7c27c 100644 --- a/core/types/BUILD +++ b/core/types/BUILD @@ -2,6 +2,6 @@ load("//:index.bzl", "javascript_pipeline") javascript_pipeline( name = "@player-ui/types", - dependencies = [ - ], + dependencies = [], + xlr_mode = "types" ) diff --git a/index.bzl b/index.bzl index 5d241fb11..bfe5c594a 100644 --- a/index.bzl +++ b/index.bzl @@ -1,6 +1,7 @@ load("@bazel_skylib//lib:paths.bzl", "paths") load("@rules_player//:index.bzl", "js_library_pipeline") load("@rules_player//player/bundle:bundle.bzl", "bundle") +load("@rules_player//player/cli:xlr.bzl", "xlr_compile") lint_exts = [".ts", ".js", ".jsx", ".tsx", ".json", ".snap"] @@ -93,11 +94,11 @@ def javascript_pipeline( test_data = [], lint_data = [], other_srcs = [], + xlr_mode = "", **kwargs ): #Derive target specific sources srcs = native.glob([paths.join(root_dir, "**/*"), "README.md"]) + other_srcs - resolved_entry = entry if entry else _find_entry(root_dir, srcs) js_library_pipeline( @@ -117,6 +118,7 @@ def javascript_pipeline( create_package_json_opts = { "base_package_json": "//tools:pkg_json_template", }, + js_library_data = [] if not xlr_mode else [":%s_XLR" % name], **kwargs ) @@ -135,3 +137,13 @@ def javascript_pipeline( visibility = ["//visibility:public"], bundle_name = name.split('/')[1] ) + + if(xlr_mode): + data = BUILD_DATA + build_data + dependencies + peer_dependencies + xlr_compile( + name = "%s_XLR" % name, + data = data, + input_root = root_dir, + srcs = srcs, + mode = xlr_mode + ) diff --git a/package.json b/package.json index 4053c33c7..d10113bc5 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "@monaco-editor/react": "^4.3.1", "@oclif/core": "^1.9.0", "@oclif/plugin-legacy": "^1.2.7", + "@player-tools/cli": "^0.1.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", "@storybook/addon-docs": "^6.4.15", diff --git a/plugins/reference-assets/core/BUILD b/plugins/reference-assets/core/BUILD index 0a023ad37..9faec8ee4 100644 --- a/plugins/reference-assets/core/BUILD +++ b/plugins/reference-assets/core/BUILD @@ -12,5 +12,6 @@ javascript_pipeline( peer_dependencies = [ "//core/player:@player-ui/player", ], - library_name = "ReferenceAssetsPlugin" + library_name = "ReferenceAssetsPlugin", + xlr_mode = "plugin" ) diff --git a/plugins/reference-assets/core/src/plugin.ts b/plugins/reference-assets/core/src/plugin.ts index 816e5841d..8a314abf8 100644 --- a/plugins/reference-assets/core/src/plugin.ts +++ b/plugins/reference-assets/core/src/plugin.ts @@ -1,11 +1,28 @@ -import type { Player, PlayerPlugin } from '@player-ui/player'; +import type { + Player, + PlayerPlugin, + ExtendedPlayerPlugin, +} from '@player-ui/player'; import { AssetTransformPlugin } from '@player-ui/asset-transform-plugin'; +import type { + ActionAsset, + CollectionAsset, + InfoAsset, + InputAsset, + TextAsset, +} from './assets'; import { inputTransform, actionTransform } from './assets'; /** * A plugin to add transforms for the reference assets */ -export class ReferenceAssetsPlugin implements PlayerPlugin { +export class ReferenceAssetsPlugin + implements + PlayerPlugin, + ExtendedPlayerPlugin< + [InputAsset, TextAsset, ActionAsset, InfoAsset, CollectionAsset] + > +{ name = 'reference-assets-transforms'; apply(player: Player) { diff --git a/yarn.lock b/yarn.lock index b7f0c8da1..a5a61f75e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1119,7 +1119,7 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.16.7" -"@babel/plugin-transform-react-jsx-source@^7.17.12": +"@babel/plugin-transform-react-jsx-source@^7.17.12", "@babel/plugin-transform-react-jsx-source@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz#06e9ae8a14d2bc19ce6e3c447d842032a50598fc" integrity sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw== @@ -3027,7 +3027,7 @@ is-wsl "^2.1.1" tslib "^2.3.1" -"@oclif/core@^1.0.8", "@oclif/core@^1.2.1", "@oclif/core@^1.3.6", "@oclif/core@^1.6.4", "@oclif/core@^1.9.0": +"@oclif/core@1.9.0", "@oclif/core@^1.0.8", "@oclif/core@^1.2.1", "@oclif/core@^1.3.6", "@oclif/core@^1.6.4", "@oclif/core@^1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@oclif/core/-/core-1.9.0.tgz#bb2a7820a9176f28921f449c0f577d39c15e74d0" integrity sha512-duvlaRQf4JM+mKuwwos1DNa/Q9x6tnF3khV5RU0fy5hhETF7THlTmxioKlIvKMyQDVpySqtZXZ0OKHeCi2EWuQ== @@ -3280,6 +3280,126 @@ dependencies: "@octokit/openapi-types" "^12.7.0" +"@player-tools/cli@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@player-tools/cli/-/cli-0.1.0.tgz#2b015d436d7a752ae4174b97350f49af5c5c05ef" + integrity sha512-kWfAqCau7wGHkK01INFlpKJkH538xXBGBAZmIiLuFKaVQZ+93GaO55U4DIorbpnMWAsgsoRVo8K8aV7gVTYPvQ== + dependencies: + "@babel/core" "^7.15.5" + "@babel/plugin-transform-react-jsx-source" "^7.18.6" + "@babel/preset-env" "^7.15.6" + "@babel/preset-react" "^7.14.5" + "@babel/preset-typescript" "^7.15.0" + "@babel/register" "^7.17.7" + "@oclif/core" "1.9.0" + "@oclif/plugin-legacy" "^1.2.7" + "@player-tools/dsl" "0.1.0" + "@player-tools/language-service" "0.1.0" + "@player-tools/xlr-converters" "0.1.0" + "@player-tools/xlr-sdk" "0.1.0" + "@player-tools/xlr-utils" "0.1.0" + "@types/babel__register" "^7.17.0" + chalk "^4.0.1" + cosmiconfig "^7.0.1" + cross-fetch "^3.0.5" + elegant-spinner "^2.0.0" + figures "^3.0.0" + globby "^11.0.1" + log-symbols "^4.0.0" + log-update "^4.0.0" + mkdirp "^1.0.4" + vscode-languageserver-textdocument "^1.0.1" + vscode-languageserver-types "^3.15.1" + +"@player-tools/dsl@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@player-tools/dsl/-/dsl-0.1.0.tgz#babbc0033dde503787e7f62613c4525d5ed2e96b" + integrity sha512-id3+CNTRgF67mDC6eLzyX2ZEI7X38wAEBG06K6Ql6BjZbJsObukxc/qcI6aUEyQzXtKvJ5fQiqCJ8se5sm4JRA== + dependencies: + "@babel/runtime" "7.15.4" + "@player-ui/types" "^0.2.0" + "@types/mkdirp" "^1.0.2" + "@types/signale" "^1.4.2" + chalk "^4.0.1" + command-line-application "^0.10.1" + dequal "^2.0.2" + fs-extra "^10.0.0" + globby "^11.0.1" + jsonc-parser "^2.3.1" + mkdirp "^1.0.4" + react-flatten-children "^1.1.2" + react-json-reconciler "^2.0.0" + react-merge-refs "^1.1.0" + signale "^1.4.0" + source-map-js "^1.0.2" + tapable-ts "^0.1.0" + ts-node "^10.4.0" + typescript "4.4.4" + +"@player-tools/language-service@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@player-tools/language-service/-/language-service-0.1.0.tgz#396e4f1dd404a201833c815c3f9e617e046c01e1" + integrity sha512-EqTgPAKttUKUs2ogHl2eGFqC0xfLWNIZVLk6TDdLKhVPABF7nr3YFq4FGZqLalWYjH71RGkOH+uDwcCDMt4ehw== + dependencies: + "@babel/runtime" "7.15.4" + "@player-tools/xlr" "0.1.0" + "@player-tools/xlr-sdk" "0.1.0" + "@player-tools/xlr-utils" "0.1.0" + change-case "^4.1.1" + cross-fetch "^3.0.5" + detect-indent "^6.0.0" + jsonc-parser "^2.3.1" + tapable-ts "^0.1.0" + timm "^1.7.1" + typescript "4.4.4" + vscode-languageserver-textdocument "^1.0.1" + vscode-languageserver-types "^3.15.1" + +"@player-tools/xlr-converters@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-converters/-/xlr-converters-0.1.0.tgz#2c7679e6c6599eb71985037e7b88aedd0c4f84ff" + integrity sha512-KpW4FKlhYNKmqLr5oMoZzcz/ECjRU99tYeuKa7Sonz9HRQ5W7KdRfMocbzY4+adPbE/7AvJ139BblGrhNAl8wg== + dependencies: + "@babel/runtime" "7.15.4" + "@player-tools/xlr" "0.1.0" + "@player-tools/xlr-utils" "0.1.0" + +"@player-tools/xlr-sdk@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-sdk/-/xlr-sdk-0.1.0.tgz#d968f4004f2562d4915963e54a62cc4a44f67edd" + integrity sha512-Ev5h6nRaW8B9XVwMfg6QwrStLHudQ6z4jUJgMfL3TJM3d5i4eY017jgnBanECfsGmbmOtf9V035CvD5YuCEafA== + dependencies: + "@babel/runtime" "7.15.4" + "@player-tools/xlr" "0.1.0" + "@player-tools/xlr-converters" "0.1.0" + "@player-tools/xlr-utils" "0.1.0" + "@types/fs-extra" "^9.0.13" + "@types/node" "^16.11.12" + fs-extra "^10.0.0" + jsonc-parser "^2.3.1" + +"@player-tools/xlr-utils@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-utils/-/xlr-utils-0.1.0.tgz#e52f33be6757e866ad357fe6ff5608a1edf6c85f" + integrity sha512-5OgV0Ie2JbbPabzRJpV9X1FPdT78pQh/AVGJeGfSry87k4KEalMF3iI9TrEOdJBRs+eTt8iO0hncTwW63hk7EQ== + dependencies: + "@babel/runtime" "7.15.4" + "@player-tools/xlr" "0.1.0" + +"@player-tools/xlr@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr/-/xlr-0.1.0.tgz#b6377e6d515efd48517992b6f33c45fd580ff102" + integrity sha512-Q8RjwWzjJx4Ocibj7Vbo9y21DQdGUMUgIPaWG71U6V5VZ4SJzpocpOFjF8htTQQlZ6+2sRGQQmav/DXwLwxqkw== + dependencies: + "@babel/runtime" "7.15.4" + +"@player-ui/types@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@player-ui/types/-/types-0.2.0.tgz#72990b70621d65ceebf02da9f813481e8eb17692" + integrity sha512-Lj7XNWQ9bHeVQbPJQwObXhYJddvr5iEhFCivCdbREuqiuF7RhG6Sodn3nT88L8EQPr78n88I7oxD6G8fQ/iEjw== + dependencies: + "@babel/runtime" "7.15.4" + "@pmmmwh/react-refresh-webpack-plugin@^0.5.1": version "0.5.4" resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.4.tgz#df0d0d855fc527db48aac93c218a0bf4ada41f99" @@ -6832,7 +6952,7 @@ chalk@^4.0.0, chalk@^4.0.1, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1 ansi-styles "^4.1.0" supports-color "^7.1.0" -change-case@^4.1.2: +change-case@^4.1.1, change-case@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== @@ -7694,7 +7814,7 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-fetch@^3.1.5: +cross-fetch@^3.0.5, cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -8407,6 +8527,11 @@ electron-to-chromium@^1.3.723, electron-to-chromium@^1.4.17: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.38.tgz#10ea58d73d36b13e78d5024f3b74a352d3958d01" integrity sha512-WhHt3sZazKj0KK/UpgsbGQnUUoFeAHVishzHFExMxagpZgjiGYSC9S0ZlbhCfSH2L2i+2A1yyqOIliTctMx7KQ== +elegant-spinner@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-2.0.0.tgz#f236378985ecd16da75488d166be4b688fd5af94" + integrity sha512-5YRYHhvhYzV/FC4AiMdeSIg3jAYGq9xFvbhZMpPlJoBsfYgrw2DSCYeXfat6tYBu45PWiyRr3+flaCPPmviPaA== + elegant-spinner@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-3.0.0.tgz#e693ff62f3cd4c566c5add7f9e10e595c71c0953" @@ -12487,6 +12612,11 @@ json5@^2.1.2, json5@^2.1.3: dependencies: minimist "^1.2.5" +jsonc-parser@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342" + integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg== + jsonc-parser@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" @@ -18477,7 +18607,7 @@ timers-browserify@2.0.12, timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -timm@^1.6.2: +timm@^1.6.2, timm@^1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== @@ -19596,6 +19726,11 @@ vscode-languageserver-protocol@^3.15.3: vscode-jsonrpc "6.0.0" vscode-languageserver-types "3.16.0" +vscode-languageserver-textdocument@^1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz#16df468d5c2606103c90554ae05f9f3d335b771b" + integrity sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg== + vscode-languageserver-textdocument@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.3.tgz#879f2649bfa5a6e07bc8b392c23ede2dfbf43eff" @@ -19606,6 +19741,11 @@ vscode-languageserver-types@3.16.0, vscode-languageserver-types@^3.16.0: resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== +vscode-languageserver-types@^3.15.1: + version "3.17.2" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz#b2c2e7de405ad3d73a883e91989b850170ffc4f2" + integrity sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA== + vscode-languageserver@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz#d76afc68172c27d4327ee74332b468fbc740d762" From b8b91225d0dab129ff9eedc7d7eee7044c513d16 Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Thu, 13 Oct 2022 17:51:56 -0700 Subject: [PATCH 03/16] Use feature branch for bazel rules --- WORKSPACE | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index a11eb6a5d..773b763c6 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -9,11 +9,10 @@ workspace( load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") -http_archive( - name = "rules_player", - strip_prefix = "rules_player-0.8.0", - urls = ["https://github.com/player-ui/rules_player/archive/refs/tags/v0.8.0.tar.gz"], - sha256 = "2c1e049d33ccab89fdbaf513cb7a537e95a28fe05508d370b8f3063dcd54920f" +git_repository( + name = "rules_player", + branch = "feature/xlr-rules", + remote = "https://github.com/player-ui/rules_player", ) load("@rules_player//:workspace.bzl", "deps") From e620bc6fe0aa8894b6179822aedf027c869c49cc Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Thu, 13 Oct 2022 22:52:22 -0700 Subject: [PATCH 04/16] Initial docs for XLR --- docs/site/config/navigation.ts | 21 ++- .../guides/designing-semantic-assets.mdx | 2 +- docs/site/pages/xlr/concepts.mdx | 30 ++++ docs/site/pages/xlr/intro.mdx | 24 ++++ docs/site/pages/xlr/usage.mdx | 136 ++++++++++++++++++ 5 files changed, 210 insertions(+), 3 deletions(-) create mode 100644 docs/site/pages/xlr/concepts.mdx create mode 100644 docs/site/pages/xlr/intro.mdx create mode 100644 docs/site/pages/xlr/usage.mdx diff --git a/docs/site/config/navigation.ts b/docs/site/config/navigation.ts index efb817270..85719d9ea 100644 --- a/docs/site/config/navigation.ts +++ b/docs/site/config/navigation.ts @@ -79,8 +79,8 @@ const navigation: Navigation = { }, { title: 'Templates', - path: '/content/templates' - } + path: '/content/templates', + }, ], }, { @@ -121,6 +121,23 @@ const navigation: Navigation = { }, ], }, + { + title: 'XLR', + routes: [ + { + title: 'Intro', + path: '/xlr/intro', + }, + { + title: 'Concepts', + path: '/xlr/concepts', + }, + { + title: 'Usage', + path: '/xlr/usage', + }, + ], + }, ], }, { diff --git a/docs/site/pages/guides/designing-semantic-assets.mdx b/docs/site/pages/guides/designing-semantic-assets.mdx index c97d02244..56e37330f 100644 --- a/docs/site/pages/guides/designing-semantic-assets.mdx +++ b/docs/site/pages/guides/designing-semantic-assets.mdx @@ -4,7 +4,7 @@ title: Designing Semantic Assets # Designing Semantic Assets -While not a _hard_ requirment by Player, the API design for assets plays an important role in it's adoption, especially if the intent is to re-use content across platforms. In many cases, Player content is written, and edited many more times than assets are created, and thus it's schema plays an important role in it's effective adoption. +While not a _hard_ requirement by Player, the API design for assets plays an important role in it's adoption, especially if the intent is to re-use content across platforms. In many cases, Player content is written, and edited many more times than assets are created, and thus it's schema plays an important role in it's effective adoption. Player ships with a set of [Reference Assets](assets/reference) to get started, but intentionally doesn't include anything beyond some basics. We believe it's up to each consumer to define their own semantics (if at all), that best suites their applications. diff --git a/docs/site/pages/xlr/concepts.mdx b/docs/site/pages/xlr/concepts.mdx new file mode 100644 index 000000000..8cbe80fe2 --- /dev/null +++ b/docs/site/pages/xlr/concepts.mdx @@ -0,0 +1,30 @@ +--- +title: XLR Concepts +--- + +# XLR Definitions + +When talking about anything its helpful to make sure everyone is on the same page, XLR is no exception. In this section we'll explore some concepts related to XLRs, how they work, and how they're used. + +## Capability + +When we talk about a Capability, we are essentially talking about what it provides to Player. Most, if not all, capabilities are provided by Plugins. Capabilities are described in the manifest file in the `xlr` folder of a distribution. The manifest file, provided as both a `.json` and a `.js` file for static or dynamic use, contains the mapping of capabilities to a list of the XLRs. + +## XLR Objects + +XLRs contain all of the information about a TypeScript type or interface. For an interface it will have the information on what parameters it has, the types of those parameters, and if those parameters are optional. For a type, it will similarly describe the properties/types that compose it. There is no distinction in XLR on whether the XLR came from a type or an interface as everything is just represented by a Node. + +### XLR Nodes +XLR nodes are similar to TypeScripts internal AST nodes but a bit simpler. Almost every type/language feature you would use in TypeScript has an equivalent XLR node type. The definitions for these types are available in the `@player-tools/xlr` [package](https://github.com/player-ui/tools/tree/main/xlr/types). + +### Named Types + +Named Types represent a top level interface/type and can be _any_ XLR Node. Named types are generated from interfaces/types that are exported from a source file or plugin. It should be noted that when generating a Named Type, all referenced types are also serialized and included in place in the Named Type and *not* exported separately. That is unless The type is listed as a _Custom Primitive_. A reason to do this would be if that type definition changes based on use case or platform. For example, in the Player ecosystem `Asset` is considered a Custom Primitive because depending on the context, we might need to swap it out with a different type. + +# XLR SDK + +The XLR SDK is used to abstract away the more tedious interactions XLRs like loading them from their package, managing them when they're loaded, and validating content against them. The SDK does include an simple object store so that it can be used out of the box, however if your use case requires some different logic it can be extended quite easily. In fact, [we do that in the Player LSP](https://github.com/player-ui/tools/blob/main/language/service/src/xlr/registry.ts). + +## Transform Functions + +Transform functions can be used to modify XLRs when they're loaded and when they're exported. There is no real limit to what you can do in a transform function but typical use cases are things like adding new properties to object and substituting type references with different ones. \ No newline at end of file diff --git a/docs/site/pages/xlr/intro.mdx b/docs/site/pages/xlr/intro.mdx new file mode 100644 index 000000000..9cee7cca8 --- /dev/null +++ b/docs/site/pages/xlr/intro.mdx @@ -0,0 +1,24 @@ +--- +title: Into to XLR +--- + +# What is XLR + +XLR, short for cross(x) language representation, is a way to export a static and language agnostic description of a TypeScript type or interface packaged along with the original type or interface. XLR started as a fork of [core-types](https://github.com/grantila/core-types) to add support for some missing features (generics, supported types, inheritance) that are heavily used in Player but has evolved into a superset of its features with some opinionated functionality to support Player specific conventions. XLR now powers a majority of the Player language features such as content validation, editor suggestions, and in editor documentation. + +# Why Do We Need it + +XLR was developed to fill in one of the major gaps in the Player ecosystem: Because everything is dynamic, there is no way to statically/programmatically know what plugin provides what capabilities (assets, data types, validations, etc) to Player and what that capability looks like. This becomes a real issue in the tooling around Player when things like content authoring and validation. In both use-cases information on what assets are available for use, what parameters do those assets require, what types are those parameters, etc. is required but cannot be assumed. Historically we have seen this gap bridged by hardcoding the set of capabilities that are available but that has proven to be a never ending cycle of keeping those definitions updated when things change and knowing about the *entire* set of capabilities, even those that people develop silently. With XLR, a static description of all capabilities provided by a plugin can be compiled at build time, included in the package, and used at any point in the future for a multitude of capabilities. + + +# How Do I Leverage XLR + +How much you use XLR is pretty dependant on your niche in the Player ecosystem. + +## As a TypeScript Plugin/Capability Author + +If you are developing Player capabilities for Core/React, all you need to do is have your Plugin fill in the `ExtendedPlayerPlugin` interface and run the Player CLI during build time and the CLI will take care of compiling and bundling the capabilities. You can see an example of this in the [Exporting Plugin Capabilities](./usage#exporting-plugin-capabilities) section. + +## As Someone Building Capabilities Around Player + +If you want to leverage XLRs to develop capabilities around Player, you'll want to start with the [SDK](./concepts#xlr-sdk) and use it to load the XLRs from published packages. Then, using the SDK, you can access all the loaded types and information about them for use in your application. \ No newline at end of file diff --git a/docs/site/pages/xlr/usage.mdx b/docs/site/pages/xlr/usage.mdx new file mode 100644 index 000000000..fa6970d72 --- /dev/null +++ b/docs/site/pages/xlr/usage.mdx @@ -0,0 +1,136 @@ +--- +title: Using XLR +--- + +# Part 1 - Creating XLRs + +XLR creation is done through the Player CLI which can be added to your project like so: + +```bash +yarn install @player-tools/cli +``` + +## Exporting Base Type Definitions + +If you want to compile all exported interfaces/types to XLRs run the following command as part of your build + +```bash +player xlr compile -m types +``` + +## Exporting Plugin Capabilities + +If you are writing a Player Plugin, you'll first need to have your plugin extend the `ExtendedPlayerPlugin` interface and fill in the generics with an array of the interfaces/types for each Capability. For example, you can see how its done below in the [core reference assets plugin](https://github.com/player-ui/player/blob/main/plugins/reference-assets/core/src/plugin.ts) + +```typescript +export class ReferenceAssetsPlugin + implements + PlayerPlugin, + ExtendedPlayerPlugin< + [InputAsset, TextAsset, ActionAsset, InfoAsset, CollectionAsset] + > +``` + +Then run the following command as part of your build + +```shell +player xlr compile -m plugin +``` + +# Part 2 - Using XLRs + +## SDK: Initialization + +To start using the XLR SDK you'll need to install the SDK package + +```bash +yarn install @player-tools/xlr-sdk +``` + +Next, import the SDK + +```typescript +import { XLRSDK } from "@player-tools/xlr-sdk" +``` + +_If you want to implement a custom object store, also import the `XLRRegistry` interface and have your custom registry implement it._ + +Lastly, just initialize an instance of it. + +```typescript +import { XLRSDK } from "@player-tools/xlr-sdk" + +const sdk = new XLRSDK(); +``` + +or if you want to use your custom registry, just pass it in to the initializer. + +```typescript +import { XLRSDK } from "@player-tools/xlr-sdk" +import { customRegistry } from "./customRegistry" + +const sdk = new XLRSDK(customRegistry); +``` + +## SDK: Loading Types + +If you want to load XLR types from disk, you can use the `loadDefinitionsFromDisk` function and pass it the path to parent folder of the `xlr` directory. + +```typescript +const sdk = new XLRSDK(); +sdk.loadDefinitionsFromDisk('./common/static_xlrs/core'); +``` + +If you want to load XLR types from a module, you can use the `loadDefinitionsFromModule` function and pass it the module to load from. + +```typescript +const sdk = new XLRSDK(); +sdk.loadDefinitionsFromModule(require("@player-ui/reference-assets-plugin").path); +``` + +- If you want to filter any of the types that are being loaded, you can supply a `Filters` object as the *second* arguments +- If you want to apply any transform functions to the modules that you load, you can supply a list of `TransformFunction` as the *third* argument + +## SDK: Usage + +After the types are loaded into the SDK there are a couple ways to interact with them. + +### Type Recall + +To get a type back you can use the `getType` function and pass the name of the type you want to retrieve. You can also use the `hasType` function to check to see if the type exists before you try and access it. + +```typescript +const sdk = new XLRSDK(); +if(sdk.hasType("InputAsset")){ + return sdk.getType("InputAsset") +} else { + throw new Error("Oh no!") +} +``` + +### Type Validation + +To validate if some JSON content matches the expected type, you can use the `validateType` function. You will need to supply a `Node` from the `jsonc-parser` library. + +```typescript +import { parseTree } from 'jsonc-parser'; +import { XLRSDK } from '@player-tools/xlr-sdk' + +const sdk = new XLRSDK(); + +///... Loading XLRs + +const mockAsset = parseTree(` + { + "id": 1, + "type": "input", + "binding": "some.data", + "label": { + "asset": { + "value": "{{input.label}}" + } + } + `); + +return sdk.validate('InputAsset', mockAsset) +``` \ No newline at end of file From fe95abf47162fd5a3f3b76818ccd023e589c6b90 Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Tue, 18 Oct 2022 11:34:50 -0700 Subject: [PATCH 05/16] Fix bad dsl package link --- docs/site/pages/content/dsl.mdx | 10 +++++----- docs/site/pages/tools/dsl.mdx | 10 +++++----- package.json | 1 + plugins/reference-assets/components/BUILD | 2 +- plugins/reference-assets/components/src/index.test.tsx | 2 +- plugins/reference-assets/components/src/index.tsx | 4 ++-- yarn.lock | 2 +- 7 files changed, 16 insertions(+), 15 deletions(-) diff --git a/docs/site/pages/content/dsl.mdx b/docs/site/pages/content/dsl.mdx index ee3d49201..f4e308edf 100644 --- a/docs/site/pages/content/dsl.mdx +++ b/docs/site/pages/content/dsl.mdx @@ -21,7 +21,7 @@ Both `binding` and `expression` in the JSX authoring leverages a tagged template To create a binding, or expression: ```tsx -import { binding as b, expression as e } from '@player-ui/dsl'; +import { binding as b, expression as e } from '@player-tools/dsl'; const myBinding = b`foo.bar`; const myExpression = e`foo()`; @@ -94,7 +94,7 @@ Similarly, if a single asset is expected but a list of them is found instead, Pl ### Templates -Templates are included via the `@player-ui/dsl` package. This can be used in any asset slot: +Templates are included via the `@player-tools/dsl` package. This can be used in any asset slot: ```tsx @@ -111,7 +111,7 @@ Templates can be nested within one another, and the auto-id generation will hand ### Switches -The `@player-ui/dsl` module also includes support for _static_ and _dynamic_ switches. +The `@player-tools/dsl` module also includes support for _static_ and _dynamic_ switches. Use the `isDynamic` flag to denote this should be a `dynamicSwitch` instead of a `staticSwitch`: @@ -238,7 +238,7 @@ will generate the schema: #### Changing the Name of a Generated Type -To change the name of the generated type at any point in the tree, import the `SchemaTypeName` symbol from the `@player-ui/dsl` and use it as a key to change the name like so: +To change the name of the generated type at any point in the tree, import the `SchemaTypeName` symbol from the `@player-tools/dsl` and use it as a key to change the name like so: ```typescript const mySchema = { @@ -398,7 +398,7 @@ Pass asset in as child ``` OR -You can create an Asset using the `` component from `@player-ui/dsl`. +You can create an Asset using the `` component from `@player-tools/dsl`. ```jsx ``` diff --git a/docs/site/pages/tools/dsl.mdx b/docs/site/pages/tools/dsl.mdx index 2376de61f..5e4529d4f 100644 --- a/docs/site/pages/tools/dsl.mdx +++ b/docs/site/pages/tools/dsl.mdx @@ -78,7 +78,7 @@ Both binding and expression in the TSX authoring leverages a tagged template, ty To create a binding or expression: ```tsx -import { binding as b, expression as e } from '@player-ui/dsl'; +import { binding as b, expression as e } from '@player-tools/dsl'; const myBinding = b`foo.bar`; const myExpression = e`foo()`; @@ -93,7 +93,7 @@ const stringWithExp = `Some expr: ${myExpression}`; // 'Some expr: @[foo()]@' ## Templates -Template support is included via the `@player-ui/dsl` package. This can be used in place of an asset slot: +Template support is included via the `@player-tools/dsl` package. This can be used in place of an asset slot: ```tsx @@ -166,7 +166,7 @@ In order to take advantage of the auto-completion and validation of TypeScript t ## Creating a basic component -The `Asset` component from the `@player-ui/dsl` package is the quickest way to create a new component. +The `Asset` component from the `@player-tools/dsl` package is the quickest way to create a new component. In the examples below, we'll be creating a TSX component for the `action` asset in our reference set. @@ -191,7 +191,7 @@ export interface ActionAsset extends Asset<' To turn this interface into a usable component, create a new React component that _renders_ an Asset: ```tsx -import { Asset, AssetPropsWithChildren } from '@player-ui/dsl'; +import { Asset, AssetPropsWithChildren } from '@player-tools/dsl'; export const Action = (props: AssetPropsWithChildren) => { return ; @@ -211,7 +211,7 @@ The `AssetPropsWithChildren` type is a utility type to help convert the `Asset` Continuing the example fo the `ActionAsset`, we need a way for users to users to specify the nested `label` property, which itself is another asset. This can be accomplished using the `createSlot` utility function. ```tsx -import { Asset, AssetPropsWithChildren } from '@player-ui/dsl'; +import { Asset, AssetPropsWithChildren } from '@player-tools/dsl'; export const Action = (props: AssetPropsWithChildren) => { return ; diff --git a/package.json b/package.json index d10113bc5..c5a687cba 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@oclif/core": "^1.9.0", "@oclif/plugin-legacy": "^1.2.7", "@player-tools/cli": "^0.1.0", + "@player-tools/dsl": "^0.1.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", "@storybook/addon-docs": "^6.4.15", diff --git a/plugins/reference-assets/components/BUILD b/plugins/reference-assets/components/BUILD index b7625e562..e58e1d714 100644 --- a/plugins/reference-assets/components/BUILD +++ b/plugins/reference-assets/components/BUILD @@ -9,6 +9,6 @@ javascript_pipeline( peer_dependencies = [ "@npm//react", "@npm//@types/react", - "//language/dsl:@player-ui/dsl" + "@npm//@player-tools/dsl" ] ) diff --git a/plugins/reference-assets/components/src/index.test.tsx b/plugins/reference-assets/components/src/index.test.tsx index 36a903921..aa66b5524 100644 --- a/plugins/reference-assets/components/src/index.test.tsx +++ b/plugins/reference-assets/components/src/index.test.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, binding as b } from '@player-ui/dsl'; +import { render, binding as b } from '@player-tools/dsl'; import { Text, Action, Info, Collection, Input } from '.'; describe('JSON serialization', () => { diff --git a/plugins/reference-assets/components/src/index.tsx b/plugins/reference-assets/components/src/index.tsx index c6b76c7c3..9a8e99e0e 100644 --- a/plugins/reference-assets/components/src/index.tsx +++ b/plugins/reference-assets/components/src/index.tsx @@ -2,8 +2,8 @@ import React from 'react'; import type { AssetPropsWithChildren, BindingTemplateInstance, -} from '@player-ui/dsl'; -import { createSlot, Asset } from '@player-ui/dsl'; +} from '@player-tools/dsl'; +import { createSlot, Asset } from '@player-tools/dsl'; import type { Asset as AssetType } from '@player-ui/player'; import type { ActionAsset, diff --git a/yarn.lock b/yarn.lock index a5a61f75e..48b379af8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3311,7 +3311,7 @@ vscode-languageserver-textdocument "^1.0.1" vscode-languageserver-types "^3.15.1" -"@player-tools/dsl@0.1.0": +"@player-tools/dsl@0.1.0", "@player-tools/dsl@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@player-tools/dsl/-/dsl-0.1.0.tgz#babbc0033dde503787e7f62613c4525d5ed2e96b" integrity sha512-id3+CNTRgF67mDC6eLzyX2ZEI7X38wAEBG06K6Ql6BjZbJsObukxc/qcI6aUEyQzXtKvJ5fQiqCJ8se5sm4JRA== From 0f848c37148b9d37e2f87952d7ab9a33635b0eb2 Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Tue, 18 Oct 2022 12:00:33 -0700 Subject: [PATCH 06/16] add @rollup/plugin-image dependency --- package.json | 1 + yarn.lock | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/package.json b/package.json index c5a687cba..601196034 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@oclif/plugin-legacy": "^1.2.7", "@player-tools/cli": "^0.1.0", "@player-tools/dsl": "^0.1.0", + "@rollup/plugin-image": "^3.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", "@storybook/addon-docs": "^6.4.15", diff --git a/yarn.lock b/yarn.lock index 48b379af8..86fd9e3dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3500,6 +3500,14 @@ prop-types "^15.7.2" tslib "^2.1.0" +"@rollup/plugin-image@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-image/-/plugin-image-3.0.0.tgz#d1876a9dabde66b434f3e42b3e6820852e904c2d" + integrity sha512-QyAWMoVu8kP7UfMv0CsiQq49+vZLyOIb65+9akDtDfx6oOEFw/3HSOIvOpF5WyPcdm1yW5Qpp+ERHBpxdoMi1A== + dependencies: + "@rollup/pluginutils" "^4.2.1" + mini-svg-data-uri "^1.4.4" + "@rollup/plugin-json@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" @@ -3536,6 +3544,14 @@ estree-walker "^2.0.1" picomatch "^2.2.2" +"@rollup/pluginutils@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -13774,6 +13790,11 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +mini-svg-data-uri@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" + integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" From d178c3822f582fc09f8ce9e7882bbdcd471a5ed7 Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Wed, 26 Oct 2022 16:46:05 -0700 Subject: [PATCH 07/16] Use release version of rules_player --- WORKSPACE | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 773b763c6..7ebb5df13 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -9,10 +9,11 @@ workspace( load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") -git_repository( - name = "rules_player", - branch = "feature/xlr-rules", - remote = "https://github.com/player-ui/rules_player", +http_archive( + name = "rules_player", + strip_prefix = "rules_player-0.10.0", + urls = ["https://github.com/player-ui/rules_player/archive/refs/tags/v0.10.0.tar.gz"], + sha256 = "73597c76a5ceb6c1f84735e0e086792e4695759c62c22f45e13041862c6b0c33" ) load("@rules_player//:workspace.bzl", "deps") From 95997bd8812714863bc0f0073f1f3a65fb327250 Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Fri, 28 Oct 2022 09:30:32 -0400 Subject: [PATCH 08/16] upgrade to latest tools version --- package.json | 4 +-- yarn.lock | 84 ++++++++++++++++++++++++++-------------------------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/package.json b/package.json index 601196034..4dd0309ea 100644 --- a/package.json +++ b/package.json @@ -40,8 +40,8 @@ "@monaco-editor/react": "^4.3.1", "@oclif/core": "^1.9.0", "@oclif/plugin-legacy": "^1.2.7", - "@player-tools/cli": "^0.1.0", - "@player-tools/dsl": "^0.1.0", + "@player-tools/cli": "^0.2.0", + "@player-tools/dsl": "^0.2.0", "@rollup/plugin-image": "^3.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", diff --git a/yarn.lock b/yarn.lock index 86fd9e3dd..29871e92b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3280,10 +3280,10 @@ dependencies: "@octokit/openapi-types" "^12.7.0" -"@player-tools/cli@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@player-tools/cli/-/cli-0.1.0.tgz#2b015d436d7a752ae4174b97350f49af5c5c05ef" - integrity sha512-kWfAqCau7wGHkK01INFlpKJkH538xXBGBAZmIiLuFKaVQZ+93GaO55U4DIorbpnMWAsgsoRVo8K8aV7gVTYPvQ== +"@player-tools/cli@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@player-tools/cli/-/cli-0.2.0.tgz#26ae560be831892b3edea7bbb2e1cbbfe84e0acf" + integrity sha512-HzsDdHpnG1NM5443HLNxRBgEZ9Yfk85roLD0GjlLWDjhRP3ZPtQsGktqFsU/eyNYCtlO7c57Yb5rX1euAgUIgA== dependencies: "@babel/core" "^7.15.5" "@babel/plugin-transform-react-jsx-source" "^7.18.6" @@ -3293,11 +3293,11 @@ "@babel/register" "^7.17.7" "@oclif/core" "1.9.0" "@oclif/plugin-legacy" "^1.2.7" - "@player-tools/dsl" "0.1.0" - "@player-tools/language-service" "0.1.0" - "@player-tools/xlr-converters" "0.1.0" - "@player-tools/xlr-sdk" "0.1.0" - "@player-tools/xlr-utils" "0.1.0" + "@player-tools/dsl" "0.2.0" + "@player-tools/language-service" "0.2.0" + "@player-tools/xlr-converters" "0.2.0" + "@player-tools/xlr-sdk" "0.2.0" + "@player-tools/xlr-utils" "0.2.0" "@types/babel__register" "^7.17.0" chalk "^4.0.1" cosmiconfig "^7.0.1" @@ -3311,10 +3311,10 @@ vscode-languageserver-textdocument "^1.0.1" vscode-languageserver-types "^3.15.1" -"@player-tools/dsl@0.1.0", "@player-tools/dsl@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@player-tools/dsl/-/dsl-0.1.0.tgz#babbc0033dde503787e7f62613c4525d5ed2e96b" - integrity sha512-id3+CNTRgF67mDC6eLzyX2ZEI7X38wAEBG06K6Ql6BjZbJsObukxc/qcI6aUEyQzXtKvJ5fQiqCJ8se5sm4JRA== +"@player-tools/dsl@0.2.0", "@player-tools/dsl@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@player-tools/dsl/-/dsl-0.2.0.tgz#fb0fcc444766c28c4b95947fad4d75870e5d7acb" + integrity sha512-XLO0lMWamKrFomilr/H8I9CVICIj2K0BXpdzHAAuCS7IBBaC5Ofiu4PrtVRHO81T9VLmSbZ3V7THcPi8xMWURw== dependencies: "@babel/runtime" "7.15.4" "@player-ui/types" "^0.2.0" @@ -3336,15 +3336,15 @@ ts-node "^10.4.0" typescript "4.4.4" -"@player-tools/language-service@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@player-tools/language-service/-/language-service-0.1.0.tgz#396e4f1dd404a201833c815c3f9e617e046c01e1" - integrity sha512-EqTgPAKttUKUs2ogHl2eGFqC0xfLWNIZVLk6TDdLKhVPABF7nr3YFq4FGZqLalWYjH71RGkOH+uDwcCDMt4ehw== +"@player-tools/language-service@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@player-tools/language-service/-/language-service-0.2.0.tgz#d8bde7f01d0fc7e72f3b30b35035f2f7dfe79c40" + integrity sha512-CY6NhxryoegBUbavk2fyfsnmQp0seL0XggjJkyAxsUhdfNtY9BGQL0AYMu3iC3TDBUeQkaZbpudyAUrR34VSVw== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.1.0" - "@player-tools/xlr-sdk" "0.1.0" - "@player-tools/xlr-utils" "0.1.0" + "@player-tools/xlr" "0.2.0" + "@player-tools/xlr-sdk" "0.2.0" + "@player-tools/xlr-utils" "0.2.0" change-case "^4.1.1" cross-fetch "^3.0.5" detect-indent "^6.0.0" @@ -3355,41 +3355,41 @@ vscode-languageserver-textdocument "^1.0.1" vscode-languageserver-types "^3.15.1" -"@player-tools/xlr-converters@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-converters/-/xlr-converters-0.1.0.tgz#2c7679e6c6599eb71985037e7b88aedd0c4f84ff" - integrity sha512-KpW4FKlhYNKmqLr5oMoZzcz/ECjRU99tYeuKa7Sonz9HRQ5W7KdRfMocbzY4+adPbE/7AvJ139BblGrhNAl8wg== +"@player-tools/xlr-converters@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-converters/-/xlr-converters-0.2.0.tgz#46aaef19d095a221f2bbdecd4dd50eca0583699a" + integrity sha512-Nt0xaFSZWJYmgyOU+e1EghUiyPL1S/3+7PN8OEgZWxE2D9HZ3vUaOIVLfigOkQZJ3FlcRLpJT4E9SV3CBpZcoA== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.1.0" - "@player-tools/xlr-utils" "0.1.0" + "@player-tools/xlr" "0.2.0" + "@player-tools/xlr-utils" "0.2.0" -"@player-tools/xlr-sdk@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-sdk/-/xlr-sdk-0.1.0.tgz#d968f4004f2562d4915963e54a62cc4a44f67edd" - integrity sha512-Ev5h6nRaW8B9XVwMfg6QwrStLHudQ6z4jUJgMfL3TJM3d5i4eY017jgnBanECfsGmbmOtf9V035CvD5YuCEafA== +"@player-tools/xlr-sdk@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-sdk/-/xlr-sdk-0.2.0.tgz#4c2a8ff243d95d86fe8e4266212559b6061acfd6" + integrity sha512-4V4FEMUZdnFO+h4FzKg7R5tiHu6Ta3j3Skm9cpVdFysL0PSNmqo6eopxNohK/2ehXaC9AH8flOEbREcMiAuBDA== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.1.0" - "@player-tools/xlr-converters" "0.1.0" - "@player-tools/xlr-utils" "0.1.0" + "@player-tools/xlr" "0.2.0" + "@player-tools/xlr-converters" "0.2.0" + "@player-tools/xlr-utils" "0.2.0" "@types/fs-extra" "^9.0.13" "@types/node" "^16.11.12" fs-extra "^10.0.0" jsonc-parser "^2.3.1" -"@player-tools/xlr-utils@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-utils/-/xlr-utils-0.1.0.tgz#e52f33be6757e866ad357fe6ff5608a1edf6c85f" - integrity sha512-5OgV0Ie2JbbPabzRJpV9X1FPdT78pQh/AVGJeGfSry87k4KEalMF3iI9TrEOdJBRs+eTt8iO0hncTwW63hk7EQ== +"@player-tools/xlr-utils@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-utils/-/xlr-utils-0.2.0.tgz#90f61fb189267c59fae08f9e010f78b5c73ec1bd" + integrity sha512-kF/XF/5pLjT5Jae3jvqieu7AfNUU3URUnoe3NiWzjzqUth33XXIOYeUf09otWoBhDnD1N6/dACX8DHJ3kTgH/g== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.1.0" + "@player-tools/xlr" "0.2.0" -"@player-tools/xlr@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@player-tools/xlr/-/xlr-0.1.0.tgz#b6377e6d515efd48517992b6f33c45fd580ff102" - integrity sha512-Q8RjwWzjJx4Ocibj7Vbo9y21DQdGUMUgIPaWG71U6V5VZ4SJzpocpOFjF8htTQQlZ6+2sRGQQmav/DXwLwxqkw== +"@player-tools/xlr@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr/-/xlr-0.2.0.tgz#e0476820bd32c17a893235c26db875bdce879768" + integrity sha512-C2yRUl3XSnlDEEP6/AVPdottdA4Grx4Ay3+/8RzPEZzOchUXuLHohjoKHoe0dKNsMB49u3+FQP+i8PCz+x1UVA== dependencies: "@babel/runtime" "7.15.4" From 6468cc9810d46c1afedb1be362e3a0be39663362 Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Fri, 28 Oct 2022 12:07:50 -0400 Subject: [PATCH 09/16] Update CODEWOWNERS to use root directories instead of paths --- .github/CODEOWNERS | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 1078e82e0..74ac953f2 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -6,20 +6,16 @@ # Android/JVM -jvm/ @sugarmanz @Brocollie08 -android/ @sugarmanz @Brocollie08 -language/ @KetanReddy +/jvm/ @sugarmanz @Brocollie08 +/android/ @sugarmanz @Brocollie08 # iOS -xcode/ @hborawski -ios/ @hborawski +/xcode/ @hborawski +/ios/ @hborawski # Web -react/ @spentacular @adierkens -tools/storybook/ @adierkens +/react/ @spentacular @adierkens +/tools/storybook/ @adierkens # Core -core/ @KetanReddy @adierkens - -# Language -language/ @KetanReddy @adierkens +/core/ @KetanReddy @adierkens From 65823b4f80c5099c90736648fccd38551353fe7e Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Tue, 22 Nov 2022 11:31:28 -0800 Subject: [PATCH 10/16] Update tools version --- package.json | 7 +- yarn.lock | 1612 ++++---------------------------------------------- 2 files changed, 117 insertions(+), 1502 deletions(-) diff --git a/package.json b/package.json index 4dd0309ea..699fc3563 100644 --- a/package.json +++ b/package.json @@ -38,10 +38,8 @@ "@kendallgassner/eslint-plugin-package-json": "^0.2.1", "@mdx-js/loader": "^1.6.22", "@monaco-editor/react": "^4.3.1", - "@oclif/core": "^1.9.0", - "@oclif/plugin-legacy": "^1.2.7", - "@player-tools/cli": "^0.2.0", - "@player-tools/dsl": "^0.2.0", + "@player-tools/cli": "0.2.1--canary.16.274", + "@player-tools/dsl": "0.2.1--canary.16.274", "@rollup/plugin-image": "^3.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", @@ -141,7 +139,6 @@ "nested-error-stacks": "^2.1.1", "next": "^12.0.7", "nextjs-google-analytics": "^1.2.1", - "oclif": "^3.0.1", "p-defer": "^3.0.0", "parsimmon": "^1.12.0", "patch-package": "^6.4.7", diff --git a/yarn.lock b/yarn.lock index 29871e92b..b75accb63 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2336,7 +2336,7 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": +"@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== @@ -2402,11 +2402,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@isaacs/string-locale-compare@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" - integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -2823,44 +2818,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/arborist@^4.0.4": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-4.3.1.tgz#a08cddce3339882f688c1dea1651f6971e781c44" - integrity sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A== - dependencies: - "@isaacs/string-locale-compare" "^1.1.0" - "@npmcli/installed-package-contents" "^1.0.7" - "@npmcli/map-workspaces" "^2.0.0" - "@npmcli/metavuln-calculator" "^2.0.0" - "@npmcli/move-file" "^1.1.0" - "@npmcli/name-from-folder" "^1.0.1" - "@npmcli/node-gyp" "^1.0.3" - "@npmcli/package-json" "^1.0.1" - "@npmcli/run-script" "^2.0.0" - bin-links "^3.0.0" - cacache "^15.0.3" - common-ancestor-path "^1.0.1" - json-parse-even-better-errors "^2.3.1" - json-stringify-nice "^1.1.4" - mkdirp "^1.0.4" - mkdirp-infer-owner "^2.0.0" - npm-install-checks "^4.0.0" - npm-package-arg "^8.1.5" - npm-pick-manifest "^6.1.0" - npm-registry-fetch "^12.0.1" - pacote "^12.0.2" - parse-conflict-json "^2.0.1" - proc-log "^1.0.0" - promise-all-reject-late "^1.0.0" - promise-call-limit "^1.0.1" - read-package-json-fast "^2.0.2" - readdir-scoped-modules "^1.1.0" - rimraf "^3.0.2" - semver "^7.3.5" - ssri "^8.0.1" - treeverse "^1.0.4" - walk-up-path "^1.0.0" - "@npmcli/fs@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.0.tgz#bec1d1b89c170d40e1b73ad6c943b0b75e7d2951" @@ -2869,57 +2826,7 @@ "@gar/promisify" "^1.0.1" semver "^7.3.5" -"@npmcli/fs@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.0.tgz#f2a21c28386e299d1a9fae8051d35ad180e33109" - integrity sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ== - dependencies: - "@gar/promisify" "^1.1.3" - semver "^7.3.5" - -"@npmcli/git@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" - integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== - dependencies: - "@npmcli/promise-spawn" "^1.3.2" - lru-cache "^6.0.0" - mkdirp "^1.0.4" - npm-pick-manifest "^6.1.1" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^2.0.2" - -"@npmcli/installed-package-contents@^1.0.6", "@npmcli/installed-package-contents@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" - integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== - dependencies: - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" - -"@npmcli/map-workspaces@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.3.tgz#2d3c75119ee53246e9aa75bc469a55281cd5f08f" - integrity sha512-X6suAun5QyupNM8iHkNPh0AHdRC2rb1W+MTdMvvA/2ixgmqZwlq5cGUBgmKHUHT2LgrkKJMAXbfAoTxOigpK8Q== - dependencies: - "@npmcli/name-from-folder" "^1.0.1" - glob "^8.0.1" - minimatch "^5.0.1" - read-package-json-fast "^2.0.3" - -"@npmcli/metavuln-calculator@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-2.0.0.tgz#70937b8b5a5cad5c588c8a7b38c4a8bd6f62c84c" - integrity sha512-VVW+JhWCKRwCTE+0xvD6p3uV4WpqocNYYtzyvenqL/u1Q3Xx6fGTJ+6UoIoii07fbuEO9U3IIyuGY0CYHDv1sg== - dependencies: - cacache "^15.0.5" - json-parse-even-better-errors "^2.3.1" - pacote "^12.0.0" - semver "^7.3.2" - -"@npmcli/move-file@^1.0.1", "@npmcli/move-file@^1.1.0": +"@npmcli/move-file@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== @@ -2927,48 +2834,6 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@npmcli/move-file@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.0.tgz#417f585016081a0184cef3e38902cd917a9bbd02" - integrity sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@npmcli/name-from-folder@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz#77ecd0a4fcb772ba6fe927e2e2e155fbec2e6b1a" - integrity sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA== - -"@npmcli/node-gyp@^1.0.2", "@npmcli/node-gyp@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" - integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== - -"@npmcli/package-json@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-1.0.1.tgz#1ed42f00febe5293c3502fd0ef785647355f6e89" - integrity sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg== - dependencies: - json-parse-even-better-errors "^2.3.1" - -"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" - integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== - dependencies: - infer-owner "^1.0.4" - -"@npmcli/run-script@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-2.0.0.tgz#9949c0cab415b17aaac279646db4f027d6f1e743" - integrity sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig== - dependencies: - "@npmcli/node-gyp" "^1.0.2" - "@npmcli/promise-spawn" "^1.3.2" - node-gyp "^8.2.0" - read-package-json-fast "^2.0.1" - "@oclif/color@^0.1.2": version "0.1.2" resolved "https://registry.yarnpkg.com/@oclif/color/-/color-0.1.2.tgz#28b07e2850d9ce814d0b587ce3403b7ad8f7d987" @@ -2980,17 +2845,6 @@ supports-color "^5.4.0" tslib "^1" -"@oclif/color@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@oclif/color/-/color-1.0.1.tgz#20ab9205e0924c6388918a88874e1f4b32df9970" - integrity sha512-qjYr+izgWdIVOroiBKqTzQgc1r5Wd9QB1J7yGM2EeelqhBARiiVLRZL45vhV4zdyTRdDkZS0EBzFwQap+nliLA== - dependencies: - ansi-styles "^4.2.1" - chalk "^4.1.0" - strip-ansi "^6.0.1" - supports-color "^8.1.1" - tslib "^2" - "@oclif/command@1.8.15": version "1.8.15" resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.15.tgz#0639e5c60e36deba88dd852de4dca231fb29138a" @@ -3027,7 +2881,7 @@ is-wsl "^2.1.1" tslib "^2.3.1" -"@oclif/core@1.9.0", "@oclif/core@^1.0.8", "@oclif/core@^1.2.1", "@oclif/core@^1.3.6", "@oclif/core@^1.6.4", "@oclif/core@^1.9.0": +"@oclif/core@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@oclif/core/-/core-1.9.0.tgz#bb2a7820a9176f28921f449c0f577d39c15e74d0" integrity sha512-duvlaRQf4JM+mKuwwos1DNa/Q9x6tnF3khV5RU0fy5hhETF7THlTmxioKlIvKMyQDVpySqtZXZ0OKHeCi2EWuQ== @@ -3102,13 +2956,6 @@ chalk "^4.1.0" tslib "^2.3.1" -"@oclif/plugin-help@^5.1.12": - version "5.1.12" - resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-5.1.12.tgz#24a18631eb9b22cb55e1a3b8e4f6039fd42727e6" - integrity sha512-HvH/RubJxqCinP0vUWQLTOboT+SfjfL8h40s+PymkWaldIcXlpoRaJX50vz+SjZIs7uewZwEk8fzLqpF/BWXlg== - dependencies: - "@oclif/core" "^1.3.6" - "@oclif/plugin-legacy@^1.2.7": version "1.2.7" resolved "https://registry.yarnpkg.com/@oclif/plugin-legacy/-/plugin-legacy-1.2.7.tgz#acb53c97244660ce0610f51c0bb21b5c66cad6d4" @@ -3122,29 +2969,6 @@ semver "^7.3.5" tslib "^2.0.0" -"@oclif/plugin-not-found@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-2.3.1.tgz#8fe1019fdeeb77be055314662bb9180808222e80" - integrity sha512-AeNBw+zSkRpePmpXO8xlL072VF2/R2yK3qsVs/JF26Yw1w77TWuRTdFR+hFotJtFCJ4QYqhNtKSjdryCO9AXsA== - dependencies: - "@oclif/color" "^1.0.0" - "@oclif/core" "^1.2.1" - fast-levenshtein "^3.0.0" - lodash "^4.17.21" - -"@oclif/plugin-warn-if-update-available@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-2.0.4.tgz#3d509ca2394cccf65e6622be812d7be4065a60aa" - integrity sha512-9dprC1CWPjesg0Vf/rDSQH2tzJXhP1ow84cb2My1kj6e6ESulPKpctiCFSZ1WaCQFfq+crKhzlNoP/vRaXNUAg== - dependencies: - "@oclif/core" "^1.0.8" - chalk "^4.1.0" - debug "^4.1.0" - fs-extra "^9.0.1" - http-call "^5.2.2" - lodash "^4.17.21" - semver "^7.3.2" - "@oclif/screen@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-1.0.4.tgz#b740f68609dfae8aa71c3a6cab15d816407ba493" @@ -3263,7 +3087,7 @@ node-fetch "^2.6.7" universal-user-agent "^6.0.0" -"@octokit/rest@^18.0.6", "@octokit/rest@^18.12.0": +"@octokit/rest@^18.12.0": version "18.12.0" resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== @@ -3280,10 +3104,10 @@ dependencies: "@octokit/openapi-types" "^12.7.0" -"@player-tools/cli@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@player-tools/cli/-/cli-0.2.0.tgz#26ae560be831892b3edea7bbb2e1cbbfe84e0acf" - integrity sha512-HzsDdHpnG1NM5443HLNxRBgEZ9Yfk85roLD0GjlLWDjhRP3ZPtQsGktqFsU/eyNYCtlO7c57Yb5rX1euAgUIgA== +"@player-tools/cli@0.2.1--canary.16.274": + version "0.2.1--canary.16.274" + resolved "https://registry.yarnpkg.com/@player-tools/cli/-/cli-0.2.1--canary.16.274.tgz#fc607c2faff38da3482a2bdc0229fa8cb61db6b3" + integrity sha512-et+Tr5N6aJ/XcQZilx7GJtFNIZIDrAtxq8tvW2dB/7j3QlPup+vexZgbNtKmmkuqibbqDaUn4YoJwFZ4rAq1iw== dependencies: "@babel/core" "^7.15.5" "@babel/plugin-transform-react-jsx-source" "^7.18.6" @@ -3293,11 +3117,11 @@ "@babel/register" "^7.17.7" "@oclif/core" "1.9.0" "@oclif/plugin-legacy" "^1.2.7" - "@player-tools/dsl" "0.2.0" - "@player-tools/language-service" "0.2.0" - "@player-tools/xlr-converters" "0.2.0" - "@player-tools/xlr-sdk" "0.2.0" - "@player-tools/xlr-utils" "0.2.0" + "@player-tools/dsl" "0.2.1--canary.16.274" + "@player-tools/language-service" "0.2.1--canary.16.274" + "@player-tools/xlr-converters" "0.2.1--canary.16.274" + "@player-tools/xlr-sdk" "0.2.1--canary.16.274" + "@player-tools/xlr-utils" "0.2.1--canary.16.274" "@types/babel__register" "^7.17.0" chalk "^4.0.1" cosmiconfig "^7.0.1" @@ -3311,10 +3135,10 @@ vscode-languageserver-textdocument "^1.0.1" vscode-languageserver-types "^3.15.1" -"@player-tools/dsl@0.2.0", "@player-tools/dsl@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@player-tools/dsl/-/dsl-0.2.0.tgz#fb0fcc444766c28c4b95947fad4d75870e5d7acb" - integrity sha512-XLO0lMWamKrFomilr/H8I9CVICIj2K0BXpdzHAAuCS7IBBaC5Ofiu4PrtVRHO81T9VLmSbZ3V7THcPi8xMWURw== +"@player-tools/dsl@0.2.1--canary.16.274": + version "0.2.1--canary.16.274" + resolved "https://registry.yarnpkg.com/@player-tools/dsl/-/dsl-0.2.1--canary.16.274.tgz#e2714bc3a8a758e4c3a74f851ac7d20c61f300e9" + integrity sha512-hdfEsjfQtnbKiJ4PKl7tFHzp1DuxNzb15+8H9OlO/2ZPjxhi8PO48870otIHnXFbss68QdsnBWRWahHaH9kv5g== dependencies: "@babel/runtime" "7.15.4" "@player-ui/types" "^0.2.0" @@ -3334,62 +3158,63 @@ source-map-js "^1.0.2" tapable-ts "^0.1.0" ts-node "^10.4.0" - typescript "4.4.4" + typescript "4.8.4" -"@player-tools/language-service@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@player-tools/language-service/-/language-service-0.2.0.tgz#d8bde7f01d0fc7e72f3b30b35035f2f7dfe79c40" - integrity sha512-CY6NhxryoegBUbavk2fyfsnmQp0seL0XggjJkyAxsUhdfNtY9BGQL0AYMu3iC3TDBUeQkaZbpudyAUrR34VSVw== +"@player-tools/language-service@0.2.1--canary.16.274": + version "0.2.1--canary.16.274" + resolved "https://registry.yarnpkg.com/@player-tools/language-service/-/language-service-0.2.1--canary.16.274.tgz#40029eef68bf4b55fc1a8227d1ad434452c7129a" + integrity sha512-PfoYjQ2c9uvwTIM6MvbEF4XPnULmLTpKvMkQOgubKLaBARMz5q+gRTbiDtMgKSM3ILMS/wLn6DCOQFCxqP4fgw== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.2.0" - "@player-tools/xlr-sdk" "0.2.0" - "@player-tools/xlr-utils" "0.2.0" + "@player-tools/xlr" "0.2.1--canary.16.274" + "@player-tools/xlr-sdk" "0.2.1--canary.16.274" + "@player-tools/xlr-utils" "0.2.1--canary.16.274" change-case "^4.1.1" cross-fetch "^3.0.5" detect-indent "^6.0.0" jsonc-parser "^2.3.1" tapable-ts "^0.1.0" timm "^1.7.1" - typescript "4.4.4" + typescript "4.8.4" vscode-languageserver-textdocument "^1.0.1" vscode-languageserver-types "^3.15.1" -"@player-tools/xlr-converters@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-converters/-/xlr-converters-0.2.0.tgz#46aaef19d095a221f2bbdecd4dd50eca0583699a" - integrity sha512-Nt0xaFSZWJYmgyOU+e1EghUiyPL1S/3+7PN8OEgZWxE2D9HZ3vUaOIVLfigOkQZJ3FlcRLpJT4E9SV3CBpZcoA== +"@player-tools/xlr-converters@0.2.1--canary.16.274": + version "0.2.1--canary.16.274" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-converters/-/xlr-converters-0.2.1--canary.16.274.tgz#d1a46fab04bda2f35ee6b7751f673e8ab04d6096" + integrity sha512-RdXhb8nDvO2zOm51YbntATZzMhRhVC1lGWzNqP3ySzpUXS7tWcrYpQkXETGnrOiPQQZPVFNImfpm0goHu5vwMA== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.2.0" - "@player-tools/xlr-utils" "0.2.0" + "@player-tools/xlr" "0.2.1--canary.16.274" + "@player-tools/xlr-utils" "0.2.1--canary.16.274" -"@player-tools/xlr-sdk@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-sdk/-/xlr-sdk-0.2.0.tgz#4c2a8ff243d95d86fe8e4266212559b6061acfd6" - integrity sha512-4V4FEMUZdnFO+h4FzKg7R5tiHu6Ta3j3Skm9cpVdFysL0PSNmqo6eopxNohK/2ehXaC9AH8flOEbREcMiAuBDA== +"@player-tools/xlr-sdk@0.2.1--canary.16.274": + version "0.2.1--canary.16.274" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-sdk/-/xlr-sdk-0.2.1--canary.16.274.tgz#56bfdf36115279eddb2bed805f58b6fd3d1ac236" + integrity sha512-12ZEoU/FShqTQLIpHz77z8N7KX6YfubzDxNptRlkD9lZLWCAHu6feqEnCyr9RLO6RrNPGBosrrvMcAy3ykfbpQ== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.2.0" - "@player-tools/xlr-converters" "0.2.0" - "@player-tools/xlr-utils" "0.2.0" + "@player-tools/xlr" "0.2.1--canary.16.274" + "@player-tools/xlr-converters" "0.2.1--canary.16.274" + "@player-tools/xlr-utils" "0.2.1--canary.16.274" "@types/fs-extra" "^9.0.13" "@types/node" "^16.11.12" fs-extra "^10.0.0" jsonc-parser "^2.3.1" -"@player-tools/xlr-utils@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-utils/-/xlr-utils-0.2.0.tgz#90f61fb189267c59fae08f9e010f78b5c73ec1bd" - integrity sha512-kF/XF/5pLjT5Jae3jvqieu7AfNUU3URUnoe3NiWzjzqUth33XXIOYeUf09otWoBhDnD1N6/dACX8DHJ3kTgH/g== +"@player-tools/xlr-utils@0.2.1--canary.16.274": + version "0.2.1--canary.16.274" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-utils/-/xlr-utils-0.2.1--canary.16.274.tgz#e22bfaac5811b11e3617daa7257c581e80d94dea" + integrity sha512-G/xJd1J3aLe6i/+TyBHEfbhpay14WTSRZSaG9Jes+sAHq4l7lhO3DMcqUuSBy0Qsm16ZutNttsM9DMixC6UBEQ== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.2.0" + "@player-tools/xlr" "0.2.1--canary.16.274" + "@typescript/vfs" "^1.4.0" -"@player-tools/xlr@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@player-tools/xlr/-/xlr-0.2.0.tgz#e0476820bd32c17a893235c26db875bdce879768" - integrity sha512-C2yRUl3XSnlDEEP6/AVPdottdA4Grx4Ay3+/8RzPEZzOchUXuLHohjoKHoe0dKNsMB49u3+FQP+i8PCz+x1UVA== +"@player-tools/xlr@0.2.1--canary.16.274": + version "0.2.1--canary.16.274" + resolved "https://registry.yarnpkg.com/@player-tools/xlr/-/xlr-0.2.1--canary.16.274.tgz#30100b56d0e701bfe9a4df3e37eb659fd571d3a3" + integrity sha512-Wu95BXCz+cF0gN3KK3vAyTKC9SGTrms/6ZvsNdo5bUtRI/I4rQiaFJJek9pCKp/hXHVteilydAJVdVDNfvOTgQ== dependencies: "@babel/runtime" "7.15.4" @@ -4486,11 +4311,6 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" @@ -4636,11 +4456,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/expect@^1.20.4": - version "1.20.4" - resolved "https://registry.yarnpkg.com/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" - integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== - "@types/extend@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/extend/-/extend-3.0.1.tgz#923dc2d707d944382433e01d6cc0c69030ab2c75" @@ -4786,7 +4601,7 @@ resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.1.tgz#d9ba43490fa3a3df958759adf69396c3532cf2c1" integrity sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw== -"@types/minimatch@*", "@types/minimatch@^3.0.3": +"@types/minimatch@*": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -4838,11 +4653,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.5.tgz#0dd636fe7b2c6055cbed0d4ca3b7fb540f130a96" integrity sha512-LMy+vDDcQR48EZdEx5wRX1q/sEl6NdGuHXPnfeL8ixkwCOSZ2qnIyIZmcCbdX0MeRqHhAcHmX+haCbrS8Run+A== -"@types/node@^15.6.1": - version "15.14.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" - integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== - "@types/node@^16.11.12": version "16.11.19" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.19.tgz#1afa165146997b8286b6eabcb1c2d50729055169" @@ -5013,14 +4823,6 @@ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== -"@types/vinyl@^2.0.4": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/vinyl/-/vinyl-2.0.6.tgz#b2d134603557a7c3d2b5d3dc23863ea2b5eb29b0" - integrity sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g== - dependencies: - "@types/expect" "^1.20.4" - "@types/node" "*" - "@types/warning@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52" @@ -5188,6 +4990,13 @@ dependencies: debug "^4.1.1" +"@typescript/vfs@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@typescript/vfs/-/vfs-1.4.0.tgz#2d22985c7666c9d4ce26eb025405e6f156aa32b0" + integrity sha512-Pood7yv5YWMIX+yCHo176OnF8WUlKGImFG7XlsuH14Zb1YN5+dYD3uUtS7lqZtsH7tAveNUi2NzdpQCN0yRbaw== + dependencies: + debug "^4.1.1" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -5474,11 +5283,6 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -5545,22 +5349,13 @@ agent-base@5: resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== -agent-base@6, agent-base@^6.0.2: +agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" -agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== - dependencies: - debug "^4.1.0" - depd "^1.1.2" - humanize-ms "^1.2.1" - aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -5692,11 +5487,6 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -5707,12 +5497,7 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - -ansi-styles@^3.0.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -5803,14 +5588,6 @@ are-we-there-yet@^2.0.0: delegates "^1.0.0" readable-stream "^3.6.0" -are-we-there-yet@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" - integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - are-we-there-yet@~1.1.2: version "1.1.7" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" @@ -5881,11 +5658,6 @@ array-back@^4.0.1: resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -5963,11 +5735,6 @@ arrify@^2.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -6111,21 +5878,6 @@ await-to-js@^3.0.0: resolved "https://registry.yarnpkg.com/await-to-js/-/await-to-js-3.0.0.tgz#70929994185616f4675a91af6167eb61cc92868f" integrity sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g== -aws-sdk@^2.1069.0: - version "2.1152.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1152.0.tgz#73e4fb81b3a9c289234b5d6848bcdb854f169bdf" - integrity sha512-Lqwk0bDhm3vzpYb3AAM9VgGHeDpbB8+o7UJnP9R+CO23kJfi/XRpKihAcbyKDD/AUQ+O1LJaUVpvaJYLS9Am7w== - dependencies: - buffer "4.9.2" - events "1.1.1" - ieee754 "1.1.13" - jmespath "0.16.0" - querystring "0.2.0" - sax "1.2.1" - url "0.10.3" - uuid "8.0.0" - xml2js "0.4.19" - axe-core@^4.3.5: version "4.3.5" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" @@ -6396,18 +6148,6 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bin-links@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-3.0.1.tgz#cc70ffb481988b22c527d3e6e454787876987a49" - integrity sha512-9vx+ypzVhASvHTS6K+YSGf7nwQdANoz7v6MTC0aCtYnOEZ87YvMf81aY737EZnGZdpbRM3sfWjO9oWkKmuIvyQ== - dependencies: - cmd-shim "^5.0.0" - mkdirp-infer-owner "^2.0.0" - npm-normalize-package-bin "^1.0.0" - read-cmd-shim "^3.0.0" - rimraf "^3.0.0" - write-file-atomic "^4.0.0" - binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -6418,11 +6158,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -binaryextensions@^4.15.0, binaryextensions@^4.16.0: - version "4.18.0" - resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-4.18.0.tgz#22aeada2d14de062c60e8ca59a504a5636a76ceb" - integrity sha512-PQu3Kyv9dM4FnwB7XGj1+HucW+ShvJzJqjuw1JkKVs1mWdwOKVcRjOi+pV9X52A0tNvrPCsPkbFFQb+wE1EAXw== - bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" @@ -6437,7 +6172,7 @@ bl@^0.9.0: dependencies: readable-stream "~1.0.26" -bl@^4.0.3, bl@^4.1.0: +bl@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== @@ -6664,15 +6399,6 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -buffer@4.9.2, buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - buffer@5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" @@ -6681,6 +6407,15 @@ buffer@5.6.0: base64-js "^1.0.2" ieee754 "^1.1.4" +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -6699,11 +6434,6 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -6758,7 +6488,7 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0: +cacache@^15.0.5: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== @@ -6782,30 +6512,6 @@ cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" -cacache@^16.1.0: - version "16.1.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.1.tgz#4e79fb91d3efffe0630d5ad32db55cc1b870669c" - integrity sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg== - dependencies: - "@npmcli/fs" "^2.1.0" - "@npmcli/move-file" "^2.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - glob "^8.0.1" - infer-owner "^1.0.4" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - mkdirp "^1.0.4" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - unique-filename "^1.1.1" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -6941,17 +6647,6 @@ chalk@4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" @@ -6960,7 +6655,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.1, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.1, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -7173,11 +6868,6 @@ clean-stack@^3.0.0, clean-stack@^3.0.1: dependencies: escape-string-regexp "4.0.0" -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg== - cli-boxes@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" @@ -7197,11 +6887,6 @@ cli-progress@^3.10.0: dependencies: string-width "^4.2.3" -cli-spinners@^2.5.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - cli-table3@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" @@ -7211,13 +6896,6 @@ cli-table3@^0.6.1: optionalDependencies: colors "1.4.0" -cli-table@^0.3.1: - version "0.3.11" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" - integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== - dependencies: - colors "1.0.3" - cli-truncate@2.1.0, cli-truncate@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" @@ -7311,11 +6989,6 @@ clone-stats@^1.0.0: resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -7340,13 +7013,6 @@ clsx@^1.0.4, clsx@^1.1.1: resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== -cmd-shim@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" - integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== - dependencies: - mkdirp-infer-owner "^2.0.0" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -7399,7 +7065,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-support@^1.1.2, color-support@^1.1.3: +color-support@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -7419,11 +7085,6 @@ colorette@^2.0.16: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== - colors@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" @@ -7475,11 +7136,6 @@ command-line-usage@^6.0.0: table-layout "^1.0.1" typical "^5.2.0" -commander@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" - integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== - commander@^2.18.0, commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -7510,11 +7166,6 @@ comment-parser@1.2.4: resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.2.4.tgz#489f3ee55dfd184a6e4bffb31baba284453cb760" integrity sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw== -common-ancestor-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" - integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== - common-path-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" @@ -7584,21 +7235,6 @@ concat-stream@^1.5.0, concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" -concurrently@^7.0.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.2.1.tgz#88b144060443403060aad46f837dd17451f7e55e" - integrity sha512-7cab/QyqipqghrVr9qZmoWbidu0nHsmxrpNqQ7r/67vfl1DWJElexehQnTH1p+87tDkihaAjM79xTZyBQh7HLw== - dependencies: - chalk "^4.1.0" - date-fns "^2.16.1" - lodash "^4.17.21" - rxjs "^6.6.3" - shell-quote "^1.7.3" - spawn-command "^0.0.2-1" - supports-color "^8.1.0" - tree-kill "^1.2.2" - yargs "^17.3.1" - configstore@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" @@ -8078,11 +7714,6 @@ damerau-levenshtein@^1.0.7: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -dargs@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" - integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== - data-uri-to-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" @@ -8097,16 +7728,6 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -date-fns@^2.16.1: - version "2.28.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" - integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== - -dateformat@^4.5.0: - version "4.6.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" - integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== - debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -8128,11 +7749,6 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== - decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -8194,13 +7810,6 @@ deepmerge@^4.0.0, deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== - dependencies: - clone "^1.0.2" - defer-to-connect@^1.0.1: version "1.1.3" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" @@ -8250,7 +7859,7 @@ denodeify@^1.2.1: resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= -depd@^1.1.2, depd@~1.1.2: +depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= @@ -8318,14 +7927,6 @@ detect-port@^1.3.0: address "^1.0.1" debug "^2.6.0" -dezalgo@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" - integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== - dependencies: - asap "^2.0.0" - wrappy "1" - didyoumean@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" @@ -8622,7 +8223,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -encoding@0.1.13, encoding@^0.1.12, encoding@^0.1.13: +encoding@0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -8688,21 +8289,11 @@ env-ci@^5.0.1: fromentries "^1.3.2" java-properties "^1.0.0" -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - envinfo@^7.7.3: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -8724,11 +8315,6 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.1.1" -error@^10.4.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/error/-/error-10.4.0.tgz#6fcf0fd64bceb1e750f8ed9a3dd880f00e46a487" - integrity sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw== - es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" @@ -9307,11 +8893,6 @@ eventemitter3@^4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== - events@3.3.0, events@^3.0.0, events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -9356,21 +8937,6 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - execa@^5.0.0, execa@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -9553,7 +9119,7 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.9: +fast-glob@^3.1.1, fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== @@ -9579,18 +9145,6 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-levenshtein@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz#37b899ae47e1090e40e3fd2318e4d5f0142ca912" - integrity sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ== - dependencies: - fastest-levenshtein "^1.0.7" - -fastest-levenshtein@^1.0.7: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== - fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -9808,14 +9362,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find-yarn-workspace-root2@1.2.16: - version "1.2.16" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" - integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA== - dependencies: - micromatch "^4.0.2" - pkg-dir "^4.2.0" - find-yarn-workspace-root@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" @@ -9833,13 +9379,6 @@ findup-sync@^3.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" -first-chunk-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" - integrity sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg== - dependencies: - readable-stream "^2.0.2" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -10029,15 +9568,6 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" - integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -10066,7 +9596,7 @@ fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0, fs-minipass@^2.1.0: +fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== @@ -10164,20 +9694,6 @@ gauge@^3.0.0: strip-ansi "^6.0.1" wide-align "^1.1.2" -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -10246,11 +9762,6 @@ get-port@^5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== - get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -10263,7 +9774,7 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" -get-stream@^5.0.0, get-stream@^5.1.0: +get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== @@ -10306,18 +9817,11 @@ github-from-package@0.0.0: resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= -github-slugger@^1.0.0, github-slugger@^1.1.1, github-slugger@^1.4.0: +github-slugger@^1.0.0, github-slugger@^1.1.1: version "1.4.0" resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e" integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ== -github-username@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/github-username/-/github-username-6.0.0.tgz#d543eced7295102996cd8e4e19050ebdcbe60658" - integrity sha512-7TTrRjxblSI5l6adk9zd+cV5d6i1OrJSo3Vr9xdGqFLBQo0mz5P9eIfKCDJ7eekVGGFLbce0qbPSnktXV2BjDQ== - dependencies: - "@octokit/rest" "^18.0.6" - gitlog@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/gitlog/-/gitlog-4.0.4.tgz#8da6c08748dc290eb6c2fc11e3c505fb73715564" @@ -10393,17 +9897,6 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, gl once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - glob@~3.2.6: version "3.2.11" resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" @@ -10482,21 +9975,7 @@ globalthis@^1.0.0: dependencies: define-properties "^1.1.3" -globby@^10.0.1: - version "10.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" - integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" - slash "^3.0.0" - -globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: +globby@^11.0.1, globby@^11.0.2, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -10567,7 +10046,7 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -10582,11 +10061,6 @@ gray-matter@^4.0.3: section-matter "^1.0.0" strip-bom-string "^1.0.0" -grouped-queue@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-2.0.0.tgz#a2c6713f2171e45db2c300a3a9d7c119d694dac8" - integrity sha512-/PiFUa7WIsl48dUeCvhIHnwNmAAzlI/eHoJl0vu3nsFA366JleY7Ff8EVTplZu5kO0MIdZjKTTnzItL61ahbnw== - handlebars@^4.7.7: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" @@ -10599,13 +10073,6 @@ handlebars@^4.7.7: optionalDependencies: uglify-js "^3.1.4" -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" @@ -10911,7 +10378,7 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hosted-git-info@^4.0.1, hosted-git-info@^4.0.2: +hosted-git-info@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== @@ -11007,12 +10474,12 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: +http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== -http-call@^5.1.2, http-call@^5.2.2, http-call@^5.2.4: +http-call@^5.2.4: version "5.3.0" resolved "https://registry.yarnpkg.com/http-call/-/http-call-5.3.0.tgz#4ded815b13f423de176eb0942d69c43b25b148db" integrity sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w== @@ -11055,15 +10522,6 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - https-browserify@1.0.0, https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -11085,23 +10543,11 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - husky@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" @@ -11138,11 +10584,6 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ieee754@1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -11153,13 +10594,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3" - integrity sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw== - dependencies: - minimatch "^3.0.4" - ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -11170,7 +10604,7 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1, ignore@^5.1.8, ignore@^5.2.0: +ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -11302,27 +10736,6 @@ inquirer@^7.0.4: strip-ansi "^6.0.0" through "^2.3.6" -inquirer@^8.0.0: - version "8.2.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" - integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^7.0.0" - internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -11481,7 +10894,7 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.8.1: +is-core-module@^2.2.0, is-core-module@^2.8.0, is-core-module@^2.8.1: version "2.9.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== @@ -11615,16 +11028,6 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" @@ -11749,13 +11152,6 @@ is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== -is-scoped@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-2.1.0.tgz#fef0713772658bdf5bee418608267ddae6d3566d" - integrity sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ== - dependencies: - scoped-regex "^2.0.0" - is-set@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" @@ -11818,7 +11214,7 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-utf8@^0.2.0, is-utf8@^0.2.1: +is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= @@ -11882,11 +11278,6 @@ isarray@^2.0.5: resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== -isbinaryfile@^4.0.8: - version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" - integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -12457,11 +11848,6 @@ jest@^27.3.1: import-local "^3.0.2" jest-cli "^27.4.7" -jmespath@0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" - integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== - joycon@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -12477,7 +11863,7 @@ js-string-escape@^1.0.1: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.1: +js-yaml@^3.13.1, js-yaml@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -12589,7 +11975,7 @@ json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -12609,11 +11995,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-nice@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" - integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -12661,11 +12042,6 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" @@ -12679,16 +12055,6 @@ junk@^3.1.0: resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== -just-diff-apply@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.3.1.tgz#30f40809ffed55ad76dccf73fa9b85a76964c867" - integrity sha512-dgFenZnMsc1xGNqgdtgnh7DK+Oy352CE3VZLbzcbQpsBs9iI2K3M0IRrdgREZ72eItTjbl0suRyvKRdVQa9GbA== - -just-diff@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.0.3.tgz#4c9c514dec5526b25ab977590e3c39a0cf271554" - integrity sha512-a8p80xcpJ6sdurk5PxDKb4mav9MeKjA3zFKZpCWBIfvg8mznfnmb13MKZvlrwJ+Lhis0wM3uGAzE0ArhFHvIcg== - keytar@^7.7.0: version "7.8.0" resolved "https://registry.yarnpkg.com/keytar/-/keytar-7.8.0.tgz#28cf5ceeb1275350888870022869b8b4fe6a87f9" @@ -12899,26 +12265,6 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -load-json-file@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" - integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== - dependencies: - graceful-fs "^4.1.15" - parse-json "^5.0.0" - strip-bom "^4.0.0" - type-fest "^0.6.0" - -load-yaml-file@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d" - integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw== - dependencies: - graceful-fs "^4.1.5" - js-yaml "^3.13.0" - pify "^4.0.1" - strip-bom "^3.0.0" - loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -13040,7 +12386,7 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.11.1, lodash@^4.11.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: +lodash@^4.11.1, lodash@^4.11.2, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -13050,7 +12396,7 @@ lodash@~2.4.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" integrity sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw== -log-symbols@^4.0.0, log-symbols@^4.1.0: +log-symbols@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -13129,11 +12475,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.7.1: - version "7.10.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.10.1.tgz#db577f42a94c168f676b638d15da8fb073448cab" - integrity sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A== - lunr@^2.3.9: version "2.3.9" resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" @@ -13171,50 +12512,6 @@ make-error@^1, make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^10.0.1: - version "10.1.7" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.1.7.tgz#b1402cb3c9fad92b380ff3a863cdae5414a42f76" - integrity sha512-J/2xa2+7zlIUKqfyXDCXFpH3ypxO4k3rgkZHPSZkyUYcBT/hM80M3oyKLM/9dVriZFiGeGGS2Ei+0v2zfhqj3Q== - dependencies: - agentkeepalive "^4.2.1" - cacache "^16.1.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-fetch "^2.0.3" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^9.0.0" - -make-fetch-happen@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.2.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.2" - promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" - ssri "^8.0.0" - makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -13408,32 +12705,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -"mem-fs-editor@^8.1.2 || ^9.0.0": - version "9.4.0" - resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-9.4.0.tgz#0cc1cf61350e33c25fc364c97fb0551eb32b8c9b" - integrity sha512-HSSOLSVRrsDdui9I6i96dDtG+oAez/4EB2g4cjSrNhgNQ3M+L57/+22NuPdORSoxvOHjIg/xeOE+C0wwF91D2g== - dependencies: - binaryextensions "^4.16.0" - commondir "^1.0.1" - deep-extend "^0.6.0" - ejs "^3.1.6" - globby "^11.0.3" - isbinaryfile "^4.0.8" - minimatch "^3.0.4" - multimatch "^5.0.0" - normalize-path "^3.0.0" - textextensions "^5.13.0" - -"mem-fs@^1.2.0 || ^2.0.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-2.2.1.tgz#c87bc8a53fb17971b129d4bcd59a9149fb78c5b1" - integrity sha512-yiAivd4xFOH/WXlUi6v/nKopBh1QLzwjFi36NK88cGt/PRXI8WeBASqY+YSjIVWvQTx3hR8zHKDBMV6hWmglNA== - dependencies: - "@types/node" "^15.6.1" - "@types/vinyl" "^2.0.4" - vinyl "^2.0.1" - vinyl-file "^3.0.0" - mem@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" @@ -13827,7 +13098,7 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -13844,28 +13115,6 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.3.2, minipass-fetch@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - -minipass-fetch@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.0.tgz#ca1754a5f857a3be99a9271277246ac0b44c3ff8" - integrity sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg== - dependencies: - minipass "^3.1.6" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -13873,36 +13122,21 @@ minipass-flush@^1.0.5: dependencies: minipass "^3.0.0" -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: +minipass@^3.0.0, minipass@^3.1.1: version "3.1.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== dependencies: yallist "^4.0.0" -minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: +minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -13939,15 +13173,6 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp-infer-owner@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" - integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== - dependencies: - chownr "^2.0.0" - infer-owner "^1.0.4" - mkdirp "^1.0.3" - mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -14002,22 +13227,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multimatch@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -14070,11 +13284,6 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -negotiator@^0.6.2, negotiator@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -14226,22 +13435,6 @@ node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" -node-gyp@^8.2.0: - version "8.4.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" - integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^9.1.0" - nopt "^5.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - node-html-parser@1.4.9: version "1.4.9" resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c" @@ -14293,13 +13486,6 @@ node-releases@^2.0.1: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -14310,16 +13496,6 @@ normalize-package-data@^2.5.0: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-package-data@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -14354,66 +13530,6 @@ now-and-later@^2.0.0: dependencies: once "^1.3.2" -npm-bundled@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-install-checks@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" - integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== - dependencies: - semver "^7.1.1" - -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-package-arg@^8.0.1, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: - version "8.1.5" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" - integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== - dependencies: - hosted-git-info "^4.0.1" - semver "^7.3.4" - validate-npm-package-name "^3.0.0" - -npm-packlist@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9" - integrity sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ== - dependencies: - glob "^7.1.6" - ignore-walk "^4.0.1" - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" - -npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" - integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== - dependencies: - npm-install-checks "^4.0.0" - npm-normalize-package-bin "^1.0.1" - npm-package-arg "^8.1.2" - semver "^7.3.4" - -npm-registry-fetch@^12.0.0, npm-registry-fetch@^12.0.1: - version "12.0.2" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz#ae583bb3c902a60dae43675b5e33b5b1f6159f1e" - integrity sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA== - dependencies: - make-fetch-happen "^10.0.1" - minipass "^3.1.6" - minipass-fetch "^1.4.1" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^8.1.5" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -14421,7 +13537,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0, npm-run-path@^4.0.1: +npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -14448,16 +13564,6 @@ npmlog@^5.0.1: gauge "^3.0.0" set-blocking "^2.0.0" -npmlog@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - nth-check@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -14590,30 +13696,6 @@ objectorarray@^1.0.5: resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg== -oclif@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/oclif/-/oclif-3.0.1.tgz#f10bd702b4b2b22f849d57951882e0bd8aa9246c" - integrity sha512-DZZ53DFbDBai6doGTyVCkYWYBj9u+pXStZf8LMV5ttyr9vY9YL/d8kFpYk5OrUz8PuU81JU2Jo3ZV+4QzZFfug== - dependencies: - "@oclif/core" "^1.6.4" - "@oclif/plugin-help" "^5.1.12" - "@oclif/plugin-not-found" "^2.3.1" - "@oclif/plugin-warn-if-update-available" "^2.0.4" - aws-sdk "^2.1069.0" - concurrently "^7.0.0" - debug "^4.3.3" - find-yarn-workspace-root "^2.0.0" - fs-extra "^8.1" - github-slugger "^1.4.0" - lodash "^4.17.21" - normalize-package-data "^3.0.3" - qqjs "^0.3.11" - semver "^7.3.5" - tslib "^2.3.1" - yeoman-environment "^3.9.1" - yeoman-generator "^5.6.1" - yosay "^2.0.2" - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -14687,21 +13769,6 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" @@ -14861,14 +13928,6 @@ p-timeout@^3.1.0, p-timeout@^3.2.0: dependencies: p-finally "^1.0.0" -p-transform@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-transform/-/p-transform-1.3.0.tgz#2da960ba92c6a56efbe75cbd1edf3ea7b3191049" - integrity sha512-UJKdSzgd3KOnXXAtqN5+/eeHcvTn1hBkesEmElVgvO/NAYcxAvmjzIGmnNd3Tb/gRAvMBdNRFD4qAWdHxY6QXg== - dependencies: - debug "^4.3.2" - p-queue "^6.6.2" - p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -14896,36 +13955,6 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" -pacote@^12.0.0, pacote@^12.0.2: - version "12.0.3" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-12.0.3.tgz#b6f25868deb810e7e0ddf001be88da2bcaca57c7" - integrity sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow== - dependencies: - "@npmcli/git" "^2.1.0" - "@npmcli/installed-package-contents" "^1.0.6" - "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^2.0.0" - cacache "^15.0.5" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.3" - mkdirp "^1.0.3" - npm-package-arg "^8.0.1" - npm-packlist "^3.0.0" - npm-pick-manifest "^6.0.0" - npm-registry-fetch "^12.0.0" - promise-retry "^2.0.1" - read-package-json-fast "^2.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.1.0" - -pad-component@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/pad-component/-/pad-component-0.0.1.tgz#ad1f22ce1bf0fdc0d6ddd908af17f351a404b8ac" - integrity sha512-8EKVBxCRSvLnsX1p2LlSFSH3c2/wuhY9/BXXWu8boL78FbVKqn2L5SpURt1x5iw6Gq8PTqJ7MdPoe5nCtX3I+g== - pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -14973,15 +14002,6 @@ parse-author@^2.0.0: dependencies: author-regex "^1.0.0" -parse-conflict-json@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz#3d05bc8ffe07d39600dc6436c6aefe382033d323" - integrity sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA== - dependencies: - json-parse-even-better-errors "^2.3.1" - just-diff "^5.0.1" - just-diff-apply "^5.2.0" - parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -15216,7 +14236,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -15656,16 +14676,6 @@ prebuild-install@^7.0.1: tar-fs "^2.0.0" tunnel-agent "^0.6.0" -preferred-pm@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.0.3.tgz#1b6338000371e3edbce52ef2e4f65eb2e73586d6" - integrity sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ== - dependencies: - find-up "^5.0.0" - find-yarn-workspace-root2 "1.2.16" - path-exists "^4.0.0" - which-pm "2.0.0" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -15698,11 +14708,6 @@ prettier@^2.4.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== -pretty-bytes@^5.3.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - pretty-error@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" @@ -15755,11 +14760,6 @@ private@^0.1.8: resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -proc-log@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" - integrity sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg== - process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -15775,29 +14775,11 @@ progress@^2.0.0, progress@^2.0.1: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-all-reject-late@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" - integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== - -promise-call-limit@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-1.0.1.tgz#4bdee03aeb85674385ca934da7114e9bcd3c6e24" - integrity sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q== - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - promise.allsettled@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.5.tgz#2443f3d4b2aa8dfa560f6ac2aa6c4ea999d75f53" @@ -15965,25 +14947,6 @@ puppeteer-core@^2.1.1: rimraf "^2.6.1" ws "^6.1.0" -qqjs@^0.3.11: - version "0.3.11" - resolved "https://registry.yarnpkg.com/qqjs/-/qqjs-0.3.11.tgz#795b9f7d00807d75c391b1241b5be3077143d9ea" - integrity sha512-pB2X5AduTl78J+xRSxQiEmga1jQV0j43jOPs/MTgTLApGFEOn6NgdE2dEjp7nvDtjkIOZbvFIojAiYUx6ep3zg== - dependencies: - chalk "^2.4.1" - debug "^4.1.1" - execa "^0.10.0" - fs-extra "^6.0.1" - get-stream "^5.1.0" - glob "^7.1.2" - globby "^10.0.1" - http-call "^5.1.2" - load-json-file "^6.2.0" - pkg-dir "^4.2.0" - tar-fs "^2.0.0" - tmp "^0.1.0" - write-json-file "^4.1.1" - qs@6.9.6: version "6.9.6" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" @@ -16366,19 +15329,6 @@ react@^17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" -read-cmd-shim@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz#62b8c638225c61e6cc607f8f4b779f3b8238f155" - integrity sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog== - -read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" - integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -16454,16 +15404,6 @@ readable-web-to-node-stream@^3.0.0: dependencies: readable-stream "^3.6.0" -readdir-scoped-modules@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -17068,11 +16008,6 @@ retext@^8.1.0: retext-stringify "^3.0.0" unified "^10.0.0" -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -17182,7 +16117,7 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -run-async@^2.0.0, run-async@^2.4.0: +run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== @@ -17201,14 +16136,14 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.6.0, rxjs@^6.6.3: +rxjs@^6.6.0: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" -rxjs@^7.5.1, rxjs@^7.5.5: +rxjs@^7.5.1: version "7.5.5" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== @@ -17264,11 +16199,6 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" - integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== - sax@>=0.6.0: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -17325,11 +16255,6 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" -scoped-regex@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-2.1.0.tgz#7b9be845d81fd9d21d1ec97c61a0b7cf86d2015f" - integrity sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ== - scroll-into-view-if-needed@^2.2.28: version "2.2.28" resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.28.tgz#5a15b2f58a52642c88c8eca584644e01703d645a" @@ -17377,7 +16302,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: +semver@^7.0.0, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== @@ -17528,12 +16453,12 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@1.7.3, shell-quote@^1.7.3: +shell-quote@1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== -shelljs@^0.8.4, shelljs@^0.8.5: +shelljs@^0.8.4: version "0.8.5" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== @@ -17556,7 +16481,7 @@ sigmund@~1.0.0: resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" integrity sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g== -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -17622,11 +16547,6 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - smooth-scroll-into-view-if-needed@1.1.32: version "1.1.32" resolved "https://registry.yarnpkg.com/smooth-scroll-into-view-if-needed/-/smooth-scroll-into-view-if-needed-1.1.32.tgz#57718cb2caa5265ade3e96006dfcf28b2fdcfca0" @@ -17672,39 +16592,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" - integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" - integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" - integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== - dependencies: - ip "^1.1.5" - smart-buffer "^4.2.0" - -sort-keys@^4.0.0, sort-keys@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" - integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== - dependencies: - is-plain-obj "^2.0.0" - sorted-array@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/sorted-array/-/sorted-array-2.0.4.tgz#5d62bbfe64d1bde3cf4b6b79530a6feb95afb5ae" @@ -17797,11 +16684,6 @@ space-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== - spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -17852,20 +16734,13 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^8.0.0, ssri@^8.0.1: +ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: minipass "^3.1.1" -ssri@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" - integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== - dependencies: - minipass "^3.1.1" - stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -18038,14 +16913,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -18154,13 +17021,6 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -18168,33 +17028,11 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-bom-buf@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" - integrity sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ== - dependencies: - is-utf8 "^0.2.1" - -strip-bom-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" - integrity sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w== - dependencies: - first-chunk-stream "^2.0.0" - strip-bom "^2.0.0" - strip-bom-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== - dependencies: - is-utf8 "^0.2.0" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -18315,18 +17153,13 @@ stylis@4.0.13: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== -supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.0, supports-color@^8.1.1: +supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== - supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -18412,14 +17245,6 @@ table-layout@^1.0.1: typical "^5.2.0" wordwrapjs "^4.0.0" -taketalk@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/taketalk/-/taketalk-1.0.0.tgz#b4d4f0deed206ae7df775b129ea2ca6de52f26dd" - integrity sha512-kS7E53It6HA8S1FVFBWP7HDwgTiJtkmYk7TsowGlizzVrivR1Mf9mgjXHY1k7rOfozRVMZSfwjB3bevO4QEqpg== - dependencies: - get-stdin "^4.0.1" - minimist "^1.1.0" - tapable-ts@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/tapable-ts/-/tapable-ts-0.1.0.tgz#9ea393d3f5ed9c998ac1d5cff81a2293569ac47e" @@ -18466,7 +17291,7 @@ tar-stream@~0.4.0: readable-stream "^1.0.27-1" xtend "^4.0.0" -tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: +tar@^6.0.2: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -18580,11 +17405,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -textextensions@^5.12.0, textextensions@^5.13.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-5.15.0.tgz#4bb3296ad6fc111cf4b39c589dd028d8aaaf7060" - integrity sha512-MeqZRHLuaGamUXGuVn2ivtU3LA3mLCCIO5kUGoohTCoGmCBg/+8yPhWVX9WSl9telvVd8erftjFk9Fwb2dD6rw== - throat@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" @@ -18655,13 +17475,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmp@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" - integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== - dependencies: - rimraf "^2.6.3" - tmp@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -18792,21 +17605,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - treeify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== -treeverse@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-1.0.4.tgz#a6b0ebf98a1bca6846ddc7ecbc900df08cb9cd5f" - integrity sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g== - trim-repeated@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" @@ -19032,6 +17835,11 @@ typescript@4.4.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c" integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA== +typescript@4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== + typical@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" @@ -19333,11 +18141,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" @@ -19415,14 +18218,6 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" - integrity sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ== - dependencies: - punycode "1.3.2" - querystring "0.2.0" - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -19536,11 +18331,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c" - integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== - uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -19583,13 +18373,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== - dependencies: - builtins "^1.0.3" - value-or-function@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" @@ -19641,17 +18424,6 @@ vfile@^5.0.0: unist-util-stringify-position "^3.0.0" vfile-message "^3.0.0" -vinyl-file@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365" - integrity sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg== - dependencies: - graceful-fs "^4.1.2" - pify "^2.3.0" - strip-bom-buf "^1.0.0" - strip-bom-stream "^2.0.0" - vinyl "^2.0.1" - vinyl-fs@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" @@ -19688,7 +18460,7 @@ vinyl-sourcemap@^1.1.0: remove-bom-buffer "^3.0.0" vinyl "^2.0.0" -vinyl@^2.0.0, vinyl@^2.0.1, vinyl@^2.1.0: +vinyl@^2.0.0, vinyl@^2.1.0: version "2.2.1" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== @@ -19788,11 +18560,6 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" -walk-up-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" - integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== - walker@^1.0.7, walker@~1.0.5: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" @@ -19841,13 +18608,6 @@ watchpack@^2.2.0, watchpack@^2.3.1: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - web-namespaces@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" @@ -20074,14 +18834,6 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-pm@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-pm/-/which-pm-2.0.0.tgz#8245609ecfe64bf751d0eef2f376d83bf1ddb7ae" - integrity sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w== - dependencies: - load-yaml-file "^0.2.0" - path-exists "^4.0.0" - which-typed-array@^1.1.2: version "1.1.7" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" @@ -20101,14 +18853,14 @@ which@^1.2.14, which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@^1.1.0, wide-align@^1.1.2, wide-align@^1.1.5: +wide-align@^1.1.0, wide-align@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== @@ -20159,14 +18911,6 @@ worker-rpc@^0.1.0: dependencies: microevent.ts "~0.1.1" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -20218,26 +18962,6 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write-file-atomic@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" - integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -write-json-file@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d" - integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== - dependencies: - detect-indent "^6.0.0" - graceful-fs "^4.1.15" - is-plain-obj "^2.0.0" - make-dir "^3.0.0" - sort-keys "^4.0.0" - write-file-atomic "^3.0.0" - ws@^6.1.0: version "6.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" @@ -20265,14 +18989,6 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xml2js@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - xml2js@^0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" @@ -20291,11 +19007,6 @@ xmlbuilder@~11.0.0: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ== - xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" @@ -20352,11 +19063,6 @@ yargs-parser@^20.2.2, yargs-parser@^20.2.7: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.0.0: - version "21.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== - yargs@^13.3.2: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" @@ -20403,19 +19109,6 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1: - version "17.5.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" - integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.0.0" - yauzl@^2.10.0, yauzl@^2.3.1: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" @@ -20431,66 +19124,6 @@ yazl@^2.2.2: dependencies: buffer-crc32 "~0.2.3" -yeoman-environment@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-3.9.1.tgz#21912bdee4b1d302a5c25a7d31338fa092ea7116" - integrity sha512-IdRnbQt/DSOSnao0oD9c+or1X2UrL+fx9eC0O7Lq/MGZV68nhv9k77MqG+hEAySPSlyCpocVlhfQwV62hczk5Q== - dependencies: - "@npmcli/arborist" "^4.0.4" - are-we-there-yet "^2.0.0" - arrify "^2.0.1" - binaryextensions "^4.15.0" - chalk "^4.1.0" - cli-table "^0.3.1" - commander "7.1.0" - dateformat "^4.5.0" - debug "^4.1.1" - diff "^5.0.0" - error "^10.4.0" - escape-string-regexp "^4.0.0" - execa "^5.0.0" - find-up "^5.0.0" - globby "^11.0.1" - grouped-queue "^2.0.0" - inquirer "^8.0.0" - is-scoped "^2.1.0" - lodash "^4.17.10" - log-symbols "^4.0.0" - mem-fs "^1.2.0 || ^2.0.0" - mem-fs-editor "^8.1.2 || ^9.0.0" - minimatch "^3.0.4" - npmlog "^5.0.1" - p-queue "^6.6.2" - p-transform "^1.3.0" - pacote "^12.0.2" - preferred-pm "^3.0.3" - pretty-bytes "^5.3.0" - semver "^7.1.3" - slash "^3.0.0" - strip-ansi "^6.0.0" - text-table "^0.2.0" - textextensions "^5.12.0" - untildify "^4.0.0" - -yeoman-generator@^5.6.1: - version "5.6.1" - resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-5.6.1.tgz#850fd266a5ab26d9d1cb9c46ad646f06eade4a1d" - integrity sha512-XllgFvmDEwoPMq2rKtL4/N52WlINJW6a3I3XtlCrMb3/dqO5dW0nPNgR0L3IIUIdf9y1EHb1ZFMs2Qp3ZEEFxg== - dependencies: - chalk "^4.1.0" - dargs "^7.0.0" - debug "^4.1.1" - execa "^4.1.0" - github-username "^6.0.0" - lodash "^4.17.11" - minimist "^1.2.5" - read-pkg-up "^7.0.1" - run-async "^2.0.0" - semver "^7.2.1" - shelljs "^0.8.5" - sort-keys "^4.2.0" - text-table "^0.2.0" - yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" @@ -20501,21 +19134,6 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -yosay@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/yosay/-/yosay-2.0.2.tgz#a7017e764cd88d64a1ae64812201de5b157adf6d" - integrity sha512-avX6nz2esp7IMXGag4gu6OyQBsMh/SEn+ZybGu3yKPlOTE6z9qJrzG/0X5vCq/e0rPFy0CUYCze0G5hL310ibA== - dependencies: - ansi-regex "^2.0.0" - ansi-styles "^3.0.0" - chalk "^1.0.0" - cli-boxes "^1.0.0" - pad-component "0.0.1" - string-width "^2.0.0" - strip-ansi "^3.0.0" - taketalk "^1.0.0" - wrap-ansi "^2.0.0" - zip-folder@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/zip-folder/-/zip-folder-1.0.0.tgz#70a7744fd1789a2feb41ad3419b32e9fd87957b2" From 1fffdc336d4d3e1a8110e4fd0dc131b3d343c73c Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Tue, 20 Dec 2022 15:16:54 -0800 Subject: [PATCH 11/16] generate XLRs for common-expressions and common-types --- package.json | 4 +- plugins/common-expressions/core/BUILD | 3 +- plugins/common-expressions/core/src/index.ts | 53 +++++++++++- plugins/common-types/core/BUILD | 3 +- plugins/common-types/core/src/index.ts | 31 ++++++- yarn.lock | 85 ++++++++++---------- 6 files changed, 128 insertions(+), 51 deletions(-) diff --git a/package.json b/package.json index 54f486f09..b14ed954b 100644 --- a/package.json +++ b/package.json @@ -38,8 +38,8 @@ "@kendallgassner/eslint-plugin-package-json": "^0.2.1", "@mdx-js/loader": "^1.6.22", "@monaco-editor/react": "^4.3.1", - "@player-tools/cli": "0.2.1--canary.16.274", - "@player-tools/dsl": "0.2.1--canary.16.274", + "@player-tools/cli": "0.3.0-next.1", + "@player-tools/dsl": "0.3.0-next.1", "@rollup/plugin-image": "^3.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", diff --git a/plugins/common-expressions/core/BUILD b/plugins/common-expressions/core/BUILD index b0c05353d..d8ca68e4f 100644 --- a/plugins/common-expressions/core/BUILD +++ b/plugins/common-expressions/core/BUILD @@ -11,5 +11,6 @@ javascript_pipeline( test_data = [ "//core/make-flow:@player-ui/make-flow" ], - library_name = 'CommonExpressionsPlugin' + library_name = 'CommonExpressionsPlugin', + xlr_mode = 'plugin' ) diff --git a/plugins/common-expressions/core/src/index.ts b/plugins/common-expressions/core/src/index.ts index 9dfb646fe..b9bac555b 100644 --- a/plugins/common-expressions/core/src/index.ts +++ b/plugins/common-expressions/core/src/index.ts @@ -1,11 +1,58 @@ -import type { Player, PlayerPlugin } from '@player-ui/player'; +import type { ExtendedPlayerPlugin, Player } from '@player-ui/player'; import { ExpressionPlugin } from '@player-ui/expression-plugin'; import * as Expressions from './expressions'; - +import type { + size, + length, + isEmpty, + isNotEmpty, + concat, + trim, + upperCase, + lowerCase, + replace, + titleCase, + sentenceCase, + number, + round, + floor, + ceil, + sum, + findPropertyIndex, + findProperty, + containsAny, +} from './expressions'; /** * Exposes a lot of expressions to Player. */ -export class CommonExpressionsPlugin implements PlayerPlugin { +export class CommonExpressionsPlugin + implements + ExtendedPlayerPlugin< + [], + [], + [ + typeof size, + typeof length, + typeof isEmpty, + typeof isNotEmpty, + typeof concat, + typeof trim, + typeof upperCase, + typeof lowerCase, + typeof replace, + typeof titleCase, + typeof sentenceCase, + typeof number, + typeof round, + typeof floor, + typeof ceil, + typeof sum, + typeof findPropertyIndex, + typeof findProperty, + typeof containsAny + ] + > +{ name = 'CommonExpressions'; apply(player: Player) { diff --git a/plugins/common-types/core/BUILD b/plugins/common-types/core/BUILD index adb25df8e..76b5e8821 100644 --- a/plugins/common-types/core/BUILD +++ b/plugins/common-types/core/BUILD @@ -12,5 +12,6 @@ javascript_pipeline( peer_dependencies = [ "//core/player:@player-ui/player", ], - library_name = 'CommonTypesPlugin' + library_name = 'CommonTypesPlugin', + xlr_mode = 'plugin' ) diff --git a/plugins/common-types/core/src/index.ts b/plugins/common-types/core/src/index.ts index ad7c4dd44..1e64aedfa 100644 --- a/plugins/common-types/core/src/index.ts +++ b/plugins/common-types/core/src/index.ts @@ -1,10 +1,20 @@ -import type { Player, PlayerPlugin } from '@player-ui/player'; +import type { Player, ExtendedPlayerPlugin } from '@player-ui/player'; import { TypesProviderPlugin } from '@player-ui/types-provider-plugin'; import * as validators from './validators'; import * as dataTypes from './data-types/types'; import * as dataRefs from './data-types/refs'; import * as formats from './formats'; +import type { + BooleanType, + IntegerType, + IntegerPosType, + IntegerNNType, + StringType, + CollectionType, + DateType, + PhoneType, +} from './data-types/types'; export { validators, dataTypes, dataRefs, formats }; export * from './formats/utils'; @@ -12,7 +22,24 @@ export * from './formats/utils'; /** * Exposes a lot of common DataTypes, validations, and formats to Player instance. */ -export class CommonTypesPlugin implements PlayerPlugin { +export class CommonTypesPlugin + implements + ExtendedPlayerPlugin< + [], + [], + [], + [ + typeof BooleanType, + typeof IntegerType, + typeof IntegerPosType, + typeof IntegerNNType, + typeof StringType, + typeof CollectionType, + typeof DateType, + typeof PhoneType + ] + > +{ name = 'CommonTypes'; apply(player: Player) { diff --git a/yarn.lock b/yarn.lock index 241df2f2e..b9f159c94 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3104,10 +3104,10 @@ dependencies: "@octokit/openapi-types" "^12.7.0" -"@player-tools/cli@0.2.1--canary.16.274": - version "0.2.1--canary.16.274" - resolved "https://registry.yarnpkg.com/@player-tools/cli/-/cli-0.2.1--canary.16.274.tgz#fc607c2faff38da3482a2bdc0229fa8cb61db6b3" - integrity sha512-et+Tr5N6aJ/XcQZilx7GJtFNIZIDrAtxq8tvW2dB/7j3QlPup+vexZgbNtKmmkuqibbqDaUn4YoJwFZ4rAq1iw== +"@player-tools/cli@0.3.0-next.1": + version "0.3.0-next.1" + resolved "https://registry.yarnpkg.com/@player-tools/cli/-/cli-0.3.0-next.1.tgz#d0a728978ce5d17718c0a04864d8a13624f79a44" + integrity sha512-SJle1LmdPYfK0Dzrheuubu3Vz9k9FyzzkR/Y1CuixiCmOQIG60C8VtB/PXTrYq1ylXrqGwL5X4PFP4NFFTCQ2Q== dependencies: "@babel/core" "^7.15.5" "@babel/plugin-transform-react-jsx-source" "^7.18.6" @@ -3117,11 +3117,11 @@ "@babel/register" "^7.17.7" "@oclif/core" "1.9.0" "@oclif/plugin-legacy" "^1.2.7" - "@player-tools/dsl" "0.2.1--canary.16.274" - "@player-tools/language-service" "0.2.1--canary.16.274" - "@player-tools/xlr-converters" "0.2.1--canary.16.274" - "@player-tools/xlr-sdk" "0.2.1--canary.16.274" - "@player-tools/xlr-utils" "0.2.1--canary.16.274" + "@player-tools/dsl" "0.3.0-next.1" + "@player-tools/language-service" "0.3.0-next.1" + "@player-tools/xlr-converters" "0.3.0-next.1" + "@player-tools/xlr-sdk" "0.3.0-next.1" + "@player-tools/xlr-utils" "0.3.0-next.1" "@types/babel__register" "^7.17.0" chalk "^4.0.1" cosmiconfig "^7.0.1" @@ -3132,13 +3132,14 @@ log-symbols "^4.0.0" log-update "^4.0.0" mkdirp "^1.0.4" + typescript "4.8.4" vscode-languageserver-textdocument "^1.0.1" vscode-languageserver-types "^3.15.1" -"@player-tools/dsl@0.2.1--canary.16.274": - version "0.2.1--canary.16.274" - resolved "https://registry.yarnpkg.com/@player-tools/dsl/-/dsl-0.2.1--canary.16.274.tgz#e2714bc3a8a758e4c3a74f851ac7d20c61f300e9" - integrity sha512-hdfEsjfQtnbKiJ4PKl7tFHzp1DuxNzb15+8H9OlO/2ZPjxhi8PO48870otIHnXFbss68QdsnBWRWahHaH9kv5g== +"@player-tools/dsl@0.3.0-next.1": + version "0.3.0-next.1" + resolved "https://registry.yarnpkg.com/@player-tools/dsl/-/dsl-0.3.0-next.1.tgz#dfa684123215937102b4950c286d75464ca882a3" + integrity sha512-8pZ5fmDc7wKIzODlBw9Tm7cJvi/A5yLXwKn9uDE0MIC6ihZuVtDULt7SzK8M+DDmZxruBUJhZkUzsJk5sM2gdw== dependencies: "@babel/runtime" "7.15.4" "@player-ui/types" "^0.2.0" @@ -3160,15 +3161,15 @@ ts-node "^10.4.0" typescript "4.8.4" -"@player-tools/language-service@0.2.1--canary.16.274": - version "0.2.1--canary.16.274" - resolved "https://registry.yarnpkg.com/@player-tools/language-service/-/language-service-0.2.1--canary.16.274.tgz#40029eef68bf4b55fc1a8227d1ad434452c7129a" - integrity sha512-PfoYjQ2c9uvwTIM6MvbEF4XPnULmLTpKvMkQOgubKLaBARMz5q+gRTbiDtMgKSM3ILMS/wLn6DCOQFCxqP4fgw== +"@player-tools/language-service@0.3.0-next.1": + version "0.3.0-next.1" + resolved "https://registry.yarnpkg.com/@player-tools/language-service/-/language-service-0.3.0-next.1.tgz#6140c5bef40816f857776cec7f0dc9c775728629" + integrity sha512-dPoZ9/27F3/u9j91yS0KHKoSJEi7qyzNEFFnqXRCiEPJKcIAAzqQCOVOCAFzufNYzsyMly1LNTCsctOZheGaeg== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.2.1--canary.16.274" - "@player-tools/xlr-sdk" "0.2.1--canary.16.274" - "@player-tools/xlr-utils" "0.2.1--canary.16.274" + "@player-tools/xlr" "0.3.0-next.1" + "@player-tools/xlr-sdk" "0.3.0-next.1" + "@player-tools/xlr-utils" "0.3.0-next.1" change-case "^4.1.1" cross-fetch "^3.0.5" detect-indent "^6.0.0" @@ -3179,42 +3180,42 @@ vscode-languageserver-textdocument "^1.0.1" vscode-languageserver-types "^3.15.1" -"@player-tools/xlr-converters@0.2.1--canary.16.274": - version "0.2.1--canary.16.274" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-converters/-/xlr-converters-0.2.1--canary.16.274.tgz#d1a46fab04bda2f35ee6b7751f673e8ab04d6096" - integrity sha512-RdXhb8nDvO2zOm51YbntATZzMhRhVC1lGWzNqP3ySzpUXS7tWcrYpQkXETGnrOiPQQZPVFNImfpm0goHu5vwMA== +"@player-tools/xlr-converters@0.3.0-next.1": + version "0.3.0-next.1" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-converters/-/xlr-converters-0.3.0-next.1.tgz#7a6e6e8bd746c6aa079934db2517a645ead96786" + integrity sha512-hxNKpm4Oy40K4gt5n0xkCP3w9fFwFZyL6Tr7lVDBowOdpiApTkHNZTsAzFN7I/hlEWuAs7TZ2+5ZE+poU10YBQ== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.2.1--canary.16.274" - "@player-tools/xlr-utils" "0.2.1--canary.16.274" + "@player-tools/xlr" "0.3.0-next.1" + "@player-tools/xlr-utils" "0.3.0-next.1" -"@player-tools/xlr-sdk@0.2.1--canary.16.274": - version "0.2.1--canary.16.274" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-sdk/-/xlr-sdk-0.2.1--canary.16.274.tgz#56bfdf36115279eddb2bed805f58b6fd3d1ac236" - integrity sha512-12ZEoU/FShqTQLIpHz77z8N7KX6YfubzDxNptRlkD9lZLWCAHu6feqEnCyr9RLO6RrNPGBosrrvMcAy3ykfbpQ== +"@player-tools/xlr-sdk@0.3.0-next.1": + version "0.3.0-next.1" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-sdk/-/xlr-sdk-0.3.0-next.1.tgz#bb94567885e3d61963d396c61a058d267ad75681" + integrity sha512-Z1bTVJDvIV+4LzzDT7FWWB44Z+jNo49uE4Ger3JW4t41M6PXo86zDUCpv8mmV6l6DeiTiY2z4A4zW+ZS60jHwg== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.2.1--canary.16.274" - "@player-tools/xlr-converters" "0.2.1--canary.16.274" - "@player-tools/xlr-utils" "0.2.1--canary.16.274" + "@player-tools/xlr" "0.3.0-next.1" + "@player-tools/xlr-converters" "0.3.0-next.1" + "@player-tools/xlr-utils" "0.3.0-next.1" "@types/fs-extra" "^9.0.13" "@types/node" "^16.11.12" fs-extra "^10.0.0" jsonc-parser "^2.3.1" -"@player-tools/xlr-utils@0.2.1--canary.16.274": - version "0.2.1--canary.16.274" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-utils/-/xlr-utils-0.2.1--canary.16.274.tgz#e22bfaac5811b11e3617daa7257c581e80d94dea" - integrity sha512-G/xJd1J3aLe6i/+TyBHEfbhpay14WTSRZSaG9Jes+sAHq4l7lhO3DMcqUuSBy0Qsm16ZutNttsM9DMixC6UBEQ== +"@player-tools/xlr-utils@0.3.0-next.1": + version "0.3.0-next.1" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-utils/-/xlr-utils-0.3.0-next.1.tgz#b33a563047af914561e8590b3223751fc8a3f84b" + integrity sha512-FAZQaiZNey/Apvmdv4VA9UC5KK0HHnYr3zI/Ms9uwNIA6DDiSpZPVim+ZURffg2FaN/9hxgCr1y9A/RQX6UKUg== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.2.1--canary.16.274" + "@player-tools/xlr" "0.3.0-next.1" "@typescript/vfs" "^1.4.0" -"@player-tools/xlr@0.2.1--canary.16.274": - version "0.2.1--canary.16.274" - resolved "https://registry.yarnpkg.com/@player-tools/xlr/-/xlr-0.2.1--canary.16.274.tgz#30100b56d0e701bfe9a4df3e37eb659fd571d3a3" - integrity sha512-Wu95BXCz+cF0gN3KK3vAyTKC9SGTrms/6ZvsNdo5bUtRI/I4rQiaFJJek9pCKp/hXHVteilydAJVdVDNfvOTgQ== +"@player-tools/xlr@0.3.0-next.1": + version "0.3.0-next.1" + resolved "https://registry.yarnpkg.com/@player-tools/xlr/-/xlr-0.3.0-next.1.tgz#c6c4d1e876085d181402961164a11879664aa544" + integrity sha512-GLVoCYqcactVdnELAuxPa3bqf99sh2lOxib8yZrODRmrgPuK0nreX5djKd0pffmNd0l6qe34n7bRtuKujo54Xw== dependencies: "@babel/runtime" "7.15.4" From b10106d0624d4186f91cdd5c696e77429596bc15 Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Tue, 20 Dec 2022 15:30:14 -0800 Subject: [PATCH 12/16] fix old import --- plugins/common-expressions/core/src/expressions/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/common-expressions/core/src/expressions/index.ts b/plugins/common-expressions/core/src/expressions/index.ts index ffece3920..2b981000e 100644 --- a/plugins/common-expressions/core/src/expressions/index.ts +++ b/plugins/common-expressions/core/src/expressions/index.ts @@ -1,7 +1,7 @@ import type { ExpressionHandler, ExpressionContext, -} from '@player-ui/expressions'; +} from '@player-ui/player'; import { withoutContext } from '@player-ui/player'; import type { Binding } from '@player-ui/types'; import { toNum } from './toNum'; From 3542f1e3fe9c311ecac72e28990a9e802fc7cd85 Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Tue, 20 Dec 2022 16:12:09 -0800 Subject: [PATCH 13/16] Fix lint error --- plugins/common-expressions/core/src/expressions/index.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/plugins/common-expressions/core/src/expressions/index.ts b/plugins/common-expressions/core/src/expressions/index.ts index 2b981000e..23df7ff2e 100644 --- a/plugins/common-expressions/core/src/expressions/index.ts +++ b/plugins/common-expressions/core/src/expressions/index.ts @@ -1,7 +1,4 @@ -import type { - ExpressionHandler, - ExpressionContext, -} from '@player-ui/player'; +import type { ExpressionHandler, ExpressionContext } from '@player-ui/player'; import { withoutContext } from '@player-ui/player'; import type { Binding } from '@player-ui/types'; import { toNum } from './toNum'; From f31e6865cd29329c2ec172e25022d678bf0cb1fd Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Thu, 19 Jan 2023 11:22:42 -0500 Subject: [PATCH 14/16] fix build --- index.bzl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/index.bzl b/index.bzl index 92abeb6b5..1ebe6ae15 100644 --- a/index.bzl +++ b/index.bzl @@ -108,6 +108,13 @@ def javascript_pipeline( # generate an entry in the package.json to point to the bundle file additional_properties = ("{\"bundle\": \"./dist/%s.prod.js\"}" % name.split('/')[1]) if library_name else None + js_library_data = [] + + if(library_name): + js_library_data.append("%s_Bundles" % library_name) + if(xlr_mode): + js_library_data.append(":%s_XLR" % name) + js_library_pipeline( name = name, srcs = srcs, @@ -121,13 +128,12 @@ def javascript_pipeline( test_data = include_if_unique(TEST_DATA + test_data, DATA + data), build_data = include_if_unique(BUILD_DATA + build_data, DATA + data), lint_data = include_if_unique(LINT_DATA + lint_data, DATA + data + TEST_DATA + test_data), - js_library_data = ["%s_Bundles" % library_name] if library_name else [], + js_library_data = js_library_data, out_dir = out_dir, create_package_json_opts = { "base_package_json": "//tools:pkg_json_template", "additional_properties": additional_properties }, - js_library_data = [] if not xlr_mode else [":%s_XLR" % name], ) if (library_name): From 887330fe400a678c19e208cdffbe3ff4b83c49ef Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Thu, 26 Jan 2023 16:16:58 -0800 Subject: [PATCH 15/16] Bump tools version to 0.3.0 release. --- package.json | 4 +-- yarn.lock | 84 ++++++++++++++++++++++++++-------------------------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/package.json b/package.json index daeb62a2e..5a949cb38 100644 --- a/package.json +++ b/package.json @@ -38,8 +38,8 @@ "@kendallgassner/eslint-plugin-package-json": "^0.2.1", "@mdx-js/loader": "^1.6.22", "@monaco-editor/react": "^4.3.1", - "@player-tools/cli": "0.3.0-next.1", - "@player-tools/dsl": "0.3.0-next.1", + "@player-tools/cli": "0.3.0", + "@player-tools/dsl": "0.3.0", "@rollup/plugin-image": "^3.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", diff --git a/yarn.lock b/yarn.lock index ea3eb67ea..ef26f7610 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3104,10 +3104,10 @@ dependencies: "@octokit/openapi-types" "^12.7.0" -"@player-tools/cli@0.3.0-next.1": - version "0.3.0-next.1" - resolved "https://registry.yarnpkg.com/@player-tools/cli/-/cli-0.3.0-next.1.tgz#d0a728978ce5d17718c0a04864d8a13624f79a44" - integrity sha512-SJle1LmdPYfK0Dzrheuubu3Vz9k9FyzzkR/Y1CuixiCmOQIG60C8VtB/PXTrYq1ylXrqGwL5X4PFP4NFFTCQ2Q== +"@player-tools/cli@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@player-tools/cli/-/cli-0.3.0.tgz#eff2389fac4a999ea592216a30c8ecfab4a05adb" + integrity sha512-GIT09FxiBoraDnxqNO1h2UcNQ98jbMmC/uoJiVja9n95IPHJQoZx4ajC6JeyjkGYNJm/nYQiFse0umtOntLBmg== dependencies: "@babel/core" "^7.15.5" "@babel/plugin-transform-react-jsx-source" "^7.18.6" @@ -3117,11 +3117,11 @@ "@babel/register" "^7.17.7" "@oclif/core" "1.9.0" "@oclif/plugin-legacy" "^1.2.7" - "@player-tools/dsl" "0.3.0-next.1" - "@player-tools/language-service" "0.3.0-next.1" - "@player-tools/xlr-converters" "0.3.0-next.1" - "@player-tools/xlr-sdk" "0.3.0-next.1" - "@player-tools/xlr-utils" "0.3.0-next.1" + "@player-tools/dsl" "0.3.0" + "@player-tools/language-service" "0.3.0" + "@player-tools/xlr-converters" "0.3.0" + "@player-tools/xlr-sdk" "0.3.0" + "@player-tools/xlr-utils" "0.3.0" "@types/babel__register" "^7.17.0" chalk "^4.0.1" cosmiconfig "^7.0.1" @@ -3136,10 +3136,10 @@ vscode-languageserver-textdocument "^1.0.1" vscode-languageserver-types "^3.15.1" -"@player-tools/dsl@0.3.0-next.1": - version "0.3.0-next.1" - resolved "https://registry.yarnpkg.com/@player-tools/dsl/-/dsl-0.3.0-next.1.tgz#dfa684123215937102b4950c286d75464ca882a3" - integrity sha512-8pZ5fmDc7wKIzODlBw9Tm7cJvi/A5yLXwKn9uDE0MIC6ihZuVtDULt7SzK8M+DDmZxruBUJhZkUzsJk5sM2gdw== +"@player-tools/dsl@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@player-tools/dsl/-/dsl-0.3.0.tgz#837bbeff1223b97cd7ca67af3946659e62431b14" + integrity sha512-/YifyT6it9rKEjdK6Pw6cEnZeojPkYMyCLxIybmBv2I/JtbsB3Mxui8AHvk6YYBIF7f38mANXFrKM68wty8a7A== dependencies: "@babel/runtime" "7.15.4" "@player-ui/types" "^0.2.0" @@ -3161,15 +3161,15 @@ ts-node "^10.4.0" typescript "4.8.4" -"@player-tools/language-service@0.3.0-next.1": - version "0.3.0-next.1" - resolved "https://registry.yarnpkg.com/@player-tools/language-service/-/language-service-0.3.0-next.1.tgz#6140c5bef40816f857776cec7f0dc9c775728629" - integrity sha512-dPoZ9/27F3/u9j91yS0KHKoSJEi7qyzNEFFnqXRCiEPJKcIAAzqQCOVOCAFzufNYzsyMly1LNTCsctOZheGaeg== +"@player-tools/language-service@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@player-tools/language-service/-/language-service-0.3.0.tgz#41df2166143a7f04ab9b65bee971153628ba1f77" + integrity sha512-NP5EEnMeVHTlTijKK1CrfipwQdKdggwrNjYMyy6+kIyfcE+ygQVeMABYhu7i2EGn0XZGCh9WfhzTi0LeEkE/nA== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.3.0-next.1" - "@player-tools/xlr-sdk" "0.3.0-next.1" - "@player-tools/xlr-utils" "0.3.0-next.1" + "@player-tools/xlr" "0.3.0" + "@player-tools/xlr-sdk" "0.3.0" + "@player-tools/xlr-utils" "0.3.0" change-case "^4.1.1" cross-fetch "^3.0.5" detect-indent "^6.0.0" @@ -3180,42 +3180,42 @@ vscode-languageserver-textdocument "^1.0.1" vscode-languageserver-types "^3.15.1" -"@player-tools/xlr-converters@0.3.0-next.1": - version "0.3.0-next.1" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-converters/-/xlr-converters-0.3.0-next.1.tgz#7a6e6e8bd746c6aa079934db2517a645ead96786" - integrity sha512-hxNKpm4Oy40K4gt5n0xkCP3w9fFwFZyL6Tr7lVDBowOdpiApTkHNZTsAzFN7I/hlEWuAs7TZ2+5ZE+poU10YBQ== +"@player-tools/xlr-converters@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-converters/-/xlr-converters-0.3.0.tgz#604453b4f58a55fc656bdbb394e327f5654edf47" + integrity sha512-S7YrQxSXfEofArolc10pcVR2ATlizuLYe3lUPWpsByN1uW/0fJt69gyELFu+ytM5zSFDn45tTtFJf0f3PuOs4g== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.3.0-next.1" - "@player-tools/xlr-utils" "0.3.0-next.1" + "@player-tools/xlr" "0.3.0" + "@player-tools/xlr-utils" "0.3.0" -"@player-tools/xlr-sdk@0.3.0-next.1": - version "0.3.0-next.1" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-sdk/-/xlr-sdk-0.3.0-next.1.tgz#bb94567885e3d61963d396c61a058d267ad75681" - integrity sha512-Z1bTVJDvIV+4LzzDT7FWWB44Z+jNo49uE4Ger3JW4t41M6PXo86zDUCpv8mmV6l6DeiTiY2z4A4zW+ZS60jHwg== +"@player-tools/xlr-sdk@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-sdk/-/xlr-sdk-0.3.0.tgz#87daf19cd7167a0f410a1d06580c1a44b8f1b52b" + integrity sha512-pP9EZwjXz90nRPg6G9s708daUcOc33UoXb8ZcO1P0JUgZ0OjX6Gr2O8PdmPclWsqwkJmS8KDNiqmUnLFa5kVYw== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.3.0-next.1" - "@player-tools/xlr-converters" "0.3.0-next.1" - "@player-tools/xlr-utils" "0.3.0-next.1" + "@player-tools/xlr" "0.3.0" + "@player-tools/xlr-converters" "0.3.0" + "@player-tools/xlr-utils" "0.3.0" "@types/fs-extra" "^9.0.13" "@types/node" "^16.11.12" fs-extra "^10.0.0" jsonc-parser "^2.3.1" -"@player-tools/xlr-utils@0.3.0-next.1": - version "0.3.0-next.1" - resolved "https://registry.yarnpkg.com/@player-tools/xlr-utils/-/xlr-utils-0.3.0-next.1.tgz#b33a563047af914561e8590b3223751fc8a3f84b" - integrity sha512-FAZQaiZNey/Apvmdv4VA9UC5KK0HHnYr3zI/Ms9uwNIA6DDiSpZPVim+ZURffg2FaN/9hxgCr1y9A/RQX6UKUg== +"@player-tools/xlr-utils@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr-utils/-/xlr-utils-0.3.0.tgz#30dd71027ca4158970e1eb6173c2e365e25f78f5" + integrity sha512-6ZmV0goyOo5CGQY+zM/in6TFdstL8NT3mR7rcgCPyjfJFyKAKyq7tDOuo7PS/0r2zGVxT6N+0uHcZ+QEyfK/Gw== dependencies: "@babel/runtime" "7.15.4" - "@player-tools/xlr" "0.3.0-next.1" + "@player-tools/xlr" "0.3.0" "@typescript/vfs" "^1.4.0" -"@player-tools/xlr@0.3.0-next.1": - version "0.3.0-next.1" - resolved "https://registry.yarnpkg.com/@player-tools/xlr/-/xlr-0.3.0-next.1.tgz#c6c4d1e876085d181402961164a11879664aa544" - integrity sha512-GLVoCYqcactVdnELAuxPa3bqf99sh2lOxib8yZrODRmrgPuK0nreX5djKd0pffmNd0l6qe34n7bRtuKujo54Xw== +"@player-tools/xlr@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@player-tools/xlr/-/xlr-0.3.0.tgz#2daf58330abc93450ad227cd4873618857f32fa3" + integrity sha512-a8Ej/+LXPZaCPhHehwUpddlISFJ8o1ARVY6XFaiqmbHPxxMNkoCiRyVG+x/yQe6ozgCOLl6CY+BrREsCnQkeGw== dependencies: "@babel/runtime" "7.15.4" From 5f74b2cdaabab89af2f32b45ae8874f375caae05 Mon Sep 17 00:00:00 2001 From: Ketan Reddy Date: Fri, 27 Jan 2023 09:32:24 -0800 Subject: [PATCH 16/16] Export reference asset XLRs from the react plugin --- plugins/reference-assets/core/BUILD | 3 +-- plugins/reference-assets/core/src/plugin.ts | 21 ++----------------- plugins/reference-assets/react/BUILD | 1 + plugins/reference-assets/react/src/plugin.tsx | 20 ++++++++++++++++-- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/plugins/reference-assets/core/BUILD b/plugins/reference-assets/core/BUILD index 9faec8ee4..0a023ad37 100644 --- a/plugins/reference-assets/core/BUILD +++ b/plugins/reference-assets/core/BUILD @@ -12,6 +12,5 @@ javascript_pipeline( peer_dependencies = [ "//core/player:@player-ui/player", ], - library_name = "ReferenceAssetsPlugin", - xlr_mode = "plugin" + library_name = "ReferenceAssetsPlugin" ) diff --git a/plugins/reference-assets/core/src/plugin.ts b/plugins/reference-assets/core/src/plugin.ts index 8a314abf8..816e5841d 100644 --- a/plugins/reference-assets/core/src/plugin.ts +++ b/plugins/reference-assets/core/src/plugin.ts @@ -1,28 +1,11 @@ -import type { - Player, - PlayerPlugin, - ExtendedPlayerPlugin, -} from '@player-ui/player'; +import type { Player, PlayerPlugin } from '@player-ui/player'; import { AssetTransformPlugin } from '@player-ui/asset-transform-plugin'; -import type { - ActionAsset, - CollectionAsset, - InfoAsset, - InputAsset, - TextAsset, -} from './assets'; import { inputTransform, actionTransform } from './assets'; /** * A plugin to add transforms for the reference assets */ -export class ReferenceAssetsPlugin - implements - PlayerPlugin, - ExtendedPlayerPlugin< - [InputAsset, TextAsset, ActionAsset, InfoAsset, CollectionAsset] - > -{ +export class ReferenceAssetsPlugin implements PlayerPlugin { name = 'reference-assets-transforms'; apply(player: Player) { diff --git a/plugins/reference-assets/react/BUILD b/plugins/reference-assets/react/BUILD index 5ed4b5923..2aa09701b 100644 --- a/plugins/reference-assets/react/BUILD +++ b/plugins/reference-assets/react/BUILD @@ -19,6 +19,7 @@ javascript_pipeline( "@npm//@testing-library/react", "//core/make-flow:@player-ui/make-flow", ], + xlr_mode = "plugin" ) filegroup( diff --git a/plugins/reference-assets/react/src/plugin.tsx b/plugins/reference-assets/react/src/plugin.tsx index 82853ba23..e0f93b201 100644 --- a/plugins/reference-assets/react/src/plugin.tsx +++ b/plugins/reference-assets/react/src/plugin.tsx @@ -1,11 +1,21 @@ import React from 'react'; import type { ReactPlayer, ReactPlayerPlugin } from '@player-ui/react'; -import type { Player } from '@player-ui/player'; +import type { Player, ExtendedPlayerPlugin } from '@player-ui/player'; import { AssetProviderPlugin } from '@player-ui/asset-provider-plugin-react'; import { ChakraProvider, useTheme } from '@chakra-ui/react'; +import type { + InputAsset, + TextAsset, + CollectionAsset, + ActionAsset, + InfoAsset, +} from '@player-ui/reference-assets-plugin'; import { ReferenceAssetsPlugin as ReferenceAssetsCorePlugin } from '@player-ui/reference-assets-plugin'; import { Input, Text, Collection, Action, Info } from './assets'; +/** + * + */ const OptionalChakraThemeProvider = ( props: React.PropsWithChildren ) => { @@ -22,7 +32,13 @@ const OptionalChakraThemeProvider = ( /** * A plugin to register the base reference assets */ -export class ReferenceAssetsPlugin implements ReactPlayerPlugin { +export class ReferenceAssetsPlugin + implements + ReactPlayerPlugin, + ExtendedPlayerPlugin< + [InputAsset, TextAsset, ActionAsset, InfoAsset, CollectionAsset] + > +{ name = 'reference-assets-web-plugin'; applyReact(reactPlayer: ReactPlayer) {