From cc6950a813c0ccb6565cf5e71789bc38a9d9c67f Mon Sep 17 00:00:00 2001 From: "Alexander J. Vincent" Date: Sat, 21 Sep 2024 13:40:19 -0700 Subject: [PATCH] Reorganize for monorepo, part 1. --- .gitignore | 16 - README.md | 346 +-- old-build/.gitignore | 7 + package-lock.json | 872 +------- package.json | 55 +- packages/v2-es-membrane/.gitignore | 9 + LICENSE => packages/v2-es-membrane/LICENSE | 0 packages/v2-es-membrane/README.md | 345 +++ .../_00_ecma_references}/buildStage.ts | 0 .../fixtures/NumberStringClass.mts | 0 .../fixtures/types/NumberStringType.d.mts | 0 .../_00_ecma_references}/spec/README.md | 0 .../spec/argumentTruncation.mjs | 0 .../spec/classDecorators.mts | 0 .../spec/classMethodDecorators.mts | 0 .../spec/constructTrap.ts | 0 .../spec/getSetTraps-receiver.ts | 0 .../spec/propertyDescriptors.ts | 0 .../spec/support/TracingProxyHandler.ts | 0 .../spec/support/jasmine.json | 0 .../_01_stage_utilities}/README.md | 0 .../_01_stage_utilities}/buildStage.ts | 0 .../_01_stage_utilities}/examples/run.mts | 0 .../examples/source/AsyncModule.mts | 0 .../examples/source/DoubleArrayPromise.mts | 0 .../fixtures/NumberStringClass.mts | 0 .../fixtures/types/NumberStringType.d.mts | 0 .../source/AsyncSpecModules.mts | 4 + .../source/PromiseTypes.mts | 0 .../source/PropertyKeySorter.mts | 0 .../source/ReplaceableValueMap.mts | 0 .../source/RequiredInitializers.mts | 0 .../_01_stage_utilities}/source/SpyBase.mts | 0 .../source/collections/AwaitedMap.ts | 0 .../source/collections/DefaultMap.ts | 0 .../source/collections/OneToOneStrongMap.ts | 0 .../source/collections/WeakRefSet.ts | 0 .../source/collections/WeakStrongMap.ts | 0 .../source/gc/holdsArgument.mts | 0 .../source/gc/holdsReturn.mts | 0 .../source/gc/promiseFinalizer.mts | 0 .../source/gc/tryGarbageCollection.mts | 0 .../source/getTS_SourceFile.mts | 0 .../source/maybeDefined.mts | 0 .../source/stateMachines/dfa-states.mts | 0 .../types/ClassMethodDecoratorFunction.d.mts | 0 .../source/types/MethodsOnlyType.d.mts | 0 .../source/types/Utility.d.mts | 0 .../spec/AsyncSpecModules.mts | 0 .../spec/PromiseTypes/PromiseDictionary.mts | 0 .../spec/PromiseTypes/SingletonPromise.mts | 0 .../spec/PropertyKeySorter.mts | 0 .../spec/ReplaceableValueMap.mts | 0 .../spec/RequiredInitializers.mts | 0 .../_types/ClassMethodDecoratorFunction.mts | 0 .../spec/collections/AwaitedMap.ts | 0 .../spec/collections/OneToOneStrongMap.ts | 0 .../spec/collections/WeakRefSet.ts | 0 .../spec/collections/WeakStrongMap.ts | 0 .../collections/OneToOneStrongMap.ts | 0 .../collections/WeakRefSet.ts | 0 .../collections/WeakStrongMap.ts | 0 .../spec/garbage-collection/holdsArgument.mts | 0 .../spec/garbage-collection/holdsReturn.mts | 0 .../spec/getTS_SourceFile.mts | 0 .../spec/stateMachines/dfa-states.mts | 0 .../spec/support/jasmine.json | 0 .../_02_code_generation}/buildStage.ts | 0 .../source/ConvertingHead.ts | 0 .../source/ObjectGraphHandlerIfc.ts | 0 .../source/ObjectGraphTailHandler.ts | 0 .../source/UnionStringOrSymbol.ts | 0 .../source/buildHandlerClass.ts | 0 .../_02_code_generation}/source/constants.ts | 0 .../source/forwardToReflect.ts | 0 .../source/getInterfaces/fromLocalFile.ts | 0 .../source/getInterfaces/fromTypeScriptLib.ts | 4 +- .../source/getInterfaces/requiredProxy.ts | 0 .../source/mirroring/revokedInFlight.ts | 0 .../source/mirroring/wrapReturnValues.ts | 0 .../source/utilities/buildConstStatement.ts | 0 .../source/utilities/tailDecoratorFunction.ts | 0 .../build/constants.ts | 0 .../build/copyGenerated.ts | 0 .../_03_objectgraph_handlers}/buildStage.ts | 0 .../source/AlwaysRevokedProxy.ts | 0 .../source/ObjectGraphHead.ts | 0 .../source/RevokerManagement.ts | 0 .../source/decorators/inheritedProperties.ts | 0 .../source/decorators/updateShadowTarget.ts | 0 .../exceptions/MembraneInternalError.ts | 0 .../source/exceptions/graphAssert.ts | 0 .../generated/ConvertingHeadProxyHandler.ts | 0 .../source/generated/ForwardToReflect.ts | 0 .../generated/ObjectGraphTailHandler.ts | 0 .../generated/decorators/revokedInFlight.ts | 0 .../generated/decorators/wrapReturnValues.ts | 0 .../types/ObjectGraphHandlerIfc.d.ts | 0 .../source/sharedUtilities.ts | 0 .../source/types/ClassDecoratorFunction.d.ts | 0 .../source/types/MembraneInternalIfc.d.ts | 0 .../source/types/ObjectGraphHeadIfc.d.ts | 0 .../source/types/ProxyBranding.d.ts | 0 .../source/types/RequiredProxyHandler.d.ts | 0 .../spec/ConvertingHeadProxyHandler.ts | 0 .../spec/ObjectGraphHead.ts | 0 .../spec/ObjectGraphTailHandler.ts | 0 .../spec/RevokerManagement.ts | 0 .../spec/decorators/inheritedProperties.ts | 0 .../spec/decorators/revokedInFlight.ts | 0 .../spec/decorators/updateShadowTarget.ts | 0 .../spec/decorators/wrapReturnValues.ts | 0 .../garbage-collection/RevokerManagement.ts | 0 .../spec/support/MockMembrane.ts | 0 .../spec/support/SpyProxyHandler.ts | 0 .../spec/support/jasmine.json | 0 .../_04_mirror_membranes}/buildStage.ts | 0 .../source/MirrorMembrane.ts | 0 .../source/MirrorObjectGraphHandler.ts | 0 .../spec/MirrorMembrane.ts | 0 .../spec/support/jasmine.json | 0 .../types/MirrorMembraneIfc.d.ts | 0 .../_10_exported_decorators}/README.md | 0 .../v2-es-membrane/build-utilities}/README.md | 0 .../build-utilities}/buildStage.ts | 0 .../internal/AsyncSpecModules.ts | 0 .../build-utilities}/internal/DefaultMap.ts | 0 .../build-utilities}/internal/PromiseTypes.ts | 0 .../loader-hooks/debug/loader.js | 0 .../loader-hooks/debug/registration.js | 0 .../loader-hooks/subpath/logWithHook.d.ts | 0 .../loader-hooks/subpath/logWithHook.js | 0 .../loader-hooks/subpath/registration.js | 0 .../loader-hooks/subpath/replacement-map.d.ts | 0 .../loader-hooks/subpath/replacement-map.js | 0 .../loader-hooks/subpath/resolver.js | 0 .../build-utilities}/source/BuildPromise.ts | 0 .../build-utilities}/source/PromiseTypes.ts | 0 .../build-utilities}/source/readDirsDeep.ts | 0 .../build-utilities}/source/recursiveBuild.ts | 0 .../build-utilities}/source/runJasmine.ts | 0 .../build-utilities}/source/runModule.ts | 0 .../build-utilities}/source/runPrettify.ts | 0 .../build-utilities}/spec/BuildPromise.ts | 0 .../internal/PromiseTypes/SingletonPromise.ts | 0 .../loader-hooks/subpath/replacement-map.ts | 0 .../spec/support/jasmine.json | 0 .../build-utilities/tsconfig.json | 23 + build.ts => packages/v2-es-membrane/build.ts | 0 .../mothballed/_x1_aspects_mockups}/README.md | 0 .../_x1_aspects_mockups}/buildStage.ts | 0 .../spec/argumentsTrap.ts | 0 .../spec/classInvariants.ts | 0 .../spec/support/jasmine.json | 0 .../ArrayNotImplementedCanary.mts | 0 .../array-utilities/ImplementsArrayProxy.mts | 0 .../array-utilities/NotImplementedHandler.mts | 0 .../PrimitiveArrayProxyHandler.mts | 0 .../PublicArrayProxyHandler.mts | 0 .../types/ArrayWithoutIndices.d.mts | 0 .../types/BackingAndPublicDictionaries.d.mts | 0 .../types/DataDescriptor.d.mts | 0 .../types/PublicTypeUpdateableArray.d.mts | 2 +- .../types/UpdateSymbolTracking.d.mts | 0 .../array-utilities/types/export-types.d.mts | 10 +- .../mothballed/_y4b_aspects_stubs}/README.md | 0 .../components/methodDecorators/spy.mts | 0 .../source/AspectsStubBase.mts | 0 .../source/StubClassSet.mts | 0 .../_y4b_aspects_stubs}/source/StubMap.mts | 0 .../source/decorators/classInvariants.mts | 0 .../decorators/defineExtraParamsShort.mts | 0 .../source/decorators/headCall.mts | 0 .../source/decorators/methodDecorators.mts | 0 .../source/decorators/notImplemented.mts | 0 .../source/decorators/tailCall.mts | 0 .../source/mixins/AddMethodDecoratorsStub.mts | 0 .../mixins/ClassInvariantsWrapperStub.mts | 0 .../source/mixins/NotImplementedBase.mts | 0 .../source/mixins/TransitionsHead.mts | 0 .../source/mixins/TransitionsTail.mts | 0 .../mixins/Transitions_NotImplemented.mts | 0 .../source/types/AddImport.d.mts | 0 .../source/types/AspectsStubDecorator.d.mts | 2 +- .../types/MethodDecoratorsOfClass.d.mts | 6 +- .../types/StubClassSetConfiguration.d.mts | 6 +- .../source/types/TransitionInterface.d.mts | 2 +- .../source/types/paramBuilders.d.mts | 2 +- .../source/types/paramRenamer.d.mts | 0 .../source/types/ts-morph-native.d.mts | 0 .../source/utilities/aspectTypeImport.mts | 0 .../source/utilities/extractType.mts | 0 .../source/utilities/serializeParameter.mts | 0 .../spec-build/aspectsStubs.mts | 0 .../spec-build/cleanStubsDir.mts | 0 .../spec-build/constants.mts | 0 .../spec-build/methodDecoratedStub.mts | 0 .../spec-build/support.mts | 0 .../spec/ClassInvariantsWrapper.mts | 0 .../spec/MethodDecoratorsOfClass.mts | 0 .../spec/NotImplemented_Base.mts | 0 .../spec/TransitionsTail.mts | 0 .../_y4c_aspects_decorators}/README.md | 0 .../fixtures/AspectsDecorators.mts | 0 .../fixtures/ClassInvariantsWrapper.mts | 0 .../fixtures/NumberStringClassAssert.mts | 0 .../source/AspectsDecorators.mts | 0 .../source/classes/classInvariant.mts | 0 .../source/methods/argumentsTrap.mts | 0 .../source/methods/bodyTrap.mts | 0 .../source/methods/prePostCondition.mts | 0 .../source/methods/replacementMethod.mts | 0 .../source/methods/returnTrap.mts | 0 .../source/methods/stateMachine.mts | 0 .../source/symbol-keys.mts | 0 .../source/types/ArgumentsTrap.d.mts | 4 +- .../source/types/GenericFunction.d.mts | 0 .../source/types/MethodAspects.d.mts | 8 +- .../types/PrePostConditionsContext.d.mts | 2 +- .../source/types/PrependArguments.d.mts | 0 .../source/types/ReturnTrap.d.mts | 6 +- .../types/SharedVariablesDictionary.d.mts | 6 +- .../spec/classes/classInvariant.mts | 0 .../spec/methods/argumentsTrap.mts | 0 .../spec/methods/bodyTrap.mts | 0 .../spec/methods/integration.mts | 0 .../spec/methods/prePostConditions.mts | 0 .../spec/methods/returnTrap.mts | 0 .../build/aspectsStubs.mts | 0 .../build/cleanStubsDir.mts | 0 .../build/constants.mts | 0 .../build/methodDecoratedStub.mts | 0 .../build/support.mts | 0 .../components/methodDecorators/spy.mts | 0 .../stubs/ClassInvariantsWrapper.mts | 0 .../generated/stubs/NotImplemented_Base.mts | 0 .../generated/stubs/SpyMethodDecorated.mts | 0 .../generated/stubs/TransitionsHead.mts | 0 .../generated/stubs/TransitionsTail.mts | 0 .../stubs/Transitions_NotImplemented.mts | 0 packages/v2-es-membrane/package-lock.json | 1979 +++++++++++++++++ packages/v2-es-membrane/package.json | 50 + .../v2-es-membrane/register-hooks.js | 0 .../v2-es-membrane/tsconfig.json | 12 +- 244 files changed, 2499 insertions(+), 1279 deletions(-) create mode 100644 old-build/.gitignore create mode 100644 packages/v2-es-membrane/.gitignore rename LICENSE => packages/v2-es-membrane/LICENSE (100%) create mode 100644 packages/v2-es-membrane/README.md rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/buildStage.ts (100%) rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/fixtures/NumberStringClass.mts (100%) rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/fixtures/types/NumberStringType.d.mts (100%) rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/spec/README.md (100%) rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/spec/argumentTruncation.mjs (100%) rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/spec/classDecorators.mts (100%) rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/spec/classMethodDecorators.mts (100%) rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/spec/constructTrap.ts (100%) rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/spec/getSetTraps-receiver.ts (100%) rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/spec/propertyDescriptors.ts (100%) rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/spec/support/TracingProxyHandler.ts (100%) rename {_00_ecma_references => packages/v2-es-membrane/_00_ecma_references}/spec/support/jasmine.json (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/README.md (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/buildStage.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/examples/run.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/examples/source/AsyncModule.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/examples/source/DoubleArrayPromise.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/fixtures/NumberStringClass.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/fixtures/types/NumberStringType.d.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/AsyncSpecModules.mts (98%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/PromiseTypes.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/PropertyKeySorter.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/ReplaceableValueMap.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/RequiredInitializers.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/SpyBase.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/collections/AwaitedMap.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/collections/DefaultMap.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/collections/OneToOneStrongMap.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/collections/WeakRefSet.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/collections/WeakStrongMap.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/gc/holdsArgument.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/gc/holdsReturn.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/gc/promiseFinalizer.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/gc/tryGarbageCollection.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/getTS_SourceFile.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/maybeDefined.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/stateMachines/dfa-states.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/types/ClassMethodDecoratorFunction.d.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/types/MethodsOnlyType.d.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/source/types/Utility.d.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/AsyncSpecModules.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/PromiseTypes/PromiseDictionary.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/PromiseTypes/SingletonPromise.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/PropertyKeySorter.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/ReplaceableValueMap.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/RequiredInitializers.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/_types/ClassMethodDecoratorFunction.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/collections/AwaitedMap.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/collections/OneToOneStrongMap.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/collections/WeakRefSet.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/collections/WeakStrongMap.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/garbage-collection/collections/OneToOneStrongMap.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/garbage-collection/collections/WeakRefSet.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/garbage-collection/collections/WeakStrongMap.ts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/garbage-collection/holdsArgument.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/garbage-collection/holdsReturn.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/getTS_SourceFile.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/stateMachines/dfa-states.mts (100%) rename {_01_stage_utilities => packages/v2-es-membrane/_01_stage_utilities}/spec/support/jasmine.json (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/buildStage.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/ConvertingHead.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/ObjectGraphHandlerIfc.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/ObjectGraphTailHandler.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/UnionStringOrSymbol.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/buildHandlerClass.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/constants.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/forwardToReflect.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/getInterfaces/fromLocalFile.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/getInterfaces/fromTypeScriptLib.ts (94%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/getInterfaces/requiredProxy.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/mirroring/revokedInFlight.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/mirroring/wrapReturnValues.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/utilities/buildConstStatement.ts (100%) rename {_02_code_generation => packages/v2-es-membrane/_02_code_generation}/source/utilities/tailDecoratorFunction.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/build/constants.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/build/copyGenerated.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/buildStage.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/AlwaysRevokedProxy.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/ObjectGraphHead.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/RevokerManagement.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/decorators/inheritedProperties.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/decorators/updateShadowTarget.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/exceptions/MembraneInternalError.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/exceptions/graphAssert.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/generated/ConvertingHeadProxyHandler.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/generated/ForwardToReflect.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/generated/ObjectGraphTailHandler.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/generated/decorators/revokedInFlight.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/generated/decorators/wrapReturnValues.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/generated/types/ObjectGraphHandlerIfc.d.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/sharedUtilities.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/types/ClassDecoratorFunction.d.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/types/MembraneInternalIfc.d.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/types/ObjectGraphHeadIfc.d.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/types/ProxyBranding.d.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/source/types/RequiredProxyHandler.d.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/ConvertingHeadProxyHandler.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/ObjectGraphHead.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/ObjectGraphTailHandler.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/RevokerManagement.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/decorators/inheritedProperties.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/decorators/revokedInFlight.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/decorators/updateShadowTarget.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/decorators/wrapReturnValues.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/garbage-collection/RevokerManagement.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/support/MockMembrane.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/support/SpyProxyHandler.ts (100%) rename {_02a_aspects_mockups => packages/v2-es-membrane/_03_objectgraph_handlers}/spec/support/jasmine.json (100%) rename {_04_mirror_membranes => packages/v2-es-membrane/_04_mirror_membranes}/buildStage.ts (100%) rename {_04_mirror_membranes => packages/v2-es-membrane/_04_mirror_membranes}/source/MirrorMembrane.ts (100%) rename {_04_mirror_membranes => packages/v2-es-membrane/_04_mirror_membranes}/source/MirrorObjectGraphHandler.ts (100%) rename {_04_mirror_membranes => packages/v2-es-membrane/_04_mirror_membranes}/spec/MirrorMembrane.ts (100%) rename {_03_objectgraph_handlers => packages/v2-es-membrane/_04_mirror_membranes}/spec/support/jasmine.json (100%) rename {_04_mirror_membranes => packages/v2-es-membrane/_04_mirror_membranes}/types/MirrorMembraneIfc.d.ts (100%) rename {_10_exported_decorators => packages/v2-es-membrane/_10_exported_decorators}/README.md (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/README.md (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/buildStage.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/internal/AsyncSpecModules.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/internal/DefaultMap.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/internal/PromiseTypes.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/loader-hooks/debug/loader.js (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/loader-hooks/debug/registration.js (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/loader-hooks/subpath/logWithHook.d.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/loader-hooks/subpath/logWithHook.js (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/loader-hooks/subpath/registration.js (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/loader-hooks/subpath/replacement-map.d.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/loader-hooks/subpath/replacement-map.js (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/loader-hooks/subpath/resolver.js (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/source/BuildPromise.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/source/PromiseTypes.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/source/readDirsDeep.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/source/recursiveBuild.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/source/runJasmine.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/source/runModule.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/source/runPrettify.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/spec/BuildPromise.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/spec/internal/PromiseTypes/SingletonPromise.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/spec/loader-hooks/subpath/replacement-map.ts (100%) rename {build-utilities => packages/v2-es-membrane/build-utilities}/spec/support/jasmine.json (100%) create mode 100644 packages/v2-es-membrane/build-utilities/tsconfig.json rename build.ts => packages/v2-es-membrane/build.ts (100%) rename {_02a_aspects_mockups => packages/v2-es-membrane/mothballed/_x1_aspects_mockups}/README.md (100%) rename {_02a_aspects_mockups => packages/v2-es-membrane/mothballed/_x1_aspects_mockups}/buildStage.ts (100%) rename {_02a_aspects_mockups => packages/v2-es-membrane/mothballed/_x1_aspects_mockups}/spec/argumentsTrap.ts (100%) rename {_02a_aspects_mockups => packages/v2-es-membrane/mothballed/_x1_aspects_mockups}/spec/classInvariants.ts (100%) rename {_04_mirror_membranes => packages/v2-es-membrane/mothballed/_x1_aspects_mockups}/spec/support/jasmine.json (100%) rename {_x1_collections => packages/v2-es-membrane/mothballed/_x1_collections}/source/array-utilities/ArrayNotImplementedCanary.mts (100%) rename {_x1_collections => packages/v2-es-membrane/mothballed/_x1_collections}/source/array-utilities/ImplementsArrayProxy.mts (100%) rename {_x1_collections => packages/v2-es-membrane/mothballed/_x1_collections}/source/array-utilities/NotImplementedHandler.mts (100%) rename {_x1_collections => packages/v2-es-membrane/mothballed/_x1_collections}/source/array-utilities/PrimitiveArrayProxyHandler.mts (100%) rename {_x1_collections => packages/v2-es-membrane/mothballed/_x1_collections}/source/array-utilities/PublicArrayProxyHandler.mts (100%) rename {_x1_collections => packages/v2-es-membrane/mothballed/_x1_collections}/source/array-utilities/types/ArrayWithoutIndices.d.mts (100%) rename {_x1_collections => packages/v2-es-membrane/mothballed/_x1_collections}/source/array-utilities/types/BackingAndPublicDictionaries.d.mts (100%) rename {_x1_collections => packages/v2-es-membrane/mothballed/_x1_collections}/source/array-utilities/types/DataDescriptor.d.mts (100%) rename {_x1_collections => packages/v2-es-membrane/mothballed/_x1_collections}/source/array-utilities/types/PublicTypeUpdateableArray.d.mts (88%) rename {_x1_collections => packages/v2-es-membrane/mothballed/_x1_collections}/source/array-utilities/types/UpdateSymbolTracking.d.mts (100%) rename {_x1_collections => packages/v2-es-membrane/mothballed/_x1_collections}/source/array-utilities/types/export-types.d.mts (58%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/README.md (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/fixtures/components/methodDecorators/spy.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/AspectsStubBase.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/StubClassSet.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/StubMap.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/decorators/classInvariants.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/decorators/defineExtraParamsShort.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/decorators/headCall.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/decorators/methodDecorators.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/decorators/notImplemented.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/decorators/tailCall.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/mixins/AddMethodDecoratorsStub.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/mixins/ClassInvariantsWrapperStub.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/mixins/NotImplementedBase.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/mixins/TransitionsHead.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/mixins/TransitionsTail.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/mixins/Transitions_NotImplemented.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/types/AddImport.d.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/types/AspectsStubDecorator.d.mts (85%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/types/MethodDecoratorsOfClass.d.mts (87%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/types/StubClassSetConfiguration.d.mts (94%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/types/TransitionInterface.d.mts (95%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/types/paramBuilders.d.mts (97%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/types/paramRenamer.d.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/types/ts-morph-native.d.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/utilities/aspectTypeImport.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/utilities/extractType.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/source/utilities/serializeParameter.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/spec-build/aspectsStubs.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/spec-build/cleanStubsDir.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/spec-build/constants.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/spec-build/methodDecoratedStub.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/spec-build/support.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/spec/ClassInvariantsWrapper.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/spec/MethodDecoratorsOfClass.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/spec/NotImplemented_Base.mts (100%) rename {_y4b_aspects_stubs => packages/v2-es-membrane/mothballed/_y4b_aspects_stubs}/spec/TransitionsTail.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/README.md (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/fixtures/AspectsDecorators.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/fixtures/ClassInvariantsWrapper.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/fixtures/NumberStringClassAssert.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/AspectsDecorators.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/classes/classInvariant.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/methods/argumentsTrap.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/methods/bodyTrap.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/methods/prePostCondition.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/methods/replacementMethod.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/methods/returnTrap.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/methods/stateMachine.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/symbol-keys.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/types/ArgumentsTrap.d.mts (87%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/types/GenericFunction.d.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/types/MethodAspects.d.mts (86%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/types/PrePostConditionsContext.d.mts (97%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/types/PrependArguments.d.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/types/ReturnTrap.d.mts (86%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/source/types/SharedVariablesDictionary.d.mts (90%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/spec/classes/classInvariant.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/spec/methods/argumentsTrap.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/spec/methods/bodyTrap.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/spec/methods/integration.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/spec/methods/prePostConditions.mts (100%) rename {_y4c_aspects_decorators => packages/v2-es-membrane/mothballed/_y4c_aspects_decorators}/spec/methods/returnTrap.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/build/aspectsStubs.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/build/cleanStubsDir.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/build/constants.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/build/methodDecoratedStub.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/build/support.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/fixtures/components/methodDecorators/spy.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/fixtures/generated/stubs/ClassInvariantsWrapper.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/fixtures/generated/stubs/NotImplemented_Base.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/fixtures/generated/stubs/SpyMethodDecorated.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/fixtures/generated/stubs/TransitionsHead.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/fixtures/generated/stubs/TransitionsTail.mts (100%) rename {_y4z_aspects_test_fixtures => packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures}/fixtures/generated/stubs/Transitions_NotImplemented.mts (100%) create mode 100644 packages/v2-es-membrane/package-lock.json create mode 100644 packages/v2-es-membrane/package.json rename register-hooks.js => packages/v2-es-membrane/register-hooks.js (100%) rename tsconfig.json => packages/v2-es-membrane/tsconfig.json (52%) diff --git a/.gitignore b/.gitignore index de860449..2073a9eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,18 +1,2 @@ node_modules/ -**/.DS_Store -_*/generated -_*/**/playground -_*/spec-generated -_*/**/ts-stdout.txt -_*/**/tsconfig.json - -old-build/**/*.mjs.map -old-build/**/*.d.mts -old-build/**/tsconfig.json -old-build/tsconfig.json -old-build/**/ts-stdout.txt -old-build/generated -old-build/spec-generated - -playground/ .tsimp diff --git a/README.md b/README.md index 24a1748d..0e461c95 100644 --- a/README.md +++ b/README.md @@ -1,345 +1,3 @@ -[![Build Status](https://travis-ci.org/ajvincent/es-membrane.svg?branch=master)](https://travis-ci.org/ajvincent/es-membrane) +# es-membrane monorepo -# The concepts driving a membrane - -Suppose you have a set of JavaScript-based constructors and prototypes. You've built it out, tested it, and ensured it works correctly. But you don't necessarily trust that other people will use your API as you intended. They might try to access or overwrite member properties you want to keep private, for example. Or they might replace some of your methods with others. While you can't keep people from forking your code base, at runtime you have some options. - -The simplest option is to **freeze** what you can, so that certain values can't be changed: - -```javascript -Object.freeze(MyBase.prototype); -``` - -Another, older technique would be to return one object that maps to another: - -```javascript -function PrivateFoo() { - // ... -} -PrivateFoo.prototype = { - // ... -} - -function Foo(arg0, arg1, arg2) { - var pFoo = new PrivateFoo(arg0, arg1, arg2); - return { - method1: function() { return pFoo.method1.apply(pFoo, arguments); }, - get property2: () { - return pFoo.property2; - }, - // etc., etc. - }; -} -``` - -This is called a **closure**, but it's a painful way of hiding data, plus it's not very scalable. You could make it work, at great effort... - -What people really wanted, though, begins with the concept of a **proxy**. By this, I do not mean a networking proxy, but a proxy to a JavaScript object or function. This type of proxy allows you to represent an object, but change the rules for looking up properties, setting them, or executing functions on-the-fly. For example, if I wanted an object to _appear_ to have an extra property "id", but not actually give that object the property, I could use a proxy, as follows: - -```javascript -var handler = { - get: function(target, propName, receiver) { - if (propName === "id") { - return 3; - } - - return Reflect.get(target, propName, receiver); - } -}; - -var x = {}; // a vanilla object - -var p = new Proxy(x, handler); - -p.id // returns 3 -x.id // returns undefined -``` - -All well and good. Next, suppose you want to return a reference to an object from x: -```javascript -// ... -var x = new xConstructor(); -x.y = { x: x }; - -var p = new Proxy(x, handler); -p.y; // returns x.y -``` - -Uh-oh. x.y is not in a proxy at all: we (and everyone else) has full access through y to whatever y implements. We'd be better off if p.y was itself a proxy. - -The good news is that a proxy can easily return another proxy. In this case, the getOwnPropertyDescriptor "trap" implemented on the handler would replace the value property of the object with a proxy. - -So let's suppose that we did that. All right: - -```javascript -// ... -var x = new xConstructor(); -x.y = { x: x }; - -var p = new Proxy(x, handler); -p.y; // returns Proxy(x.y, handler); -p.y.x; // returns Proxy(x.y.x, handler); -p.y.x === p; // returns false -p.y.x === p.y.x; // returns false - -x.y.x === x; // returns true -``` - -Uh-oh again. The x.y.x value is a cyclic reference that refers back to the original x. But that identity property is _not_ preserved for p, which is a proxy of x... at least, not with the simplest "getOwnPropertyDescriptor" trap. No, we need something that stores a one-to-one relationship between p and x... and for that matter defines one-to-one relationships between each natural object reachable from x and their corresponding proxy reachable from p. - -This is where a **WeakMap** comes in. A WeakMap is an object that holds references from key objects (non-primitives) to other values. The important distinction between a WeakMap and an ordinary JavaScript object `{}` is that the keys in a WeakMap can be objects, but an ordinary JS object only allows strings for its keys. - -At this point, logically, you have two related sets, called "object graphs". The first object graph, starting with x, is a set of objects which are related to each other, and reachable from x. The second object graph, starting with p, is a set of proxies, each of which matches in a one-to-one relationship with an object found in that first object graph. - -The "membrane" is the collection of those two object graphs, along with the rules that determine how to transform a value from one object graph to another. - -So a WeakMap can establish that one-to-one relationship. But you still need a little more information. You might think this would suffice: - -```javascript -var map = new WeakMap(); -map.set(x, p); -map.set(p, x); -``` - -Not quite. All this tells you is that x refers to p, and p refers to x. But -you don't know from this alone which object graph x belongs to, and which object -graph p belongs to. So there's one more concept to introduce, where both x and -p point to a _shared, common_ object that references each by the name of their -respective object graphs: - -```javascript -var map = new WeakMap(); -var subMapFor_x = { - "original": x, - "proxy": p -}; -map.set(x, subMapFor_x); -map.set(p, subMapFor_x); -``` - -Finally, you have enough information to uniquely identify x by both its object graph and by how we got there. Likewise, we can, through the WeakMap and the "sub-map" it stores, identify an unique proxy p in the "proxy" object graph that matches to x in the "original" object graph. - -(In this module's implementation, the "sub-map" is called a ProxyMapping, and has a ProxyMapping constructor and prototype implementation.) - -# Additional reading - -* [Tom van Cutsem's original article, "Membranes in JavaScript"](https://tvcutsem.github.io/js-membranes) -* [A StackOverflow question on why we might want a Membrane](http://stackoverflow.com/questions/36368363/what-would-be-a-use-case-for-identity-preserving-membrane-proxies/) -* [What is a Membrane?](http://blog.ezyang.com/2013/03/what-is-a-membran/) -* [Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) and [ProxyHandler](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) documentation on developer.mozilla.org -* The ECMAScript specifications, [6th Edition, aka "2015 Edition"](http://www.ecma-international.org/ecma-262/6.0/) and [7th Edition, aka "2016 Edition"](http://www.ecma-international.org/ecma-262/7.0/) - -# Glossary of terms -* _Object Graph_: A collection of objects (and proxies to objects) which relate to one another and are for direct access from a single JavaScript scope. The term comes from [graph theory](https://medium.com/basecs/a-gentle-introduction-to-graph-theory-77969829ead8). In the context of membranes, each unique object within an object graph has a one-to-one relationship with a proxy to that object in a completely separate object graph. Most importantly, the references from an object to its child properties are copied in the proxy, but refer to equivalent properties in the proxy's object graph, not the original object's graph. -* _Membrane_: A collection of object graphs, and the rules for managing and creating proxies within them. -* "Wet", "Dry", "Damp", "Steamy": These are names we use for convenience to refer to object graphs within a sample membrane (or a test membrane). Otherwise, they have exactly the same meaning as "foo" or "bar" in computer programming. "Wet" and "dry" come from the original concept of a biological cell's membrane: "wet" refers to anything inside the membrane, "dry" refers to anything outside the membrane, and never shall the two meet. "Damp" and "steamy" are just two other object graph names, because we can have more than two object graphs in a Membrane. -* _ObjectGraphHandler_: This is a special [ProxyHandler](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) implementation which forms the base for all membrane proxies. It is what really enforces the rules, and correct behavior, for membrane proxies. -* _ChainHandler_: This is an object which inherits from a ObjectGraphHandler, for the purpose of overriding proxy traps. -* _Wrapped_ versus _unwrapped_: An unwrapped object is the raw object. A wrapped object is a membrane proxy to the unwrapped object. -* _Wrapping and counter-wrapping_: Wrapping refers to creating a proxy for an object and adding the proxy to a different object graph. _Counter-wrapping_ happens with function arguments and "this" arguments, where the proxy to a function is invoked as a function itself. In this case, each argument must be either unwrapped (if it belongs to the same object graph as the target function) or wrapped in a proxy (if it belongs to a different object graph) before the ObjectGraphHandler passes it into the function's object graph. This latter process I call "counter-wrapping", to indicate it is going from the foreign object graph back to the function's object graph. Otherwise, it is the same. -* _Shadow target_: Every Proxy instance in ECMAScript requires a shadow target to form the base for the proxy. In es-membrane, this means the shadow target usually functions as a copy of the original object, with cached properties defined only as necessary. Shadow targets must be of the same primordial type as the object we're reflecting: to call a proxy as if it were a function, the proxy's shadow target must be a function. To make a proxy look like an array, the shadow target must be an array, and so on. -* _Distortion_: A Membrane's proxies must always parallel the properties of the objects they mirror... unless there are explicit rules defined on the proxy where they don't. These rules I call "distortions", because they distort the image of the underlying object through the proxy. One example would be hiding properties of the underlying object. -* _ProxyMapping_: This is a convenience object which stores the one-to-one relationship between an unwrapped object and its matching wrapped proxies. It is through a ProxyMapping instance that we may have more than two object graphs. The ProxyMapping also stores the distortions defined for each membrane proxy. -* _ChainHandler_: This is a ProxyHandler which inherits, directly or indirectly, from an ObjectGraphHandler. The ObjectGraphHandler specifies default proxy traps. The ChainHandler allows us to override those traps as necessary, and provides frozen references to the parent ChainHandler (if there is one) and to the base ObjectGraphHandler it derives from. -* _ProxyListener_: This is a special object which reacts to the creation of a Membrane proxy before it is returned to the caller that demanded the proxy. It is the one and only chance to customize the proxy's distortions, including recreating it or throwing a deliberate exception, before the requesting object graph receives its proxy. -* _Primordial_: This basically means globals provided by the ECMAScript engine, and their properties: Object, Array, Function, String, Date, etc. - -# Configuring a membrane: the GUI configuration tool - -https://ajvincent.github.io/es-membrane/gui/index.html - -This library has a HTML-based configuration tool (source at docs/gui) which allows you to set up your basic object graphs and several common distortions for white-listing by default. The tool will, based on your inputs, generate both a membrane construction JavaScript file and a reusable JSON file for editing the configuration later. The process is straight-forward, if complex: - -1. Load the source files defining your constructors and/or classes. - * If you have saved the configuration JSON file before, re-attach it here. -2. Click the _Membrane_ tab to set up the Membrane's base configuration (object graph names, objects unconditionally passed through) -3. Click the Continue button to populate the graph-specific configuration pages and the _Output_ tab. - * This will create two new sets of tabs: one for your objects to configure (on a per-graph basis), and one for whether you are editing the value itself, its prototype, or direct instances of an invoked constructor. -4. The _Output_ tab has two hyperlinks to directly save the configuration file and membrane creation file, respectively. - -# How to use the es-membrane module - -1. Define the object graphs by name you wish to use. Examples: - * [ "wet", "dry" ] or [ "wet", "dry", "damp"], per Tom van Cutsem - * [ "trusted", "sandboxed" ] - * [ "private", "public" ] -2. Create an instance of Membrane. - * The constructor for Membrane takes an optional options object. - * If options.showGraphName is true (or "truthy" in the JavaScript sense), each ObjectGraphHandler instance will expose an additional "membraneGraphName" property for proxies created from it. - * This is more for debugging purposes than anything else, and should not be turned on in a Production environment. - * If options.logger is defined, it is presumed to be a [log4javascript](http://log4javascript.org/)-compatible logger object for the membrane to use. -3. Ask for an ObjectGraphHandler from the membrane, by a name as a string. This will be where "your" objects live. -4. Ask for another ObjectGraphHandler from the membrane, by a different object graph name. This will be where "their" objects live. -5. (Optional) Use the .addProxyListener() method of the ObjectGraphHandler, to add listeners for the creation of new proxies. -6. Add a "top-level" object to "your" ObjectGraphHandler instance. -7. Ask the membrane to get a proxy for the original object from "their" object graph, based on the graph name. -8. (Optional) Use the membrane's modifyRules object to customize default behaviors of individual proxies. -9. Repeat steps 5 through 7 for any additional objects that need special handling. - * Example: Prototypes of constructors, which is where most property lookups go. -10. Return "top-level" proxies to objects, from "their" object graph, to the end-user. - * **DO NOT** return the Membrane, or any ObjectGraphHandler. Returning those allows others to change the rules you so carefully crafted. - -Example code: -```javascript -/* The object graph names I want are "dry" and "wet". - * "wet" is what I own. - * "dry" is what I don't trust. - */ - -// Establish the Membrane. -var dryWetMB = new Membrane({ - // These are configuration options. -}); - -// Establish "wet" ObjectGraphHandler. -var wetHandler = dryWetMB.getHandlerByName("wet", { mustCreate: true }); - -// Establish "dry" ObjectGraphHandler. -var dryHandler = dryWetMB.getHandlerByName("dry", { mustCreate: true }); - -// Establish "wet" view of an object. -// Get a "dry" view of the same object. -var dryDocument = dryWetMB.convertArgumentToProxy( - wetHandler, - dryHandler, - wetDocument -); -// dryDocument is a Proxy whose target is wetDocument, and whose handler is dryHandler. - -// Return "top-level" document proxy. -return dryDocument; -``` - -This will give the end-user a very basic proxy in the "dry" object graph, which also implements the identity and property lookup rules of the object graph and the membrane. In fact, it is a _perfect_ one-to-one correspondence: because no special proxy traps are established in steps 7 and 8 above, _any and all_ operations on the "dry" document proxy, or objects and functions retrieved through that proxy (directly or indirectly) will be reflected and repeated on the corresponding "wet" document objects _exactly_ with no side effects. (Except possibly those demanded through the Membrane's configuration options, such as providing a logger.) - -Such a membrane is, for obvious reasons, useless. But this perfect mirroring has to be established first before anyone can customize the membrane's various proxies, and thus, rules for accessing and manipulating objects. It is through custom proxies whose handlers inherit from ObjectGraphHandler instances in the membrane that you can achieve proper hiding of properties, expose new properties, and so on. - -## Modifying the proxy behavior: The ModifyRules API - -Every membrane has a .modifyRules object which allows developers to modify how an individual proxy behaves. - -The .modifyRules object has several public methods: - -* .createChainHandler(ObjectGraphHandler): Create a ProxyHandler inheriting from Reflect or an ObjectGraphHandler. The returned object will have two additional properties: - * .nextHandler, for the handler you passed in, - * .baseHandler, for the ObjectGraphHandler that the originated all handlers in the chain. - * The idea is that you can use .nextHandler and .baseHandler for any custom-implemented traps on the new handler, to refer to existing behavior. -* .replaceProxy(oldProxy, handler): Replace a proxy in the membrane with a new one based on a chained ObjectGraphHandler. - * Use this method after modifying a chain handler to define your own rules for a proxy. - * This method probably shouldn't be used directly - instead, use a proxy listener to override the proxy before the membrane returns it to a customer. -* .storeUnknownAsLocal(fieldName, proxy): Require that any unknown properties be stored "locally", instead of propagating to the underlying object. - * If the property name doesn't exist on the original object, the proxy itself keeps the property name and value. - * The underlying object will only accept property descriptors for properties it has defined on itself. - * You can call .storeUnknownAsLocal on the underlying object to require that all proxies store unknown properties locally. - * This setting is inherited: any objects constructed with the proxy or its target in the prototype chain will also store unknown properties locally. -* .requireLocalDelete(fieldName, proxy): Require that the deletion of a property is "local", that it does not propagate to the underlying object. - * Similar to .storeUnknownAsLocal, except .requireLocalDelete works for the delete operator. -* .filterOwnKeys(fieldName, proxy, filter): Applies a filter function for Reflect.ownKeys as it applies to properties defined on the underlying object. - * The filter function is cached in the membrane, so that it applies to all non-local properties in the future. - * The filter function also affects what .getOwnPropertyDescriptor() returns: if there isn't a local property defined, and the filter rejects the property name, the property is considered undefined. - * You can call .filterOwnKeys on the underlying object to require that all proxies apply the filter. - * You can apply two filters to each proxy, one locally and one global (on the underlying object). - * Local property definitions (or deletes) override the filter(s). - * See [Array.prototype.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) on developer.mozilla.org for good examples of how array filters work. - -## Proxy listeners: Reacting to new proxies - -When the membrane creates a new proxy and is about to return it to a caller, there is one chance to change the rules for that proxy before the caller ever sees it. This is through the proxy listener API. - -Each object graph handler has two methods: -* .addProxyListener(callback): Add a function to the sequence of proxy listeners. -* .removeProxyListener(callback): Remove the function from the sequence of proxy listeners. - -The callbacks are executed in the order they were added, with a single object argument. This "meta" object has several methods and properties: -* get stopped(): True if iteration to the remaining proxy listeners is canceled. -* get proxy(): The proxy object (or value) currently scheduled to be returned to the user. -* set proxy(val): Override the proxy object to schedule another value to be returned in its place. -* get target(): The original value being hidden in a proxy. -* get handler(): The proxy handler which the proxy is based on. -* set handler(val): Override the proxy handler. -* rebuildProxy(): A method to recreate the proxy from the original value and the current proxy handler. -* logger: A log4javascript-compatible logging object from the membrane's construction options, or null. -* For the .apply and .construct traps, there are additional properties: - * trapName: Either "apply" or "construct", depending on the trap invoked. - * callable: The target function being called. - * isThis: True for the "this" argument in the "apply" trap. False otherwise. - * argIndex: The argument index number, if isThis is false. -* stopIteration(): Set stopped to true, so that no more proxy listeners are executed. -* throwException(exception): Explicitly throw an exception, so that the proxy is NOT returned but the exception propagates from the membrane. - -An exception accidentally thrown from a proxy listener will *not* stop iteration: -* The exception will be caught, and if the membrane has a logger, the logger will log the exception. -* The next proxy listener in the sequence will then execute as if the exception had not been thrown. - -That's why the throwException() method exists: to make it clear that you intended to throw the exception outside the membrane. - -# How the Membrane actually works - -* The Membrane's prototype methods provide API for getting unique -ObjectGraphHandler instances: - * .getHandlerByName(graphName, mustCreate = false) - * .ownsHandler(handler) -* The Membrane's prototype also manages access to ProxyMapping instances, which as we stated above match proxies to original values in an one-to-one relationship. - * .hasProxyForValue(field, value) - * .buildMapping(field, value, options) - * .convertArgumentToProxy(originHandler, targetHandler, arg, options) - * .getMembraneValue(field, value) _(private method)_ - * .getMembraneProxy(field, value) _(private method)_ - * .wrapArgumentByHandler(handler, arg, options) _(private method)_ - * .wrapArgumentByProxyMapping(mapping, arg, options) _(private method)_ - * .wrapDescriptor(originField, targetField, desc) _(private method)_ -* The Membrane also maintains a WeakMap(object or proxy -> ProxyMapping) member. -* Each ObjectGraphHandler is a [handler for a Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) implementing all the traps. - * For simple operations that don't need a Membrane, such as .isExtensible(), the handler forwards the request directly to [Reflect](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect), which also implements the Proxy handler traps. - * (An exception to this rule is the .has() trap, which uses this.getOwnPropertyDescriptor and this.getPrototypeOf to walk the prototype chain, without the .has trap itself crossing the object graph's borders.) - * When getting a property descriptor from a proxy by the property name, there are several steps: - 1. Look up the ProxyMapping object matching the proxy's target in the membrane's WeakMap. - 2. Look up the original "this" object from the ProxyMapping, and call it originalThis. (This is the object the proxy corresponds to.) - 3. Set rv = Reflect.getOwnPropertyDescriptor(originalThis, propertyName); - 4. Wrap the non-primitive properties of rv as objects in the membrane, just like originalThis is wrapped in the membrane. - * This includes the .get(), .set() methods of accessor descriptors, and the .value of a data descriptor. - 5. Return rv. - * When getting the prototype of a proxy, - 1. Look up the ProxyMapping object matching the proxy's target in the membrane's WeakMap. - 2. If the retrieved ProxyMapping object doesn't have a valid "protoMapping" property, - 1. Look up the original "this" object from the ProxyMapping, and call it originalThis. - 2. Set proto = Reflect.getPrototypeOf(originalThis). - 3. Wrap proto, and a new Proxy for proto in the desired object graph, in the membrane via a second ProxyMapping. - 4. Set the second ProxyMapping object as the "protoMapping" property of the first ProxyMapping object. - 3. Return the proxy belonging to both the object graph and the "protoMapping" object. - * The .get() trap follows the ECMAScript 7th Edition specification for .get(), calling its .getOwnPropertyDescriptor() and .getPrototypeOf() traps respectively. It then wraps whatever return value it gets from those methods. - * When I say 'wrap a value', what I mean is: - 1. If the value is a primitive, just return the value as-is. - 2. If there isn't a ProxyMapping in the owning Membrane's WeakMap for the value, - 1. Create a ProxyMapping and set it in the membrane's WeakMap. - 2. Let origin be the ObjectGraphHandler that the value came from, and target be this. - 3. Set the value as a property of the ProxyMapping with the name of the origin object graph. - 4. Let parts = Proxy.revocable(value, this). - 5. Set parts as a property of the ProxyMapping with this object graph's name. - 3. Get the ProxyMapping for the value from the owning Membrane's WeakMap. - 4. Get the property of the ProxyMapping with this object's graph name. - 5. Return the property (which should be a Proxy). - * There is an algorithm for "counter-wrap a value", which we use for passing in arguments to a wrapped function, defining a property, or setting a prototype. The algorithm is similar to the "wrap a value" algorithm, except that the "origin" ObjectGraphHandler and the "target" ObjectGraphHandler are reversed. - * For executing a function proxy via .apply(), - 1. Counter-wrap the "this" value and all arguments. - 2. Look up the original function. - 3. Let rv = Reflect.apply(original function, counterWrapped this, counterWrapped arguments); - 4. Wrap rv and return the wrapped value. - * For executing a function proxy as a constructor via .construct(target, argumentList, newTarget), - 1. Get the ObjectGraphHandler representing the original function, - 2. Counter-wrap all the members of argumentList. - 3. Let rv = Reflect.construct(target, wrappedArgumentList, newTarget). - 4. Wrap rv. - 5. Get the prototype property of target (which is our constructor function). - 6. Wrap the prototype property. - 7. this.setPrototypeOf(rv, wrappedProto). - 8. Return rv. - -Each object graph's objects and functions, then, only see three different types of values: -1. Primitive values -2. Objects and functions passed into the membrane from that object graph's objects and functions -3. Proxies from other object graphs, representing native objects and functions belonging to those other object graphs. - -For instance, if I have a "dry" proxy to a function from the "wet" object graph and I call the proxy as a function, the "wet" function will be invoked only with primitives, objects and functions known to the "wet" graph, and "dry" proxies. Each argument (and the "this" object) is counter-wrapped in this way, so that the "wet" function only sees values it can rely on being in the "wet" object graph (including "wet" proxies to "dry" objects and callback functions). - -As long as all the proxies (and their respective handlers) follow the above rules, in addition to how they manipulate the appearance (or disappearance) of properties of those proxies, the membrane will be able to correctly preserve each object graph's integrity. Which is the overall goal of the membrane: keep objects and functions from accidentally crossing from one object graph to another. +If you're looking for the es-membrane package, you probably want to go [here for the version 2 rewrite](./packages/v2-es-membrane/) or [here for version 0.9](./old-0.9/). diff --git a/old-build/.gitignore b/old-build/.gitignore new file mode 100644 index 00000000..7827c38a --- /dev/null +++ b/old-build/.gitignore @@ -0,0 +1,7 @@ +**/*.mjs.map +**/*.d.mts +**/tsconfig.json +tsconfig.json +**/ts-stdout.txt +generated +spec-generated diff --git a/package-lock.json b/package-lock.json index 3a4d912e..1abeb45c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,31 +1,15 @@ { - "name": "es-membrane", - "version": "0.11.0", - "lockfileVersion": 2, + "name": "es-membrane-monorepo", + "version": "1.0.0", + "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "es-membrane", - "version": "0.11.0", - "license": "ISC", - "devDependencies": { - "@tsconfig/node20": "^20.1.4", - "@types/jasmine": "^5.1.4", - "@types/node": "^18.19.34", - "jasmine": "^5.1.0", - "mixin-decorators": "^1.0.1", - "prettier": "^3.3.3", - "ts-morph": "^23.0.0", - "ts-morph-structures": "^1.1.2", - "ts-node": "^10.9.2", - "tsimp": "^2.0.11", - "tslib": "^2.6.3", - "type-fest": "^4.20.1", - "typescript": "^5.5.2" - }, - "engines": { - "node": ">=18.19" - } + "name": "es-membrane-monorepo", + "version": "1.0.0", + "workspaces": [ + "./packages/*" + ] }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", @@ -344,6 +328,10 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, + "node_modules/es-membrane": { + "resolved": "packages/v2-es-membrane", + "link": true + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -539,9 +527,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { "braces": "^3.0.3", @@ -1161,819 +1149,29 @@ "engines": { "node": ">=6" } - } - }, - "dependencies": { - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - } - }, - "@isaacs/cached": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/cached/-/cached-1.0.1.tgz", - "integrity": "sha512-7kGcJ9Hc1f4qpTApWz3swxbF9Qv1NF/GxuPtXeTptbsgvJIoufSd0h854Nq/2bw80F5C1onsFgEI05l+q0e4vw==", - "dev": true, - "requires": { - "@isaacs/catcher": "^1.0.0" - } - }, - "@isaacs/catcher": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@isaacs/catcher/-/catcher-1.0.4.tgz", - "integrity": "sha512-g2klMwbnguClWNnCeQ1zYaDJsvPbIbnjdJPDE0z09MqoejJDZSLK5vIKiClq2Bkg5ubuI8vaN6wfIUi5GYzMVA==", - "dev": true - }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } }, - "@pkgjs/parseargs": { + "packages/v2-es-membrane": { + "name": "es-membrane", "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true - }, - "@ts-morph/common": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.24.0.tgz", - "integrity": "sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==", - "dev": true, - "requires": { - "fast-glob": "^3.3.2", - "minimatch": "^9.0.4", - "mkdirp": "^3.0.1", - "path-browserify": "^1.0.1" - } - }, - "@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, - "@tsconfig/node20": { - "version": "20.1.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.4.tgz", - "integrity": "sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==", - "dev": true - }, - "@types/jasmine": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.4.tgz", - "integrity": "sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w==", - "dev": true - }, - "@types/node": { - "version": "18.19.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.34.tgz", - "integrity": "sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g==", - "dev": true, - "requires": { - "undici-types": "~5.26.4" - } - }, - "acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", - "dev": true - }, - "acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dev": true, - "requires": { - "acorn": "^8.11.0" - } - }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "code-block-writer": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.1.tgz", - "integrity": "sha512-c5or4P6erEA69TxaxTNcHUNcIn+oyxSRTOWV+pSYF+z4epXqNvwvJ70XPGjPNgue83oAFAPBRQYwpAJ/Hpe/Sg==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "license": "ISC", + "devDependencies": { + "@tsconfig/node20": "^20.1.4", + "@types/jasmine": "^5.1.4", + "@types/node": "^18.19.34", + "jasmine": "^5.1.0", + "mixin-decorators": "^1.0.1", + "prettier": "^3.3.3", + "ts-morph": "^23.0.0", + "ts-morph-structures": "^1.1.2", + "ts-node": "^10.9.2", + "tsimp": "^2.0.11", + "tslib": "^2.6.3", + "type-fest": "^4.20.1", + "typescript": "^5.5.2" + }, + "engines": { + "node": ">=18.19" } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", - "dev": true, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, - "jasmine": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.1.0.tgz", - "integrity": "sha512-prmJlC1dbLhti4nE4XAPDWmfJesYO15sjGXVp7Cs7Ym5I9Xtwa/hUHxxJXjnpfLO72+ySttA0Ztf8g/RiVnUKw==", - "dev": true, - "requires": { - "glob": "^10.2.2", - "jasmine-core": "~5.1.0" - } - }, - "jasmine-core": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.1.2.tgz", - "integrity": "sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA==", - "dev": true - }, - "lru-cache": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", - "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", - "dev": true - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "requires": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - } - }, - "minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true - }, - "mixin-decorators": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mixin-decorators/-/mixin-decorators-1.0.1.tgz", - "integrity": "sha512-oYxZmMXLsIoun/095KjIdCP+6UyXjZMM460S88NvfBTc6xS2Yf29uLf6SNVU0iy6UDdtYOMWxN0hm0O4xOT4Tw==", - "dev": true, - "requires": { - "type-fest": "^4.9.0" - } - }, - "mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true - }, - "package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "requires": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - } - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true - }, - "prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", - "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", - "dev": true, - "requires": { - "glob": "^10.3.7" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "sock-daemon": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/sock-daemon/-/sock-daemon-1.4.2.tgz", - "integrity": "sha512-IzbegWshWWR+UzQ7487mbdYNmfJ1jXUXQBUHooqtpylO+aW0vMVbFN2d2ug3CSPZ0wbG7ZTTGwpUuthIDFIOGg==", - "dev": true, - "requires": { - "rimraf": "^5.0.5", - "signal-exit": "^4.1.0", - "socket-post-message": "^1.0.3" - } - }, - "socket-post-message": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/socket-post-message/-/socket-post-message-1.0.3.tgz", - "integrity": "sha512-UhJaB3xR2oF+HvddFOq2cBZi4zVKOHvdiBo+BaScNxsEUg3TLWSP8BkweKfe07kfH1thjn1hJR0af/w1EtBFjg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - } - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "ts-morph": { - "version": "23.0.0", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-23.0.0.tgz", - "integrity": "sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==", - "dev": true, - "requires": { - "@ts-morph/common": "~0.24.0", - "code-block-writer": "^13.0.1" - } - }, - "ts-morph-structures": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ts-morph-structures/-/ts-morph-structures-1.1.2.tgz", - "integrity": "sha512-2LK3wB3/FpM5vwcoEgfa2P9+8kSO1Gh3FRYLc3ViWQTcbc0M5yj0iehN2MC4By5bOZpEXNGGRjgJJ9PWnLWszQ==", - "dev": true, - "requires": { - "mixin-decorators": "^1.0.1" - } - }, - "ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - } - }, - "tsimp": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/tsimp/-/tsimp-2.0.11.tgz", - "integrity": "sha512-wRhMmvar8tWHN3ZmykD8f4B4sjCn/f8DFM67LRY+stf/LPa2Kq8ATE2PIi570/DiDJA8kjjxzos3EgP0LmnFLA==", - "dev": true, - "requires": { - "@isaacs/cached": "^1.0.1", - "@isaacs/catcher": "^1.0.4", - "foreground-child": "^3.1.1", - "mkdirp": "^3.0.1", - "pirates": "^4.0.6", - "rimraf": "^5.0.5", - "signal-exit": "^4.1.0", - "sock-daemon": "^1.4.2", - "walk-up-path": "^3.0.1" - } - }, - "tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true - }, - "type-fest": { - "version": "4.20.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.20.1.tgz", - "integrity": "sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==", - "dev": true - }, - "typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", - "dev": true - }, - "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "walk-up-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", - "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true } } } diff --git a/package.json b/package.json index a4972acd..80734ff5 100644 --- a/package.json +++ b/package.json @@ -1,50 +1,11 @@ { - "name": "es-membrane", - "type": "module", - "version": "0.11.0", - "description": "An ECMAScript implementation of a Membrane, allowing users to dynamically hide, override, or extend objects in JavaScript with controlled effects on the original objects.", - "//": { - "debug": "Debugging this code requires Node 18. Node 20 will fail to start running your code when using --inspect-brk and --import." - }, - "engines": { - "node": ">=18.19" - }, - "scripts": { - "build": "node --expose-gc --import ./register-hooks.js ./build.ts", - "debug": "node --inspect-brk --expose-gc --import ./register-hooks.js ./build.ts", - "build-tsimp": "node --expose-gc --import=tsimp/import --import ./build-utilities/loader-hooks/subpath/registration.js ./build.ts", - "tsimp-clean": "tsimp --clear" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/ajvincent/es-membrane.git" - }, + "name": "es-membrane-monorepo", + "private": true, + "version": "1.0.0", + "description": "Monorepo for es-membrane packages.", "author": "Alexander J. Vincent ", - "license": "ISC", - "bugs": { - "url": "https://github.com/ajvincent/es-membrane/issues" - }, - "homepage": "https://github.com/ajvincent/es-membrane#readme", - "devDependencies": { - "@tsconfig/node20": "^20.1.4", - "@types/jasmine": "^5.1.4", - "@types/node": "^18.19.34", - "jasmine": "^5.1.0", - "mixin-decorators": "^1.0.1", - "prettier": "^3.3.3", - "ts-morph": "^23.0.0", - "ts-morph-structures": "^1.1.2", - "ts-node": "^10.9.2", - "tsimp": "^2.0.11", - "tslib": "^2.6.3", - "type-fest": "^4.20.1", - "typescript": "^5.5.2" - }, - "imports": { - "#stage_utilities/*": "./_01_stage_utilities/*", - "#code_generation/*": "./_02_code_generation/*", - "#objectgraph_handlers/*": "./_03_objectgraph_handlers/*", - "#mirror_membranes/*": "./_04_mirror_membranes/*", - "#build-utilities/*": "./build-utilities/*" - } + + "workspaces": [ + "./packages/*" + ] } diff --git a/packages/v2-es-membrane/.gitignore b/packages/v2-es-membrane/.gitignore new file mode 100644 index 00000000..2c7fc4ad --- /dev/null +++ b/packages/v2-es-membrane/.gitignore @@ -0,0 +1,9 @@ +**/.DS_Store +_*/generated +_*/**/playground +_*/spec-generated +_*/**/ts-stdout.txt +_*/**/tsconfig.json + +playground/ +.tsimp diff --git a/LICENSE b/packages/v2-es-membrane/LICENSE similarity index 100% rename from LICENSE rename to packages/v2-es-membrane/LICENSE diff --git a/packages/v2-es-membrane/README.md b/packages/v2-es-membrane/README.md new file mode 100644 index 00000000..24a1748d --- /dev/null +++ b/packages/v2-es-membrane/README.md @@ -0,0 +1,345 @@ +[![Build Status](https://travis-ci.org/ajvincent/es-membrane.svg?branch=master)](https://travis-ci.org/ajvincent/es-membrane) + +# The concepts driving a membrane + +Suppose you have a set of JavaScript-based constructors and prototypes. You've built it out, tested it, and ensured it works correctly. But you don't necessarily trust that other people will use your API as you intended. They might try to access or overwrite member properties you want to keep private, for example. Or they might replace some of your methods with others. While you can't keep people from forking your code base, at runtime you have some options. + +The simplest option is to **freeze** what you can, so that certain values can't be changed: + +```javascript +Object.freeze(MyBase.prototype); +``` + +Another, older technique would be to return one object that maps to another: + +```javascript +function PrivateFoo() { + // ... +} +PrivateFoo.prototype = { + // ... +} + +function Foo(arg0, arg1, arg2) { + var pFoo = new PrivateFoo(arg0, arg1, arg2); + return { + method1: function() { return pFoo.method1.apply(pFoo, arguments); }, + get property2: () { + return pFoo.property2; + }, + // etc., etc. + }; +} +``` + +This is called a **closure**, but it's a painful way of hiding data, plus it's not very scalable. You could make it work, at great effort... + +What people really wanted, though, begins with the concept of a **proxy**. By this, I do not mean a networking proxy, but a proxy to a JavaScript object or function. This type of proxy allows you to represent an object, but change the rules for looking up properties, setting them, or executing functions on-the-fly. For example, if I wanted an object to _appear_ to have an extra property "id", but not actually give that object the property, I could use a proxy, as follows: + +```javascript +var handler = { + get: function(target, propName, receiver) { + if (propName === "id") { + return 3; + } + + return Reflect.get(target, propName, receiver); + } +}; + +var x = {}; // a vanilla object + +var p = new Proxy(x, handler); + +p.id // returns 3 +x.id // returns undefined +``` + +All well and good. Next, suppose you want to return a reference to an object from x: +```javascript +// ... +var x = new xConstructor(); +x.y = { x: x }; + +var p = new Proxy(x, handler); +p.y; // returns x.y +``` + +Uh-oh. x.y is not in a proxy at all: we (and everyone else) has full access through y to whatever y implements. We'd be better off if p.y was itself a proxy. + +The good news is that a proxy can easily return another proxy. In this case, the getOwnPropertyDescriptor "trap" implemented on the handler would replace the value property of the object with a proxy. + +So let's suppose that we did that. All right: + +```javascript +// ... +var x = new xConstructor(); +x.y = { x: x }; + +var p = new Proxy(x, handler); +p.y; // returns Proxy(x.y, handler); +p.y.x; // returns Proxy(x.y.x, handler); +p.y.x === p; // returns false +p.y.x === p.y.x; // returns false + +x.y.x === x; // returns true +``` + +Uh-oh again. The x.y.x value is a cyclic reference that refers back to the original x. But that identity property is _not_ preserved for p, which is a proxy of x... at least, not with the simplest "getOwnPropertyDescriptor" trap. No, we need something that stores a one-to-one relationship between p and x... and for that matter defines one-to-one relationships between each natural object reachable from x and their corresponding proxy reachable from p. + +This is where a **WeakMap** comes in. A WeakMap is an object that holds references from key objects (non-primitives) to other values. The important distinction between a WeakMap and an ordinary JavaScript object `{}` is that the keys in a WeakMap can be objects, but an ordinary JS object only allows strings for its keys. + +At this point, logically, you have two related sets, called "object graphs". The first object graph, starting with x, is a set of objects which are related to each other, and reachable from x. The second object graph, starting with p, is a set of proxies, each of which matches in a one-to-one relationship with an object found in that first object graph. + +The "membrane" is the collection of those two object graphs, along with the rules that determine how to transform a value from one object graph to another. + +So a WeakMap can establish that one-to-one relationship. But you still need a little more information. You might think this would suffice: + +```javascript +var map = new WeakMap(); +map.set(x, p); +map.set(p, x); +``` + +Not quite. All this tells you is that x refers to p, and p refers to x. But +you don't know from this alone which object graph x belongs to, and which object +graph p belongs to. So there's one more concept to introduce, where both x and +p point to a _shared, common_ object that references each by the name of their +respective object graphs: + +```javascript +var map = new WeakMap(); +var subMapFor_x = { + "original": x, + "proxy": p +}; +map.set(x, subMapFor_x); +map.set(p, subMapFor_x); +``` + +Finally, you have enough information to uniquely identify x by both its object graph and by how we got there. Likewise, we can, through the WeakMap and the "sub-map" it stores, identify an unique proxy p in the "proxy" object graph that matches to x in the "original" object graph. + +(In this module's implementation, the "sub-map" is called a ProxyMapping, and has a ProxyMapping constructor and prototype implementation.) + +# Additional reading + +* [Tom van Cutsem's original article, "Membranes in JavaScript"](https://tvcutsem.github.io/js-membranes) +* [A StackOverflow question on why we might want a Membrane](http://stackoverflow.com/questions/36368363/what-would-be-a-use-case-for-identity-preserving-membrane-proxies/) +* [What is a Membrane?](http://blog.ezyang.com/2013/03/what-is-a-membran/) +* [Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) and [ProxyHandler](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) documentation on developer.mozilla.org +* The ECMAScript specifications, [6th Edition, aka "2015 Edition"](http://www.ecma-international.org/ecma-262/6.0/) and [7th Edition, aka "2016 Edition"](http://www.ecma-international.org/ecma-262/7.0/) + +# Glossary of terms +* _Object Graph_: A collection of objects (and proxies to objects) which relate to one another and are for direct access from a single JavaScript scope. The term comes from [graph theory](https://medium.com/basecs/a-gentle-introduction-to-graph-theory-77969829ead8). In the context of membranes, each unique object within an object graph has a one-to-one relationship with a proxy to that object in a completely separate object graph. Most importantly, the references from an object to its child properties are copied in the proxy, but refer to equivalent properties in the proxy's object graph, not the original object's graph. +* _Membrane_: A collection of object graphs, and the rules for managing and creating proxies within them. +* "Wet", "Dry", "Damp", "Steamy": These are names we use for convenience to refer to object graphs within a sample membrane (or a test membrane). Otherwise, they have exactly the same meaning as "foo" or "bar" in computer programming. "Wet" and "dry" come from the original concept of a biological cell's membrane: "wet" refers to anything inside the membrane, "dry" refers to anything outside the membrane, and never shall the two meet. "Damp" and "steamy" are just two other object graph names, because we can have more than two object graphs in a Membrane. +* _ObjectGraphHandler_: This is a special [ProxyHandler](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) implementation which forms the base for all membrane proxies. It is what really enforces the rules, and correct behavior, for membrane proxies. +* _ChainHandler_: This is an object which inherits from a ObjectGraphHandler, for the purpose of overriding proxy traps. +* _Wrapped_ versus _unwrapped_: An unwrapped object is the raw object. A wrapped object is a membrane proxy to the unwrapped object. +* _Wrapping and counter-wrapping_: Wrapping refers to creating a proxy for an object and adding the proxy to a different object graph. _Counter-wrapping_ happens with function arguments and "this" arguments, where the proxy to a function is invoked as a function itself. In this case, each argument must be either unwrapped (if it belongs to the same object graph as the target function) or wrapped in a proxy (if it belongs to a different object graph) before the ObjectGraphHandler passes it into the function's object graph. This latter process I call "counter-wrapping", to indicate it is going from the foreign object graph back to the function's object graph. Otherwise, it is the same. +* _Shadow target_: Every Proxy instance in ECMAScript requires a shadow target to form the base for the proxy. In es-membrane, this means the shadow target usually functions as a copy of the original object, with cached properties defined only as necessary. Shadow targets must be of the same primordial type as the object we're reflecting: to call a proxy as if it were a function, the proxy's shadow target must be a function. To make a proxy look like an array, the shadow target must be an array, and so on. +* _Distortion_: A Membrane's proxies must always parallel the properties of the objects they mirror... unless there are explicit rules defined on the proxy where they don't. These rules I call "distortions", because they distort the image of the underlying object through the proxy. One example would be hiding properties of the underlying object. +* _ProxyMapping_: This is a convenience object which stores the one-to-one relationship between an unwrapped object and its matching wrapped proxies. It is through a ProxyMapping instance that we may have more than two object graphs. The ProxyMapping also stores the distortions defined for each membrane proxy. +* _ChainHandler_: This is a ProxyHandler which inherits, directly or indirectly, from an ObjectGraphHandler. The ObjectGraphHandler specifies default proxy traps. The ChainHandler allows us to override those traps as necessary, and provides frozen references to the parent ChainHandler (if there is one) and to the base ObjectGraphHandler it derives from. +* _ProxyListener_: This is a special object which reacts to the creation of a Membrane proxy before it is returned to the caller that demanded the proxy. It is the one and only chance to customize the proxy's distortions, including recreating it or throwing a deliberate exception, before the requesting object graph receives its proxy. +* _Primordial_: This basically means globals provided by the ECMAScript engine, and their properties: Object, Array, Function, String, Date, etc. + +# Configuring a membrane: the GUI configuration tool + +https://ajvincent.github.io/es-membrane/gui/index.html + +This library has a HTML-based configuration tool (source at docs/gui) which allows you to set up your basic object graphs and several common distortions for white-listing by default. The tool will, based on your inputs, generate both a membrane construction JavaScript file and a reusable JSON file for editing the configuration later. The process is straight-forward, if complex: + +1. Load the source files defining your constructors and/or classes. + * If you have saved the configuration JSON file before, re-attach it here. +2. Click the _Membrane_ tab to set up the Membrane's base configuration (object graph names, objects unconditionally passed through) +3. Click the Continue button to populate the graph-specific configuration pages and the _Output_ tab. + * This will create two new sets of tabs: one for your objects to configure (on a per-graph basis), and one for whether you are editing the value itself, its prototype, or direct instances of an invoked constructor. +4. The _Output_ tab has two hyperlinks to directly save the configuration file and membrane creation file, respectively. + +# How to use the es-membrane module + +1. Define the object graphs by name you wish to use. Examples: + * [ "wet", "dry" ] or [ "wet", "dry", "damp"], per Tom van Cutsem + * [ "trusted", "sandboxed" ] + * [ "private", "public" ] +2. Create an instance of Membrane. + * The constructor for Membrane takes an optional options object. + * If options.showGraphName is true (or "truthy" in the JavaScript sense), each ObjectGraphHandler instance will expose an additional "membraneGraphName" property for proxies created from it. + * This is more for debugging purposes than anything else, and should not be turned on in a Production environment. + * If options.logger is defined, it is presumed to be a [log4javascript](http://log4javascript.org/)-compatible logger object for the membrane to use. +3. Ask for an ObjectGraphHandler from the membrane, by a name as a string. This will be where "your" objects live. +4. Ask for another ObjectGraphHandler from the membrane, by a different object graph name. This will be where "their" objects live. +5. (Optional) Use the .addProxyListener() method of the ObjectGraphHandler, to add listeners for the creation of new proxies. +6. Add a "top-level" object to "your" ObjectGraphHandler instance. +7. Ask the membrane to get a proxy for the original object from "their" object graph, based on the graph name. +8. (Optional) Use the membrane's modifyRules object to customize default behaviors of individual proxies. +9. Repeat steps 5 through 7 for any additional objects that need special handling. + * Example: Prototypes of constructors, which is where most property lookups go. +10. Return "top-level" proxies to objects, from "their" object graph, to the end-user. + * **DO NOT** return the Membrane, or any ObjectGraphHandler. Returning those allows others to change the rules you so carefully crafted. + +Example code: +```javascript +/* The object graph names I want are "dry" and "wet". + * "wet" is what I own. + * "dry" is what I don't trust. + */ + +// Establish the Membrane. +var dryWetMB = new Membrane({ + // These are configuration options. +}); + +// Establish "wet" ObjectGraphHandler. +var wetHandler = dryWetMB.getHandlerByName("wet", { mustCreate: true }); + +// Establish "dry" ObjectGraphHandler. +var dryHandler = dryWetMB.getHandlerByName("dry", { mustCreate: true }); + +// Establish "wet" view of an object. +// Get a "dry" view of the same object. +var dryDocument = dryWetMB.convertArgumentToProxy( + wetHandler, + dryHandler, + wetDocument +); +// dryDocument is a Proxy whose target is wetDocument, and whose handler is dryHandler. + +// Return "top-level" document proxy. +return dryDocument; +``` + +This will give the end-user a very basic proxy in the "dry" object graph, which also implements the identity and property lookup rules of the object graph and the membrane. In fact, it is a _perfect_ one-to-one correspondence: because no special proxy traps are established in steps 7 and 8 above, _any and all_ operations on the "dry" document proxy, or objects and functions retrieved through that proxy (directly or indirectly) will be reflected and repeated on the corresponding "wet" document objects _exactly_ with no side effects. (Except possibly those demanded through the Membrane's configuration options, such as providing a logger.) + +Such a membrane is, for obvious reasons, useless. But this perfect mirroring has to be established first before anyone can customize the membrane's various proxies, and thus, rules for accessing and manipulating objects. It is through custom proxies whose handlers inherit from ObjectGraphHandler instances in the membrane that you can achieve proper hiding of properties, expose new properties, and so on. + +## Modifying the proxy behavior: The ModifyRules API + +Every membrane has a .modifyRules object which allows developers to modify how an individual proxy behaves. + +The .modifyRules object has several public methods: + +* .createChainHandler(ObjectGraphHandler): Create a ProxyHandler inheriting from Reflect or an ObjectGraphHandler. The returned object will have two additional properties: + * .nextHandler, for the handler you passed in, + * .baseHandler, for the ObjectGraphHandler that the originated all handlers in the chain. + * The idea is that you can use .nextHandler and .baseHandler for any custom-implemented traps on the new handler, to refer to existing behavior. +* .replaceProxy(oldProxy, handler): Replace a proxy in the membrane with a new one based on a chained ObjectGraphHandler. + * Use this method after modifying a chain handler to define your own rules for a proxy. + * This method probably shouldn't be used directly - instead, use a proxy listener to override the proxy before the membrane returns it to a customer. +* .storeUnknownAsLocal(fieldName, proxy): Require that any unknown properties be stored "locally", instead of propagating to the underlying object. + * If the property name doesn't exist on the original object, the proxy itself keeps the property name and value. + * The underlying object will only accept property descriptors for properties it has defined on itself. + * You can call .storeUnknownAsLocal on the underlying object to require that all proxies store unknown properties locally. + * This setting is inherited: any objects constructed with the proxy or its target in the prototype chain will also store unknown properties locally. +* .requireLocalDelete(fieldName, proxy): Require that the deletion of a property is "local", that it does not propagate to the underlying object. + * Similar to .storeUnknownAsLocal, except .requireLocalDelete works for the delete operator. +* .filterOwnKeys(fieldName, proxy, filter): Applies a filter function for Reflect.ownKeys as it applies to properties defined on the underlying object. + * The filter function is cached in the membrane, so that it applies to all non-local properties in the future. + * The filter function also affects what .getOwnPropertyDescriptor() returns: if there isn't a local property defined, and the filter rejects the property name, the property is considered undefined. + * You can call .filterOwnKeys on the underlying object to require that all proxies apply the filter. + * You can apply two filters to each proxy, one locally and one global (on the underlying object). + * Local property definitions (or deletes) override the filter(s). + * See [Array.prototype.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) on developer.mozilla.org for good examples of how array filters work. + +## Proxy listeners: Reacting to new proxies + +When the membrane creates a new proxy and is about to return it to a caller, there is one chance to change the rules for that proxy before the caller ever sees it. This is through the proxy listener API. + +Each object graph handler has two methods: +* .addProxyListener(callback): Add a function to the sequence of proxy listeners. +* .removeProxyListener(callback): Remove the function from the sequence of proxy listeners. + +The callbacks are executed in the order they were added, with a single object argument. This "meta" object has several methods and properties: +* get stopped(): True if iteration to the remaining proxy listeners is canceled. +* get proxy(): The proxy object (or value) currently scheduled to be returned to the user. +* set proxy(val): Override the proxy object to schedule another value to be returned in its place. +* get target(): The original value being hidden in a proxy. +* get handler(): The proxy handler which the proxy is based on. +* set handler(val): Override the proxy handler. +* rebuildProxy(): A method to recreate the proxy from the original value and the current proxy handler. +* logger: A log4javascript-compatible logging object from the membrane's construction options, or null. +* For the .apply and .construct traps, there are additional properties: + * trapName: Either "apply" or "construct", depending on the trap invoked. + * callable: The target function being called. + * isThis: True for the "this" argument in the "apply" trap. False otherwise. + * argIndex: The argument index number, if isThis is false. +* stopIteration(): Set stopped to true, so that no more proxy listeners are executed. +* throwException(exception): Explicitly throw an exception, so that the proxy is NOT returned but the exception propagates from the membrane. + +An exception accidentally thrown from a proxy listener will *not* stop iteration: +* The exception will be caught, and if the membrane has a logger, the logger will log the exception. +* The next proxy listener in the sequence will then execute as if the exception had not been thrown. + +That's why the throwException() method exists: to make it clear that you intended to throw the exception outside the membrane. + +# How the Membrane actually works + +* The Membrane's prototype methods provide API for getting unique +ObjectGraphHandler instances: + * .getHandlerByName(graphName, mustCreate = false) + * .ownsHandler(handler) +* The Membrane's prototype also manages access to ProxyMapping instances, which as we stated above match proxies to original values in an one-to-one relationship. + * .hasProxyForValue(field, value) + * .buildMapping(field, value, options) + * .convertArgumentToProxy(originHandler, targetHandler, arg, options) + * .getMembraneValue(field, value) _(private method)_ + * .getMembraneProxy(field, value) _(private method)_ + * .wrapArgumentByHandler(handler, arg, options) _(private method)_ + * .wrapArgumentByProxyMapping(mapping, arg, options) _(private method)_ + * .wrapDescriptor(originField, targetField, desc) _(private method)_ +* The Membrane also maintains a WeakMap(object or proxy -> ProxyMapping) member. +* Each ObjectGraphHandler is a [handler for a Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) implementing all the traps. + * For simple operations that don't need a Membrane, such as .isExtensible(), the handler forwards the request directly to [Reflect](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect), which also implements the Proxy handler traps. + * (An exception to this rule is the .has() trap, which uses this.getOwnPropertyDescriptor and this.getPrototypeOf to walk the prototype chain, without the .has trap itself crossing the object graph's borders.) + * When getting a property descriptor from a proxy by the property name, there are several steps: + 1. Look up the ProxyMapping object matching the proxy's target in the membrane's WeakMap. + 2. Look up the original "this" object from the ProxyMapping, and call it originalThis. (This is the object the proxy corresponds to.) + 3. Set rv = Reflect.getOwnPropertyDescriptor(originalThis, propertyName); + 4. Wrap the non-primitive properties of rv as objects in the membrane, just like originalThis is wrapped in the membrane. + * This includes the .get(), .set() methods of accessor descriptors, and the .value of a data descriptor. + 5. Return rv. + * When getting the prototype of a proxy, + 1. Look up the ProxyMapping object matching the proxy's target in the membrane's WeakMap. + 2. If the retrieved ProxyMapping object doesn't have a valid "protoMapping" property, + 1. Look up the original "this" object from the ProxyMapping, and call it originalThis. + 2. Set proto = Reflect.getPrototypeOf(originalThis). + 3. Wrap proto, and a new Proxy for proto in the desired object graph, in the membrane via a second ProxyMapping. + 4. Set the second ProxyMapping object as the "protoMapping" property of the first ProxyMapping object. + 3. Return the proxy belonging to both the object graph and the "protoMapping" object. + * The .get() trap follows the ECMAScript 7th Edition specification for .get(), calling its .getOwnPropertyDescriptor() and .getPrototypeOf() traps respectively. It then wraps whatever return value it gets from those methods. + * When I say 'wrap a value', what I mean is: + 1. If the value is a primitive, just return the value as-is. + 2. If there isn't a ProxyMapping in the owning Membrane's WeakMap for the value, + 1. Create a ProxyMapping and set it in the membrane's WeakMap. + 2. Let origin be the ObjectGraphHandler that the value came from, and target be this. + 3. Set the value as a property of the ProxyMapping with the name of the origin object graph. + 4. Let parts = Proxy.revocable(value, this). + 5. Set parts as a property of the ProxyMapping with this object graph's name. + 3. Get the ProxyMapping for the value from the owning Membrane's WeakMap. + 4. Get the property of the ProxyMapping with this object's graph name. + 5. Return the property (which should be a Proxy). + * There is an algorithm for "counter-wrap a value", which we use for passing in arguments to a wrapped function, defining a property, or setting a prototype. The algorithm is similar to the "wrap a value" algorithm, except that the "origin" ObjectGraphHandler and the "target" ObjectGraphHandler are reversed. + * For executing a function proxy via .apply(), + 1. Counter-wrap the "this" value and all arguments. + 2. Look up the original function. + 3. Let rv = Reflect.apply(original function, counterWrapped this, counterWrapped arguments); + 4. Wrap rv and return the wrapped value. + * For executing a function proxy as a constructor via .construct(target, argumentList, newTarget), + 1. Get the ObjectGraphHandler representing the original function, + 2. Counter-wrap all the members of argumentList. + 3. Let rv = Reflect.construct(target, wrappedArgumentList, newTarget). + 4. Wrap rv. + 5. Get the prototype property of target (which is our constructor function). + 6. Wrap the prototype property. + 7. this.setPrototypeOf(rv, wrappedProto). + 8. Return rv. + +Each object graph's objects and functions, then, only see three different types of values: +1. Primitive values +2. Objects and functions passed into the membrane from that object graph's objects and functions +3. Proxies from other object graphs, representing native objects and functions belonging to those other object graphs. + +For instance, if I have a "dry" proxy to a function from the "wet" object graph and I call the proxy as a function, the "wet" function will be invoked only with primitives, objects and functions known to the "wet" graph, and "dry" proxies. Each argument (and the "this" object) is counter-wrapped in this way, so that the "wet" function only sees values it can rely on being in the "wet" object graph (including "wet" proxies to "dry" objects and callback functions). + +As long as all the proxies (and their respective handlers) follow the above rules, in addition to how they manipulate the appearance (or disappearance) of properties of those proxies, the membrane will be able to correctly preserve each object graph's integrity. Which is the overall goal of the membrane: keep objects and functions from accidentally crossing from one object graph to another. diff --git a/_00_ecma_references/buildStage.ts b/packages/v2-es-membrane/_00_ecma_references/buildStage.ts similarity index 100% rename from _00_ecma_references/buildStage.ts rename to packages/v2-es-membrane/_00_ecma_references/buildStage.ts diff --git a/_00_ecma_references/fixtures/NumberStringClass.mts b/packages/v2-es-membrane/_00_ecma_references/fixtures/NumberStringClass.mts similarity index 100% rename from _00_ecma_references/fixtures/NumberStringClass.mts rename to packages/v2-es-membrane/_00_ecma_references/fixtures/NumberStringClass.mts diff --git a/_00_ecma_references/fixtures/types/NumberStringType.d.mts b/packages/v2-es-membrane/_00_ecma_references/fixtures/types/NumberStringType.d.mts similarity index 100% rename from _00_ecma_references/fixtures/types/NumberStringType.d.mts rename to packages/v2-es-membrane/_00_ecma_references/fixtures/types/NumberStringType.d.mts diff --git a/_00_ecma_references/spec/README.md b/packages/v2-es-membrane/_00_ecma_references/spec/README.md similarity index 100% rename from _00_ecma_references/spec/README.md rename to packages/v2-es-membrane/_00_ecma_references/spec/README.md diff --git a/_00_ecma_references/spec/argumentTruncation.mjs b/packages/v2-es-membrane/_00_ecma_references/spec/argumentTruncation.mjs similarity index 100% rename from _00_ecma_references/spec/argumentTruncation.mjs rename to packages/v2-es-membrane/_00_ecma_references/spec/argumentTruncation.mjs diff --git a/_00_ecma_references/spec/classDecorators.mts b/packages/v2-es-membrane/_00_ecma_references/spec/classDecorators.mts similarity index 100% rename from _00_ecma_references/spec/classDecorators.mts rename to packages/v2-es-membrane/_00_ecma_references/spec/classDecorators.mts diff --git a/_00_ecma_references/spec/classMethodDecorators.mts b/packages/v2-es-membrane/_00_ecma_references/spec/classMethodDecorators.mts similarity index 100% rename from _00_ecma_references/spec/classMethodDecorators.mts rename to packages/v2-es-membrane/_00_ecma_references/spec/classMethodDecorators.mts diff --git a/_00_ecma_references/spec/constructTrap.ts b/packages/v2-es-membrane/_00_ecma_references/spec/constructTrap.ts similarity index 100% rename from _00_ecma_references/spec/constructTrap.ts rename to packages/v2-es-membrane/_00_ecma_references/spec/constructTrap.ts diff --git a/_00_ecma_references/spec/getSetTraps-receiver.ts b/packages/v2-es-membrane/_00_ecma_references/spec/getSetTraps-receiver.ts similarity index 100% rename from _00_ecma_references/spec/getSetTraps-receiver.ts rename to packages/v2-es-membrane/_00_ecma_references/spec/getSetTraps-receiver.ts diff --git a/_00_ecma_references/spec/propertyDescriptors.ts b/packages/v2-es-membrane/_00_ecma_references/spec/propertyDescriptors.ts similarity index 100% rename from _00_ecma_references/spec/propertyDescriptors.ts rename to packages/v2-es-membrane/_00_ecma_references/spec/propertyDescriptors.ts diff --git a/_00_ecma_references/spec/support/TracingProxyHandler.ts b/packages/v2-es-membrane/_00_ecma_references/spec/support/TracingProxyHandler.ts similarity index 100% rename from _00_ecma_references/spec/support/TracingProxyHandler.ts rename to packages/v2-es-membrane/_00_ecma_references/spec/support/TracingProxyHandler.ts diff --git a/_00_ecma_references/spec/support/jasmine.json b/packages/v2-es-membrane/_00_ecma_references/spec/support/jasmine.json similarity index 100% rename from _00_ecma_references/spec/support/jasmine.json rename to packages/v2-es-membrane/_00_ecma_references/spec/support/jasmine.json diff --git a/_01_stage_utilities/README.md b/packages/v2-es-membrane/_01_stage_utilities/README.md similarity index 100% rename from _01_stage_utilities/README.md rename to packages/v2-es-membrane/_01_stage_utilities/README.md diff --git a/_01_stage_utilities/buildStage.ts b/packages/v2-es-membrane/_01_stage_utilities/buildStage.ts similarity index 100% rename from _01_stage_utilities/buildStage.ts rename to packages/v2-es-membrane/_01_stage_utilities/buildStage.ts diff --git a/_01_stage_utilities/examples/run.mts b/packages/v2-es-membrane/_01_stage_utilities/examples/run.mts similarity index 100% rename from _01_stage_utilities/examples/run.mts rename to packages/v2-es-membrane/_01_stage_utilities/examples/run.mts diff --git a/_01_stage_utilities/examples/source/AsyncModule.mts b/packages/v2-es-membrane/_01_stage_utilities/examples/source/AsyncModule.mts similarity index 100% rename from _01_stage_utilities/examples/source/AsyncModule.mts rename to packages/v2-es-membrane/_01_stage_utilities/examples/source/AsyncModule.mts diff --git a/_01_stage_utilities/examples/source/DoubleArrayPromise.mts b/packages/v2-es-membrane/_01_stage_utilities/examples/source/DoubleArrayPromise.mts similarity index 100% rename from _01_stage_utilities/examples/source/DoubleArrayPromise.mts rename to packages/v2-es-membrane/_01_stage_utilities/examples/source/DoubleArrayPromise.mts diff --git a/_01_stage_utilities/fixtures/NumberStringClass.mts b/packages/v2-es-membrane/_01_stage_utilities/fixtures/NumberStringClass.mts similarity index 100% rename from _01_stage_utilities/fixtures/NumberStringClass.mts rename to packages/v2-es-membrane/_01_stage_utilities/fixtures/NumberStringClass.mts diff --git a/_01_stage_utilities/fixtures/types/NumberStringType.d.mts b/packages/v2-es-membrane/_01_stage_utilities/fixtures/types/NumberStringType.d.mts similarity index 100% rename from _01_stage_utilities/fixtures/types/NumberStringType.d.mts rename to packages/v2-es-membrane/_01_stage_utilities/fixtures/types/NumberStringType.d.mts diff --git a/_01_stage_utilities/source/AsyncSpecModules.mts b/packages/v2-es-membrane/_01_stage_utilities/source/AsyncSpecModules.mts similarity index 98% rename from _01_stage_utilities/source/AsyncSpecModules.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/AsyncSpecModules.mts index cb0b1058..72a39469 100644 --- a/_01_stage_utilities/source/AsyncSpecModules.mts +++ b/packages/v2-es-membrane/_01_stage_utilities/source/AsyncSpecModules.mts @@ -12,6 +12,10 @@ export const projectDir = path.normalize(path.resolve( )); const pathToPackageJSON = path.join(projectDir, "package.json"); +export const monorepoDir = path.normalize(path.resolve( + projectDir, "../.." +)); + // eslint-disable-next-line @typescript-eslint/no-explicit-any export type Class = { prototype: T; diff --git a/_01_stage_utilities/source/PromiseTypes.mts b/packages/v2-es-membrane/_01_stage_utilities/source/PromiseTypes.mts similarity index 100% rename from _01_stage_utilities/source/PromiseTypes.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/PromiseTypes.mts diff --git a/_01_stage_utilities/source/PropertyKeySorter.mts b/packages/v2-es-membrane/_01_stage_utilities/source/PropertyKeySorter.mts similarity index 100% rename from _01_stage_utilities/source/PropertyKeySorter.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/PropertyKeySorter.mts diff --git a/_01_stage_utilities/source/ReplaceableValueMap.mts b/packages/v2-es-membrane/_01_stage_utilities/source/ReplaceableValueMap.mts similarity index 100% rename from _01_stage_utilities/source/ReplaceableValueMap.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/ReplaceableValueMap.mts diff --git a/_01_stage_utilities/source/RequiredInitializers.mts b/packages/v2-es-membrane/_01_stage_utilities/source/RequiredInitializers.mts similarity index 100% rename from _01_stage_utilities/source/RequiredInitializers.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/RequiredInitializers.mts diff --git a/_01_stage_utilities/source/SpyBase.mts b/packages/v2-es-membrane/_01_stage_utilities/source/SpyBase.mts similarity index 100% rename from _01_stage_utilities/source/SpyBase.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/SpyBase.mts diff --git a/_01_stage_utilities/source/collections/AwaitedMap.ts b/packages/v2-es-membrane/_01_stage_utilities/source/collections/AwaitedMap.ts similarity index 100% rename from _01_stage_utilities/source/collections/AwaitedMap.ts rename to packages/v2-es-membrane/_01_stage_utilities/source/collections/AwaitedMap.ts diff --git a/_01_stage_utilities/source/collections/DefaultMap.ts b/packages/v2-es-membrane/_01_stage_utilities/source/collections/DefaultMap.ts similarity index 100% rename from _01_stage_utilities/source/collections/DefaultMap.ts rename to packages/v2-es-membrane/_01_stage_utilities/source/collections/DefaultMap.ts diff --git a/_01_stage_utilities/source/collections/OneToOneStrongMap.ts b/packages/v2-es-membrane/_01_stage_utilities/source/collections/OneToOneStrongMap.ts similarity index 100% rename from _01_stage_utilities/source/collections/OneToOneStrongMap.ts rename to packages/v2-es-membrane/_01_stage_utilities/source/collections/OneToOneStrongMap.ts diff --git a/_01_stage_utilities/source/collections/WeakRefSet.ts b/packages/v2-es-membrane/_01_stage_utilities/source/collections/WeakRefSet.ts similarity index 100% rename from _01_stage_utilities/source/collections/WeakRefSet.ts rename to packages/v2-es-membrane/_01_stage_utilities/source/collections/WeakRefSet.ts diff --git a/_01_stage_utilities/source/collections/WeakStrongMap.ts b/packages/v2-es-membrane/_01_stage_utilities/source/collections/WeakStrongMap.ts similarity index 100% rename from _01_stage_utilities/source/collections/WeakStrongMap.ts rename to packages/v2-es-membrane/_01_stage_utilities/source/collections/WeakStrongMap.ts diff --git a/_01_stage_utilities/source/gc/holdsArgument.mts b/packages/v2-es-membrane/_01_stage_utilities/source/gc/holdsArgument.mts similarity index 100% rename from _01_stage_utilities/source/gc/holdsArgument.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/gc/holdsArgument.mts diff --git a/_01_stage_utilities/source/gc/holdsReturn.mts b/packages/v2-es-membrane/_01_stage_utilities/source/gc/holdsReturn.mts similarity index 100% rename from _01_stage_utilities/source/gc/holdsReturn.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/gc/holdsReturn.mts diff --git a/_01_stage_utilities/source/gc/promiseFinalizer.mts b/packages/v2-es-membrane/_01_stage_utilities/source/gc/promiseFinalizer.mts similarity index 100% rename from _01_stage_utilities/source/gc/promiseFinalizer.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/gc/promiseFinalizer.mts diff --git a/_01_stage_utilities/source/gc/tryGarbageCollection.mts b/packages/v2-es-membrane/_01_stage_utilities/source/gc/tryGarbageCollection.mts similarity index 100% rename from _01_stage_utilities/source/gc/tryGarbageCollection.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/gc/tryGarbageCollection.mts diff --git a/_01_stage_utilities/source/getTS_SourceFile.mts b/packages/v2-es-membrane/_01_stage_utilities/source/getTS_SourceFile.mts similarity index 100% rename from _01_stage_utilities/source/getTS_SourceFile.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/getTS_SourceFile.mts diff --git a/_01_stage_utilities/source/maybeDefined.mts b/packages/v2-es-membrane/_01_stage_utilities/source/maybeDefined.mts similarity index 100% rename from _01_stage_utilities/source/maybeDefined.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/maybeDefined.mts diff --git a/_01_stage_utilities/source/stateMachines/dfa-states.mts b/packages/v2-es-membrane/_01_stage_utilities/source/stateMachines/dfa-states.mts similarity index 100% rename from _01_stage_utilities/source/stateMachines/dfa-states.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/stateMachines/dfa-states.mts diff --git a/_01_stage_utilities/source/types/ClassMethodDecoratorFunction.d.mts b/packages/v2-es-membrane/_01_stage_utilities/source/types/ClassMethodDecoratorFunction.d.mts similarity index 100% rename from _01_stage_utilities/source/types/ClassMethodDecoratorFunction.d.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/types/ClassMethodDecoratorFunction.d.mts diff --git a/_01_stage_utilities/source/types/MethodsOnlyType.d.mts b/packages/v2-es-membrane/_01_stage_utilities/source/types/MethodsOnlyType.d.mts similarity index 100% rename from _01_stage_utilities/source/types/MethodsOnlyType.d.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/types/MethodsOnlyType.d.mts diff --git a/_01_stage_utilities/source/types/Utility.d.mts b/packages/v2-es-membrane/_01_stage_utilities/source/types/Utility.d.mts similarity index 100% rename from _01_stage_utilities/source/types/Utility.d.mts rename to packages/v2-es-membrane/_01_stage_utilities/source/types/Utility.d.mts diff --git a/_01_stage_utilities/spec/AsyncSpecModules.mts b/packages/v2-es-membrane/_01_stage_utilities/spec/AsyncSpecModules.mts similarity index 100% rename from _01_stage_utilities/spec/AsyncSpecModules.mts rename to packages/v2-es-membrane/_01_stage_utilities/spec/AsyncSpecModules.mts diff --git a/_01_stage_utilities/spec/PromiseTypes/PromiseDictionary.mts b/packages/v2-es-membrane/_01_stage_utilities/spec/PromiseTypes/PromiseDictionary.mts similarity index 100% rename from _01_stage_utilities/spec/PromiseTypes/PromiseDictionary.mts rename to packages/v2-es-membrane/_01_stage_utilities/spec/PromiseTypes/PromiseDictionary.mts diff --git a/_01_stage_utilities/spec/PromiseTypes/SingletonPromise.mts b/packages/v2-es-membrane/_01_stage_utilities/spec/PromiseTypes/SingletonPromise.mts similarity index 100% rename from _01_stage_utilities/spec/PromiseTypes/SingletonPromise.mts rename to packages/v2-es-membrane/_01_stage_utilities/spec/PromiseTypes/SingletonPromise.mts diff --git a/_01_stage_utilities/spec/PropertyKeySorter.mts b/packages/v2-es-membrane/_01_stage_utilities/spec/PropertyKeySorter.mts similarity index 100% rename from _01_stage_utilities/spec/PropertyKeySorter.mts rename to packages/v2-es-membrane/_01_stage_utilities/spec/PropertyKeySorter.mts diff --git a/_01_stage_utilities/spec/ReplaceableValueMap.mts b/packages/v2-es-membrane/_01_stage_utilities/spec/ReplaceableValueMap.mts similarity index 100% rename from _01_stage_utilities/spec/ReplaceableValueMap.mts rename to packages/v2-es-membrane/_01_stage_utilities/spec/ReplaceableValueMap.mts diff --git a/_01_stage_utilities/spec/RequiredInitializers.mts b/packages/v2-es-membrane/_01_stage_utilities/spec/RequiredInitializers.mts similarity index 100% rename from _01_stage_utilities/spec/RequiredInitializers.mts rename to packages/v2-es-membrane/_01_stage_utilities/spec/RequiredInitializers.mts diff --git a/_01_stage_utilities/spec/_types/ClassMethodDecoratorFunction.mts b/packages/v2-es-membrane/_01_stage_utilities/spec/_types/ClassMethodDecoratorFunction.mts similarity index 100% rename from _01_stage_utilities/spec/_types/ClassMethodDecoratorFunction.mts rename to packages/v2-es-membrane/_01_stage_utilities/spec/_types/ClassMethodDecoratorFunction.mts diff --git a/_01_stage_utilities/spec/collections/AwaitedMap.ts b/packages/v2-es-membrane/_01_stage_utilities/spec/collections/AwaitedMap.ts similarity index 100% rename from _01_stage_utilities/spec/collections/AwaitedMap.ts rename to packages/v2-es-membrane/_01_stage_utilities/spec/collections/AwaitedMap.ts diff --git a/_01_stage_utilities/spec/collections/OneToOneStrongMap.ts b/packages/v2-es-membrane/_01_stage_utilities/spec/collections/OneToOneStrongMap.ts similarity index 100% rename from _01_stage_utilities/spec/collections/OneToOneStrongMap.ts rename to packages/v2-es-membrane/_01_stage_utilities/spec/collections/OneToOneStrongMap.ts diff --git a/_01_stage_utilities/spec/collections/WeakRefSet.ts b/packages/v2-es-membrane/_01_stage_utilities/spec/collections/WeakRefSet.ts similarity index 100% rename from _01_stage_utilities/spec/collections/WeakRefSet.ts rename to packages/v2-es-membrane/_01_stage_utilities/spec/collections/WeakRefSet.ts diff --git a/_01_stage_utilities/spec/collections/WeakStrongMap.ts b/packages/v2-es-membrane/_01_stage_utilities/spec/collections/WeakStrongMap.ts similarity index 100% rename from _01_stage_utilities/spec/collections/WeakStrongMap.ts rename to packages/v2-es-membrane/_01_stage_utilities/spec/collections/WeakStrongMap.ts diff --git a/_01_stage_utilities/spec/garbage-collection/collections/OneToOneStrongMap.ts b/packages/v2-es-membrane/_01_stage_utilities/spec/garbage-collection/collections/OneToOneStrongMap.ts similarity index 100% rename from _01_stage_utilities/spec/garbage-collection/collections/OneToOneStrongMap.ts rename to packages/v2-es-membrane/_01_stage_utilities/spec/garbage-collection/collections/OneToOneStrongMap.ts diff --git a/_01_stage_utilities/spec/garbage-collection/collections/WeakRefSet.ts b/packages/v2-es-membrane/_01_stage_utilities/spec/garbage-collection/collections/WeakRefSet.ts similarity index 100% rename from _01_stage_utilities/spec/garbage-collection/collections/WeakRefSet.ts rename to packages/v2-es-membrane/_01_stage_utilities/spec/garbage-collection/collections/WeakRefSet.ts diff --git a/_01_stage_utilities/spec/garbage-collection/collections/WeakStrongMap.ts b/packages/v2-es-membrane/_01_stage_utilities/spec/garbage-collection/collections/WeakStrongMap.ts similarity index 100% rename from _01_stage_utilities/spec/garbage-collection/collections/WeakStrongMap.ts rename to packages/v2-es-membrane/_01_stage_utilities/spec/garbage-collection/collections/WeakStrongMap.ts diff --git a/_01_stage_utilities/spec/garbage-collection/holdsArgument.mts b/packages/v2-es-membrane/_01_stage_utilities/spec/garbage-collection/holdsArgument.mts similarity index 100% rename from _01_stage_utilities/spec/garbage-collection/holdsArgument.mts rename to packages/v2-es-membrane/_01_stage_utilities/spec/garbage-collection/holdsArgument.mts diff --git a/_01_stage_utilities/spec/garbage-collection/holdsReturn.mts b/packages/v2-es-membrane/_01_stage_utilities/spec/garbage-collection/holdsReturn.mts similarity index 100% rename from _01_stage_utilities/spec/garbage-collection/holdsReturn.mts rename to packages/v2-es-membrane/_01_stage_utilities/spec/garbage-collection/holdsReturn.mts diff --git a/_01_stage_utilities/spec/getTS_SourceFile.mts b/packages/v2-es-membrane/_01_stage_utilities/spec/getTS_SourceFile.mts similarity index 100% rename from _01_stage_utilities/spec/getTS_SourceFile.mts rename to packages/v2-es-membrane/_01_stage_utilities/spec/getTS_SourceFile.mts diff --git a/_01_stage_utilities/spec/stateMachines/dfa-states.mts b/packages/v2-es-membrane/_01_stage_utilities/spec/stateMachines/dfa-states.mts similarity index 100% rename from _01_stage_utilities/spec/stateMachines/dfa-states.mts rename to packages/v2-es-membrane/_01_stage_utilities/spec/stateMachines/dfa-states.mts diff --git a/_01_stage_utilities/spec/support/jasmine.json b/packages/v2-es-membrane/_01_stage_utilities/spec/support/jasmine.json similarity index 100% rename from _01_stage_utilities/spec/support/jasmine.json rename to packages/v2-es-membrane/_01_stage_utilities/spec/support/jasmine.json diff --git a/_02_code_generation/buildStage.ts b/packages/v2-es-membrane/_02_code_generation/buildStage.ts similarity index 100% rename from _02_code_generation/buildStage.ts rename to packages/v2-es-membrane/_02_code_generation/buildStage.ts diff --git a/_02_code_generation/source/ConvertingHead.ts b/packages/v2-es-membrane/_02_code_generation/source/ConvertingHead.ts similarity index 100% rename from _02_code_generation/source/ConvertingHead.ts rename to packages/v2-es-membrane/_02_code_generation/source/ConvertingHead.ts diff --git a/_02_code_generation/source/ObjectGraphHandlerIfc.ts b/packages/v2-es-membrane/_02_code_generation/source/ObjectGraphHandlerIfc.ts similarity index 100% rename from _02_code_generation/source/ObjectGraphHandlerIfc.ts rename to packages/v2-es-membrane/_02_code_generation/source/ObjectGraphHandlerIfc.ts diff --git a/_02_code_generation/source/ObjectGraphTailHandler.ts b/packages/v2-es-membrane/_02_code_generation/source/ObjectGraphTailHandler.ts similarity index 100% rename from _02_code_generation/source/ObjectGraphTailHandler.ts rename to packages/v2-es-membrane/_02_code_generation/source/ObjectGraphTailHandler.ts diff --git a/_02_code_generation/source/UnionStringOrSymbol.ts b/packages/v2-es-membrane/_02_code_generation/source/UnionStringOrSymbol.ts similarity index 100% rename from _02_code_generation/source/UnionStringOrSymbol.ts rename to packages/v2-es-membrane/_02_code_generation/source/UnionStringOrSymbol.ts diff --git a/_02_code_generation/source/buildHandlerClass.ts b/packages/v2-es-membrane/_02_code_generation/source/buildHandlerClass.ts similarity index 100% rename from _02_code_generation/source/buildHandlerClass.ts rename to packages/v2-es-membrane/_02_code_generation/source/buildHandlerClass.ts diff --git a/_02_code_generation/source/constants.ts b/packages/v2-es-membrane/_02_code_generation/source/constants.ts similarity index 100% rename from _02_code_generation/source/constants.ts rename to packages/v2-es-membrane/_02_code_generation/source/constants.ts diff --git a/_02_code_generation/source/forwardToReflect.ts b/packages/v2-es-membrane/_02_code_generation/source/forwardToReflect.ts similarity index 100% rename from _02_code_generation/source/forwardToReflect.ts rename to packages/v2-es-membrane/_02_code_generation/source/forwardToReflect.ts diff --git a/_02_code_generation/source/getInterfaces/fromLocalFile.ts b/packages/v2-es-membrane/_02_code_generation/source/getInterfaces/fromLocalFile.ts similarity index 100% rename from _02_code_generation/source/getInterfaces/fromLocalFile.ts rename to packages/v2-es-membrane/_02_code_generation/source/getInterfaces/fromLocalFile.ts diff --git a/_02_code_generation/source/getInterfaces/fromTypeScriptLib.ts b/packages/v2-es-membrane/_02_code_generation/source/getInterfaces/fromTypeScriptLib.ts similarity index 94% rename from _02_code_generation/source/getInterfaces/fromTypeScriptLib.ts rename to packages/v2-es-membrane/_02_code_generation/source/getInterfaces/fromTypeScriptLib.ts index a89b799d..65030df5 100644 --- a/_02_code_generation/source/getInterfaces/fromTypeScriptLib.ts +++ b/packages/v2-es-membrane/_02_code_generation/source/getInterfaces/fromTypeScriptLib.ts @@ -9,7 +9,7 @@ import { } from "ts-morph"; import { - projectDir, + monorepoDir } from "#stage_utilities/source/AsyncSpecModules.mjs"; import { @@ -26,7 +26,7 @@ export const TYPESCRIPT_LIB_SOURCEFILES: readonly SourceFile[] = await getLibrar async function getLibraryFiles(): Promise { - const TYPESCRIPT_LIBS_PATH = path.join(projectDir, "node_modules/typescript/lib"); + const TYPESCRIPT_LIBS_PATH = path.join(monorepoDir, "node_modules/typescript/lib"); let fileList: string[] = await fs.readdir(TYPESCRIPT_LIBS_PATH); fileList = fileList.filter(f => /^lib\..*\.d.ts$/.test(f)); fileList = fileList.map(f => path.join(TYPESCRIPT_LIBS_PATH, f)); diff --git a/_02_code_generation/source/getInterfaces/requiredProxy.ts b/packages/v2-es-membrane/_02_code_generation/source/getInterfaces/requiredProxy.ts similarity index 100% rename from _02_code_generation/source/getInterfaces/requiredProxy.ts rename to packages/v2-es-membrane/_02_code_generation/source/getInterfaces/requiredProxy.ts diff --git a/_02_code_generation/source/mirroring/revokedInFlight.ts b/packages/v2-es-membrane/_02_code_generation/source/mirroring/revokedInFlight.ts similarity index 100% rename from _02_code_generation/source/mirroring/revokedInFlight.ts rename to packages/v2-es-membrane/_02_code_generation/source/mirroring/revokedInFlight.ts diff --git a/_02_code_generation/source/mirroring/wrapReturnValues.ts b/packages/v2-es-membrane/_02_code_generation/source/mirroring/wrapReturnValues.ts similarity index 100% rename from _02_code_generation/source/mirroring/wrapReturnValues.ts rename to packages/v2-es-membrane/_02_code_generation/source/mirroring/wrapReturnValues.ts diff --git a/_02_code_generation/source/utilities/buildConstStatement.ts b/packages/v2-es-membrane/_02_code_generation/source/utilities/buildConstStatement.ts similarity index 100% rename from _02_code_generation/source/utilities/buildConstStatement.ts rename to packages/v2-es-membrane/_02_code_generation/source/utilities/buildConstStatement.ts diff --git a/_02_code_generation/source/utilities/tailDecoratorFunction.ts b/packages/v2-es-membrane/_02_code_generation/source/utilities/tailDecoratorFunction.ts similarity index 100% rename from _02_code_generation/source/utilities/tailDecoratorFunction.ts rename to packages/v2-es-membrane/_02_code_generation/source/utilities/tailDecoratorFunction.ts diff --git a/_03_objectgraph_handlers/build/constants.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/build/constants.ts similarity index 100% rename from _03_objectgraph_handlers/build/constants.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/build/constants.ts diff --git a/_03_objectgraph_handlers/build/copyGenerated.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/build/copyGenerated.ts similarity index 100% rename from _03_objectgraph_handlers/build/copyGenerated.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/build/copyGenerated.ts diff --git a/_03_objectgraph_handlers/buildStage.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/buildStage.ts similarity index 100% rename from _03_objectgraph_handlers/buildStage.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/buildStage.ts diff --git a/_03_objectgraph_handlers/source/AlwaysRevokedProxy.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/AlwaysRevokedProxy.ts similarity index 100% rename from _03_objectgraph_handlers/source/AlwaysRevokedProxy.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/AlwaysRevokedProxy.ts diff --git a/_03_objectgraph_handlers/source/ObjectGraphHead.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/ObjectGraphHead.ts similarity index 100% rename from _03_objectgraph_handlers/source/ObjectGraphHead.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/ObjectGraphHead.ts diff --git a/_03_objectgraph_handlers/source/RevokerManagement.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/RevokerManagement.ts similarity index 100% rename from _03_objectgraph_handlers/source/RevokerManagement.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/RevokerManagement.ts diff --git a/_03_objectgraph_handlers/source/decorators/inheritedProperties.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/decorators/inheritedProperties.ts similarity index 100% rename from _03_objectgraph_handlers/source/decorators/inheritedProperties.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/decorators/inheritedProperties.ts diff --git a/_03_objectgraph_handlers/source/decorators/updateShadowTarget.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/decorators/updateShadowTarget.ts similarity index 100% rename from _03_objectgraph_handlers/source/decorators/updateShadowTarget.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/decorators/updateShadowTarget.ts diff --git a/_03_objectgraph_handlers/source/exceptions/MembraneInternalError.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/exceptions/MembraneInternalError.ts similarity index 100% rename from _03_objectgraph_handlers/source/exceptions/MembraneInternalError.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/exceptions/MembraneInternalError.ts diff --git a/_03_objectgraph_handlers/source/exceptions/graphAssert.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/exceptions/graphAssert.ts similarity index 100% rename from _03_objectgraph_handlers/source/exceptions/graphAssert.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/exceptions/graphAssert.ts diff --git a/_03_objectgraph_handlers/source/generated/ConvertingHeadProxyHandler.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/ConvertingHeadProxyHandler.ts similarity index 100% rename from _03_objectgraph_handlers/source/generated/ConvertingHeadProxyHandler.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/ConvertingHeadProxyHandler.ts diff --git a/_03_objectgraph_handlers/source/generated/ForwardToReflect.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/ForwardToReflect.ts similarity index 100% rename from _03_objectgraph_handlers/source/generated/ForwardToReflect.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/ForwardToReflect.ts diff --git a/_03_objectgraph_handlers/source/generated/ObjectGraphTailHandler.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/ObjectGraphTailHandler.ts similarity index 100% rename from _03_objectgraph_handlers/source/generated/ObjectGraphTailHandler.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/ObjectGraphTailHandler.ts diff --git a/_03_objectgraph_handlers/source/generated/decorators/revokedInFlight.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/decorators/revokedInFlight.ts similarity index 100% rename from _03_objectgraph_handlers/source/generated/decorators/revokedInFlight.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/decorators/revokedInFlight.ts diff --git a/_03_objectgraph_handlers/source/generated/decorators/wrapReturnValues.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/decorators/wrapReturnValues.ts similarity index 100% rename from _03_objectgraph_handlers/source/generated/decorators/wrapReturnValues.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/decorators/wrapReturnValues.ts diff --git a/_03_objectgraph_handlers/source/generated/types/ObjectGraphHandlerIfc.d.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/types/ObjectGraphHandlerIfc.d.ts similarity index 100% rename from _03_objectgraph_handlers/source/generated/types/ObjectGraphHandlerIfc.d.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/generated/types/ObjectGraphHandlerIfc.d.ts diff --git a/_03_objectgraph_handlers/source/sharedUtilities.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/sharedUtilities.ts similarity index 100% rename from _03_objectgraph_handlers/source/sharedUtilities.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/sharedUtilities.ts diff --git a/_03_objectgraph_handlers/source/types/ClassDecoratorFunction.d.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/types/ClassDecoratorFunction.d.ts similarity index 100% rename from _03_objectgraph_handlers/source/types/ClassDecoratorFunction.d.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/types/ClassDecoratorFunction.d.ts diff --git a/_03_objectgraph_handlers/source/types/MembraneInternalIfc.d.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/types/MembraneInternalIfc.d.ts similarity index 100% rename from _03_objectgraph_handlers/source/types/MembraneInternalIfc.d.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/types/MembraneInternalIfc.d.ts diff --git a/_03_objectgraph_handlers/source/types/ObjectGraphHeadIfc.d.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/types/ObjectGraphHeadIfc.d.ts similarity index 100% rename from _03_objectgraph_handlers/source/types/ObjectGraphHeadIfc.d.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/types/ObjectGraphHeadIfc.d.ts diff --git a/_03_objectgraph_handlers/source/types/ProxyBranding.d.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/types/ProxyBranding.d.ts similarity index 100% rename from _03_objectgraph_handlers/source/types/ProxyBranding.d.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/types/ProxyBranding.d.ts diff --git a/_03_objectgraph_handlers/source/types/RequiredProxyHandler.d.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/source/types/RequiredProxyHandler.d.ts similarity index 100% rename from _03_objectgraph_handlers/source/types/RequiredProxyHandler.d.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/source/types/RequiredProxyHandler.d.ts diff --git a/_03_objectgraph_handlers/spec/ConvertingHeadProxyHandler.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/ConvertingHeadProxyHandler.ts similarity index 100% rename from _03_objectgraph_handlers/spec/ConvertingHeadProxyHandler.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/ConvertingHeadProxyHandler.ts diff --git a/_03_objectgraph_handlers/spec/ObjectGraphHead.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/ObjectGraphHead.ts similarity index 100% rename from _03_objectgraph_handlers/spec/ObjectGraphHead.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/ObjectGraphHead.ts diff --git a/_03_objectgraph_handlers/spec/ObjectGraphTailHandler.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/ObjectGraphTailHandler.ts similarity index 100% rename from _03_objectgraph_handlers/spec/ObjectGraphTailHandler.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/ObjectGraphTailHandler.ts diff --git a/_03_objectgraph_handlers/spec/RevokerManagement.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/RevokerManagement.ts similarity index 100% rename from _03_objectgraph_handlers/spec/RevokerManagement.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/RevokerManagement.ts diff --git a/_03_objectgraph_handlers/spec/decorators/inheritedProperties.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/decorators/inheritedProperties.ts similarity index 100% rename from _03_objectgraph_handlers/spec/decorators/inheritedProperties.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/decorators/inheritedProperties.ts diff --git a/_03_objectgraph_handlers/spec/decorators/revokedInFlight.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/decorators/revokedInFlight.ts similarity index 100% rename from _03_objectgraph_handlers/spec/decorators/revokedInFlight.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/decorators/revokedInFlight.ts diff --git a/_03_objectgraph_handlers/spec/decorators/updateShadowTarget.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/decorators/updateShadowTarget.ts similarity index 100% rename from _03_objectgraph_handlers/spec/decorators/updateShadowTarget.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/decorators/updateShadowTarget.ts diff --git a/_03_objectgraph_handlers/spec/decorators/wrapReturnValues.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/decorators/wrapReturnValues.ts similarity index 100% rename from _03_objectgraph_handlers/spec/decorators/wrapReturnValues.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/decorators/wrapReturnValues.ts diff --git a/_03_objectgraph_handlers/spec/garbage-collection/RevokerManagement.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/garbage-collection/RevokerManagement.ts similarity index 100% rename from _03_objectgraph_handlers/spec/garbage-collection/RevokerManagement.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/garbage-collection/RevokerManagement.ts diff --git a/_03_objectgraph_handlers/spec/support/MockMembrane.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/support/MockMembrane.ts similarity index 100% rename from _03_objectgraph_handlers/spec/support/MockMembrane.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/support/MockMembrane.ts diff --git a/_03_objectgraph_handlers/spec/support/SpyProxyHandler.ts b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/support/SpyProxyHandler.ts similarity index 100% rename from _03_objectgraph_handlers/spec/support/SpyProxyHandler.ts rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/support/SpyProxyHandler.ts diff --git a/_02a_aspects_mockups/spec/support/jasmine.json b/packages/v2-es-membrane/_03_objectgraph_handlers/spec/support/jasmine.json similarity index 100% rename from _02a_aspects_mockups/spec/support/jasmine.json rename to packages/v2-es-membrane/_03_objectgraph_handlers/spec/support/jasmine.json diff --git a/_04_mirror_membranes/buildStage.ts b/packages/v2-es-membrane/_04_mirror_membranes/buildStage.ts similarity index 100% rename from _04_mirror_membranes/buildStage.ts rename to packages/v2-es-membrane/_04_mirror_membranes/buildStage.ts diff --git a/_04_mirror_membranes/source/MirrorMembrane.ts b/packages/v2-es-membrane/_04_mirror_membranes/source/MirrorMembrane.ts similarity index 100% rename from _04_mirror_membranes/source/MirrorMembrane.ts rename to packages/v2-es-membrane/_04_mirror_membranes/source/MirrorMembrane.ts diff --git a/_04_mirror_membranes/source/MirrorObjectGraphHandler.ts b/packages/v2-es-membrane/_04_mirror_membranes/source/MirrorObjectGraphHandler.ts similarity index 100% rename from _04_mirror_membranes/source/MirrorObjectGraphHandler.ts rename to packages/v2-es-membrane/_04_mirror_membranes/source/MirrorObjectGraphHandler.ts diff --git a/_04_mirror_membranes/spec/MirrorMembrane.ts b/packages/v2-es-membrane/_04_mirror_membranes/spec/MirrorMembrane.ts similarity index 100% rename from _04_mirror_membranes/spec/MirrorMembrane.ts rename to packages/v2-es-membrane/_04_mirror_membranes/spec/MirrorMembrane.ts diff --git a/_03_objectgraph_handlers/spec/support/jasmine.json b/packages/v2-es-membrane/_04_mirror_membranes/spec/support/jasmine.json similarity index 100% rename from _03_objectgraph_handlers/spec/support/jasmine.json rename to packages/v2-es-membrane/_04_mirror_membranes/spec/support/jasmine.json diff --git a/_04_mirror_membranes/types/MirrorMembraneIfc.d.ts b/packages/v2-es-membrane/_04_mirror_membranes/types/MirrorMembraneIfc.d.ts similarity index 100% rename from _04_mirror_membranes/types/MirrorMembraneIfc.d.ts rename to packages/v2-es-membrane/_04_mirror_membranes/types/MirrorMembraneIfc.d.ts diff --git a/_10_exported_decorators/README.md b/packages/v2-es-membrane/_10_exported_decorators/README.md similarity index 100% rename from _10_exported_decorators/README.md rename to packages/v2-es-membrane/_10_exported_decorators/README.md diff --git a/build-utilities/README.md b/packages/v2-es-membrane/build-utilities/README.md similarity index 100% rename from build-utilities/README.md rename to packages/v2-es-membrane/build-utilities/README.md diff --git a/build-utilities/buildStage.ts b/packages/v2-es-membrane/build-utilities/buildStage.ts similarity index 100% rename from build-utilities/buildStage.ts rename to packages/v2-es-membrane/build-utilities/buildStage.ts diff --git a/build-utilities/internal/AsyncSpecModules.ts b/packages/v2-es-membrane/build-utilities/internal/AsyncSpecModules.ts similarity index 100% rename from build-utilities/internal/AsyncSpecModules.ts rename to packages/v2-es-membrane/build-utilities/internal/AsyncSpecModules.ts diff --git a/build-utilities/internal/DefaultMap.ts b/packages/v2-es-membrane/build-utilities/internal/DefaultMap.ts similarity index 100% rename from build-utilities/internal/DefaultMap.ts rename to packages/v2-es-membrane/build-utilities/internal/DefaultMap.ts diff --git a/build-utilities/internal/PromiseTypes.ts b/packages/v2-es-membrane/build-utilities/internal/PromiseTypes.ts similarity index 100% rename from build-utilities/internal/PromiseTypes.ts rename to packages/v2-es-membrane/build-utilities/internal/PromiseTypes.ts diff --git a/build-utilities/loader-hooks/debug/loader.js b/packages/v2-es-membrane/build-utilities/loader-hooks/debug/loader.js similarity index 100% rename from build-utilities/loader-hooks/debug/loader.js rename to packages/v2-es-membrane/build-utilities/loader-hooks/debug/loader.js diff --git a/build-utilities/loader-hooks/debug/registration.js b/packages/v2-es-membrane/build-utilities/loader-hooks/debug/registration.js similarity index 100% rename from build-utilities/loader-hooks/debug/registration.js rename to packages/v2-es-membrane/build-utilities/loader-hooks/debug/registration.js diff --git a/build-utilities/loader-hooks/subpath/logWithHook.d.ts b/packages/v2-es-membrane/build-utilities/loader-hooks/subpath/logWithHook.d.ts similarity index 100% rename from build-utilities/loader-hooks/subpath/logWithHook.d.ts rename to packages/v2-es-membrane/build-utilities/loader-hooks/subpath/logWithHook.d.ts diff --git a/build-utilities/loader-hooks/subpath/logWithHook.js b/packages/v2-es-membrane/build-utilities/loader-hooks/subpath/logWithHook.js similarity index 100% rename from build-utilities/loader-hooks/subpath/logWithHook.js rename to packages/v2-es-membrane/build-utilities/loader-hooks/subpath/logWithHook.js diff --git a/build-utilities/loader-hooks/subpath/registration.js b/packages/v2-es-membrane/build-utilities/loader-hooks/subpath/registration.js similarity index 100% rename from build-utilities/loader-hooks/subpath/registration.js rename to packages/v2-es-membrane/build-utilities/loader-hooks/subpath/registration.js diff --git a/build-utilities/loader-hooks/subpath/replacement-map.d.ts b/packages/v2-es-membrane/build-utilities/loader-hooks/subpath/replacement-map.d.ts similarity index 100% rename from build-utilities/loader-hooks/subpath/replacement-map.d.ts rename to packages/v2-es-membrane/build-utilities/loader-hooks/subpath/replacement-map.d.ts diff --git a/build-utilities/loader-hooks/subpath/replacement-map.js b/packages/v2-es-membrane/build-utilities/loader-hooks/subpath/replacement-map.js similarity index 100% rename from build-utilities/loader-hooks/subpath/replacement-map.js rename to packages/v2-es-membrane/build-utilities/loader-hooks/subpath/replacement-map.js diff --git a/build-utilities/loader-hooks/subpath/resolver.js b/packages/v2-es-membrane/build-utilities/loader-hooks/subpath/resolver.js similarity index 100% rename from build-utilities/loader-hooks/subpath/resolver.js rename to packages/v2-es-membrane/build-utilities/loader-hooks/subpath/resolver.js diff --git a/build-utilities/source/BuildPromise.ts b/packages/v2-es-membrane/build-utilities/source/BuildPromise.ts similarity index 100% rename from build-utilities/source/BuildPromise.ts rename to packages/v2-es-membrane/build-utilities/source/BuildPromise.ts diff --git a/build-utilities/source/PromiseTypes.ts b/packages/v2-es-membrane/build-utilities/source/PromiseTypes.ts similarity index 100% rename from build-utilities/source/PromiseTypes.ts rename to packages/v2-es-membrane/build-utilities/source/PromiseTypes.ts diff --git a/build-utilities/source/readDirsDeep.ts b/packages/v2-es-membrane/build-utilities/source/readDirsDeep.ts similarity index 100% rename from build-utilities/source/readDirsDeep.ts rename to packages/v2-es-membrane/build-utilities/source/readDirsDeep.ts diff --git a/build-utilities/source/recursiveBuild.ts b/packages/v2-es-membrane/build-utilities/source/recursiveBuild.ts similarity index 100% rename from build-utilities/source/recursiveBuild.ts rename to packages/v2-es-membrane/build-utilities/source/recursiveBuild.ts diff --git a/build-utilities/source/runJasmine.ts b/packages/v2-es-membrane/build-utilities/source/runJasmine.ts similarity index 100% rename from build-utilities/source/runJasmine.ts rename to packages/v2-es-membrane/build-utilities/source/runJasmine.ts diff --git a/build-utilities/source/runModule.ts b/packages/v2-es-membrane/build-utilities/source/runModule.ts similarity index 100% rename from build-utilities/source/runModule.ts rename to packages/v2-es-membrane/build-utilities/source/runModule.ts diff --git a/build-utilities/source/runPrettify.ts b/packages/v2-es-membrane/build-utilities/source/runPrettify.ts similarity index 100% rename from build-utilities/source/runPrettify.ts rename to packages/v2-es-membrane/build-utilities/source/runPrettify.ts diff --git a/build-utilities/spec/BuildPromise.ts b/packages/v2-es-membrane/build-utilities/spec/BuildPromise.ts similarity index 100% rename from build-utilities/spec/BuildPromise.ts rename to packages/v2-es-membrane/build-utilities/spec/BuildPromise.ts diff --git a/build-utilities/spec/internal/PromiseTypes/SingletonPromise.ts b/packages/v2-es-membrane/build-utilities/spec/internal/PromiseTypes/SingletonPromise.ts similarity index 100% rename from build-utilities/spec/internal/PromiseTypes/SingletonPromise.ts rename to packages/v2-es-membrane/build-utilities/spec/internal/PromiseTypes/SingletonPromise.ts diff --git a/build-utilities/spec/loader-hooks/subpath/replacement-map.ts b/packages/v2-es-membrane/build-utilities/spec/loader-hooks/subpath/replacement-map.ts similarity index 100% rename from build-utilities/spec/loader-hooks/subpath/replacement-map.ts rename to packages/v2-es-membrane/build-utilities/spec/loader-hooks/subpath/replacement-map.ts diff --git a/build-utilities/spec/support/jasmine.json b/packages/v2-es-membrane/build-utilities/spec/support/jasmine.json similarity index 100% rename from build-utilities/spec/support/jasmine.json rename to packages/v2-es-membrane/build-utilities/spec/support/jasmine.json diff --git a/packages/v2-es-membrane/build-utilities/tsconfig.json b/packages/v2-es-membrane/build-utilities/tsconfig.json new file mode 100644 index 00000000..d211c0ab --- /dev/null +++ b/packages/v2-es-membrane/build-utilities/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "lib": ["ESNext"], + "module": "NodeNext", + "target": "ES2022", + "moduleResolution": "NodeNext", + "strict": true, + "sourceMap": true, + "declaration": true, + + "baseUrl": ".", + "paths": { + "#build-utilities/*": ["../build-utilities/*"] + }, + "composite": true + }, + + "exclude": [ + "spec/**" + ], + + "extends": "@tsconfig/node20/tsconfig.json" +} diff --git a/build.ts b/packages/v2-es-membrane/build.ts similarity index 100% rename from build.ts rename to packages/v2-es-membrane/build.ts diff --git a/_02a_aspects_mockups/README.md b/packages/v2-es-membrane/mothballed/_x1_aspects_mockups/README.md similarity index 100% rename from _02a_aspects_mockups/README.md rename to packages/v2-es-membrane/mothballed/_x1_aspects_mockups/README.md diff --git a/_02a_aspects_mockups/buildStage.ts b/packages/v2-es-membrane/mothballed/_x1_aspects_mockups/buildStage.ts similarity index 100% rename from _02a_aspects_mockups/buildStage.ts rename to packages/v2-es-membrane/mothballed/_x1_aspects_mockups/buildStage.ts diff --git a/_02a_aspects_mockups/spec/argumentsTrap.ts b/packages/v2-es-membrane/mothballed/_x1_aspects_mockups/spec/argumentsTrap.ts similarity index 100% rename from _02a_aspects_mockups/spec/argumentsTrap.ts rename to packages/v2-es-membrane/mothballed/_x1_aspects_mockups/spec/argumentsTrap.ts diff --git a/_02a_aspects_mockups/spec/classInvariants.ts b/packages/v2-es-membrane/mothballed/_x1_aspects_mockups/spec/classInvariants.ts similarity index 100% rename from _02a_aspects_mockups/spec/classInvariants.ts rename to packages/v2-es-membrane/mothballed/_x1_aspects_mockups/spec/classInvariants.ts diff --git a/_04_mirror_membranes/spec/support/jasmine.json b/packages/v2-es-membrane/mothballed/_x1_aspects_mockups/spec/support/jasmine.json similarity index 100% rename from _04_mirror_membranes/spec/support/jasmine.json rename to packages/v2-es-membrane/mothballed/_x1_aspects_mockups/spec/support/jasmine.json diff --git a/_x1_collections/source/array-utilities/ArrayNotImplementedCanary.mts b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/ArrayNotImplementedCanary.mts similarity index 100% rename from _x1_collections/source/array-utilities/ArrayNotImplementedCanary.mts rename to packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/ArrayNotImplementedCanary.mts diff --git a/_x1_collections/source/array-utilities/ImplementsArrayProxy.mts b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/ImplementsArrayProxy.mts similarity index 100% rename from _x1_collections/source/array-utilities/ImplementsArrayProxy.mts rename to packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/ImplementsArrayProxy.mts diff --git a/_x1_collections/source/array-utilities/NotImplementedHandler.mts b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/NotImplementedHandler.mts similarity index 100% rename from _x1_collections/source/array-utilities/NotImplementedHandler.mts rename to packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/NotImplementedHandler.mts diff --git a/_x1_collections/source/array-utilities/PrimitiveArrayProxyHandler.mts b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/PrimitiveArrayProxyHandler.mts similarity index 100% rename from _x1_collections/source/array-utilities/PrimitiveArrayProxyHandler.mts rename to packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/PrimitiveArrayProxyHandler.mts diff --git a/_x1_collections/source/array-utilities/PublicArrayProxyHandler.mts b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/PublicArrayProxyHandler.mts similarity index 100% rename from _x1_collections/source/array-utilities/PublicArrayProxyHandler.mts rename to packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/PublicArrayProxyHandler.mts diff --git a/_x1_collections/source/array-utilities/types/ArrayWithoutIndices.d.mts b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/ArrayWithoutIndices.d.mts similarity index 100% rename from _x1_collections/source/array-utilities/types/ArrayWithoutIndices.d.mts rename to packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/ArrayWithoutIndices.d.mts diff --git a/_x1_collections/source/array-utilities/types/BackingAndPublicDictionaries.d.mts b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/BackingAndPublicDictionaries.d.mts similarity index 100% rename from _x1_collections/source/array-utilities/types/BackingAndPublicDictionaries.d.mts rename to packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/BackingAndPublicDictionaries.d.mts diff --git a/_x1_collections/source/array-utilities/types/DataDescriptor.d.mts b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/DataDescriptor.d.mts similarity index 100% rename from _x1_collections/source/array-utilities/types/DataDescriptor.d.mts rename to packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/DataDescriptor.d.mts diff --git a/_x1_collections/source/array-utilities/types/PublicTypeUpdateableArray.d.mts b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/PublicTypeUpdateableArray.d.mts similarity index 88% rename from _x1_collections/source/array-utilities/types/PublicTypeUpdateableArray.d.mts rename to packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/PublicTypeUpdateableArray.d.mts index 82d9c24a..370dd8e3 100644 --- a/_x1_collections/source/array-utilities/types/PublicTypeUpdateableArray.d.mts +++ b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/PublicTypeUpdateableArray.d.mts @@ -1,6 +1,6 @@ import type { UpdateSymbolTracking -} from "./export-types.mjs"; +} from "./export-types.d.mts"; export interface PublicTypeUpdateableArray extends Array diff --git a/_x1_collections/source/array-utilities/types/UpdateSymbolTracking.d.mts b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/UpdateSymbolTracking.d.mts similarity index 100% rename from _x1_collections/source/array-utilities/types/UpdateSymbolTracking.d.mts rename to packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/UpdateSymbolTracking.d.mts diff --git a/_x1_collections/source/array-utilities/types/export-types.d.mts b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/export-types.d.mts similarity index 58% rename from _x1_collections/source/array-utilities/types/export-types.d.mts rename to packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/export-types.d.mts index 8379b8d4..ebf87c1f 100644 --- a/_x1_collections/source/array-utilities/types/export-types.d.mts +++ b/packages/v2-es-membrane/mothballed/_x1_collections/source/array-utilities/types/export-types.d.mts @@ -1,18 +1,18 @@ export type { ArrayWithoutIndices -} from "./ArrayWithoutIndices.mjs"; +} from "./ArrayWithoutIndices.d.mts"; export type { DataDescriptor -} from "./DataDescriptor.mjs"; +} from "./DataDescriptor.d.mts"; export type { BackingPublicContext, //BackingPublicContextWithMaps, //BackingAndPublicArrayDictionary, BackingAndPublicDictionary, -} from "./BackingAndPublicDictionaries.mjs"; +} from "./BackingAndPublicDictionaries.d.mts"; export type { PublicTypeUpdateableArray, -} from "./PublicTypeUpdateableArray.mjs"; +} from "./PublicTypeUpdateableArray.d.mts"; export type { UpdateSymbolTracking -} from "./UpdateSymbolTracking.mjs"; +} from "./UpdateSymbolTracking.d.mts"; diff --git a/_y4b_aspects_stubs/README.md b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/README.md similarity index 100% rename from _y4b_aspects_stubs/README.md rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/README.md diff --git a/_y4b_aspects_stubs/fixtures/components/methodDecorators/spy.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/fixtures/components/methodDecorators/spy.mts similarity index 100% rename from _y4b_aspects_stubs/fixtures/components/methodDecorators/spy.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/fixtures/components/methodDecorators/spy.mts diff --git a/_y4b_aspects_stubs/source/AspectsStubBase.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/AspectsStubBase.mts similarity index 100% rename from _y4b_aspects_stubs/source/AspectsStubBase.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/AspectsStubBase.mts diff --git a/_y4b_aspects_stubs/source/StubClassSet.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/StubClassSet.mts similarity index 100% rename from _y4b_aspects_stubs/source/StubClassSet.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/StubClassSet.mts diff --git a/_y4b_aspects_stubs/source/StubMap.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/StubMap.mts similarity index 100% rename from _y4b_aspects_stubs/source/StubMap.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/StubMap.mts diff --git a/_y4b_aspects_stubs/source/decorators/classInvariants.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/classInvariants.mts similarity index 100% rename from _y4b_aspects_stubs/source/decorators/classInvariants.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/classInvariants.mts diff --git a/_y4b_aspects_stubs/source/decorators/defineExtraParamsShort.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/defineExtraParamsShort.mts similarity index 100% rename from _y4b_aspects_stubs/source/decorators/defineExtraParamsShort.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/defineExtraParamsShort.mts diff --git a/_y4b_aspects_stubs/source/decorators/headCall.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/headCall.mts similarity index 100% rename from _y4b_aspects_stubs/source/decorators/headCall.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/headCall.mts diff --git a/_y4b_aspects_stubs/source/decorators/methodDecorators.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/methodDecorators.mts similarity index 100% rename from _y4b_aspects_stubs/source/decorators/methodDecorators.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/methodDecorators.mts diff --git a/_y4b_aspects_stubs/source/decorators/notImplemented.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/notImplemented.mts similarity index 100% rename from _y4b_aspects_stubs/source/decorators/notImplemented.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/notImplemented.mts diff --git a/_y4b_aspects_stubs/source/decorators/tailCall.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/tailCall.mts similarity index 100% rename from _y4b_aspects_stubs/source/decorators/tailCall.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/decorators/tailCall.mts diff --git a/_y4b_aspects_stubs/source/mixins/AddMethodDecoratorsStub.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/AddMethodDecoratorsStub.mts similarity index 100% rename from _y4b_aspects_stubs/source/mixins/AddMethodDecoratorsStub.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/AddMethodDecoratorsStub.mts diff --git a/_y4b_aspects_stubs/source/mixins/ClassInvariantsWrapperStub.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/ClassInvariantsWrapperStub.mts similarity index 100% rename from _y4b_aspects_stubs/source/mixins/ClassInvariantsWrapperStub.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/ClassInvariantsWrapperStub.mts diff --git a/_y4b_aspects_stubs/source/mixins/NotImplementedBase.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/NotImplementedBase.mts similarity index 100% rename from _y4b_aspects_stubs/source/mixins/NotImplementedBase.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/NotImplementedBase.mts diff --git a/_y4b_aspects_stubs/source/mixins/TransitionsHead.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/TransitionsHead.mts similarity index 100% rename from _y4b_aspects_stubs/source/mixins/TransitionsHead.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/TransitionsHead.mts diff --git a/_y4b_aspects_stubs/source/mixins/TransitionsTail.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/TransitionsTail.mts similarity index 100% rename from _y4b_aspects_stubs/source/mixins/TransitionsTail.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/TransitionsTail.mts diff --git a/_y4b_aspects_stubs/source/mixins/Transitions_NotImplemented.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/Transitions_NotImplemented.mts similarity index 100% rename from _y4b_aspects_stubs/source/mixins/Transitions_NotImplemented.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/mixins/Transitions_NotImplemented.mts diff --git a/_y4b_aspects_stubs/source/types/AddImport.d.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/AddImport.d.mts similarity index 100% rename from _y4b_aspects_stubs/source/types/AddImport.d.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/AddImport.d.mts diff --git a/_y4b_aspects_stubs/source/types/AspectsStubDecorator.d.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/AspectsStubDecorator.d.mts similarity index 85% rename from _y4b_aspects_stubs/source/types/AspectsStubDecorator.d.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/AspectsStubDecorator.d.mts index 8354a976..f3dff975 100644 --- a/_y4b_aspects_stubs/source/types/AspectsStubDecorator.d.mts +++ b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/AspectsStubDecorator.d.mts @@ -6,7 +6,7 @@ import type { SubclassDecorator, } from "#mixin_decorators/source/types/SubclassDecorator.mjs"; -import AspectsStubBase from "../AspectsStubBase.mjs"; +import AspectsStubBase from "../AspectsStubBase.mts"; export type AspectsStubDecorator< Added extends StaticAndInstance, diff --git a/_y4b_aspects_stubs/source/types/MethodDecoratorsOfClass.d.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/MethodDecoratorsOfClass.d.mts similarity index 87% rename from _y4b_aspects_stubs/source/types/MethodDecoratorsOfClass.d.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/MethodDecoratorsOfClass.d.mts index a6c97670..269dbd82 100644 --- a/_y4b_aspects_stubs/source/types/MethodDecoratorsOfClass.d.mts +++ b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/MethodDecoratorsOfClass.d.mts @@ -2,16 +2,16 @@ import type { MethodsOnlyType -} from "./MethodsOnlyType.mjs"; +} from "./MethodsOnlyType.mts"; import type { AddImport -} from "./AddImport.mjs"; +} from "./AddImport.d.mts"; import type { TS_Parameter, TS_TypeParameter, -} from "./ts-morph-native.mjs"; +} from "./ts-morph-native.d.mts"; // #endregion preamble diff --git a/_y4b_aspects_stubs/source/types/StubClassSetConfiguration.d.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/StubClassSetConfiguration.d.mts similarity index 94% rename from _y4b_aspects_stubs/source/types/StubClassSetConfiguration.d.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/StubClassSetConfiguration.d.mts index b03193d3..344c1b4c 100644 --- a/_y4b_aspects_stubs/source/types/StubClassSetConfiguration.d.mts +++ b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/StubClassSetConfiguration.d.mts @@ -3,16 +3,16 @@ import { SourceFile } from "ts-morph"; import type { //TS_Method, TS_Parameter -} from "./ts-morph-native.mjs"; +} from "./ts-morph-native.d.mts"; import type { ParamRenamer -} from "./paramRenamer.mjs"; +} from "./paramRenamer.d.mts"; import { type MiddleParamBuilder as TransitionsEntryMidBuilder, type TailParamBuilder as TransitionsEntryTailBuilder, -} from "../types/paramBuilders.mjs"; +} from "./paramBuilders.d.mts"; export type StubClassSetConfiguration = Readonly<{ /** the source file containing the interface or type alias. */ diff --git a/_y4b_aspects_stubs/source/types/TransitionInterface.d.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/TransitionInterface.d.mts similarity index 95% rename from _y4b_aspects_stubs/source/types/TransitionInterface.d.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/TransitionInterface.d.mts index b2777f4a..d5b7e886 100644 --- a/_y4b_aspects_stubs/source/types/TransitionInterface.d.mts +++ b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/TransitionInterface.d.mts @@ -1,6 +1,6 @@ import type { MethodsOnlyType -} from "./MethodsOnlyType.mjs"; +} from "./MethodsOnlyType.mts"; type TransitionMethod< IncludeHeadParameters extends boolean, diff --git a/_y4b_aspects_stubs/source/types/paramBuilders.d.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/paramBuilders.d.mts similarity index 97% rename from _y4b_aspects_stubs/source/types/paramBuilders.d.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/paramBuilders.d.mts index b0975c17..fecce79f 100644 --- a/_y4b_aspects_stubs/source/types/paramBuilders.d.mts +++ b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/paramBuilders.d.mts @@ -7,7 +7,7 @@ import AspectsStubBase from "../AspectsStubBase.mts"; import type { TS_Method, TS_Parameter, -} from "./ts-morph-native.mjs"; +} from "./ts-morph-native.d.mts"; /** * Build a new "middle" parameter for a transitions-head class. diff --git a/_y4b_aspects_stubs/source/types/paramRenamer.d.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/paramRenamer.d.mts similarity index 100% rename from _y4b_aspects_stubs/source/types/paramRenamer.d.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/paramRenamer.d.mts diff --git a/_y4b_aspects_stubs/source/types/ts-morph-native.d.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/ts-morph-native.d.mts similarity index 100% rename from _y4b_aspects_stubs/source/types/ts-morph-native.d.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/types/ts-morph-native.d.mts diff --git a/_y4b_aspects_stubs/source/utilities/aspectTypeImport.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/utilities/aspectTypeImport.mts similarity index 100% rename from _y4b_aspects_stubs/source/utilities/aspectTypeImport.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/utilities/aspectTypeImport.mts diff --git a/_y4b_aspects_stubs/source/utilities/extractType.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/utilities/extractType.mts similarity index 100% rename from _y4b_aspects_stubs/source/utilities/extractType.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/utilities/extractType.mts diff --git a/_y4b_aspects_stubs/source/utilities/serializeParameter.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/utilities/serializeParameter.mts similarity index 100% rename from _y4b_aspects_stubs/source/utilities/serializeParameter.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/source/utilities/serializeParameter.mts diff --git a/_y4b_aspects_stubs/spec-build/aspectsStubs.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec-build/aspectsStubs.mts similarity index 100% rename from _y4b_aspects_stubs/spec-build/aspectsStubs.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec-build/aspectsStubs.mts diff --git a/_y4b_aspects_stubs/spec-build/cleanStubsDir.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec-build/cleanStubsDir.mts similarity index 100% rename from _y4b_aspects_stubs/spec-build/cleanStubsDir.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec-build/cleanStubsDir.mts diff --git a/_y4b_aspects_stubs/spec-build/constants.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec-build/constants.mts similarity index 100% rename from _y4b_aspects_stubs/spec-build/constants.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec-build/constants.mts diff --git a/_y4b_aspects_stubs/spec-build/methodDecoratedStub.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec-build/methodDecoratedStub.mts similarity index 100% rename from _y4b_aspects_stubs/spec-build/methodDecoratedStub.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec-build/methodDecoratedStub.mts diff --git a/_y4b_aspects_stubs/spec-build/support.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec-build/support.mts similarity index 100% rename from _y4b_aspects_stubs/spec-build/support.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec-build/support.mts diff --git a/_y4b_aspects_stubs/spec/ClassInvariantsWrapper.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec/ClassInvariantsWrapper.mts similarity index 100% rename from _y4b_aspects_stubs/spec/ClassInvariantsWrapper.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec/ClassInvariantsWrapper.mts diff --git a/_y4b_aspects_stubs/spec/MethodDecoratorsOfClass.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec/MethodDecoratorsOfClass.mts similarity index 100% rename from _y4b_aspects_stubs/spec/MethodDecoratorsOfClass.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec/MethodDecoratorsOfClass.mts diff --git a/_y4b_aspects_stubs/spec/NotImplemented_Base.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec/NotImplemented_Base.mts similarity index 100% rename from _y4b_aspects_stubs/spec/NotImplemented_Base.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec/NotImplemented_Base.mts diff --git a/_y4b_aspects_stubs/spec/TransitionsTail.mts b/packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec/TransitionsTail.mts similarity index 100% rename from _y4b_aspects_stubs/spec/TransitionsTail.mts rename to packages/v2-es-membrane/mothballed/_y4b_aspects_stubs/spec/TransitionsTail.mts diff --git a/_y4c_aspects_decorators/README.md b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/README.md similarity index 100% rename from _y4c_aspects_decorators/README.md rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/README.md diff --git a/_y4c_aspects_decorators/fixtures/AspectsDecorators.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/fixtures/AspectsDecorators.mts similarity index 100% rename from _y4c_aspects_decorators/fixtures/AspectsDecorators.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/fixtures/AspectsDecorators.mts diff --git a/_y4c_aspects_decorators/fixtures/ClassInvariantsWrapper.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/fixtures/ClassInvariantsWrapper.mts similarity index 100% rename from _y4c_aspects_decorators/fixtures/ClassInvariantsWrapper.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/fixtures/ClassInvariantsWrapper.mts diff --git a/_y4c_aspects_decorators/fixtures/NumberStringClassAssert.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/fixtures/NumberStringClassAssert.mts similarity index 100% rename from _y4c_aspects_decorators/fixtures/NumberStringClassAssert.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/fixtures/NumberStringClassAssert.mts diff --git a/_y4c_aspects_decorators/source/AspectsDecorators.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/AspectsDecorators.mts similarity index 100% rename from _y4c_aspects_decorators/source/AspectsDecorators.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/AspectsDecorators.mts diff --git a/_y4c_aspects_decorators/source/classes/classInvariant.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/classes/classInvariant.mts similarity index 100% rename from _y4c_aspects_decorators/source/classes/classInvariant.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/classes/classInvariant.mts diff --git a/_y4c_aspects_decorators/source/methods/argumentsTrap.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/argumentsTrap.mts similarity index 100% rename from _y4c_aspects_decorators/source/methods/argumentsTrap.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/argumentsTrap.mts diff --git a/_y4c_aspects_decorators/source/methods/bodyTrap.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/bodyTrap.mts similarity index 100% rename from _y4c_aspects_decorators/source/methods/bodyTrap.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/bodyTrap.mts diff --git a/_y4c_aspects_decorators/source/methods/prePostCondition.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/prePostCondition.mts similarity index 100% rename from _y4c_aspects_decorators/source/methods/prePostCondition.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/prePostCondition.mts diff --git a/_y4c_aspects_decorators/source/methods/replacementMethod.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/replacementMethod.mts similarity index 100% rename from _y4c_aspects_decorators/source/methods/replacementMethod.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/replacementMethod.mts diff --git a/_y4c_aspects_decorators/source/methods/returnTrap.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/returnTrap.mts similarity index 100% rename from _y4c_aspects_decorators/source/methods/returnTrap.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/returnTrap.mts diff --git a/_y4c_aspects_decorators/source/methods/stateMachine.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/stateMachine.mts similarity index 100% rename from _y4c_aspects_decorators/source/methods/stateMachine.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/methods/stateMachine.mts diff --git a/_y4c_aspects_decorators/source/symbol-keys.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/symbol-keys.mts similarity index 100% rename from _y4c_aspects_decorators/source/symbol-keys.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/symbol-keys.mts diff --git a/_y4c_aspects_decorators/source/types/ArgumentsTrap.d.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/ArgumentsTrap.d.mts similarity index 87% rename from _y4c_aspects_decorators/source/types/ArgumentsTrap.d.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/ArgumentsTrap.d.mts index 931c6fdd..fa4fde96 100644 --- a/_y4c_aspects_decorators/source/types/ArgumentsTrap.d.mts +++ b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/ArgumentsTrap.d.mts @@ -8,11 +8,11 @@ import type { import type { PrependArgumentsMethod, -} from "./PrependArguments.mjs"; +} from "./PrependArguments.d.mts"; import type { SharedVariablesDictionary -} from "./SharedVariablesDictionary.mjs"; +} from "./SharedVariablesDictionary.d.mts"; /** `(this: This, __variables__: SharedVariables, ...parameters) => void` */ export type ArgumentsTrap< diff --git a/_y4c_aspects_decorators/source/types/GenericFunction.d.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/GenericFunction.d.mts similarity index 100% rename from _y4c_aspects_decorators/source/types/GenericFunction.d.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/GenericFunction.d.mts diff --git a/_y4c_aspects_decorators/source/types/MethodAspects.d.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/MethodAspects.d.mts similarity index 86% rename from _y4c_aspects_decorators/source/types/MethodAspects.d.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/MethodAspects.d.mts index 568c1865..0a85441f 100644 --- a/_y4c_aspects_decorators/source/types/MethodAspects.d.mts +++ b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/MethodAspects.d.mts @@ -1,6 +1,6 @@ import type { UnshiftableArray, -} from "#stage_utilities/source/types/Utility.mjs"; +} from "#stage_utilities/source/types/Utility.d.mts"; import type { MethodsOnlyType @@ -8,17 +8,17 @@ import type { import type { ArgumentsTrap -} from "./ArgumentsTrap.mjs"; +} from "./ArgumentsTrap.d.mts"; import type { SharedVariablesDictionary, PrependedIndeterminate, -} from "./SharedVariablesDictionary.mjs"; +} from "./SharedVariablesDictionary.d.mts"; import type { PreconditionWithContext, PostconditionWithContext, -} from "./PrePostConditionsContext.mjs"; +} from "./PrePostConditionsContext.d.mts"; /* eslint-disable @typescript-eslint/no-explicit-any */ export type Method< diff --git a/_y4c_aspects_decorators/source/types/PrePostConditionsContext.d.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/PrePostConditionsContext.d.mts similarity index 97% rename from _y4c_aspects_decorators/source/types/PrePostConditionsContext.d.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/PrePostConditionsContext.d.mts index 0830b8df..209572bd 100644 --- a/_y4c_aspects_decorators/source/types/PrePostConditionsContext.d.mts +++ b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/PrePostConditionsContext.d.mts @@ -13,7 +13,7 @@ import type { import type { PrependArgumentsMethod, -} from "./PrependArguments.mjs"; +} from "./PrependArguments.d.mts"; // #endregion preamble export interface PreconditionContext { diff --git a/_y4c_aspects_decorators/source/types/PrependArguments.d.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/PrependArguments.d.mts similarity index 100% rename from _y4c_aspects_decorators/source/types/PrependArguments.d.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/PrependArguments.d.mts diff --git a/_y4c_aspects_decorators/source/types/ReturnTrap.d.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/ReturnTrap.d.mts similarity index 86% rename from _y4c_aspects_decorators/source/types/ReturnTrap.d.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/ReturnTrap.d.mts index 41910c7b..897875fa 100644 --- a/_y4c_aspects_decorators/source/types/ReturnTrap.d.mts +++ b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/ReturnTrap.d.mts @@ -8,15 +8,15 @@ import type { import type { PrependArgumentsMethod, -} from "./PrependArguments.mjs"; +} from "./PrependArguments.d.mts"; import type { SharedVariablesDictionary -} from "./SharedVariablesDictionary.mjs"; +} from "./SharedVariablesDictionary.d.mts"; import { RETURN_NOT_REPLACED, -} from "../symbol-keys.mjs"; +} from "../symbol-keys.mts"; /** `(this: This, __variables__: SharedVariables, __rv__: ReturnType, ...parameters) => ReturnType | typeof RETURN_NOT_REPLACED;` */ export type ReturnTrapMayOverride< diff --git a/_y4c_aspects_decorators/source/types/SharedVariablesDictionary.d.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/SharedVariablesDictionary.d.mts similarity index 90% rename from _y4c_aspects_decorators/source/types/SharedVariablesDictionary.d.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/SharedVariablesDictionary.d.mts index bdd8af5e..d126d54a 100644 --- a/_y4c_aspects_decorators/source/types/SharedVariablesDictionary.d.mts +++ b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/source/types/SharedVariablesDictionary.d.mts @@ -12,13 +12,13 @@ import type { import type { GenericFunction -} from "./GenericFunction.mjs"; +} from "./GenericFunction.d.mts"; import type { PrependArgumentsMethod -} from "./PrependArguments.mjs"; +} from "./PrependArguments.d.mts"; -import { INDETERMINATE } from "../symbol-keys.mjs"; +import { INDETERMINATE } from "../symbol-keys.mts"; /** * @typeParam This - the base type we're working with. diff --git a/_y4c_aspects_decorators/spec/classes/classInvariant.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/classes/classInvariant.mts similarity index 100% rename from _y4c_aspects_decorators/spec/classes/classInvariant.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/classes/classInvariant.mts diff --git a/_y4c_aspects_decorators/spec/methods/argumentsTrap.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/methods/argumentsTrap.mts similarity index 100% rename from _y4c_aspects_decorators/spec/methods/argumentsTrap.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/methods/argumentsTrap.mts diff --git a/_y4c_aspects_decorators/spec/methods/bodyTrap.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/methods/bodyTrap.mts similarity index 100% rename from _y4c_aspects_decorators/spec/methods/bodyTrap.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/methods/bodyTrap.mts diff --git a/_y4c_aspects_decorators/spec/methods/integration.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/methods/integration.mts similarity index 100% rename from _y4c_aspects_decorators/spec/methods/integration.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/methods/integration.mts diff --git a/_y4c_aspects_decorators/spec/methods/prePostConditions.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/methods/prePostConditions.mts similarity index 100% rename from _y4c_aspects_decorators/spec/methods/prePostConditions.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/methods/prePostConditions.mts diff --git a/_y4c_aspects_decorators/spec/methods/returnTrap.mts b/packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/methods/returnTrap.mts similarity index 100% rename from _y4c_aspects_decorators/spec/methods/returnTrap.mts rename to packages/v2-es-membrane/mothballed/_y4c_aspects_decorators/spec/methods/returnTrap.mts diff --git a/_y4z_aspects_test_fixtures/build/aspectsStubs.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/build/aspectsStubs.mts similarity index 100% rename from _y4z_aspects_test_fixtures/build/aspectsStubs.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/build/aspectsStubs.mts diff --git a/_y4z_aspects_test_fixtures/build/cleanStubsDir.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/build/cleanStubsDir.mts similarity index 100% rename from _y4z_aspects_test_fixtures/build/cleanStubsDir.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/build/cleanStubsDir.mts diff --git a/_y4z_aspects_test_fixtures/build/constants.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/build/constants.mts similarity index 100% rename from _y4z_aspects_test_fixtures/build/constants.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/build/constants.mts diff --git a/_y4z_aspects_test_fixtures/build/methodDecoratedStub.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/build/methodDecoratedStub.mts similarity index 100% rename from _y4z_aspects_test_fixtures/build/methodDecoratedStub.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/build/methodDecoratedStub.mts diff --git a/_y4z_aspects_test_fixtures/build/support.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/build/support.mts similarity index 100% rename from _y4z_aspects_test_fixtures/build/support.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/build/support.mts diff --git a/_y4z_aspects_test_fixtures/fixtures/components/methodDecorators/spy.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/components/methodDecorators/spy.mts similarity index 100% rename from _y4z_aspects_test_fixtures/fixtures/components/methodDecorators/spy.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/components/methodDecorators/spy.mts diff --git a/_y4z_aspects_test_fixtures/fixtures/generated/stubs/ClassInvariantsWrapper.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/ClassInvariantsWrapper.mts similarity index 100% rename from _y4z_aspects_test_fixtures/fixtures/generated/stubs/ClassInvariantsWrapper.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/ClassInvariantsWrapper.mts diff --git a/_y4z_aspects_test_fixtures/fixtures/generated/stubs/NotImplemented_Base.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/NotImplemented_Base.mts similarity index 100% rename from _y4z_aspects_test_fixtures/fixtures/generated/stubs/NotImplemented_Base.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/NotImplemented_Base.mts diff --git a/_y4z_aspects_test_fixtures/fixtures/generated/stubs/SpyMethodDecorated.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/SpyMethodDecorated.mts similarity index 100% rename from _y4z_aspects_test_fixtures/fixtures/generated/stubs/SpyMethodDecorated.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/SpyMethodDecorated.mts diff --git a/_y4z_aspects_test_fixtures/fixtures/generated/stubs/TransitionsHead.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/TransitionsHead.mts similarity index 100% rename from _y4z_aspects_test_fixtures/fixtures/generated/stubs/TransitionsHead.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/TransitionsHead.mts diff --git a/_y4z_aspects_test_fixtures/fixtures/generated/stubs/TransitionsTail.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/TransitionsTail.mts similarity index 100% rename from _y4z_aspects_test_fixtures/fixtures/generated/stubs/TransitionsTail.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/TransitionsTail.mts diff --git a/_y4z_aspects_test_fixtures/fixtures/generated/stubs/Transitions_NotImplemented.mts b/packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/Transitions_NotImplemented.mts similarity index 100% rename from _y4z_aspects_test_fixtures/fixtures/generated/stubs/Transitions_NotImplemented.mts rename to packages/v2-es-membrane/mothballed/_y4z_aspects_test_fixtures/fixtures/generated/stubs/Transitions_NotImplemented.mts diff --git a/packages/v2-es-membrane/package-lock.json b/packages/v2-es-membrane/package-lock.json new file mode 100644 index 00000000..3a4d912e --- /dev/null +++ b/packages/v2-es-membrane/package-lock.json @@ -0,0 +1,1979 @@ +{ + "name": "es-membrane", + "version": "0.11.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "es-membrane", + "version": "0.11.0", + "license": "ISC", + "devDependencies": { + "@tsconfig/node20": "^20.1.4", + "@types/jasmine": "^5.1.4", + "@types/node": "^18.19.34", + "jasmine": "^5.1.0", + "mixin-decorators": "^1.0.1", + "prettier": "^3.3.3", + "ts-morph": "^23.0.0", + "ts-morph-structures": "^1.1.2", + "ts-node": "^10.9.2", + "tsimp": "^2.0.11", + "tslib": "^2.6.3", + "type-fest": "^4.20.1", + "typescript": "^5.5.2" + }, + "engines": { + "node": ">=18.19" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cached": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/cached/-/cached-1.0.1.tgz", + "integrity": "sha512-7kGcJ9Hc1f4qpTApWz3swxbF9Qv1NF/GxuPtXeTptbsgvJIoufSd0h854Nq/2bw80F5C1onsFgEI05l+q0e4vw==", + "dev": true, + "dependencies": { + "@isaacs/catcher": "^1.0.0" + } + }, + "node_modules/@isaacs/catcher": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@isaacs/catcher/-/catcher-1.0.4.tgz", + "integrity": "sha512-g2klMwbnguClWNnCeQ1zYaDJsvPbIbnjdJPDE0z09MqoejJDZSLK5vIKiClq2Bkg5ubuI8vaN6wfIUi5GYzMVA==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ts-morph/common": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.24.0.tgz", + "integrity": "sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==", + "dev": true, + "dependencies": { + "fast-glob": "^3.3.2", + "minimatch": "^9.0.4", + "mkdirp": "^3.0.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@tsconfig/node20": { + "version": "20.1.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.4.tgz", + "integrity": "sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==", + "dev": true + }, + "node_modules/@types/jasmine": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.4.tgz", + "integrity": "sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.19.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.34.tgz", + "integrity": "sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/code-block-writer": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.1.tgz", + "integrity": "sha512-c5or4P6erEA69TxaxTNcHUNcIn+oyxSRTOWV+pSYF+z4epXqNvwvJ70XPGjPNgue83oAFAPBRQYwpAJ/Hpe/Sg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.1.0.tgz", + "integrity": "sha512-prmJlC1dbLhti4nE4XAPDWmfJesYO15sjGXVp7Cs7Ym5I9Xtwa/hUHxxJXjnpfLO72+ySttA0Ztf8g/RiVnUKw==", + "dev": true, + "dependencies": { + "glob": "^10.2.2", + "jasmine-core": "~5.1.0" + }, + "bin": { + "jasmine": "bin/jasmine.js" + } + }, + "node_modules/jasmine-core": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.1.2.tgz", + "integrity": "sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", + "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mixin-decorators": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mixin-decorators/-/mixin-decorators-1.0.1.tgz", + "integrity": "sha512-oYxZmMXLsIoun/095KjIdCP+6UyXjZMM460S88NvfBTc6xS2Yf29uLf6SNVU0iy6UDdtYOMWxN0hm0O4xOT4Tw==", + "dev": true, + "dependencies": { + "type-fest": "^4.9.0" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", + "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sock-daemon": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/sock-daemon/-/sock-daemon-1.4.2.tgz", + "integrity": "sha512-IzbegWshWWR+UzQ7487mbdYNmfJ1jXUXQBUHooqtpylO+aW0vMVbFN2d2ug3CSPZ0wbG7ZTTGwpUuthIDFIOGg==", + "dev": true, + "dependencies": { + "rimraf": "^5.0.5", + "signal-exit": "^4.1.0", + "socket-post-message": "^1.0.3" + }, + "engines": { + "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + } + }, + "node_modules/socket-post-message": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/socket-post-message/-/socket-post-message-1.0.3.tgz", + "integrity": "sha512-UhJaB3xR2oF+HvddFOq2cBZi4zVKOHvdiBo+BaScNxsEUg3TLWSP8BkweKfe07kfH1thjn1hJR0af/w1EtBFjg==", + "dev": true + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-morph": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-23.0.0.tgz", + "integrity": "sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==", + "dev": true, + "dependencies": { + "@ts-morph/common": "~0.24.0", + "code-block-writer": "^13.0.1" + } + }, + "node_modules/ts-morph-structures": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ts-morph-structures/-/ts-morph-structures-1.1.2.tgz", + "integrity": "sha512-2LK3wB3/FpM5vwcoEgfa2P9+8kSO1Gh3FRYLc3ViWQTcbc0M5yj0iehN2MC4By5bOZpEXNGGRjgJJ9PWnLWszQ==", + "dev": true, + "dependencies": { + "mixin-decorators": "^1.0.1" + }, + "engines": { + "node": ">=18.19" + }, + "peerDependencies": { + "ts-morph": "^23.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsimp": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/tsimp/-/tsimp-2.0.11.tgz", + "integrity": "sha512-wRhMmvar8tWHN3ZmykD8f4B4sjCn/f8DFM67LRY+stf/LPa2Kq8ATE2PIi570/DiDJA8kjjxzos3EgP0LmnFLA==", + "dev": true, + "dependencies": { + "@isaacs/cached": "^1.0.1", + "@isaacs/catcher": "^1.0.4", + "foreground-child": "^3.1.1", + "mkdirp": "^3.0.1", + "pirates": "^4.0.6", + "rimraf": "^5.0.5", + "signal-exit": "^4.1.0", + "sock-daemon": "^1.4.2", + "walk-up-path": "^3.0.1" + }, + "bin": { + "tsimp": "dist/esm/bin.mjs" + }, + "engines": { + "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" + }, + "peerDependencies": { + "typescript": "^5.1.0" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, + "node_modules/type-fest": { + "version": "4.20.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.20.1.tgz", + "integrity": "sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/walk-up-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + } + }, + "dependencies": { + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + } + }, + "@isaacs/cached": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/cached/-/cached-1.0.1.tgz", + "integrity": "sha512-7kGcJ9Hc1f4qpTApWz3swxbF9Qv1NF/GxuPtXeTptbsgvJIoufSd0h854Nq/2bw80F5C1onsFgEI05l+q0e4vw==", + "dev": true, + "requires": { + "@isaacs/catcher": "^1.0.0" + } + }, + "@isaacs/catcher": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@isaacs/catcher/-/catcher-1.0.4.tgz", + "integrity": "sha512-g2klMwbnguClWNnCeQ1zYaDJsvPbIbnjdJPDE0z09MqoejJDZSLK5vIKiClq2Bkg5ubuI8vaN6wfIUi5GYzMVA==", + "dev": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, + "@ts-morph/common": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.24.0.tgz", + "integrity": "sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==", + "dev": true, + "requires": { + "fast-glob": "^3.3.2", + "minimatch": "^9.0.4", + "mkdirp": "^3.0.1", + "path-browserify": "^1.0.1" + } + }, + "@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "@tsconfig/node20": { + "version": "20.1.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.4.tgz", + "integrity": "sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==", + "dev": true + }, + "@types/jasmine": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.4.tgz", + "integrity": "sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w==", + "dev": true + }, + "@types/node": { + "version": "18.19.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.34.tgz", + "integrity": "sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "dev": true + }, + "acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "requires": { + "acorn": "^8.11.0" + } + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "code-block-writer": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.1.tgz", + "integrity": "sha512-c5or4P6erEA69TxaxTNcHUNcIn+oyxSRTOWV+pSYF+z4epXqNvwvJ70XPGjPNgue83oAFAPBRQYwpAJ/Hpe/Sg==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.1.0.tgz", + "integrity": "sha512-prmJlC1dbLhti4nE4XAPDWmfJesYO15sjGXVp7Cs7Ym5I9Xtwa/hUHxxJXjnpfLO72+ySttA0Ztf8g/RiVnUKw==", + "dev": true, + "requires": { + "glob": "^10.2.2", + "jasmine-core": "~5.1.0" + } + }, + "jasmine-core": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.1.2.tgz", + "integrity": "sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA==", + "dev": true + }, + "lru-cache": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", + "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", + "dev": true + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + }, + "mixin-decorators": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mixin-decorators/-/mixin-decorators-1.0.1.tgz", + "integrity": "sha512-oYxZmMXLsIoun/095KjIdCP+6UyXjZMM460S88NvfBTc6xS2Yf29uLf6SNVU0iy6UDdtYOMWxN0hm0O4xOT4Tw==", + "dev": true, + "requires": { + "type-fest": "^4.9.0" + } + }, + "mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true + }, + "package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true + }, + "prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", + "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", + "dev": true, + "requires": { + "glob": "^10.3.7" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "sock-daemon": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/sock-daemon/-/sock-daemon-1.4.2.tgz", + "integrity": "sha512-IzbegWshWWR+UzQ7487mbdYNmfJ1jXUXQBUHooqtpylO+aW0vMVbFN2d2ug3CSPZ0wbG7ZTTGwpUuthIDFIOGg==", + "dev": true, + "requires": { + "rimraf": "^5.0.5", + "signal-exit": "^4.1.0", + "socket-post-message": "^1.0.3" + } + }, + "socket-post-message": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/socket-post-message/-/socket-post-message-1.0.3.tgz", + "integrity": "sha512-UhJaB3xR2oF+HvddFOq2cBZi4zVKOHvdiBo+BaScNxsEUg3TLWSP8BkweKfe07kfH1thjn1hJR0af/w1EtBFjg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "ts-morph": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-23.0.0.tgz", + "integrity": "sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==", + "dev": true, + "requires": { + "@ts-morph/common": "~0.24.0", + "code-block-writer": "^13.0.1" + } + }, + "ts-morph-structures": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ts-morph-structures/-/ts-morph-structures-1.1.2.tgz", + "integrity": "sha512-2LK3wB3/FpM5vwcoEgfa2P9+8kSO1Gh3FRYLc3ViWQTcbc0M5yj0iehN2MC4By5bOZpEXNGGRjgJJ9PWnLWszQ==", + "dev": true, + "requires": { + "mixin-decorators": "^1.0.1" + } + }, + "ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, + "tsimp": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/tsimp/-/tsimp-2.0.11.tgz", + "integrity": "sha512-wRhMmvar8tWHN3ZmykD8f4B4sjCn/f8DFM67LRY+stf/LPa2Kq8ATE2PIi570/DiDJA8kjjxzos3EgP0LmnFLA==", + "dev": true, + "requires": { + "@isaacs/cached": "^1.0.1", + "@isaacs/catcher": "^1.0.4", + "foreground-child": "^3.1.1", + "mkdirp": "^3.0.1", + "pirates": "^4.0.6", + "rimraf": "^5.0.5", + "signal-exit": "^4.1.0", + "sock-daemon": "^1.4.2", + "walk-up-path": "^3.0.1" + } + }, + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, + "type-fest": { + "version": "4.20.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.20.1.tgz", + "integrity": "sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==", + "dev": true + }, + "typescript": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "dev": true + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "walk-up-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + } + } +} diff --git a/packages/v2-es-membrane/package.json b/packages/v2-es-membrane/package.json new file mode 100644 index 00000000..a4972acd --- /dev/null +++ b/packages/v2-es-membrane/package.json @@ -0,0 +1,50 @@ +{ + "name": "es-membrane", + "type": "module", + "version": "0.11.0", + "description": "An ECMAScript implementation of a Membrane, allowing users to dynamically hide, override, or extend objects in JavaScript with controlled effects on the original objects.", + "//": { + "debug": "Debugging this code requires Node 18. Node 20 will fail to start running your code when using --inspect-brk and --import." + }, + "engines": { + "node": ">=18.19" + }, + "scripts": { + "build": "node --expose-gc --import ./register-hooks.js ./build.ts", + "debug": "node --inspect-brk --expose-gc --import ./register-hooks.js ./build.ts", + "build-tsimp": "node --expose-gc --import=tsimp/import --import ./build-utilities/loader-hooks/subpath/registration.js ./build.ts", + "tsimp-clean": "tsimp --clear" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ajvincent/es-membrane.git" + }, + "author": "Alexander J. Vincent ", + "license": "ISC", + "bugs": { + "url": "https://github.com/ajvincent/es-membrane/issues" + }, + "homepage": "https://github.com/ajvincent/es-membrane#readme", + "devDependencies": { + "@tsconfig/node20": "^20.1.4", + "@types/jasmine": "^5.1.4", + "@types/node": "^18.19.34", + "jasmine": "^5.1.0", + "mixin-decorators": "^1.0.1", + "prettier": "^3.3.3", + "ts-morph": "^23.0.0", + "ts-morph-structures": "^1.1.2", + "ts-node": "^10.9.2", + "tsimp": "^2.0.11", + "tslib": "^2.6.3", + "type-fest": "^4.20.1", + "typescript": "^5.5.2" + }, + "imports": { + "#stage_utilities/*": "./_01_stage_utilities/*", + "#code_generation/*": "./_02_code_generation/*", + "#objectgraph_handlers/*": "./_03_objectgraph_handlers/*", + "#mirror_membranes/*": "./_04_mirror_membranes/*", + "#build-utilities/*": "./build-utilities/*" + } +} diff --git a/register-hooks.js b/packages/v2-es-membrane/register-hooks.js similarity index 100% rename from register-hooks.js rename to packages/v2-es-membrane/register-hooks.js diff --git a/tsconfig.json b/packages/v2-es-membrane/tsconfig.json similarity index 52% rename from tsconfig.json rename to packages/v2-es-membrane/tsconfig.json index 37babf82..bbe24f34 100644 --- a/tsconfig.json +++ b/packages/v2-es-membrane/tsconfig.json @@ -10,10 +10,10 @@ "baseUrl": ".", "paths": { - "#stage_utilities/*": ["./_01_stage_utilities/*"], - "#code_generation/*": ["./_02_code_generation/*"], - "#objectgraph_handlers/*": ["./_03_objectgraph_handlers/*"], - "#mirror_membranes/*": ["./_04_mirror_membranes/*"], + "#stage_utilities/*": ["_01_stage_utilities/*"], + "#code_generation/*": ["_02_code_generation/*"], + "#objectgraph_handlers/*": ["_03_objectgraph_handlers/*"], + "#mirror_membranes/*": ["_04_mirror_membranes/*"], "#build-utilities/*": ["./build-utilities/*"] } }, @@ -22,5 +22,7 @@ "spec/**" ], - "extends": "@tsconfig/node20/tsconfig.json" + "extends": "@tsconfig/node20/tsconfig.json", + "references": [ + ] }