Created
November 17, 2023 11:22
-
-
Save suenot/db4c7c16be9459660497d5702a5d38e1 to your computer and use it in GitHub Desktop.
Log: js-docker-isolation-provider
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
age. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `graphql-extensions` API has been removed from Apollo Server 3. Use the plugin API instead: https://www.apollographql.com/docs/apollo-server/integrations/plugins/ | |
npm WARN deprecated [email protected]: Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau | |
npm WARN deprecated [email protected]: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added | |
npm WARN deprecated [email protected]: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies | |
npm WARN deprecated [email protected]: The `apollo-server-errors` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-server-errors` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. | |
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. | |
npm WARN deprecated [email protected]: The functionality provided by the `apollo-cache-control` package is built in to `apollo-server-core` starting with Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#cachecontrol for details. | |
npm WARN deprecated [email protected]: The `apollo-server` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: This package is part of the legacy caching implementation used by Apollo Server v2 and v3, and is no longer maintained. We recommend you switch to the newer Keyv-based implementation (which is compatible with all versions of Apollo Server). See https://www.apollographql.com/docs/apollo-server/v3/performance/cache-backends#legacy-caching-implementation for more details. | |
npm WARN deprecated [email protected]: The `apollo-server-micro` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-server-express` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md | |
npm WARN deprecated [email protected]: This package has been deprecated and now it only exports makeExecutableSchema. | |
npm WARN deprecated And it will no longer receive updates. | |
npm WARN deprecated We recommend you to migrate to scoped packages such as @graphql-tools/schema, @graphql-tools/utils and etc. | |
npm WARN deprecated Check out https://www.graphql-tools.com to learn what package you should use instead | |
npm WARN deprecated [email protected]: The `apollo-server-core` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated [email protected]: The `apollo-server-core` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. | |
npm WARN deprecated @belivvr/[email protected]: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. | |
npm WARN deprecated [email protected]: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. | |
npm --prefix "/tmp/78bb7d0f-f220-43ad-aaea-359963869645" i @deep-foundation/finder | |
added 2318 packages in 1m | |
170 packages are looking for funding | |
run `npm fund` for details | |
find . -name deep.json | |
./@deep-foundation/npm-packager/deep.json | |
./@deep-foundation/tsx/deep.json | |
./@deep-foundation/deeplinks/node_modules/@deep-foundation/tsx/deep.json | |
./@deep-foundation/core/deep.json | |
./@deep-foundation/finder/deep.json | |
./@deep-foundation/deepcase/deep.json | |
packages [ | |
[ '@deep-foundation/npm-packager' ], | |
[ '@deep-foundation/tsx' ], | |
[ '@deep-foundation/deeplinks', '@deep-foundation/tsx' ], | |
[ '@deep-foundation/core' ], | |
[ '@deep-foundation/finder' ], | |
[ '@deep-foundation/deepcase' ] | |
] | |
packagePath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/npm-packager | |
packageJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/npm-packager/package.json | |
packageJson { | |
name: '@deep-foundation/npm-packager', | |
version: '0.0.38', | |
license: 'Unlicense', | |
type: 'module', | |
keywords: [ 'deep-package' ], | |
scripts: { | |
build: 'tsc --project tsconfig.json; node automation/build.js', | |
'npm-pull': 'npm-pull', | |
'npm-release': 'npm run build; npm run test; npm-release', | |
'publish-next-version': 'npm run build; npm run test; export CURRENT_VERSION=$(node automation/set-next-version.js); npm i; git add .; git commit -m $CURRENT_VERSION; git push', | |
test: 'npm run build && cross-env NODE_OPTIONS=--experimental-vm-modules jest --config jest.config.js *.js --testTimeout=50000' | |
}, | |
dependencies: { '@deep-foundation/core': '~0.0.1' }, | |
devDependencies: { | |
'@deep-foundation/npm-automation': '^18.1.3', | |
'@types/jest': '^29.4.0', | |
jest: '^29.5.0', | |
'jest-environment-jsdom': '^29.5.0', | |
semver: '^7.3.8', | |
'ts-jest': '^29.0.5', | |
'ts-node': '^10.9.1', | |
typescript: '^4.9.4' | |
} | |
} | |
deepJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/npm-packager/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/npm-packager', version: '0.0.38' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ package: [Object], id: 8 }, | |
{ package: [Object], id: 9 }, | |
{ package: [Object], id: 10 }, | |
{ id: 'Install', type: 1, from: 2, to: 3 }, | |
{ id: 'installCode', type: 4, value: [Object] }, | |
{ id: 'installCodeHandler', type: 5, from: 7, to: 'installCode' }, | |
{ | |
id: 'installCodeHandleInsert', | |
type: 6, | |
from: 'Install', | |
to: 'installCodeHandler' | |
}, | |
{ id: 'Publish', type: 1, from: 8, to: 3 }, | |
{ id: 'publishCode', type: 4, value: [Object] }, | |
{ id: 'publishCodeHandler', type: 5, from: 7, to: 'publishCode' }, | |
{ | |
id: 'publishCodeHandleInsert', | |
type: 6, | |
from: 'Publish', | |
to: 'publishCodeHandler' | |
}, | |
{ id: 'Token', type: 1 }, | |
{ id: 'tokenValue', type: 9, from: 'Token', to: 10 }, | |
{ id: 'Used', type: 1, from: 'Install', to: 8 }, | |
{ id: 'Installed', type: 1, from: 'Install', to: 8 } | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.1' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.1' } | |
dependencyPackageName @deep-foundation/npm-packager | |
packagePath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/tsx | |
packageJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/tsx/package.json | |
packageJson { | |
name: '@deep-foundation/tsx', | |
keywords: [ 'deep-package' ], | |
version: '0.0.5', | |
dependencies: { '@deep-foundation/core': '^0.0.2' } | |
} | |
deepJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/tsx/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/tsx', version: '0.0.5' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ package: [Object], id: 8 }, | |
{ id: 'TSX', type: 1, value: [Object] }, | |
{ id: 'compiler', type: 2, value: [Object] }, | |
{ id: 'handler', type: 3, from: 4, to: 'compiler' }, | |
{ id: 'handleUpdate', type: 5, from: 'TSX', to: 'handler' }, | |
{ id: 'tsxValue', type: 6, from: 'TSX', to: 7 }, | |
{ | |
id: 'tsxSymbol', | |
type: 8, | |
from: 'TSX', | |
to: 'TSX', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '^0.0.2' } | |
dependencyPackageName @deep-foundation/tsx | |
packagePath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/deeplinks/node_modules/@deep-foundation/tsx | |
packageJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/deeplinks/node_modules/@deep-foundation/tsx/package.json | |
packageJson { | |
name: '@deep-foundation/tsx', | |
keywords: [ 'deep-package' ], | |
version: '0.0.4', | |
dependencies: { '@deep-foundation/core': '^0.0.2' } | |
} | |
deepJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/deeplinks/node_modules/@deep-foundation/tsx/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/tsx', version: '0.0.4' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ package: [Object], id: 8 }, | |
{ id: 'compiler', type: 1, value: [Object] }, | |
{ id: 'TSX', type: 2, value: [Object] }, | |
{ id: 'tsxValue', type: 3, from: 'TSX', to: 4 }, | |
{ | |
id: 'tsxSymbol', | |
type: 5, | |
from: 'TSX', | |
to: 'TSX', | |
value: [Object] | |
}, | |
{ id: 'handler', type: 6, from: 7, to: 'compiler' }, | |
{ id: 'handleUpdate', type: 8, from: 'TSX', to: 'handler' } | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '^0.0.2' } | |
dependencyPackageName @deep-foundation/tsx | |
packagePath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/core | |
packageJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/core/package.json | |
packageJson { name: '@deep-foundation/core', version: '0.0.2' } | |
deepJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/core/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/core', version: '0.0.2' }, | |
data: [ | |
{ id: 'Type', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Package', type: 'Type' }, | |
{ id: 'Contain', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Value', type: 'Type', from: 'Any', to: 'Type' }, | |
{ id: 'String', type: 'Type' }, | |
{ id: 'Number', type: 'Type' }, | |
{ id: 'Object', type: 'Type' }, | |
{ id: 'Any', type: 'Type' }, | |
{ id: 'Promise', type: 'Type' }, | |
{ id: 'Then', type: 'Type', from: 'Any', to: 'Promise' }, | |
{ id: 'Resolved', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'Rejected', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'typeValue', type: 'Value', from: 'Type', to: 'String' }, | |
{ | |
id: 'packageValue', | |
type: 'Value', | |
from: 'Package', | |
to: 'String' | |
}, | |
{ id: 'Selector', type: 'Type' }, | |
{ | |
id: 'SelectorInclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ id: 'Rule', type: 'Type' }, | |
{ id: 'RuleSubject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleObject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleAction', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ | |
id: 'containValue', | |
type: 'Value', | |
from: 'Contain', | |
to: 'String' | |
}, | |
{ id: 'User', type: 'Type' }, | |
{ id: 'Operation', type: 'Type' }, | |
{ | |
id: 'operationValue', | |
type: 'Value', | |
from: 'Operation', | |
to: 'String' | |
}, | |
{ id: 'AllowInsert', type: 'Operation' }, | |
{ id: 'AllowUpdate', type: 'Operation' }, | |
{ id: 'AllowDelete', type: 'Operation' }, | |
{ id: 'AllowSelect', type: 'Operation' }, | |
{ id: 'File', type: 'Type' }, | |
{ id: 'SyncTextFile', type: 'File' }, | |
{ | |
id: 'syncTextFileValue', | |
type: 'Value', | |
from: 'SyncTextFile', | |
to: 'String' | |
}, | |
{ id: 'ExecutionProvider', type: 'Type' }, | |
{ id: 'JSExecutionProvider', type: 'ExecutionProvider' }, | |
{ id: 'TreeInclude', type: 'Type', from: 'Type', to: 'Any' }, | |
{ id: 'Handler', type: 'Type', from: 'Supports', to: 'Any' }, | |
{ id: 'Tree', type: 'Type' }, | |
{ | |
id: 'TreeIncludeDown', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeUp', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeNode', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ id: 'containTree', type: 'Tree' }, | |
{ | |
id: 'containTreeContain', | |
type: 'TreeIncludeDown', | |
from: 'containTree', | |
to: 'Contain' | |
}, | |
{ | |
id: 'containTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'containTree', | |
to: 'Any' | |
}, | |
{ id: 'PackageNamespace', type: 'Type' }, | |
{ | |
id: 'packageNamespaceValue', | |
type: 'Value', | |
from: 'PackageNamespace', | |
to: 'String' | |
}, | |
{ | |
id: 'PackageActive', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'PackageVersion', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'packageVersionValue', | |
type: 'Value', | |
from: 'PackageVersion', | |
to: 'String' | |
}, | |
{ id: 'HandleOperation', type: 'Type', from: 'Type', to: 'Type' }, | |
{ | |
id: 'HandleInsert', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleUpdate', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleDelete', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'PromiseResult', type: 'Type' }, | |
{ | |
id: 'promiseResultValueRelationTable', | |
type: 'Value', | |
from: 'PromiseResult', | |
to: 'Object' | |
}, | |
{ id: 'PromiseReason', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Focus', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'focusValue', type: 'Value', from: 'Focus', to: 'Object' }, | |
{ id: 'AsyncFile', type: 'File' }, | |
{ | |
id: 'handlersTreeHandler', | |
type: 'TreeIncludeUp', | |
from: 'handlersTree', | |
to: 'Handler' | |
}, | |
{ id: 'Query', type: 'Type' }, | |
{ id: 'queryValue', type: 'Value', from: 'Query', to: 'Object' }, | |
{ id: 'Active', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Fixed', type: 'Type' }, | |
{ id: 'fixedValue', type: 'Value', from: 'Fixed', to: 'Object' }, | |
{ id: 'Space', type: 'Type' }, | |
{ id: 'spaceValue', type: 'Value', from: 'Space', to: 'String' }, | |
{ id: 'AllowLogin', type: 'Operation' }, | |
{ id: 'guests', type: 'Any' }, | |
{ id: 'Join', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'joinTree', type: 'Tree' }, | |
{ | |
id: 'joinTreeJoin', | |
type: 'TreeIncludeUp', | |
from: 'joinTree', | |
to: 'Join' | |
}, | |
{ | |
id: 'joinTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'joinTree', | |
to: 'Any' | |
}, | |
{ id: 'SelectorTree', type: 'Type', from: 'Any', to: 'Tree' }, | |
{ id: 'AllowAdmin', type: 'Operation' }, | |
{ | |
id: 'SelectorExclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ | |
id: 'SelectorFilter', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Query' | |
}, | |
{ | |
id: 'HandleSchedule', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'Schedule', type: 'Type' }, | |
{ | |
id: 'scheduleValue', | |
type: 'Value', | |
from: 'Schedule', | |
to: 'String' | |
}, | |
{ id: 'Router', type: 'Type', value: [Object] }, | |
{ id: 'IsolationProvider', type: 'Type' }, | |
{ id: 'DockerIsolationProvider', type: 'IsolationProvider' }, | |
{ | |
id: 'dockerIsolationProviderValue', | |
type: 'Value', | |
from: 'DockerIsolationProvider', | |
to: 'String' | |
}, | |
{ | |
id: 'JSDockerIsolationProvider', | |
type: 'DockerIsolationProvider', | |
value: [Object] | |
}, | |
{ id: 'Supports', type: 'Type', from: 'Any', to: 'Any' }, | |
{ | |
id: 'dockerSupportsJs', | |
type: 'Supports', | |
from: 'JSDockerIsolationProvider', | |
to: 'JSExecutionProvider' | |
}, | |
{ | |
id: 'PackageInstall', | |
type: 'Type', | |
from: 'Any', | |
to: 'PackageQuery' | |
}, | |
{ | |
id: 'PackagePublish', | |
type: 'Type', | |
from: 'Package', | |
to: 'PackageQuery' | |
}, | |
{ id: 'packageInstallCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packageInstallCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packageInstallCode' | |
}, | |
{ | |
id: 'packageInstallCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackageInstall', | |
to: 'packageInstallCodeHandler' | |
}, | |
{ id: 'packagePublishCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packagePublishCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packagePublishCode' | |
}, | |
{ | |
id: 'packagePublishCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackagePublish', | |
to: 'packagePublishCodeHandler' | |
}, | |
{ id: 'AllowPackageInstall', type: 'Operation' }, | |
{ id: 'portValue', type: 'Value', from: 'Port', to: 'Number' }, | |
{ | |
id: 'HandlePort', | |
type: 'HandleOperation', | |
from: 'Port', | |
to: 'Any' | |
}, | |
{ id: 'Route', type: 'Type' }, | |
{ id: 'RouterListening', type: 'Type', from: 'Router', to: 'Port' }, | |
{ | |
id: 'RouterStringUse', | |
type: 'Type', | |
from: 'Route', | |
to: 'Router' | |
}, | |
{ | |
id: 'routerStringUseValue', | |
type: 'Value', | |
from: 'RouterStringUse', | |
to: 'String' | |
}, | |
... 74 more items | |
], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
} | |
dependencies {} | |
dependencyPackageName @deep-foundation/core | |
packagePath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/finder | |
packageJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/finder/package.json | |
packageJson { | |
name: '@deep-foundation/finder', | |
keywords: [ 'deep-package' ], | |
version: '0.0.6', | |
dependencies: { | |
'@deep-foundation/core': '^0.0.2', | |
'@deep-foundation/deepcase': '^0.0.96', | |
'@deep-foundation/tsx': '^0.0.5' | |
} | |
} | |
deepJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/finder/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/finder', version: '0.0.6' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ id: 'tsx', type: 1, value: [Object] }, | |
{ id: 'Finder', type: 2 }, | |
{ id: 'handler', type: 3, from: 4, to: 'tsx' }, | |
{ id: 'context', type: 5, from: 'Finder', to: 'handler' }, | |
{ id: 'handleClient', type: 6, from: 7, to: 'handler' } | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/tsx', version: '0.0.5' }, | |
{ name: '@deep-foundation/deepcase', version: '0.0.96' }, | |
{ name: '@deep-foundation/core', version: '0.0.2' } | |
] | |
} | |
dependencies { | |
'@deep-foundation/core': '^0.0.2', | |
'@deep-foundation/deepcase': '^0.0.96', | |
'@deep-foundation/tsx': '^0.0.5' | |
} | |
dependencyPackageName @deep-foundation/finder | |
packagePath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/deepcase | |
packageJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/deepcase/package.json | |
packageJson { | |
name: '@deep-foundation/deepcase', | |
version: '0.0.96', | |
license: 'Unlicense', | |
type: 'module', | |
keywords: [ 'deep-package' ], | |
scripts: { | |
'npm-pull': 'npm-pull', | |
'npm-release': 'npm-release', | |
'package:build': 'tsc --project tsconfig.json', | |
'package:publish': 'npm run build && npm publish --access public', | |
'package:unbuild': 'rimraf ./*.js && rimraf ./*.js.map && rimraf ./*.d.ts && (cd ./imports && rimraf ./*.js && rimraf ./*.js.map && rimraf ./*.d.ts && cd ../)', | |
'package:watch': 'tsc -w --project tsconfig.json' | |
}, | |
dependencies: { | |
'@apollo/client': '^3.7.14', | |
'@belivvr/aframe-react': '^0.4.2', | |
'@capacitor/core': '^5.0.4', | |
'@chakra-ui/icons': '^2.0.19', | |
'@chakra-ui/react': '^2.6.1', | |
'@chakra-ui/theme-tools': '^2.0.16', | |
'@deep-foundation/core': '~0.0.2', | |
'@deep-foundation/deeplinks': '^0.0.302', | |
'@deep-foundation/tsx': '~0.0.3', | |
'@emotion/react': '^11.11.0', | |
'@emotion/styled': '^11.11.0', | |
'@monaco-editor/react': '^4.5.1', | |
'@react-hook/debounce': '^4.0.0', | |
'@rjsf/chakra-ui': '^5.8.1', | |
'@rjsf/core': '^5.8.1', | |
'@rjsf/validator-ajv8': '^5.8.1', | |
'@types/animejs': '^3.1.7', | |
'@types/react': '^18.2.15', | |
'@types/react-cytoscapejs': '^1.2.2', | |
'@types/stats.js': '^0.17.0', | |
'@types/three': '^0.156.0', | |
'@types/webxr': '^0.5.4', | |
aframe: '^1.4.2', | |
'aframe-environment-component': '^1.3.3', | |
'aframe-extras': '^7.0.0', | |
'aframe-forcegraph-component': '^3.0.8', | |
'aframe-react': '^4.4.0', | |
axios: '^1.4.0', | |
'axios-hooks': '^4.0.0', | |
classnames: '^2.3.2', | |
'copy-to-clipboard': '^3.3.3', | |
'css-select': '^5.1.0', | |
cytoscape: '^3.25.0', | |
'cytoscape-cola': '^2.5.1', | |
'cytoscape-cxtmenu': '^3.5.0', | |
'cytoscape-d3-force': '^1.1.4', | |
'cytoscape-dagre': '^2.5.0', | |
'cytoscape-deep-d3-force': '^1.2.3', | |
'cytoscape-edge-connections': '^0.5.0', | |
'cytoscape-edgehandles': '^4.0.1', | |
d3: '^7.8.5', | |
'd3-force-3d': '^3.0.5', | |
debug: '^4.3.4', | |
'emoji-picker-react': '^4.5.2', | |
fflate: '^0.6.10', | |
'framer-motion': '^10.12.16', | |
i18next: '^23.5.1', | |
'i18next-browser-languagedetector': '^7.1.0', | |
immutable: '^4.3.0', | |
'is-hotkey': '^0.2.0', | |
json5: '^2.2.3', | |
'markup-it': '^13.0.0', | |
md5: '^2.3.0', | |
meshoptimizer: '^0.18.1', | |
next: '13.3', | |
peerjs: '^1.4.7', | |
're-resizable': '^6.9.9', | |
react: '*', | |
'react-cytoscapejs': '^2.0.0', | |
'react-d3-cloud': '^1.0.6', | |
'react-device-detect': '^2.2.3', | |
'react-dom': '^18', | |
'react-dropzone': '^14.2.3', | |
'react-ga': '^3.3.1', | |
'react-hotkeys-hook': '^4.4.0', | |
'react-i18next': '^13.2.2', | |
'react-icons': '^4.8.0', | |
'react-linkify': '^1.0.0-alpha', | |
'react-resize-detector': '^9.1.0', | |
'react-yandex-metrika': '^2.6.0', | |
recharts: '^2.8.0', | |
slate: '^0.94.1', | |
'slate-history': '^0.93.0', | |
'slate-react': '^0.94.2', | |
'slate-serializers': '0.0.32', | |
'slate-soft-break': '^0.9.0', | |
'super-hands': '^3.0.4', | |
typescript: '^5.0.4', | |
'usehooks-ts': '^2.9.1', | |
uuid: '^9.0.0', | |
xterm: '^5.1.0' | |
}, | |
engines: { node: '^18' }, | |
peerDependencies: { react: '*' }, | |
devDependencies: { | |
'@deep-foundation/npm-automation': '^18.1.10', | |
depcheck: '^1.4.3', | |
'ts-node': '^10.9.1' | |
} | |
} | |
deepJsonPath /tmp/78bb7d0f-f220-43ad-aaea-359963869645/node_modules/@deep-foundation/deepcase/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/deepcase', version: '0.0.96' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ package: [Object], id: 8 }, | |
{ package: [Object], id: 9 }, | |
{ package: [Object], id: 10 }, | |
{ package: [Object], id: 11 }, | |
{ package: [Object], id: 12 }, | |
{ package: [Object], id: 13 }, | |
{ package: [Object], id: 14 }, | |
{ | |
id: 'stringJoinHandleClient', | |
type: 1, | |
from: 2, | |
to: 'stringHandler', | |
value: [Object] | |
}, | |
{ | |
id: 'stringHandler', | |
type: 3, | |
from: 4, | |
to: 'stringClientHandlerGenerated', | |
value: [Object] | |
}, | |
{ | |
id: 'stringPackageQueryHandleClient', | |
type: 1, | |
from: 5, | |
to: 'stringHandler', | |
value: [Object] | |
}, | |
{ | |
id: 'stringContainHandleClient', | |
type: 1, | |
from: 6, | |
to: 'stringHandler', | |
value: [Object] | |
}, | |
{ id: 'stringClientHandlerGenerated', type: 7, value: [Object] }, | |
{ id: 'editorClientHandlerGenerated', type: 7, value: [Object] }, | |
{ | |
id: 'editorHandler', | |
type: 3, | |
from: 4, | |
to: 'editorClientHandlerGenerated', | |
value: [Object] | |
}, | |
{ | |
id: 'editorHandleClientTSX', | |
type: 1, | |
from: 7, | |
to: 'editorHandler', | |
value: [Object] | |
}, | |
{ id: 'queryClientHandlerGenerated', type: 7, value: [Object] }, | |
{ | |
id: 'queryHandler', | |
type: 3, | |
from: 4, | |
to: 'queryClientHandlerGenerated', | |
value: [Object] | |
}, | |
{ | |
id: 'queryHandleClient', | |
type: 1, | |
from: 8, | |
to: 'queryHandler', | |
value: [Object] | |
}, | |
{ id: 'Traveler', type: 9, from: 10, to: 8 }, | |
{ | |
id: 'travelerSymbol', | |
type: 11, | |
from: 'Traveler', | |
to: 'Traveler', | |
value: [Object] | |
}, | |
{ id: 'stringClientHandler', type: 12, value: [Object] }, | |
{ | |
id: 'stringClientHandlerGeneratedFrom', | |
type: 13, | |
from: 'stringClientHandlerGenerated', | |
to: 'stringClientHandler' | |
}, | |
{ | |
id: 'editorHandleClientSyncTextFile', | |
type: 1, | |
from: 12, | |
to: 'editorHandler', | |
value: [Object] | |
}, | |
{ id: 'queryClientHandler', type: 12, value: [Object] }, | |
{ | |
id: 'queryClientHandlerGeneratedFrom', | |
type: 13, | |
from: 'queryClientHandlerGenerated', | |
to: 'queryClientHandler' | |
}, | |
{ id: 'editorClientHandler', type: 12, value: [Object] }, | |
{ | |
id: 'editorClientHandlerGeneratedFrom', | |
type: 13, | |
from: 'editorClientHandlerGenerated', | |
to: 'editorClientHandler' | |
}, | |
{ id: 'asyncFileClientHandler', type: 12, value: [Object] }, | |
{ id: 'ContextToken', type: 9 }, | |
{ id: 'Context', type: 9, from: 'ContextToken', to: 3 }, | |
{ | |
id: 'asyncFileHandleClient', | |
type: 1, | |
from: 14, | |
to: 'asyncFileHandler' | |
}, | |
{ id: 'asyncFileClientHandlerGenerated', type: 7, value: [Object] }, | |
{ | |
id: 'asyncFileClientHandlerGeneratedFrom', | |
type: 13, | |
from: 'asyncFileClientHandlerGenerated', | |
to: 'asyncFileClientHandler' | |
}, | |
{ | |
id: 'asyncFileHandler', | |
type: 3, | |
from: 4, | |
to: 'asyncFileClientHandlerGenerated' | |
} | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/core', version: '0.0.2' }, | |
{ name: '@deep-foundation/tsx', version: '0.0.3' } | |
] | |
} | |
dependencies { | |
'@apollo/client': '^3.7.14', | |
'@belivvr/aframe-react': '^0.4.2', | |
'@capacitor/core': '^5.0.4', | |
'@chakra-ui/icons': '^2.0.19', | |
'@chakra-ui/react': '^2.6.1', | |
'@chakra-ui/theme-tools': '^2.0.16', | |
'@deep-foundation/core': '~0.0.2', | |
'@deep-foundation/deeplinks': '^0.0.302', | |
'@deep-foundation/tsx': '~0.0.3', | |
'@emotion/react': '^11.11.0', | |
'@emotion/styled': '^11.11.0', | |
'@monaco-editor/react': '^4.5.1', | |
'@react-hook/debounce': '^4.0.0', | |
'@rjsf/chakra-ui': '^5.8.1', | |
'@rjsf/core': '^5.8.1', | |
'@rjsf/validator-ajv8': '^5.8.1', | |
'@types/animejs': '^3.1.7', | |
'@types/react': '^18.2.15', | |
'@types/react-cytoscapejs': '^1.2.2', | |
'@types/stats.js': '^0.17.0', | |
'@types/three': '^0.156.0', | |
'@types/webxr': '^0.5.4', | |
aframe: '^1.4.2', | |
'aframe-environment-component': '^1.3.3', | |
'aframe-extras': '^7.0.0', | |
'aframe-forcegraph-component': '^3.0.8', | |
'aframe-react': '^4.4.0', | |
axios: '^1.4.0', | |
'axios-hooks': '^4.0.0', | |
classnames: '^2.3.2', | |
'copy-to-clipboard': '^3.3.3', | |
'css-select': '^5.1.0', | |
cytoscape: '^3.25.0', | |
'cytoscape-cola': '^2.5.1', | |
'cytoscape-cxtmenu': '^3.5.0', | |
'cytoscape-d3-force': '^1.1.4', | |
'cytoscape-dagre': '^2.5.0', | |
'cytoscape-deep-d3-force': '^1.2.3', | |
'cytoscape-edge-connections': '^0.5.0', | |
'cytoscape-edgehandles': '^4.0.1', | |
d3: '^7.8.5', | |
'd3-force-3d': '^3.0.5', | |
debug: '^4.3.4', | |
'emoji-picker-react': '^4.5.2', | |
fflate: '^0.6.10', | |
'framer-motion': '^10.12.16', | |
i18next: '^23.5.1', | |
'i18next-browser-languagedetector': '^7.1.0', | |
immutable: '^4.3.0', | |
'is-hotkey': '^0.2.0', | |
json5: '^2.2.3', | |
'markup-it': '^13.0.0', | |
md5: '^2.3.0', | |
meshoptimizer: '^0.18.1', | |
next: '13.3', | |
peerjs: '^1.4.7', | |
're-resizable': '^6.9.9', | |
react: '*', | |
'react-cytoscapejs': '^2.0.0', | |
'react-d3-cloud': '^1.0.6', | |
'react-device-detect': '^2.2.3', | |
'react-dom': '^18', | |
'react-dropzone': '^14.2.3', | |
'react-ga': '^3.3.1', | |
'react-hotkeys-hook': '^4.4.0', | |
'react-i18next': '^13.2.2', | |
'react-icons': '^4.8.0', | |
'react-linkify': '^1.0.0-alpha', | |
'react-resize-detector': '^9.1.0', | |
'react-yandex-metrika': '^2.6.0', | |
recharts: '^2.8.0', | |
slate: '^0.94.1', | |
'slate-history': '^0.93.0', | |
'slate-react': '^0.94.2', | |
'slate-serializers': '0.0.32', | |
'slate-soft-break': '^0.9.0', | |
'super-hands': '^3.0.4', | |
typescript: '^5.0.4', | |
'usehooks-ts': '^2.9.1', | |
uuid: '^9.0.0', | |
xterm: '^5.1.0' | |
} | |
dependencyPackageName @deep-foundation/deepcase | |
deepPackagesDependencies { | |
'@deep-foundation/npm-packager': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@deep-foundation/npm-packager', | |
version: '0.0.38', | |
license: 'Unlicense', | |
type: 'module', | |
keywords: [Array], | |
scripts: [Object], | |
dependencies: [Object], | |
devDependencies: [Object] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@deep-foundation/tsx': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@deep-foundation/tsx', | |
keywords: [Array], | |
version: '0.0.4', | |
dependencies: [Object] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@deep-foundation/core': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' }, | |
dependencies: [] | |
}, | |
'@deep-foundation/deepcase': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@deep-foundation/deepcase', | |
version: '0.0.96', | |
license: 'Unlicense', | |
type: 'module', | |
keywords: [Array], | |
scripts: [Object], | |
dependencies: [Object], | |
engines: [Object], | |
peerDependencies: [Object], | |
devDependencies: [Object] | |
}, | |
dependencies: [ '@deep-foundation/core', '@deep-foundation/tsx' ] | |
} | |
} | |
installationQueue [ | |
{ | |
name: '@deep-foundation/core', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' } | |
}, | |
{ | |
name: '@deep-foundation/npm-packager', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@deep-foundation/npm-packager', | |
version: '0.0.38', | |
license: 'Unlicense', | |
type: 'module', | |
keywords: [Array], | |
scripts: [Object], | |
dependencies: [Object], | |
devDependencies: [Object] | |
} | |
}, | |
{ | |
name: '@deep-foundation/tsx', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@deep-foundation/tsx', | |
keywords: [Array], | |
version: '0.0.4', | |
dependencies: [Object] | |
} | |
}, | |
{ | |
name: '@deep-foundation/deepcase', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@deep-foundation/deepcase', | |
version: '0.0.96', | |
license: 'Unlicense', | |
type: 'module', | |
keywords: [Array], | |
scripts: [Object], | |
dependencies: [Object], | |
engines: [Object], | |
peerDependencies: [Object], | |
devDependencies: [Object] | |
} | |
} | |
] | |
installationSet { | |
'@deep-foundation/core': true, | |
'@deep-foundation/npm-packager': true, | |
'@deep-foundation/tsx': true, | |
'@deep-foundation/deepcase': true | |
} | |
packages [ | |
{ | |
id: 184, | |
name: { id: 6, value: '@deep-foundation/core', link_id: 184 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 719, | |
name: { id: 317, value: '@deep-foundation/tsx', link_id: 719 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 754, | |
name: { id: 328, value: '@deep-foundation/npm-packager', link_id: 754 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 821, | |
name: { id: 370, value: '@deep-foundation/deepcase', link_id: 821 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
} | |
] | |
existingPackages { | |
'@deep-foundation/core': { id: 184, version: '0.0.2' }, | |
'@deep-foundation/tsx': { id: 719, version: '0.0.5' }, | |
'@deep-foundation/npm-packager': { id: 754, version: '0.0.39' }, | |
'@deep-foundation/deepcase': { id: 821, version: '0.0.98' } | |
} | |
existingPackages { | |
'@deep-foundation/core': { id: 184, version: '0.0.2' }, | |
'@deep-foundation/tsx': { id: 719, version: '0.0.5' }, | |
'@deep-foundation/npm-packager': { id: 754, version: '0.0.39' }, | |
'@deep-foundation/deepcase': { id: 821, version: '0.0.98' } | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:266:26) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
call body params { | |
code: '\n' + | |
'async ({ deep, require, gql, data: { newLink } }) => {\n' + | |
" const ts = require('typescript');\n" + | |
' const { data: [generatedFrom] } = await deep.select({\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'GeneratedFrom'),\n" + | |
' to_id: newLink.id, \n' + | |
' });\n' + | |
' const value = newLink?.value?.value;\n' + | |
" let compiledString = '';\n" + | |
' if (value) {\n' + | |
' const result = ts.transpileModule(value, {\n' + | |
' "compilerOptions": {\n' + | |
' "allowSyntheticDefaultImports": true,\n' + | |
' "experimentalDecorators": true,\n' + | |
' "inlineSourceMap": true,\n' + | |
' inlineSources: true,\n' + | |
' "noImplicitAny": false,\n' + | |
' "removeComments": true,\n' + | |
' "jsx": "react",\n' + | |
' "module": "ESNext",\n' + | |
' "moduleResolution": "node",\n' + | |
' "target": "ESNext",\n' + | |
' "skipLibCheck": true,\n' + | |
' "resolveJsonModule": true,\n' + | |
' "esModuleInterop": true,\n' + | |
' "isolatedModules": true\n' + | |
' }\n' + | |
' });\n' + | |
' if (!result.outputText) {\n' + | |
' throw result;\n' + | |
' }\n' + | |
" compiledString = result.outputText || '';\n" + | |
' }\n' + | |
' if (!generatedFrom) {\n' + | |
' await deep.insert({\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'GeneratedFrom'),\n" + | |
' to_id: newLink.id,\n' + | |
' in: { data: {\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'Contain'),\n" + | |
' from_id: newLink.id,\n' + | |
' } },\n' + | |
' from: { data: {\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'SyncTextFile'),\n" + | |
' string: { data: { value: compiledString } },\n' + | |
' in: { data: {\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'Contain'),\n" + | |
' from_id: newLink.id,\n' + | |
" string: { data: { value: 'generated' } },\n" + | |
' } },\n' + | |
' } },\n' + | |
' });\n' + | |
' } else {\n' + | |
' await deep.update({\n' + | |
' link_id: { _eq: generatedFrom.from_id },\n' + | |
' }, {\n' + | |
' value: compiledString,\n' + | |
" }, { table: 'strings' });\n" + | |
' }\n' + | |
'}\n', | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzE5In0sImlhdCI6MTcwMDE3ODgwOH0.VuixA_9Xz68sb6y3GnfgSeH8gUtxQO6fq0j6qLuMA_U', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 754, | |
oldLink: { | |
id: 971, | |
from_id: 0, | |
type_id: 715, | |
to_id: 0, | |
__typename: 'links', | |
value: null | |
}, | |
newLink: { | |
id: 971, | |
from_id: 0, | |
type_id: 715, | |
to_id: 0, | |
__typename: 'links', | |
value: [Object] | |
}, | |
promiseId: 994 | |
} | |
} | |
call result undefined | |
{ | |
ids: [ | |
967, 968, 969, 970, 971, 972, | |
973, 974, 975, 976, 977, 978, | |
979, 980, 981, 982, 983, 984, | |
985, 986, 987, 988, 989, 990, | |
991, 992, 993 | |
], | |
errors: [], | |
namespaceId: 967, | |
packageId: 975 | |
} | |
call result { | |
ids: [ | |
967, 968, 969, 970, 971, 972, | |
973, 974, 975, 976, 977, 978, | |
979, 980, 981, 982, 983, 984, | |
985, 986, 987, 988, 989, 990, | |
991, 992, 993 | |
], | |
errors: [], | |
namespaceId: 967, | |
packageId: 975 | |
} | |
call body params { | |
code: 'async ({ deep, gql, data: { triggeredByLinkId, newLink } }) => {\n' + | |
" const deepFileName = 'deep.json';\n" + | |
" const fs = await deep.import('fs');\n" + | |
'\n' + | |
' const makeTempDirectory = async () => {\n' + | |
" const os = await deep.import('os');\n" + | |
" const { v4: uuid } = await deep.import('uuid');\n" + | |
' \n' + | |
' const baseTempDirectory = os.tmpdir();\n' + | |
' const randomId = uuid();\n' + | |
" const tempDirectory = [baseTempDirectory,randomId].join('/');\n" + | |
' fs.mkdirSync(tempDirectory);\n' + | |
' console.log(tempDirectory);\n' + | |
' return tempDirectory;\n' + | |
' };\n' + | |
' const npmInstall = async (packageName, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
' const command = `npm --prefix "${tempDirectory}" i ${packageName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
' const npmLogin = async (token, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
' \n' + | |
' const command = `npm set "//registry.npmjs.org/:_authToken" ${token}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
" const makePackagePath = (tempDirectory, packageName) => [tempDirectory, 'node_modules', packageName].join('/');\n" + | |
" const makeDeepJsonPath = (packagePath) => [packagePath, deepFileName].join('/');\n" + | |
" const makePackageJsonPath = (packagePath) => [packagePath, 'package.json'].join('/');\n" + | |
' const loadNpmToken = async () => {\n' + | |
" const containTreeId = await deep.id('@deep-foundation/core', 'containTree');\n" + | |
" const tokenTypeId = await deep.id('@deep-foundation/npm-packager', 'Token');\n" + | |
' const { data: [{ value: { value: npmToken = undefined } = {}} = {}] = []} = await deep.select({\n' + | |
' up: {\n' + | |
' tree_id: { _eq: containTreeId },\n' + | |
' parent: { id: { _eq: triggeredByLinkId } },\n' + | |
' link: { type_id: { _eq: tokenTypeId } }\n' + | |
' }\n' + | |
' });\n' + | |
' return npmToken;\n' + | |
' };\n' + | |
' const deepImport = async (deepJson, packageJson) => {\n' + | |
' if (deepJson.package.name !== packageJson.name) {\n' + | |
' throw new Error(`Package name is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package name: ${deepJson.package.name}.\n' + | |
' package.json package name: ${packageJson.name}.`);\n' + | |
' }\n' + | |
' if (deepJson.package.version !== packageJson.version) {\n' + | |
' throw new Error(`Package version is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package version: ${deepJson.package.version}.\n' + | |
' package.json package version: ${packageJson.version}.`);\n' + | |
' }\n' + | |
" const packager = new (await deep.import('@deep-foundation/deeplinks/imports/packager.js')).Packager(deep);\n" + | |
' const imported = await packager.import(deepJson);\n' + | |
' console.log(imported);\n' + | |
' if (imported?.errors?.length) throw imported;\n' + | |
' return imported;\n' + | |
' };\n' + | |
' const getDeepPackagesList = async (rootPath) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
" const deepFileName = 'deep.json';\n" + | |
' const deepFileNameLength = deepFileName.length;\n' + | |
'\n' + | |
' const command = `find . -name ${deepFileName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: rootPath\n' + | |
' });\n' + | |
" console.log('', `${command}\\n`, output);\n" + | |
'\n' + | |
' const packages = output\n' + | |
' .split(/\\r?\\n/)\n' + | |
' .filter(line => line.trim())\n' + | |
' .map(line => line.slice(2).slice(0, -deepFileNameLength - 1))\n' + | |
" .map(line => line.split('/node_modules/'));\n" + | |
' return packages;\n' + | |
' };\n' + | |
' const getDeepPackagesDependencies = async (rootPath, packages, packageName) => {\n' + | |
' const dictionary = {};\n' + | |
' for (const pkg of packages) {\n' + | |
" const packagePath = [rootPath, pkg.join('/node_modules/')].join('/');\n" + | |
" console.log('packagePath', packagePath);\n" + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
" console.log('packageJsonPath', packageJsonPath);\n" + | |
' if (!fs.existsSync(packageJsonPath)) {\n' + | |
' throw new Error(`package.json for dependency ${pkg} is not found at ${packageJsonPath}. Looks like ${packageName} does not contain ${pkg} dependency in package.json.`);\n' + | |
' }\n' + | |
' const packageJson = await deep.import(packageJsonPath);\n' + | |
" console.log('packageJson', packageJson);\n" + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
" console.log('deepJsonPath', deepJsonPath);\n" + | |
' if (!fs.existsSync(deepJsonPath)) {\n' + | |
' throw new Error(`deep.json for dependency ${pkg} is not found at ${deepJsonPath}. Looks like ${pkg} installed, but it does not contain deep.json. Make sure ${pkg} is a deep package.`);\n' + | |
' }\n' + | |
' const deepJson = await deep.import(deepJsonPath);\n' + | |
" console.log('deepJson', deepJson);\n" + | |
' const dependencies = packageJson.dependencies ?? {};\n' + | |
" console.log('dependencies', dependencies);\n" + | |
' const dependencyPackageName = pkg.at(-1);\n' + | |
" console.log('dependencyPackageName', dependencyPackageName);\n" + | |
' if (Array.isArray(dictionary[dependencyPackageName])) {\n' + | |
" throw new Error('Multiple versions of the same package are not supported yet.');\n" + | |
' }\n' + | |
' dictionary[dependencyPackageName] = { deepJson, packageJson, dependencies };\n' + | |
' }\n' + | |
' for (const pkg in dictionary) {\n' + | |
' const sourceDependencies = dictionary[pkg].dependencies;\n' + | |
' const targetDependencies = [];\n' + | |
' for (const dependency in sourceDependencies)\n' + | |
' {\n' + | |
' if (dictionary[dependency]) {\n' + | |
' targetDependencies.push(dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' dictionary[pkg].dependencies = targetDependencies;\n' + | |
' }\n' + | |
' return dictionary;\n' + | |
' }\n' + | |
' const buildInstallationQueueCore = (deepPackagesDependencies, queue, set, packageName) => {\n' + | |
' const dependencies = deepPackagesDependencies[packageName].dependencies;\n' + | |
' for (const dependency of dependencies) {\n' + | |
' if (!set[dependency]) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' if(!set[packageName]) {\n' + | |
' const deepJson = deepPackagesDependencies[packageName].deepJson;\n' + | |
' const packageJson = deepPackagesDependencies[packageName].packageJson;\n' + | |
' queue.push({ name: packageName, deepJson, packageJson });\n' + | |
' set[packageName] = true;\n' + | |
' }\n' + | |
' }\n' + | |
' const buildInstallationQueue = (deepPackagesDependencies, queue, set) => {\n' + | |
' for (const packageName in deepPackagesDependencies) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, packageName);\n' + | |
' }\n' + | |
' }\n' + | |
' const getExistingPackages = async (packageNames) => {\n' + | |
" const packageTypeId = await deep.id('@deep-foundation/core', 'Package');\n" + | |
" const packageVersionTypeId = await deep.id('@deep-foundation/core', 'PackageVersion');\n" + | |
' const { data: packages } = await deep.select({\n' + | |
' type_id: { _eq: packageTypeId },\n' + | |
' string: { value: { _in: packageNames } }\n' + | |
' }, {\n' + | |
" name: 'GET_EXISTING_PACKAGES_WITH_VERSIONS',\n" + | |
' returning: `\n' + | |
' id\n' + | |
' name: value\n' + | |
' versions: in(where: {type_id: {_eq: ${packageVersionTypeId}}, string: {value: {_is_null: false}}}) {\n' + | |
' id\n' + | |
' version: value\n' + | |
' }\n' + | |
' `\n' + | |
' })\n' + | |
" console.log('packages', packages);\n" + | |
' const existingPackages = packages.reduce(\n' + | |
' (accumulator, currentValue) => {\n' + | |
' const packageId = currentValue?.id;\n' + | |
' const packageName = currentValue?.name?.value;\n' + | |
' if (currentValue?.versions.length !== 1) {\n' + | |
" throw new Error(`'${packageName}' package must have exactly one version. Now it has ${currentValue?.versions.length} versions.`);\n" + | |
' }\n' + | |
' if (accumulator[packageName]) {\n' + | |
" throw new Error(`Multiple packages with name '${packageName}' exist.`)\n" + | |
' }\n' + | |
' const packageVersion = currentValue?.versions?.[0]?.version?.value;\n' + | |
' accumulator[packageName] = { id: packageId, version: packageVersion };\n' + | |
' return accumulator;\n' + | |
' },\n' + | |
' {}\n' + | |
' );\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
' return existingPackages;\n' + | |
' };\n' + | |
'\n' + | |
' if (!triggeredByLinkId) {\n' + | |
" throw new Error('Install link should be inserted using JWT token (role link), it cannot be inserted using hasura secret (role admin).');\n" + | |
' }\n' + | |
'\n' + | |
' const { data: [{ value: { value: packageQuery } }] } = await deep.select({ id: newLink.to_id });\n' + | |
" const packageQueryParts = packageQuery.split('@');\n" + | |
' if (packageQueryParts.length === 3) {\n' + | |
' const packageVersion = packageQueryParts.pop();\n' + | |
' }\n' + | |
" const packageName = packageQueryParts.join('@');\n" + | |
' if (!packageName) {\n' + | |
" throw new Error('Package query value is empty.');\n" + | |
' }\n' + | |
' const tempDirectory = await makeTempDirectory();\n' + | |
' let deepJson;\n' + | |
' let packageJson;\n' + | |
' const installationQueue = [];\n' + | |
' const installationSet = {};\n' + | |
' try {\n' + | |
' const npmToken = await loadNpmToken();\n' + | |
' if (npmToken) {\n' + | |
' await npmLogin(npmToken, tempDirectory);\n' + | |
' }\n' + | |
" const nodeModulesPath = [tempDirectory, 'node_modules'].join('/');\n" + | |
' await npmInstall(packageQuery, tempDirectory);\n' + | |
' const packagePath = makePackagePath(tempDirectory, packageName);\n' + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
' deepJson = await deep.import(deepJsonPath);\n' + | |
' packageJson = await deep.import(packageJsonPath);\n' + | |
'\n' + | |
' const packages = await getDeepPackagesList(nodeModulesPath);\n' + | |
" console.log('packages', packages);\n" + | |
' \n' + | |
' const deepPackagesDependencies = await getDeepPackagesDependencies(nodeModulesPath, packages, packageName);\n' + | |
' delete deepPackagesDependencies[packageName];\n' + | |
" console.log('deepPackagesDependencies', deepPackagesDependencies);\n" + | |
' \n' + | |
' buildInstallationQueue(deepPackagesDependencies, installationQueue, installationSet);\n' + | |
' \n' + | |
" console.log('installationQueue', installationQueue);\n" + | |
" console.log('installationSet', installationSet);\n" + | |
' } finally {\n' + | |
' fs.rmSync(tempDirectory, { recursive: true, force: true });\n' + | |
' }\n' + | |
' \n' + | |
' const existingPackages = await getExistingPackages(installationQueue.map(e => e.name));\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
'\n' + | |
' for (const dependencyPackage of instal'... 1567 more characters, | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzU0In0sImlhdCI6MTcwMDE3ODgxM30.zkKnU0HyNnzIAXwMX1tI9UfVtN81S32Wo5VUL4G0Gic', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 380, | |
oldLink: null, | |
newLink: { from_id: 380, type_id: 750, id: 1010, to_id: 1009, value: null }, | |
promiseId: 1011 | |
} | |
} | |
/tmp/bf5f4181-4dc2-486a-81cb-d8083f32b55f | |
npm --prefix "/tmp/bf5f4181-4dc2-486a-81cb-d8083f32b55f" i @deep-foundation/deepcase-opened | |
added 2 packages in 5s | |
find . -name deep.json | |
./@deep-foundation/core/deep.json | |
./@deep-foundation/deepcase-opened/deep.json | |
packages [ [ '@deep-foundation/core' ], [ '@deep-foundation/deepcase-opened' ] ] | |
packagePath /tmp/bf5f4181-4dc2-486a-81cb-d8083f32b55f/node_modules/@deep-foundation/core | |
packageJsonPath /tmp/bf5f4181-4dc2-486a-81cb-d8083f32b55f/node_modules/@deep-foundation/core/package.json | |
packageJson { name: '@deep-foundation/core', version: '0.0.2' } | |
deepJsonPath /tmp/bf5f4181-4dc2-486a-81cb-d8083f32b55f/node_modules/@deep-foundation/core/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/core', version: '0.0.2' }, | |
data: [ | |
{ id: 'Type', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Package', type: 'Type' }, | |
{ id: 'Contain', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Value', type: 'Type', from: 'Any', to: 'Type' }, | |
{ id: 'String', type: 'Type' }, | |
{ id: 'Number', type: 'Type' }, | |
{ id: 'Object', type: 'Type' }, | |
{ id: 'Any', type: 'Type' }, | |
{ id: 'Promise', type: 'Type' }, | |
{ id: 'Then', type: 'Type', from: 'Any', to: 'Promise' }, | |
{ id: 'Resolved', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'Rejected', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'typeValue', type: 'Value', from: 'Type', to: 'String' }, | |
{ | |
id: 'packageValue', | |
type: 'Value', | |
from: 'Package', | |
to: 'String' | |
}, | |
{ id: 'Selector', type: 'Type' }, | |
{ | |
id: 'SelectorInclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ id: 'Rule', type: 'Type' }, | |
{ id: 'RuleSubject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleObject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleAction', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ | |
id: 'containValue', | |
type: 'Value', | |
from: 'Contain', | |
to: 'String' | |
}, | |
{ id: 'User', type: 'Type' }, | |
{ id: 'Operation', type: 'Type' }, | |
{ | |
id: 'operationValue', | |
type: 'Value', | |
from: 'Operation', | |
to: 'String' | |
}, | |
{ id: 'AllowInsert', type: 'Operation' }, | |
{ id: 'AllowUpdate', type: 'Operation' }, | |
{ id: 'AllowDelete', type: 'Operation' }, | |
{ id: 'AllowSelect', type: 'Operation' }, | |
{ id: 'File', type: 'Type' }, | |
{ id: 'SyncTextFile', type: 'File' }, | |
{ | |
id: 'syncTextFileValue', | |
type: 'Value', | |
from: 'SyncTextFile', | |
to: 'String' | |
}, | |
{ id: 'ExecutionProvider', type: 'Type' }, | |
{ id: 'JSExecutionProvider', type: 'ExecutionProvider' }, | |
{ id: 'TreeInclude', type: 'Type', from: 'Type', to: 'Any' }, | |
{ id: 'Handler', type: 'Type', from: 'Supports', to: 'Any' }, | |
{ id: 'Tree', type: 'Type' }, | |
{ | |
id: 'TreeIncludeDown', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeUp', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeNode', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ id: 'containTree', type: 'Tree' }, | |
{ | |
id: 'containTreeContain', | |
type: 'TreeIncludeDown', | |
from: 'containTree', | |
to: 'Contain' | |
}, | |
{ | |
id: 'containTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'containTree', | |
to: 'Any' | |
}, | |
{ id: 'PackageNamespace', type: 'Type' }, | |
{ | |
id: 'packageNamespaceValue', | |
type: 'Value', | |
from: 'PackageNamespace', | |
to: 'String' | |
}, | |
{ | |
id: 'PackageActive', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'PackageVersion', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'packageVersionValue', | |
type: 'Value', | |
from: 'PackageVersion', | |
to: 'String' | |
}, | |
{ id: 'HandleOperation', type: 'Type', from: 'Type', to: 'Type' }, | |
{ | |
id: 'HandleInsert', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleUpdate', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleDelete', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'PromiseResult', type: 'Type' }, | |
{ | |
id: 'promiseResultValueRelationTable', | |
type: 'Value', | |
from: 'PromiseResult', | |
to: 'Object' | |
}, | |
{ id: 'PromiseReason', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Focus', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'focusValue', type: 'Value', from: 'Focus', to: 'Object' }, | |
{ id: 'AsyncFile', type: 'File' }, | |
{ | |
id: 'handlersTreeHandler', | |
type: 'TreeIncludeUp', | |
from: 'handlersTree', | |
to: 'Handler' | |
}, | |
{ id: 'Query', type: 'Type' }, | |
{ id: 'queryValue', type: 'Value', from: 'Query', to: 'Object' }, | |
{ id: 'Active', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Fixed', type: 'Type' }, | |
{ id: 'fixedValue', type: 'Value', from: 'Fixed', to: 'Object' }, | |
{ id: 'Space', type: 'Type' }, | |
{ id: 'spaceValue', type: 'Value', from: 'Space', to: 'String' }, | |
{ id: 'AllowLogin', type: 'Operation' }, | |
{ id: 'guests', type: 'Any' }, | |
{ id: 'Join', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'joinTree', type: 'Tree' }, | |
{ | |
id: 'joinTreeJoin', | |
type: 'TreeIncludeUp', | |
from: 'joinTree', | |
to: 'Join' | |
}, | |
{ | |
id: 'joinTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'joinTree', | |
to: 'Any' | |
}, | |
{ id: 'SelectorTree', type: 'Type', from: 'Any', to: 'Tree' }, | |
{ id: 'AllowAdmin', type: 'Operation' }, | |
{ | |
id: 'SelectorExclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ | |
id: 'SelectorFilter', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Query' | |
}, | |
{ | |
id: 'HandleSchedule', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'Schedule', type: 'Type' }, | |
{ | |
id: 'scheduleValue', | |
type: 'Value', | |
from: 'Schedule', | |
to: 'String' | |
}, | |
{ id: 'Router', type: 'Type', value: [Object] }, | |
{ id: 'IsolationProvider', type: 'Type' }, | |
{ id: 'DockerIsolationProvider', type: 'IsolationProvider' }, | |
{ | |
id: 'dockerIsolationProviderValue', | |
type: 'Value', | |
from: 'DockerIsolationProvider', | |
to: 'String' | |
}, | |
{ | |
id: 'JSDockerIsolationProvider', | |
type: 'DockerIsolationProvider', | |
value: [Object] | |
}, | |
{ id: 'Supports', type: 'Type', from: 'Any', to: 'Any' }, | |
{ | |
id: 'dockerSupportsJs', | |
type: 'Supports', | |
from: 'JSDockerIsolationProvider', | |
to: 'JSExecutionProvider' | |
}, | |
{ | |
id: 'PackageInstall', | |
type: 'Type', | |
from: 'Any', | |
to: 'PackageQuery' | |
}, | |
{ | |
id: 'PackagePublish', | |
type: 'Type', | |
from: 'Package', | |
to: 'PackageQuery' | |
}, | |
{ id: 'packageInstallCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packageInstallCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packageInstallCode' | |
}, | |
{ | |
id: 'packageInstallCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackageInstall', | |
to: 'packageInstallCodeHandler' | |
}, | |
{ id: 'packagePublishCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packagePublishCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packagePublishCode' | |
}, | |
{ | |
id: 'packagePublishCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackagePublish', | |
to: 'packagePublishCodeHandler' | |
}, | |
{ id: 'AllowPackageInstall', type: 'Operation' }, | |
{ id: 'portValue', type: 'Value', from: 'Port', to: 'Number' }, | |
{ | |
id: 'HandlePort', | |
type: 'HandleOperation', | |
from: 'Port', | |
to: 'Any' | |
}, | |
{ id: 'Route', type: 'Type' }, | |
{ id: 'RouterListening', type: 'Type', from: 'Router', to: 'Port' }, | |
{ | |
id: 'RouterStringUse', | |
type: 'Type', | |
from: 'Route', | |
to: 'Router' | |
}, | |
{ | |
id: 'routerStringUseValue', | |
type: 'Value', | |
from: 'RouterStringUse', | |
to: 'String' | |
}, | |
... 74 more items | |
], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
} | |
dependencies {} | |
dependencyPackageName @deep-foundation/core | |
packagePath /tmp/bf5f4181-4dc2-486a-81cb-d8083f32b55f/node_modules/@deep-foundation/deepcase-opened | |
packageJsonPath /tmp/bf5f4181-4dc2-486a-81cb-d8083f32b55f/node_modules/@deep-foundation/deepcase-opened/package.json | |
packageJson { | |
name: '@deep-foundation/deepcase-opened', | |
keywords: [ 'deep-package' ], | |
version: '0.0.1', | |
dependencies: { '@deep-foundation/core': '^0.0.2' } | |
} | |
deepJsonPath /tmp/bf5f4181-4dc2-486a-81cb-d8083f32b55f/node_modules/@deep-foundation/deepcase-opened/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/deepcase-opened', version: '0.0.1' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ id: 'Opened', type: 1, from: 2, to: 2 }, | |
{ id: 'OpenedHandler', type: 1, from: 'Opened', to: 3 } | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '^0.0.2' } | |
dependencyPackageName @deep-foundation/deepcase-opened | |
deepPackagesDependencies { | |
'@deep-foundation/core': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' }, | |
dependencies: [] | |
} | |
} | |
installationQueue [ | |
{ | |
name: '@deep-foundation/core', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' } | |
} | |
] | |
installationSet { '@deep-foundation/core': true } | |
packages [ | |
{ | |
id: 184, | |
name: { id: 6, value: '@deep-foundation/core', link_id: 184 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
} | |
] | |
existingPackages { '@deep-foundation/core': { id: 184, version: '0.0.2' } } | |
existingPackages { '@deep-foundation/core': { id: 184, version: '0.0.2' } } | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:266:26) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
{ | |
ids: [ | |
1014, 1015, 1016, 1017, | |
1018, 1019, 1020, 1021, | |
1022, 1023, 1024, 1025, | |
1026, 1027, 1028, 1029, | |
1030 | |
], | |
errors: [], | |
namespaceId: 1014, | |
packageId: 1019 | |
} | |
call result { | |
ids: [ | |
1014, 1015, 1016, 1017, | |
1018, 1019, 1020, 1021, | |
1022, 1023, 1024, 1025, | |
1026, 1027, 1028, 1029, | |
1030 | |
], | |
errors: [], | |
namespaceId: 1014, | |
packageId: 1019 | |
} | |
call body params { | |
code: 'async ({ deep, gql, data: { triggeredByLinkId, newLink } }) => {\n' + | |
" const deepFileName = 'deep.json';\n" + | |
" const fs = await deep.import('fs');\n" + | |
'\n' + | |
' const makeTempDirectory = async () => {\n' + | |
" const os = await deep.import('os');\n" + | |
" const { v4: uuid } = await deep.import('uuid');\n" + | |
' \n' + | |
' const baseTempDirectory = os.tmpdir();\n' + | |
' const randomId = uuid();\n' + | |
" const tempDirectory = [baseTempDirectory,randomId].join('/');\n" + | |
' fs.mkdirSync(tempDirectory);\n' + | |
' console.log(tempDirectory);\n' + | |
' return tempDirectory;\n' + | |
' };\n' + | |
' const npmInstall = async (packageName, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
' const command = `npm --prefix "${tempDirectory}" i ${packageName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
' const npmLogin = async (token, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
' \n' + | |
' const command = `npm set "//registry.npmjs.org/:_authToken" ${token}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
" const makePackagePath = (tempDirectory, packageName) => [tempDirectory, 'node_modules', packageName].join('/');\n" + | |
" const makeDeepJsonPath = (packagePath) => [packagePath, deepFileName].join('/');\n" + | |
" const makePackageJsonPath = (packagePath) => [packagePath, 'package.json'].join('/');\n" + | |
' const loadNpmToken = async () => {\n' + | |
" const containTreeId = await deep.id('@deep-foundation/core', 'containTree');\n" + | |
" const tokenTypeId = await deep.id('@deep-foundation/npm-packager', 'Token');\n" + | |
' const { data: [{ value: { value: npmToken = undefined } = {}} = {}] = []} = await deep.select({\n' + | |
' up: {\n' + | |
' tree_id: { _eq: containTreeId },\n' + | |
' parent: { id: { _eq: triggeredByLinkId } },\n' + | |
' link: { type_id: { _eq: tokenTypeId } }\n' + | |
' }\n' + | |
' });\n' + | |
' return npmToken;\n' + | |
' };\n' + | |
' const deepImport = async (deepJson, packageJson) => {\n' + | |
' if (deepJson.package.name !== packageJson.name) {\n' + | |
' throw new Error(`Package name is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package name: ${deepJson.package.name}.\n' + | |
' package.json package name: ${packageJson.name}.`);\n' + | |
' }\n' + | |
' if (deepJson.package.version !== packageJson.version) {\n' + | |
' throw new Error(`Package version is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package version: ${deepJson.package.version}.\n' + | |
' package.json package version: ${packageJson.version}.`);\n' + | |
' }\n' + | |
" const packager = new (await deep.import('@deep-foundation/deeplinks/imports/packager.js')).Packager(deep);\n" + | |
' const imported = await packager.import(deepJson);\n' + | |
' console.log(imported);\n' + | |
' if (imported?.errors?.length) throw imported;\n' + | |
' return imported;\n' + | |
' };\n' + | |
' const getDeepPackagesList = async (rootPath) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
" const deepFileName = 'deep.json';\n" + | |
' const deepFileNameLength = deepFileName.length;\n' + | |
'\n' + | |
' const command = `find . -name ${deepFileName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: rootPath\n' + | |
' });\n' + | |
" console.log('', `${command}\\n`, output);\n" + | |
'\n' + | |
' const packages = output\n' + | |
' .split(/\\r?\\n/)\n' + | |
' .filter(line => line.trim())\n' + | |
' .map(line => line.slice(2).slice(0, -deepFileNameLength - 1))\n' + | |
" .map(line => line.split('/node_modules/'));\n" + | |
' return packages;\n' + | |
' };\n' + | |
' const getDeepPackagesDependencies = async (rootPath, packages, packageName) => {\n' + | |
' const dictionary = {};\n' + | |
' for (const pkg of packages) {\n' + | |
" const packagePath = [rootPath, pkg.join('/node_modules/')].join('/');\n" + | |
" console.log('packagePath', packagePath);\n" + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
" console.log('packageJsonPath', packageJsonPath);\n" + | |
' if (!fs.existsSync(packageJsonPath)) {\n' + | |
' throw new Error(`package.json for dependency ${pkg} is not found at ${packageJsonPath}. Looks like ${packageName} does not contain ${pkg} dependency in package.json.`);\n' + | |
' }\n' + | |
' const packageJson = await deep.import(packageJsonPath);\n' + | |
" console.log('packageJson', packageJson);\n" + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
" console.log('deepJsonPath', deepJsonPath);\n" + | |
' if (!fs.existsSync(deepJsonPath)) {\n' + | |
' throw new Error(`deep.json for dependency ${pkg} is not found at ${deepJsonPath}. Looks like ${pkg} installed, but it does not contain deep.json. Make sure ${pkg} is a deep package.`);\n' + | |
' }\n' + | |
' const deepJson = await deep.import(deepJsonPath);\n' + | |
" console.log('deepJson', deepJson);\n" + | |
' const dependencies = packageJson.dependencies ?? {};\n' + | |
" console.log('dependencies', dependencies);\n" + | |
' const dependencyPackageName = pkg.at(-1);\n' + | |
" console.log('dependencyPackageName', dependencyPackageName);\n" + | |
' if (Array.isArray(dictionary[dependencyPackageName])) {\n' + | |
" throw new Error('Multiple versions of the same package are not supported yet.');\n" + | |
' }\n' + | |
' dictionary[dependencyPackageName] = { deepJson, packageJson, dependencies };\n' + | |
' }\n' + | |
' for (const pkg in dictionary) {\n' + | |
' const sourceDependencies = dictionary[pkg].dependencies;\n' + | |
' const targetDependencies = [];\n' + | |
' for (const dependency in sourceDependencies)\n' + | |
' {\n' + | |
' if (dictionary[dependency]) {\n' + | |
' targetDependencies.push(dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' dictionary[pkg].dependencies = targetDependencies;\n' + | |
' }\n' + | |
' return dictionary;\n' + | |
' }\n' + | |
' const buildInstallationQueueCore = (deepPackagesDependencies, queue, set, packageName) => {\n' + | |
' const dependencies = deepPackagesDependencies[packageName].dependencies;\n' + | |
' for (const dependency of dependencies) {\n' + | |
' if (!set[dependency]) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' if(!set[packageName]) {\n' + | |
' const deepJson = deepPackagesDependencies[packageName].deepJson;\n' + | |
' const packageJson = deepPackagesDependencies[packageName].packageJson;\n' + | |
' queue.push({ name: packageName, deepJson, packageJson });\n' + | |
' set[packageName] = true;\n' + | |
' }\n' + | |
' }\n' + | |
' const buildInstallationQueue = (deepPackagesDependencies, queue, set) => {\n' + | |
' for (const packageName in deepPackagesDependencies) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, packageName);\n' + | |
' }\n' + | |
' }\n' + | |
' const getExistingPackages = async (packageNames) => {\n' + | |
" const packageTypeId = await deep.id('@deep-foundation/core', 'Package');\n" + | |
" const packageVersionTypeId = await deep.id('@deep-foundation/core', 'PackageVersion');\n" + | |
' const { data: packages } = await deep.select({\n' + | |
' type_id: { _eq: packageTypeId },\n' + | |
' string: { value: { _in: packageNames } }\n' + | |
' }, {\n' + | |
" name: 'GET_EXISTING_PACKAGES_WITH_VERSIONS',\n" + | |
' returning: `\n' + | |
' id\n' + | |
' name: value\n' + | |
' versions: in(where: {type_id: {_eq: ${packageVersionTypeId}}, string: {value: {_is_null: false}}}) {\n' + | |
' id\n' + | |
' version: value\n' + | |
' }\n' + | |
' `\n' + | |
' })\n' + | |
" console.log('packages', packages);\n" + | |
' const existingPackages = packages.reduce(\n' + | |
' (accumulator, currentValue) => {\n' + | |
' const packageId = currentValue?.id;\n' + | |
' const packageName = currentValue?.name?.value;\n' + | |
' if (currentValue?.versions.length !== 1) {\n' + | |
" throw new Error(`'${packageName}' package must have exactly one version. Now it has ${currentValue?.versions.length} versions.`);\n" + | |
' }\n' + | |
' if (accumulator[packageName]) {\n' + | |
" throw new Error(`Multiple packages with name '${packageName}' exist.`)\n" + | |
' }\n' + | |
' const packageVersion = currentValue?.versions?.[0]?.version?.value;\n' + | |
' accumulator[packageName] = { id: packageId, version: packageVersion };\n' + | |
' return accumulator;\n' + | |
' },\n' + | |
' {}\n' + | |
' );\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
' return existingPackages;\n' + | |
' };\n' + | |
'\n' + | |
' if (!triggeredByLinkId) {\n' + | |
" throw new Error('Install link should be inserted using JWT token (role link), it cannot be inserted using hasura secret (role admin).');\n" + | |
' }\n' + | |
'\n' + | |
' const { data: [{ value: { value: packageQuery } }] } = await deep.select({ id: newLink.to_id });\n' + | |
" const packageQueryParts = packageQuery.split('@');\n" + | |
' if (packageQueryParts.length === 3) {\n' + | |
' const packageVersion = packageQueryParts.pop();\n' + | |
' }\n' + | |
" const packageName = packageQueryParts.join('@');\n" + | |
' if (!packageName) {\n' + | |
" throw new Error('Package query value is empty.');\n" + | |
' }\n' + | |
' const tempDirectory = await makeTempDirectory();\n' + | |
' let deepJson;\n' + | |
' let packageJson;\n' + | |
' const installationQueue = [];\n' + | |
' const installationSet = {};\n' + | |
' try {\n' + | |
' const npmToken = await loadNpmToken();\n' + | |
' if (npmToken) {\n' + | |
' await npmLogin(npmToken, tempDirectory);\n' + | |
' }\n' + | |
" const nodeModulesPath = [tempDirectory, 'node_modules'].join('/');\n" + | |
' await npmInstall(packageQuery, tempDirectory);\n' + | |
' const packagePath = makePackagePath(tempDirectory, packageName);\n' + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
' deepJson = await deep.import(deepJsonPath);\n' + | |
' packageJson = await deep.import(packageJsonPath);\n' + | |
'\n' + | |
' const packages = await getDeepPackagesList(nodeModulesPath);\n' + | |
" console.log('packages', packages);\n" + | |
' \n' + | |
' const deepPackagesDependencies = await getDeepPackagesDependencies(nodeModulesPath, packages, packageName);\n' + | |
' delete deepPackagesDependencies[packageName];\n' + | |
" console.log('deepPackagesDependencies', deepPackagesDependencies);\n" + | |
' \n' + | |
' buildInstallationQueue(deepPackagesDependencies, installationQueue, installationSet);\n' + | |
' \n' + | |
" console.log('installationQueue', installationQueue);\n" + | |
" console.log('installationSet', installationSet);\n" + | |
' } finally {\n' + | |
' fs.rmSync(tempDirectory, { recursive: true, force: true });\n' + | |
' }\n' + | |
' \n' + | |
' const existingPackages = await getExistingPackages(installationQueue.map(e => e.name));\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
'\n' + | |
' for (const dependencyPackage of instal'... 1567 more characters, | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzU0In0sImlhdCI6MTcwMDE3OTI2NH0.1VMuJwv00E-6d5ZPcinYRKyWm0fxIrzc7a08dpcQMss', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 380, | |
oldLink: null, | |
newLink: { from_id: 380, type_id: 750, id: 1080, to_id: 1078, value: null }, | |
promiseId: 1081 | |
} | |
} | |
call body params { | |
code: 'async ({ deep, gql, data: { triggeredByLinkId, newLink } }) => {\n' + | |
" const deepFileName = 'deep.json';\n" + | |
" const fs = await deep.import('fs');\n" + | |
'\n' + | |
' const makeTempDirectory = async () => {\n' + | |
" const os = await deep.import('os');\n" + | |
" const { v4: uuid } = await deep.import('uuid');\n" + | |
' \n' + | |
' const baseTempDirectory = os.tmpdir();\n' + | |
' const randomId = uuid();\n' + | |
" const tempDirectory = [baseTempDirectory,randomId].join('/');\n" + | |
' fs.mkdirSync(tempDirectory);\n' + | |
' console.log(tempDirectory);\n' + | |
' return tempDirectory;\n' + | |
' };\n' + | |
' const npmInstall = async (packageName, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
' const command = `npm --prefix "${tempDirectory}" i ${packageName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
' const npmLogin = async (token, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
' \n' + | |
' const command = `npm set "//registry.npmjs.org/:_authToken" ${token}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
" const makePackagePath = (tempDirectory, packageName) => [tempDirectory, 'node_modules', packageName].join('/');\n" + | |
" const makeDeepJsonPath = (packagePath) => [packagePath, deepFileName].join('/');\n" + | |
" const makePackageJsonPath = (packagePath) => [packagePath, 'package.json'].join('/');\n" + | |
' const loadNpmToken = async () => {\n' + | |
" const containTreeId = await deep.id('@deep-foundation/core', 'containTree');\n" + | |
" const tokenTypeId = await deep.id('@deep-foundation/npm-packager', 'Token');\n" + | |
' const { data: [{ value: { value: npmToken = undefined } = {}} = {}] = []} = await deep.select({\n' + | |
' up: {\n' + | |
' tree_id: { _eq: containTreeId },\n' + | |
' parent: { id: { _eq: triggeredByLinkId } },\n' + | |
' link: { type_id: { _eq: tokenTypeId } }\n' + | |
' }\n' + | |
' });\n' + | |
' return npmToken;\n' + | |
' };\n' + | |
' const deepImport = async (deepJson, packageJson) => {\n' + | |
' if (deepJson.package.name !== packageJson.name) {\n' + | |
' throw new Error(`Package name is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package name: ${deepJson.package.name}.\n' + | |
' package.json package name: ${packageJson.name}.`);\n' + | |
' }\n' + | |
' if (deepJson.package.version !== packageJson.version) {\n' + | |
' throw new Error(`Package version is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package version: ${deepJson.package.version}.\n' + | |
' package.json package version: ${packageJson.version}.`);\n' + | |
' }\n' + | |
" const packager = new (await deep.import('@deep-foundation/deeplinks/imports/packager.js')).Packager(deep);\n" + | |
' const imported = await packager.import(deepJson);\n' + | |
' console.log(imported);\n' + | |
' if (imported?.errors?.length) throw imported;\n' + | |
' return imported;\n' + | |
' };\n' + | |
' const getDeepPackagesList = async (rootPath) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
" const deepFileName = 'deep.json';\n" + | |
' const deepFileNameLength = deepFileName.length;\n' + | |
'\n' + | |
' const command = `find . -name ${deepFileName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: rootPath\n' + | |
' });\n' + | |
" console.log('', `${command}\\n`, output);\n" + | |
'\n' + | |
' const packages = output\n' + | |
' .split(/\\r?\\n/)\n' + | |
' .filter(line => line.trim())\n' + | |
' .map(line => line.slice(2).slice(0, -deepFileNameLength - 1))\n' + | |
" .map(line => line.split('/node_modules/'));\n" + | |
' return packages;\n' + | |
' };\n' + | |
' const getDeepPackagesDependencies = async (rootPath, packages, packageName) => {\n' + | |
' const dictionary = {};\n' + | |
' for (const pkg of packages) {\n' + | |
" const packagePath = [rootPath, pkg.join('/node_modules/')].join('/');\n" + | |
" console.log('packagePath', packagePath);\n" + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
" console.log('packageJsonPath', packageJsonPath);\n" + | |
' if (!fs.existsSync(packageJsonPath)) {\n' + | |
' throw new Error(`package.json for dependency ${pkg} is not found at ${packageJsonPath}. Looks like ${packageName} does not contain ${pkg} dependency in package.json.`);\n' + | |
' }\n' + | |
' const packageJson = await deep.import(packageJsonPath);\n' + | |
" console.log('packageJson', packageJson);\n" + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
" console.log('deepJsonPath', deepJsonPath);\n" + | |
' if (!fs.existsSync(deepJsonPath)) {\n' + | |
' throw new Error(`deep.json for dependency ${pkg} is not found at ${deepJsonPath}. Looks like ${pkg} installed, but it does not contain deep.json. Make sure ${pkg} is a deep package.`);\n' + | |
' }\n' + | |
' const deepJson = await deep.import(deepJsonPath);\n' + | |
" console.log('deepJson', deepJson);\n" + | |
' const dependencies = packageJson.dependencies ?? {};\n' + | |
" console.log('dependencies', dependencies);\n" + | |
' const dependencyPackageName = pkg.at(-1);\n' + | |
" console.log('dependencyPackageName', dependencyPackageName);\n" + | |
' if (Array.isArray(dictionary[dependencyPackageName])) {\n' + | |
" throw new Error('Multiple versions of the same package are not supported yet.');\n" + | |
' }\n' + | |
' dictionary[dependencyPackageName] = { deepJson, packageJson, dependencies };\n' + | |
' }\n' + | |
' for (const pkg in dictionary) {\n' + | |
' const sourceDependencies = dictionary[pkg].dependencies;\n' + | |
' const targetDependencies = [];\n' + | |
' for (const dependency in sourceDependencies)\n' + | |
' {\n' + | |
' if (dictionary[dependency]) {\n' + | |
' targetDependencies.push(dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' dictionary[pkg].dependencies = targetDependencies;\n' + | |
' }\n' + | |
' return dictionary;\n' + | |
' }\n' + | |
' const buildInstallationQueueCore = (deepPackagesDependencies, queue, set, packageName) => {\n' + | |
' const dependencies = deepPackagesDependencies[packageName].dependencies;\n' + | |
' for (const dependency of dependencies) {\n' + | |
' if (!set[dependency]) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' if(!set[packageName]) {\n' + | |
' const deepJson = deepPackagesDependencies[packageName].deepJson;\n' + | |
' const packageJson = deepPackagesDependencies[packageName].packageJson;\n' + | |
' queue.push({ name: packageName, deepJson, packageJson });\n' + | |
' set[packageName] = true;\n' + | |
' }\n' + | |
' }\n' + | |
' const buildInstallationQueue = (deepPackagesDependencies, queue, set) => {\n' + | |
' for (const packageName in deepPackagesDependencies) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, packageName);\n' + | |
' }\n' + | |
' }\n' + | |
' const getExistingPackages = async (packageNames) => {\n' + | |
" const packageTypeId = await deep.id('@deep-foundation/core', 'Package');\n" + | |
" const packageVersionTypeId = await deep.id('@deep-foundation/core', 'PackageVersion');\n" + | |
' const { data: packages } = await deep.select({\n' + | |
' type_id: { _eq: packageTypeId },\n' + | |
' string: { value: { _in: packageNames } }\n' + | |
' }, {\n' + | |
" name: 'GET_EXISTING_PACKAGES_WITH_VERSIONS',\n" + | |
' returning: `\n' + | |
' id\n' + | |
' name: value\n' + | |
' versions: in(where: {type_id: {_eq: ${packageVersionTypeId}}, string: {value: {_is_null: false}}}) {\n' + | |
' id\n' + | |
' version: value\n' + | |
' }\n' + | |
' `\n' + | |
' })\n' + | |
" console.log('packages', packages);\n" + | |
' const existingPackages = packages.reduce(\n' + | |
' (accumulator, currentValue) => {\n' + | |
' const packageId = currentValue?.id;\n' + | |
' const packageName = currentValue?.name?.value;\n' + | |
' if (currentValue?.versions.length !== 1) {\n' + | |
" throw new Error(`'${packageName}' package must have exactly one version. Now it has ${currentValue?.versions.length} versions.`);\n" + | |
' }\n' + | |
' if (accumulator[packageName]) {\n' + | |
" throw new Error(`Multiple packages with name '${packageName}' exist.`)\n" + | |
' }\n' + | |
' const packageVersion = currentValue?.versions?.[0]?.version?.value;\n' + | |
' accumulator[packageName] = { id: packageId, version: packageVersion };\n' + | |
' return accumulator;\n' + | |
' },\n' + | |
' {}\n' + | |
' );\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
' return existingPackages;\n' + | |
' };\n' + | |
'\n' + | |
' if (!triggeredByLinkId) {\n' + | |
" throw new Error('Install link should be inserted using JWT token (role link), it cannot be inserted using hasura secret (role admin).');\n" + | |
' }\n' + | |
'\n' + | |
' const { data: [{ value: { value: packageQuery } }] } = await deep.select({ id: newLink.to_id });\n' + | |
" const packageQueryParts = packageQuery.split('@');\n" + | |
' if (packageQueryParts.length === 3) {\n' + | |
' const packageVersion = packageQueryParts.pop();\n' + | |
' }\n' + | |
" const packageName = packageQueryParts.join('@');\n" + | |
' if (!packageName) {\n' + | |
" throw new Error('Package query value is empty.');\n" + | |
' }\n' + | |
' const tempDirectory = await makeTempDirectory();\n' + | |
' let deepJson;\n' + | |
' let packageJson;\n' + | |
' const installationQueue = [];\n' + | |
' const installationSet = {};\n' + | |
' try {\n' + | |
' const npmToken = await loadNpmToken();\n' + | |
' if (npmToken) {\n' + | |
' await npmLogin(npmToken, tempDirectory);\n' + | |
' }\n' + | |
" const nodeModulesPath = [tempDirectory, 'node_modules'].join('/');\n" + | |
' await npmInstall(packageQuery, tempDirectory);\n' + | |
' const packagePath = makePackagePath(tempDirectory, packageName);\n' + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
' deepJson = await deep.import(deepJsonPath);\n' + | |
' packageJson = await deep.import(packageJsonPath);\n' + | |
'\n' + | |
' const packages = await getDeepPackagesList(nodeModulesPath);\n' + | |
" console.log('packages', packages);\n" + | |
' \n' + | |
' const deepPackagesDependencies = await getDeepPackagesDependencies(nodeModulesPath, packages, packageName);\n' + | |
' delete deepPackagesDependencies[packageName];\n' + | |
" console.log('deepPackagesDependencies', deepPackagesDependencies);\n" + | |
' \n' + | |
' buildInstallationQueue(deepPackagesDependencies, installationQueue, installationSet);\n' + | |
' \n' + | |
" console.log('installationQueue', installationQueue);\n" + | |
" console.log('installationSet', installationSet);\n" + | |
' } finally {\n' + | |
' fs.rmSync(tempDirectory, { recursive: true, force: true });\n' + | |
' }\n' + | |
' \n' + | |
' const existingPackages = await getExistingPackages(installationQueue.map(e => e.name));\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
'\n' + | |
' for (const dependencyPackage of instal'... 1567 more characters, | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzU0In0sImlhdCI6MTcwMDE3OTI2NH0.1VMuJwv00E-6d5ZPcinYRKyWm0fxIrzc7a08dpcQMss', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 380, | |
oldLink: null, | |
newLink: { from_id: 380, type_id: 750, id: 1086, to_id: 1084, value: null }, | |
promiseId: 1087 | |
} | |
} | |
/tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e | |
/tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76 | |
npm --prefix "/tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76" i @suenot/[email protected] | |
added 5 packages in 8s | |
find . -name deep.json | |
./@deep-foundation/core/deep.json | |
./@suenot/transaction-tests/deep.json | |
./@suenot/unit/deep.json | |
./@suenot/asset/deep.json | |
./@suenot/wallet/deep.json | |
packages [ | |
[ '@deep-foundation/core' ], | |
[ '@suenot/transaction-tests' ], | |
[ '@suenot/unit' ], | |
[ '@suenot/asset' ], | |
[ '@suenot/wallet' ] | |
] | |
packagePath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@deep-foundation/core | |
packageJsonPath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@deep-foundation/core/package.json | |
packageJson { name: '@deep-foundation/core', version: '0.0.2' } | |
deepJsonPath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@deep-foundation/core/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/core', version: '0.0.2' }, | |
data: [ | |
{ id: 'Type', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Package', type: 'Type' }, | |
{ id: 'Contain', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Value', type: 'Type', from: 'Any', to: 'Type' }, | |
{ id: 'String', type: 'Type' }, | |
{ id: 'Number', type: 'Type' }, | |
{ id: 'Object', type: 'Type' }, | |
{ id: 'Any', type: 'Type' }, | |
{ id: 'Promise', type: 'Type' }, | |
{ id: 'Then', type: 'Type', from: 'Any', to: 'Promise' }, | |
{ id: 'Resolved', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'Rejected', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'typeValue', type: 'Value', from: 'Type', to: 'String' }, | |
{ | |
id: 'packageValue', | |
type: 'Value', | |
from: 'Package', | |
to: 'String' | |
}, | |
{ id: 'Selector', type: 'Type' }, | |
{ | |
id: 'SelectorInclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ id: 'Rule', type: 'Type' }, | |
{ id: 'RuleSubject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleObject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleAction', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ | |
id: 'containValue', | |
type: 'Value', | |
from: 'Contain', | |
to: 'String' | |
}, | |
{ id: 'User', type: 'Type' }, | |
{ id: 'Operation', type: 'Type' }, | |
{ | |
id: 'operationValue', | |
type: 'Value', | |
from: 'Operation', | |
to: 'String' | |
}, | |
{ id: 'AllowInsert', type: 'Operation' }, | |
{ id: 'AllowUpdate', type: 'Operation' }, | |
{ id: 'AllowDelete', type: 'Operation' }, | |
{ id: 'AllowSelect', type: 'Operation' }, | |
{ id: 'File', type: 'Type' }, | |
{ id: 'SyncTextFile', type: 'File' }, | |
{ | |
id: 'syncTextFileValue', | |
type: 'Value', | |
from: 'SyncTextFile', | |
to: 'String' | |
}, | |
{ id: 'ExecutionProvider', type: 'Type' }, | |
{ id: 'JSExecutionProvider', type: 'ExecutionProvider' }, | |
{ id: 'TreeInclude', type: 'Type', from: 'Type', to: 'Any' }, | |
{ id: 'Handler', type: 'Type', from: 'Supports', to: 'Any' }, | |
{ id: 'Tree', type: 'Type' }, | |
{ | |
id: 'TreeIncludeDown', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeUp', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeNode', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ id: 'containTree', type: 'Tree' }, | |
{ | |
id: 'containTreeContain', | |
type: 'TreeIncludeDown', | |
from: 'containTree', | |
to: 'Contain' | |
}, | |
{ | |
id: 'containTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'containTree', | |
to: 'Any' | |
}, | |
{ id: 'PackageNamespace', type: 'Type' }, | |
{ | |
id: 'packageNamespaceValue', | |
type: 'Value', | |
from: 'PackageNamespace', | |
to: 'String' | |
}, | |
{ | |
id: 'PackageActive', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'PackageVersion', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'packageVersionValue', | |
type: 'Value', | |
from: 'PackageVersion', | |
to: 'String' | |
}, | |
{ id: 'HandleOperation', type: 'Type', from: 'Type', to: 'Type' }, | |
{ | |
id: 'HandleInsert', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleUpdate', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleDelete', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'PromiseResult', type: 'Type' }, | |
{ | |
id: 'promiseResultValueRelationTable', | |
type: 'Value', | |
from: 'PromiseResult', | |
to: 'Object' | |
}, | |
{ id: 'PromiseReason', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Focus', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'focusValue', type: 'Value', from: 'Focus', to: 'Object' }, | |
{ id: 'AsyncFile', type: 'File' }, | |
{ | |
id: 'handlersTreeHandler', | |
type: 'TreeIncludeUp', | |
from: 'handlersTree', | |
to: 'Handler' | |
}, | |
{ id: 'Query', type: 'Type' }, | |
{ id: 'queryValue', type: 'Value', from: 'Query', to: 'Object' }, | |
{ id: 'Active', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Fixed', type: 'Type' }, | |
{ id: 'fixedValue', type: 'Value', from: 'Fixed', to: 'Object' }, | |
{ id: 'Space', type: 'Type' }, | |
{ id: 'spaceValue', type: 'Value', from: 'Space', to: 'String' }, | |
{ id: 'AllowLogin', type: 'Operation' }, | |
{ id: 'guests', type: 'Any' }, | |
{ id: 'Join', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'joinTree', type: 'Tree' }, | |
{ | |
id: 'joinTreeJoin', | |
type: 'TreeIncludeUp', | |
from: 'joinTree', | |
to: 'Join' | |
}, | |
{ | |
id: 'joinTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'joinTree', | |
to: 'Any' | |
}, | |
{ id: 'SelectorTree', type: 'Type', from: 'Any', to: 'Tree' }, | |
{ id: 'AllowAdmin', type: 'Operation' }, | |
{ | |
id: 'SelectorExclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ | |
id: 'SelectorFilter', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Query' | |
}, | |
{ | |
id: 'HandleSchedule', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'Schedule', type: 'Type' }, | |
{ | |
id: 'scheduleValue', | |
type: 'Value', | |
from: 'Schedule', | |
to: 'String' | |
}, | |
{ id: 'Router', type: 'Type', value: [Object] }, | |
{ id: 'IsolationProvider', type: 'Type' }, | |
{ id: 'DockerIsolationProvider', type: 'IsolationProvider' }, | |
{ | |
id: 'dockerIsolationProviderValue', | |
type: 'Value', | |
from: 'DockerIsolationProvider', | |
to: 'String' | |
}, | |
{ | |
id: 'JSDockerIsolationProvider', | |
type: 'DockerIsolationProvider', | |
value: [Object] | |
}, | |
{ id: 'Supports', type: 'Type', from: 'Any', to: 'Any' }, | |
{ | |
id: 'dockerSupportsJs', | |
type: 'Supports', | |
from: 'JSDockerIsolationProvider', | |
to: 'JSExecutionProvider' | |
}, | |
{ | |
id: 'PackageInstall', | |
type: 'Type', | |
from: 'Any', | |
to: 'PackageQuery' | |
}, | |
{ | |
id: 'PackagePublish', | |
type: 'Type', | |
from: 'Package', | |
to: 'PackageQuery' | |
}, | |
{ id: 'packageInstallCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packageInstallCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packageInstallCode' | |
}, | |
{ | |
id: 'packageInstallCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackageInstall', | |
to: 'packageInstallCodeHandler' | |
}, | |
{ id: 'packagePublishCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packagePublishCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packagePublishCode' | |
}, | |
{ | |
id: 'packagePublishCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackagePublish', | |
to: 'packagePublishCodeHandler' | |
}, | |
{ id: 'AllowPackageInstall', type: 'Operation' }, | |
{ id: 'portValue', type: 'Value', from: 'Port', to: 'Number' }, | |
{ | |
id: 'HandlePort', | |
type: 'HandleOperation', | |
from: 'Port', | |
to: 'Any' | |
}, | |
{ id: 'Route', type: 'Type' }, | |
{ id: 'RouterListening', type: 'Type', from: 'Router', to: 'Port' }, | |
{ | |
id: 'RouterStringUse', | |
type: 'Type', | |
from: 'Route', | |
to: 'Router' | |
}, | |
{ | |
id: 'routerStringUseValue', | |
type: 'Value', | |
from: 'RouterStringUse', | |
to: 'String' | |
}, | |
... 74 more items | |
], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
} | |
dependencies {} | |
dependencyPackageName @deep-foundation/core | |
packagePath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/transaction-tests | |
packageJsonPath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/transaction-tests/package.json | |
packageJson { | |
name: '@suenot/transaction-tests', | |
dependencies: { '@suenot/unit': '~0.0.2', '@suenot/wallet': '~0.0.3' }, | |
version: '0.0.2', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/transaction-tests/deep.json | |
deepJson { | |
package: { name: '@suenot/transaction-tests', version: '0.0.2' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ id: 'wallet1', type: 1, value: [Object] }, | |
{ | |
id: 'wallet1Name', | |
type: 2, | |
from: 'wallet1', | |
to: 'wallet1', | |
value: [Object] | |
}, | |
{ id: 'unit1', type: 3 }, | |
{ | |
id: 'unit1Description', | |
type: 4, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Avatar', | |
type: 5, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Ticker', | |
type: 6, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Name', | |
type: 7, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@suenot/wallet', version: '0.0.3' }, | |
{ name: '@suenot/unit', version: '0.0.2' } | |
] | |
} | |
dependencies { '@suenot/unit': '~0.0.2', '@suenot/wallet': '~0.0.3' } | |
dependencyPackageName @suenot/transaction-tests | |
packagePath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/unit | |
packageJsonPath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/unit/package.json | |
packageJson { | |
name: '@suenot/unit', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.2', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/unit/deep.json | |
deepJson { | |
package: { name: '@suenot/unit', version: '0.0.2' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Unit', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Unit', to: 'Unit' }, | |
{ | |
id: 'descriptionSymbol', | |
type: 2, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'avatarValue', type: 3, from: 'Avatar', to: 4 }, | |
{ | |
id: 'avatarSymbol', | |
type: 2, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'tickerValue', type: 3, from: 'Ticker', to: 4 }, | |
{ | |
id: 'tickerSymbol', | |
type: 2, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'nameValue', type: 3, from: 'Name', to: 4 }, | |
{ | |
id: 'nameSymbol', | |
type: 2, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 2, | |
from: 'Unit', | |
to: 'Unit', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/unit | |
packagePath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/asset | |
packageJsonPath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/asset/package.json | |
packageJson { | |
name: '@suenot/asset', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.8', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/asset/deep.json | |
deepJson { | |
package: { name: '@suenot/asset', version: '0.0.8' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Asset', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'Avatar', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'tickerValue', type: 2, from: 'Ticker', to: 3 }, | |
{ | |
id: 'tickerSymbol', | |
type: 4, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Asset', | |
to: 'Asset', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/asset | |
packagePath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/wallet | |
packageJsonPath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/wallet/package.json | |
packageJson { | |
name: '@suenot/wallet', | |
dependencies: { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
}, | |
version: '0.0.3', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/3c9303c1-2599-4be8-bdbd-ba5d75f70c76/node_modules/@suenot/wallet/deep.json | |
deepJson { | |
package: { name: '@suenot/wallet', version: '0.0.3' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ id: 'Wallet', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'descriptionValue', type: 2, from: 'Description', to: 3 }, | |
{ | |
id: 'descriptionSymbol', | |
type: 4, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'ContainUnit', type: 1, from: 'Wallet', to: 5 }, | |
{ id: 'Name', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Wallet', | |
to: 'Wallet', | |
value: [Object] | |
}, | |
{ id: 'waletValue', type: 2, from: 'Wallet', to: 6 } | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/core', version: '0.0.2' }, | |
{ name: '@suenot/unit', version: '0.0.2' } | |
] | |
} | |
dependencies { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
} | |
dependencyPackageName @suenot/wallet | |
deepPackagesDependencies { | |
'@deep-foundation/core': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' }, | |
dependencies: [] | |
}, | |
'@suenot/unit': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/asset': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/wallet': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core', '@suenot/asset', '@suenot/unit' ] | |
} | |
} | |
installationQueue [ | |
{ | |
name: '@deep-foundation/core', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' } | |
}, | |
{ | |
name: '@suenot/unit', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/asset', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/wallet', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
} | |
} | |
] | |
installationSet { | |
'@deep-foundation/core': true, | |
'@suenot/unit': true, | |
'@suenot/asset': true, | |
'@suenot/wallet': true | |
} | |
npm --prefix "/tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e" i @suenot/[email protected] | |
added 5 packages in 458ms | |
find . -name deep.json | |
./@deep-foundation/core/deep.json | |
./@suenot/transaction-tests/deep.json | |
./@suenot/unit/deep.json | |
./@suenot/asset/deep.json | |
./@suenot/wallet/deep.json | |
packages [ | |
[ '@deep-foundation/core' ], | |
[ '@suenot/transaction-tests' ], | |
[ '@suenot/unit' ], | |
[ '@suenot/asset' ], | |
[ '@suenot/wallet' ] | |
] | |
packagePath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@deep-foundation/core | |
packageJsonPath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@deep-foundation/core/package.json | |
packageJson { name: '@deep-foundation/core', version: '0.0.2' } | |
deepJsonPath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@deep-foundation/core/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/core', version: '0.0.2' }, | |
data: [ | |
{ id: 'Type', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Package', type: 'Type' }, | |
{ id: 'Contain', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Value', type: 'Type', from: 'Any', to: 'Type' }, | |
{ id: 'String', type: 'Type' }, | |
{ id: 'Number', type: 'Type' }, | |
{ id: 'Object', type: 'Type' }, | |
{ id: 'Any', type: 'Type' }, | |
{ id: 'Promise', type: 'Type' }, | |
{ id: 'Then', type: 'Type', from: 'Any', to: 'Promise' }, | |
{ id: 'Resolved', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'Rejected', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'typeValue', type: 'Value', from: 'Type', to: 'String' }, | |
{ | |
id: 'packageValue', | |
type: 'Value', | |
from: 'Package', | |
to: 'String' | |
}, | |
{ id: 'Selector', type: 'Type' }, | |
{ | |
id: 'SelectorInclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ id: 'Rule', type: 'Type' }, | |
{ id: 'RuleSubject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleObject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleAction', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ | |
id: 'containValue', | |
type: 'Value', | |
from: 'Contain', | |
to: 'String' | |
}, | |
{ id: 'User', type: 'Type' }, | |
{ id: 'Operation', type: 'Type' }, | |
{ | |
id: 'operationValue', | |
type: 'Value', | |
from: 'Operation', | |
to: 'String' | |
}, | |
{ id: 'AllowInsert', type: 'Operation' }, | |
{ id: 'AllowUpdate', type: 'Operation' }, | |
{ id: 'AllowDelete', type: 'Operation' }, | |
{ id: 'AllowSelect', type: 'Operation' }, | |
{ id: 'File', type: 'Type' }, | |
{ id: 'SyncTextFile', type: 'File' }, | |
{ | |
id: 'syncTextFileValue', | |
type: 'Value', | |
from: 'SyncTextFile', | |
to: 'String' | |
}, | |
{ id: 'ExecutionProvider', type: 'Type' }, | |
{ id: 'JSExecutionProvider', type: 'ExecutionProvider' }, | |
{ id: 'TreeInclude', type: 'Type', from: 'Type', to: 'Any' }, | |
{ id: 'Handler', type: 'Type', from: 'Supports', to: 'Any' }, | |
{ id: 'Tree', type: 'Type' }, | |
{ | |
id: 'TreeIncludeDown', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeUp', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeNode', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ id: 'containTree', type: 'Tree' }, | |
{ | |
id: 'containTreeContain', | |
type: 'TreeIncludeDown', | |
from: 'containTree', | |
to: 'Contain' | |
}, | |
{ | |
id: 'containTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'containTree', | |
to: 'Any' | |
}, | |
{ id: 'PackageNamespace', type: 'Type' }, | |
{ | |
id: 'packageNamespaceValue', | |
type: 'Value', | |
from: 'PackageNamespace', | |
to: 'String' | |
}, | |
{ | |
id: 'PackageActive', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'PackageVersion', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'packageVersionValue', | |
type: 'Value', | |
from: 'PackageVersion', | |
to: 'String' | |
}, | |
{ id: 'HandleOperation', type: 'Type', from: 'Type', to: 'Type' }, | |
{ | |
id: 'HandleInsert', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleUpdate', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleDelete', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'PromiseResult', type: 'Type' }, | |
{ | |
id: 'promiseResultValueRelationTable', | |
type: 'Value', | |
from: 'PromiseResult', | |
to: 'Object' | |
}, | |
{ id: 'PromiseReason', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Focus', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'focusValue', type: 'Value', from: 'Focus', to: 'Object' }, | |
{ id: 'AsyncFile', type: 'File' }, | |
{ | |
id: 'handlersTreeHandler', | |
type: 'TreeIncludeUp', | |
from: 'handlersTree', | |
to: 'Handler' | |
}, | |
{ id: 'Query', type: 'Type' }, | |
{ id: 'queryValue', type: 'Value', from: 'Query', to: 'Object' }, | |
{ id: 'Active', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Fixed', type: 'Type' }, | |
{ id: 'fixedValue', type: 'Value', from: 'Fixed', to: 'Object' }, | |
{ id: 'Space', type: 'Type' }, | |
{ id: 'spaceValue', type: 'Value', from: 'Space', to: 'String' }, | |
{ id: 'AllowLogin', type: 'Operation' }, | |
{ id: 'guests', type: 'Any' }, | |
{ id: 'Join', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'joinTree', type: 'Tree' }, | |
{ | |
id: 'joinTreeJoin', | |
type: 'TreeIncludeUp', | |
from: 'joinTree', | |
to: 'Join' | |
}, | |
{ | |
id: 'joinTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'joinTree', | |
to: 'Any' | |
}, | |
{ id: 'SelectorTree', type: 'Type', from: 'Any', to: 'Tree' }, | |
{ id: 'AllowAdmin', type: 'Operation' }, | |
{ | |
id: 'SelectorExclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ | |
id: 'SelectorFilter', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Query' | |
}, | |
{ | |
id: 'HandleSchedule', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'Schedule', type: 'Type' }, | |
{ | |
id: 'scheduleValue', | |
type: 'Value', | |
from: 'Schedule', | |
to: 'String' | |
}, | |
{ id: 'Router', type: 'Type', value: [Object] }, | |
{ id: 'IsolationProvider', type: 'Type' }, | |
{ id: 'DockerIsolationProvider', type: 'IsolationProvider' }, | |
{ | |
id: 'dockerIsolationProviderValue', | |
type: 'Value', | |
from: 'DockerIsolationProvider', | |
to: 'String' | |
}, | |
{ | |
id: 'JSDockerIsolationProvider', | |
type: 'DockerIsolationProvider', | |
value: [Object] | |
}, | |
{ id: 'Supports', type: 'Type', from: 'Any', to: 'Any' }, | |
{ | |
id: 'dockerSupportsJs', | |
type: 'Supports', | |
from: 'JSDockerIsolationProvider', | |
to: 'JSExecutionProvider' | |
}, | |
{ | |
id: 'PackageInstall', | |
type: 'Type', | |
from: 'Any', | |
to: 'PackageQuery' | |
}, | |
{ | |
id: 'PackagePublish', | |
type: 'Type', | |
from: 'Package', | |
to: 'PackageQuery' | |
}, | |
{ id: 'packageInstallCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packageInstallCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packageInstallCode' | |
}, | |
{ | |
id: 'packageInstallCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackageInstall', | |
to: 'packageInstallCodeHandler' | |
}, | |
{ id: 'packagePublishCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packagePublishCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packagePublishCode' | |
}, | |
{ | |
id: 'packagePublishCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackagePublish', | |
to: 'packagePublishCodeHandler' | |
}, | |
{ id: 'AllowPackageInstall', type: 'Operation' }, | |
{ id: 'portValue', type: 'Value', from: 'Port', to: 'Number' }, | |
{ | |
id: 'HandlePort', | |
type: 'HandleOperation', | |
from: 'Port', | |
to: 'Any' | |
}, | |
{ id: 'Route', type: 'Type' }, | |
{ id: 'RouterListening', type: 'Type', from: 'Router', to: 'Port' }, | |
{ | |
id: 'RouterStringUse', | |
type: 'Type', | |
from: 'Route', | |
to: 'Router' | |
}, | |
{ | |
id: 'routerStringUseValue', | |
type: 'Value', | |
from: 'RouterStringUse', | |
to: 'String' | |
}, | |
... 74 more items | |
], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
} | |
dependencies {} | |
dependencyPackageName @deep-foundation/core | |
packagePath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/transaction-tests | |
packageJsonPath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/transaction-tests/package.json | |
packageJson { | |
name: '@suenot/transaction-tests', | |
dependencies: { '@suenot/unit': '~0.0.2', '@suenot/wallet': '~0.0.3' }, | |
version: '0.0.2', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/transaction-tests/deep.json | |
deepJson { | |
package: { name: '@suenot/transaction-tests', version: '0.0.2' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ id: 'wallet1', type: 1, value: [Object] }, | |
{ | |
id: 'wallet1Name', | |
type: 2, | |
from: 'wallet1', | |
to: 'wallet1', | |
value: [Object] | |
}, | |
{ id: 'unit1', type: 3 }, | |
{ | |
id: 'unit1Description', | |
type: 4, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Avatar', | |
type: 5, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Ticker', | |
type: 6, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Name', | |
type: 7, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@suenot/wallet', version: '0.0.3' }, | |
{ name: '@suenot/unit', version: '0.0.2' } | |
] | |
} | |
dependencies { '@suenot/unit': '~0.0.2', '@suenot/wallet': '~0.0.3' } | |
dependencyPackageName @suenot/transaction-tests | |
packagePath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/unit | |
packageJsonPath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/unit/package.json | |
packageJson { | |
name: '@suenot/unit', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.2', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/unit/deep.json | |
deepJson { | |
package: { name: '@suenot/unit', version: '0.0.2' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Unit', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Unit', to: 'Unit' }, | |
{ | |
id: 'descriptionSymbol', | |
type: 2, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'avatarValue', type: 3, from: 'Avatar', to: 4 }, | |
{ | |
id: 'avatarSymbol', | |
type: 2, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'tickerValue', type: 3, from: 'Ticker', to: 4 }, | |
{ | |
id: 'tickerSymbol', | |
type: 2, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'nameValue', type: 3, from: 'Name', to: 4 }, | |
{ | |
id: 'nameSymbol', | |
type: 2, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 2, | |
from: 'Unit', | |
to: 'Unit', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/unit | |
packagePath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/asset | |
packageJsonPath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/asset/package.json | |
packageJson { | |
name: '@suenot/asset', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.8', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/asset/deep.json | |
deepJson { | |
package: { name: '@suenot/asset', version: '0.0.8' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Asset', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'Avatar', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'tickerValue', type: 2, from: 'Ticker', to: 3 }, | |
{ | |
id: 'tickerSymbol', | |
type: 4, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Asset', | |
to: 'Asset', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/asset | |
packagePath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/wallet | |
packageJsonPath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/wallet/package.json | |
packageJson { | |
name: '@suenot/wallet', | |
dependencies: { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
}, | |
version: '0.0.3', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/90f9126f-6701-4a50-80ed-cc8a97e0823e/node_modules/@suenot/wallet/deep.json | |
deepJson { | |
package: { name: '@suenot/wallet', version: '0.0.3' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ id: 'Wallet', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'descriptionValue', type: 2, from: 'Description', to: 3 }, | |
{ | |
id: 'descriptionSymbol', | |
type: 4, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'ContainUnit', type: 1, from: 'Wallet', to: 5 }, | |
{ id: 'Name', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Wallet', | |
to: 'Wallet', | |
value: [Object] | |
}, | |
{ id: 'waletValue', type: 2, from: 'Wallet', to: 6 } | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/core', version: '0.0.2' }, | |
{ name: '@suenot/unit', version: '0.0.2' } | |
] | |
} | |
dependencies { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
} | |
dependencyPackageName @suenot/wallet | |
deepPackagesDependencies { | |
'@deep-foundation/core': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' }, | |
dependencies: [] | |
}, | |
'@suenot/unit': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/asset': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/wallet': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core', '@suenot/asset', '@suenot/unit' ] | |
} | |
} | |
installationQueue [ | |
{ | |
name: '@deep-foundation/core', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' } | |
}, | |
{ | |
name: '@suenot/unit', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/asset', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/wallet', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
} | |
} | |
] | |
installationSet { | |
'@deep-foundation/core': true, | |
'@suenot/unit': true, | |
'@suenot/asset': true, | |
'@suenot/wallet': true | |
} | |
packages [ | |
{ | |
id: 184, | |
name: { id: 6, value: '@deep-foundation/core', link_id: 184 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
} | |
] | |
existingPackages { '@deep-foundation/core': { id: 184, version: '0.0.2' } } | |
existingPackages { '@deep-foundation/core': { id: 184, version: '0.0.2' } } | |
packages [ | |
{ | |
id: 184, | |
name: { id: 6, value: '@deep-foundation/core', link_id: 184 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
} | |
] | |
existingPackages { '@deep-foundation/core': { id: 184, version: '0.0.2' } } | |
existingPackages { '@deep-foundation/core': { id: 184, version: '0.0.2' } } | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:247:40) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:247:40) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
{ | |
ids: [ | |
1092, 1093, 1094, 1095, 1096, 1097, | |
1098, 1099, 1100, 1101, 1102, 1103, | |
1104, 1105, 1106, 1107, 1108, 1109, | |
1110, 1111, 1112, 1113, 1114, 1115, | |
1116, 1117, 1118, 1119, 1120, 1121, | |
1122, 1123, 1124, 1125, 1126, 1127, | |
1128, 1129, 1130, 1131 | |
], | |
errors: [], | |
namespaceId: 1092, | |
packageId: 1108 | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:247:40) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
{ | |
ids: [ | |
1132, 1133, 1134, 1135, 1136, 1137, | |
1138, 1139, 1140, 1141, 1142, 1143, | |
1144, 1145, 1146, 1147, 1148, 1149, | |
1150, 1151, 1152, 1153, 1154, 1155, | |
1156, 1157, 1158, 1159, 1160, 1161, | |
1162, 1163, 1164, 1165, 1166, 1167, | |
1168, 1169, 1170, 1171 | |
], | |
errors: [], | |
namespaceId: 1132, | |
packageId: 1148 | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:247:40) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
{ | |
ids: [ | |
1173, 1174, 1175, 1176, 1177, 1178, | |
1179, 1180, 1181, 1182, 1183, 1184, | |
1185, 1186, 1187, 1188, 1189, 1190, | |
1191, 1192, 1193, 1194, 1195, 1196, | |
1197, 1198, 1199, 1200, 1201, 1202, | |
1203, 1204, 1205, 1206, 1207, 1208, | |
1209, 1210 | |
], | |
errors: [], | |
namespaceId: 1173, | |
packageId: 1188 | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:247:40) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
{ | |
ids: [ | |
1212, 1213, 1214, 1215, 1216, 1217, | |
1218, 1219, 1220, 1221, 1222, 1223, | |
1224, 1225, 1226, 1227, 1228, 1229, | |
1230, 1231, 1232, 1233, 1234, 1235, | |
1236, 1237, 1238, 1239, 1240, 1241, | |
1242, 1243, 1244, 1245, 1246, 1247, | |
1248, 1249 | |
], | |
errors: [], | |
namespaceId: 1212, | |
packageId: 1227 | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:247:40) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
{ | |
ids: [ | |
1251, 1252, 1253, 1254, 1255, 1256, | |
1257, 1258, 1259, 1260, 1261, 1262, | |
1263, 1264, 1265, 1266, 1267, 1268, | |
1269, 1270, 1271, 1272, 1273, 1274, | |
1275, 1276, 1277, 1278, 1279, 1280, | |
1281, 1282, 1283, 1284, 1285, 1286, | |
1287, 1288, 1289, 1290, 1291, 1292 | |
], | |
errors: [], | |
namespaceId: 1251, | |
packageId: 1267 | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:266:26) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
{ | |
ids: [ | |
1294, 1295, 1296, 1297, 1298, 1299, | |
1300, 1301, 1302, 1303, 1304, 1305, | |
1306, 1307, 1308, 1309, 1310, 1311, | |
1312, 1313, 1314, 1315, 1316, 1317, | |
1318, 1319, 1320, 1321, 1322, 1323, | |
1324, 1325, 1326, 1327, 1328, 1329, | |
1330, 1331, 1332, 1333, 1334, 1335 | |
], | |
errors: [], | |
namespaceId: 1294, | |
packageId: 1310 | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:266:26) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
{ | |
errors: [ | |
Error: DeepClient Serial Error: Type conflict link: { id: 1341, type: 1137, from: 1340, to: 1340 } expected type: { type: 1137, from: 1135, to: 1135 } received type: { type: 1137, from: 1095, to: 1095 } | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:533:27) | |
at Generator.throw (<anonymous>) | |
at rejected (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:5:65) | |
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { | |
[cause]: [ApolloError] | |
} | |
] | |
} | |
rejected { errors: [ {} ] } | |
{ | |
errors: [ | |
Error: DeepClient Serial Error: Type conflict link: { id: 1370, type: 1137, from: 1369, to: 1369 } expected type: { type: 1137, from: 1135, to: 1135 } received type: { type: 1137, from: 1095, to: 1095 } | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:533:27) | |
at Generator.throw (<anonymous>) | |
at rejected (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:5:65) | |
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { | |
[cause]: [ApolloError] | |
} | |
] | |
} | |
rejected { errors: [ {} ] } | |
call body params { | |
code: 'async ({ deep, gql, data: { triggeredByLinkId, newLink } }) => {\n' + | |
" const deepFileName = 'deep.json';\n" + | |
" const fs = await deep.import('fs');\n" + | |
'\n' + | |
' const makeTempDirectory = async () => {\n' + | |
" const os = await deep.import('os');\n" + | |
" const { v4: uuid } = await deep.import('uuid');\n" + | |
' \n' + | |
' const baseTempDirectory = os.tmpdir();\n' + | |
' const randomId = uuid();\n' + | |
" const tempDirectory = [baseTempDirectory,randomId].join('/');\n" + | |
' fs.mkdirSync(tempDirectory);\n' + | |
' console.log(tempDirectory);\n' + | |
' return tempDirectory;\n' + | |
' };\n' + | |
' const npmInstall = async (packageName, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
' const command = `npm --prefix "${tempDirectory}" i ${packageName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
' const npmLogin = async (token, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
' \n' + | |
' const command = `npm set "//registry.npmjs.org/:_authToken" ${token}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
" const makePackagePath = (tempDirectory, packageName) => [tempDirectory, 'node_modules', packageName].join('/');\n" + | |
" const makeDeepJsonPath = (packagePath) => [packagePath, deepFileName].join('/');\n" + | |
" const makePackageJsonPath = (packagePath) => [packagePath, 'package.json'].join('/');\n" + | |
' const loadNpmToken = async () => {\n' + | |
" const containTreeId = await deep.id('@deep-foundation/core', 'containTree');\n" + | |
" const tokenTypeId = await deep.id('@deep-foundation/npm-packager', 'Token');\n" + | |
' const { data: [{ value: { value: npmToken = undefined } = {}} = {}] = []} = await deep.select({\n' + | |
' up: {\n' + | |
' tree_id: { _eq: containTreeId },\n' + | |
' parent: { id: { _eq: triggeredByLinkId } },\n' + | |
' link: { type_id: { _eq: tokenTypeId } }\n' + | |
' }\n' + | |
' });\n' + | |
' return npmToken;\n' + | |
' };\n' + | |
' const deepImport = async (deepJson, packageJson) => {\n' + | |
' if (deepJson.package.name !== packageJson.name) {\n' + | |
' throw new Error(`Package name is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package name: ${deepJson.package.name}.\n' + | |
' package.json package name: ${packageJson.name}.`);\n' + | |
' }\n' + | |
' if (deepJson.package.version !== packageJson.version) {\n' + | |
' throw new Error(`Package version is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package version: ${deepJson.package.version}.\n' + | |
' package.json package version: ${packageJson.version}.`);\n' + | |
' }\n' + | |
" const packager = new (await deep.import('@deep-foundation/deeplinks/imports/packager.js')).Packager(deep);\n" + | |
' const imported = await packager.import(deepJson);\n' + | |
' console.log(imported);\n' + | |
' if (imported?.errors?.length) throw imported;\n' + | |
' return imported;\n' + | |
' };\n' + | |
' const getDeepPackagesList = async (rootPath) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
" const deepFileName = 'deep.json';\n" + | |
' const deepFileNameLength = deepFileName.length;\n' + | |
'\n' + | |
' const command = `find . -name ${deepFileName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: rootPath\n' + | |
' });\n' + | |
" console.log('', `${command}\\n`, output);\n" + | |
'\n' + | |
' const packages = output\n' + | |
' .split(/\\r?\\n/)\n' + | |
' .filter(line => line.trim())\n' + | |
' .map(line => line.slice(2).slice(0, -deepFileNameLength - 1))\n' + | |
" .map(line => line.split('/node_modules/'));\n" + | |
' return packages;\n' + | |
' };\n' + | |
' const getDeepPackagesDependencies = async (rootPath, packages, packageName) => {\n' + | |
' const dictionary = {};\n' + | |
' for (const pkg of packages) {\n' + | |
" const packagePath = [rootPath, pkg.join('/node_modules/')].join('/');\n" + | |
" console.log('packagePath', packagePath);\n" + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
" console.log('packageJsonPath', packageJsonPath);\n" + | |
' if (!fs.existsSync(packageJsonPath)) {\n' + | |
' throw new Error(`package.json for dependency ${pkg} is not found at ${packageJsonPath}. Looks like ${packageName} does not contain ${pkg} dependency in package.json.`);\n' + | |
' }\n' + | |
' const packageJson = await deep.import(packageJsonPath);\n' + | |
" console.log('packageJson', packageJson);\n" + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
" console.log('deepJsonPath', deepJsonPath);\n" + | |
' if (!fs.existsSync(deepJsonPath)) {\n' + | |
' throw new Error(`deep.json for dependency ${pkg} is not found at ${deepJsonPath}. Looks like ${pkg} installed, but it does not contain deep.json. Make sure ${pkg} is a deep package.`);\n' + | |
' }\n' + | |
' const deepJson = await deep.import(deepJsonPath);\n' + | |
" console.log('deepJson', deepJson);\n" + | |
' const dependencies = packageJson.dependencies ?? {};\n' + | |
" console.log('dependencies', dependencies);\n" + | |
' const dependencyPackageName = pkg.at(-1);\n' + | |
" console.log('dependencyPackageName', dependencyPackageName);\n" + | |
' if (Array.isArray(dictionary[dependencyPackageName])) {\n' + | |
" throw new Error('Multiple versions of the same package are not supported yet.');\n" + | |
' }\n' + | |
' dictionary[dependencyPackageName] = { deepJson, packageJson, dependencies };\n' + | |
' }\n' + | |
' for (const pkg in dictionary) {\n' + | |
' const sourceDependencies = dictionary[pkg].dependencies;\n' + | |
' const targetDependencies = [];\n' + | |
' for (const dependency in sourceDependencies)\n' + | |
' {\n' + | |
' if (dictionary[dependency]) {\n' + | |
' targetDependencies.push(dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' dictionary[pkg].dependencies = targetDependencies;\n' + | |
' }\n' + | |
' return dictionary;\n' + | |
' }\n' + | |
' const buildInstallationQueueCore = (deepPackagesDependencies, queue, set, packageName) => {\n' + | |
' const dependencies = deepPackagesDependencies[packageName].dependencies;\n' + | |
' for (const dependency of dependencies) {\n' + | |
' if (!set[dependency]) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' if(!set[packageName]) {\n' + | |
' const deepJson = deepPackagesDependencies[packageName].deepJson;\n' + | |
' const packageJson = deepPackagesDependencies[packageName].packageJson;\n' + | |
' queue.push({ name: packageName, deepJson, packageJson });\n' + | |
' set[packageName] = true;\n' + | |
' }\n' + | |
' }\n' + | |
' const buildInstallationQueue = (deepPackagesDependencies, queue, set) => {\n' + | |
' for (const packageName in deepPackagesDependencies) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, packageName);\n' + | |
' }\n' + | |
' }\n' + | |
' const getExistingPackages = async (packageNames) => {\n' + | |
" const packageTypeId = await deep.id('@deep-foundation/core', 'Package');\n" + | |
" const packageVersionTypeId = await deep.id('@deep-foundation/core', 'PackageVersion');\n" + | |
' const { data: packages } = await deep.select({\n' + | |
' type_id: { _eq: packageTypeId },\n' + | |
' string: { value: { _in: packageNames } }\n' + | |
' }, {\n' + | |
" name: 'GET_EXISTING_PACKAGES_WITH_VERSIONS',\n" + | |
' returning: `\n' + | |
' id\n' + | |
' name: value\n' + | |
' versions: in(where: {type_id: {_eq: ${packageVersionTypeId}}, string: {value: {_is_null: false}}}) {\n' + | |
' id\n' + | |
' version: value\n' + | |
' }\n' + | |
' `\n' + | |
' })\n' + | |
" console.log('packages', packages);\n" + | |
' const existingPackages = packages.reduce(\n' + | |
' (accumulator, currentValue) => {\n' + | |
' const packageId = currentValue?.id;\n' + | |
' const packageName = currentValue?.name?.value;\n' + | |
' if (currentValue?.versions.length !== 1) {\n' + | |
" throw new Error(`'${packageName}' package must have exactly one version. Now it has ${currentValue?.versions.length} versions.`);\n" + | |
' }\n' + | |
' if (accumulator[packageName]) {\n' + | |
" throw new Error(`Multiple packages with name '${packageName}' exist.`)\n" + | |
' }\n' + | |
' const packageVersion = currentValue?.versions?.[0]?.version?.value;\n' + | |
' accumulator[packageName] = { id: packageId, version: packageVersion };\n' + | |
' return accumulator;\n' + | |
' },\n' + | |
' {}\n' + | |
' );\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
' return existingPackages;\n' + | |
' };\n' + | |
'\n' + | |
' if (!triggeredByLinkId) {\n' + | |
" throw new Error('Install link should be inserted using JWT token (role link), it cannot be inserted using hasura secret (role admin).');\n" + | |
' }\n' + | |
'\n' + | |
' const { data: [{ value: { value: packageQuery } }] } = await deep.select({ id: newLink.to_id });\n' + | |
" const packageQueryParts = packageQuery.split('@');\n" + | |
' if (packageQueryParts.length === 3) {\n' + | |
' const packageVersion = packageQueryParts.pop();\n' + | |
' }\n' + | |
" const packageName = packageQueryParts.join('@');\n" + | |
' if (!packageName) {\n' + | |
" throw new Error('Package query value is empty.');\n" + | |
' }\n' + | |
' const tempDirectory = await makeTempDirectory();\n' + | |
' let deepJson;\n' + | |
' let packageJson;\n' + | |
' const installationQueue = [];\n' + | |
' const installationSet = {};\n' + | |
' try {\n' + | |
' const npmToken = await loadNpmToken();\n' + | |
' if (npmToken) {\n' + | |
' await npmLogin(npmToken, tempDirectory);\n' + | |
' }\n' + | |
" const nodeModulesPath = [tempDirectory, 'node_modules'].join('/');\n" + | |
' await npmInstall(packageQuery, tempDirectory);\n' + | |
' const packagePath = makePackagePath(tempDirectory, packageName);\n' + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
' deepJson = await deep.import(deepJsonPath);\n' + | |
' packageJson = await deep.import(packageJsonPath);\n' + | |
'\n' + | |
' const packages = await getDeepPackagesList(nodeModulesPath);\n' + | |
" console.log('packages', packages);\n" + | |
' \n' + | |
' const deepPackagesDependencies = await getDeepPackagesDependencies(nodeModulesPath, packages, packageName);\n' + | |
' delete deepPackagesDependencies[packageName];\n' + | |
" console.log('deepPackagesDependencies', deepPackagesDependencies);\n" + | |
' \n' + | |
' buildInstallationQueue(deepPackagesDependencies, installationQueue, installationSet);\n' + | |
' \n' + | |
" console.log('installationQueue', installationQueue);\n" + | |
" console.log('installationSet', installationSet);\n" + | |
' } finally {\n' + | |
' fs.rmSync(tempDirectory, { recursive: true, force: true });\n' + | |
' }\n' + | |
' \n' + | |
' const existingPackages = await getExistingPackages(installationQueue.map(e => e.name));\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
'\n' + | |
' for (const dependencyPackage of instal'... 1567 more characters, | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzU0In0sImlhdCI6MTcwMDE3OTM5OH0.nxnTNIxd7Py5KdVrPnFyyh6j_XnUpc5ls9xtjdtyPqg', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 380, | |
oldLink: null, | |
newLink: { from_id: 380, type_id: 750, id: 1410, to_id: 1408, value: null }, | |
promiseId: 1411 | |
} | |
} | |
/tmp/d8e9c934-72d9-4c20-84ab-929178c7310a | |
npm --prefix "/tmp/d8e9c934-72d9-4c20-84ab-929178c7310a" i @suenot/[email protected] | |
added 5 packages in 3s | |
find . -name deep.json | |
./@deep-foundation/core/deep.json | |
./@suenot/unit/deep.json | |
./@suenot/asset/deep.json | |
./@suenot/wallet/deep.json | |
./@suenot/portfolio/deep.json | |
packages [ | |
[ '@deep-foundation/core' ], | |
[ '@suenot/unit' ], | |
[ '@suenot/asset' ], | |
[ '@suenot/wallet' ], | |
[ '@suenot/portfolio' ] | |
] | |
packagePath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@deep-foundation/core | |
packageJsonPath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@deep-foundation/core/package.json | |
packageJson { name: '@deep-foundation/core', version: '0.0.2' } | |
deepJsonPath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@deep-foundation/core/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/core', version: '0.0.2' }, | |
data: [ | |
{ id: 'Type', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Package', type: 'Type' }, | |
{ id: 'Contain', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Value', type: 'Type', from: 'Any', to: 'Type' }, | |
{ id: 'String', type: 'Type' }, | |
{ id: 'Number', type: 'Type' }, | |
{ id: 'Object', type: 'Type' }, | |
{ id: 'Any', type: 'Type' }, | |
{ id: 'Promise', type: 'Type' }, | |
{ id: 'Then', type: 'Type', from: 'Any', to: 'Promise' }, | |
{ id: 'Resolved', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'Rejected', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'typeValue', type: 'Value', from: 'Type', to: 'String' }, | |
{ | |
id: 'packageValue', | |
type: 'Value', | |
from: 'Package', | |
to: 'String' | |
}, | |
{ id: 'Selector', type: 'Type' }, | |
{ | |
id: 'SelectorInclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ id: 'Rule', type: 'Type' }, | |
{ id: 'RuleSubject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleObject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleAction', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ | |
id: 'containValue', | |
type: 'Value', | |
from: 'Contain', | |
to: 'String' | |
}, | |
{ id: 'User', type: 'Type' }, | |
{ id: 'Operation', type: 'Type' }, | |
{ | |
id: 'operationValue', | |
type: 'Value', | |
from: 'Operation', | |
to: 'String' | |
}, | |
{ id: 'AllowInsert', type: 'Operation' }, | |
{ id: 'AllowUpdate', type: 'Operation' }, | |
{ id: 'AllowDelete', type: 'Operation' }, | |
{ id: 'AllowSelect', type: 'Operation' }, | |
{ id: 'File', type: 'Type' }, | |
{ id: 'SyncTextFile', type: 'File' }, | |
{ | |
id: 'syncTextFileValue', | |
type: 'Value', | |
from: 'SyncTextFile', | |
to: 'String' | |
}, | |
{ id: 'ExecutionProvider', type: 'Type' }, | |
{ id: 'JSExecutionProvider', type: 'ExecutionProvider' }, | |
{ id: 'TreeInclude', type: 'Type', from: 'Type', to: 'Any' }, | |
{ id: 'Handler', type: 'Type', from: 'Supports', to: 'Any' }, | |
{ id: 'Tree', type: 'Type' }, | |
{ | |
id: 'TreeIncludeDown', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeUp', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeNode', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ id: 'containTree', type: 'Tree' }, | |
{ | |
id: 'containTreeContain', | |
type: 'TreeIncludeDown', | |
from: 'containTree', | |
to: 'Contain' | |
}, | |
{ | |
id: 'containTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'containTree', | |
to: 'Any' | |
}, | |
{ id: 'PackageNamespace', type: 'Type' }, | |
{ | |
id: 'packageNamespaceValue', | |
type: 'Value', | |
from: 'PackageNamespace', | |
to: 'String' | |
}, | |
{ | |
id: 'PackageActive', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'PackageVersion', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'packageVersionValue', | |
type: 'Value', | |
from: 'PackageVersion', | |
to: 'String' | |
}, | |
{ id: 'HandleOperation', type: 'Type', from: 'Type', to: 'Type' }, | |
{ | |
id: 'HandleInsert', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleUpdate', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleDelete', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'PromiseResult', type: 'Type' }, | |
{ | |
id: 'promiseResultValueRelationTable', | |
type: 'Value', | |
from: 'PromiseResult', | |
to: 'Object' | |
}, | |
{ id: 'PromiseReason', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Focus', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'focusValue', type: 'Value', from: 'Focus', to: 'Object' }, | |
{ id: 'AsyncFile', type: 'File' }, | |
{ | |
id: 'handlersTreeHandler', | |
type: 'TreeIncludeUp', | |
from: 'handlersTree', | |
to: 'Handler' | |
}, | |
{ id: 'Query', type: 'Type' }, | |
{ id: 'queryValue', type: 'Value', from: 'Query', to: 'Object' }, | |
{ id: 'Active', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Fixed', type: 'Type' }, | |
{ id: 'fixedValue', type: 'Value', from: 'Fixed', to: 'Object' }, | |
{ id: 'Space', type: 'Type' }, | |
{ id: 'spaceValue', type: 'Value', from: 'Space', to: 'String' }, | |
{ id: 'AllowLogin', type: 'Operation' }, | |
{ id: 'guests', type: 'Any' }, | |
{ id: 'Join', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'joinTree', type: 'Tree' }, | |
{ | |
id: 'joinTreeJoin', | |
type: 'TreeIncludeUp', | |
from: 'joinTree', | |
to: 'Join' | |
}, | |
{ | |
id: 'joinTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'joinTree', | |
to: 'Any' | |
}, | |
{ id: 'SelectorTree', type: 'Type', from: 'Any', to: 'Tree' }, | |
{ id: 'AllowAdmin', type: 'Operation' }, | |
{ | |
id: 'SelectorExclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ | |
id: 'SelectorFilter', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Query' | |
}, | |
{ | |
id: 'HandleSchedule', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'Schedule', type: 'Type' }, | |
{ | |
id: 'scheduleValue', | |
type: 'Value', | |
from: 'Schedule', | |
to: 'String' | |
}, | |
{ id: 'Router', type: 'Type', value: [Object] }, | |
{ id: 'IsolationProvider', type: 'Type' }, | |
{ id: 'DockerIsolationProvider', type: 'IsolationProvider' }, | |
{ | |
id: 'dockerIsolationProviderValue', | |
type: 'Value', | |
from: 'DockerIsolationProvider', | |
to: 'String' | |
}, | |
{ | |
id: 'JSDockerIsolationProvider', | |
type: 'DockerIsolationProvider', | |
value: [Object] | |
}, | |
{ id: 'Supports', type: 'Type', from: 'Any', to: 'Any' }, | |
{ | |
id: 'dockerSupportsJs', | |
type: 'Supports', | |
from: 'JSDockerIsolationProvider', | |
to: 'JSExecutionProvider' | |
}, | |
{ | |
id: 'PackageInstall', | |
type: 'Type', | |
from: 'Any', | |
to: 'PackageQuery' | |
}, | |
{ | |
id: 'PackagePublish', | |
type: 'Type', | |
from: 'Package', | |
to: 'PackageQuery' | |
}, | |
{ id: 'packageInstallCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packageInstallCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packageInstallCode' | |
}, | |
{ | |
id: 'packageInstallCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackageInstall', | |
to: 'packageInstallCodeHandler' | |
}, | |
{ id: 'packagePublishCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packagePublishCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packagePublishCode' | |
}, | |
{ | |
id: 'packagePublishCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackagePublish', | |
to: 'packagePublishCodeHandler' | |
}, | |
{ id: 'AllowPackageInstall', type: 'Operation' }, | |
{ id: 'portValue', type: 'Value', from: 'Port', to: 'Number' }, | |
{ | |
id: 'HandlePort', | |
type: 'HandleOperation', | |
from: 'Port', | |
to: 'Any' | |
}, | |
{ id: 'Route', type: 'Type' }, | |
{ id: 'RouterListening', type: 'Type', from: 'Router', to: 'Port' }, | |
{ | |
id: 'RouterStringUse', | |
type: 'Type', | |
from: 'Route', | |
to: 'Router' | |
}, | |
{ | |
id: 'routerStringUseValue', | |
type: 'Value', | |
from: 'RouterStringUse', | |
to: 'String' | |
}, | |
... 74 more items | |
], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
} | |
dependencies {} | |
dependencyPackageName @deep-foundation/core | |
packagePath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/unit | |
packageJsonPath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/unit/package.json | |
packageJson { | |
name: '@suenot/unit', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.2', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/unit/deep.json | |
deepJson { | |
package: { name: '@suenot/unit', version: '0.0.2' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Unit', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Unit', to: 'Unit' }, | |
{ | |
id: 'descriptionSymbol', | |
type: 2, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'avatarValue', type: 3, from: 'Avatar', to: 4 }, | |
{ | |
id: 'avatarSymbol', | |
type: 2, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'tickerValue', type: 3, from: 'Ticker', to: 4 }, | |
{ | |
id: 'tickerSymbol', | |
type: 2, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'nameValue', type: 3, from: 'Name', to: 4 }, | |
{ | |
id: 'nameSymbol', | |
type: 2, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 2, | |
from: 'Unit', | |
to: 'Unit', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/unit | |
packagePath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/asset | |
packageJsonPath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/asset/package.json | |
packageJson { | |
name: '@suenot/asset', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.8', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/asset/deep.json | |
deepJson { | |
package: { name: '@suenot/asset', version: '0.0.8' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Asset', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'Avatar', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'tickerValue', type: 2, from: 'Ticker', to: 3 }, | |
{ | |
id: 'tickerSymbol', | |
type: 4, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Asset', | |
to: 'Asset', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/asset | |
packagePath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/wallet | |
packageJsonPath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/wallet/package.json | |
packageJson { | |
name: '@suenot/wallet', | |
dependencies: { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
}, | |
version: '0.0.3', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/wallet/deep.json | |
deepJson { | |
package: { name: '@suenot/wallet', version: '0.0.3' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ id: 'Wallet', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'descriptionValue', type: 2, from: 'Description', to: 3 }, | |
{ | |
id: 'descriptionSymbol', | |
type: 4, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'ContainUnit', type: 1, from: 'Wallet', to: 5 }, | |
{ id: 'Name', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Wallet', | |
to: 'Wallet', | |
value: [Object] | |
}, | |
{ id: 'waletValue', type: 2, from: 'Wallet', to: 6 } | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/core', version: '0.0.2' }, | |
{ name: '@suenot/unit', version: '0.0.2' } | |
] | |
} | |
dependencies { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
} | |
dependencyPackageName @suenot/wallet | |
packagePath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/portfolio | |
packageJsonPath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/portfolio/package.json | |
packageJson { | |
name: '@suenot/portfolio', | |
dependencies: { '@deep-foundation/core': '~0.0.2', '@suenot/wallet': '~0.0.3' }, | |
version: '0.0.3', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/d8e9c934-72d9-4c20-84ab-929178c7310a/node_modules/@suenot/portfolio/deep.json | |
deepJson { | |
package: { name: '@suenot/portfolio', version: '0.0.3' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ id: 'Portfolio', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Portfolio', to: 'Portfolio' }, | |
{ id: 'descriptionValue', type: 2, from: 'Description', to: 3 }, | |
{ | |
id: 'descriptionSymbol', | |
type: 4, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Portfolio', to: 'Portfolio' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'ContainWallet', type: 1, from: 'Portfolio', to: 5 }, | |
{ id: 'Name', type: 1, from: 'Portfolio', to: 'Portfolio' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Portfolio', | |
to: 'Portfolio', | |
value: [Object] | |
}, | |
{ id: 'portfolioValue', type: 2, from: 'Portfolio', to: 6 } | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/core', version: '0.0.2' }, | |
{ name: '@suenot/wallet', version: '0.0.3' } | |
] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2', '@suenot/wallet': '~0.0.3' } | |
dependencyPackageName @suenot/portfolio | |
deepPackagesDependencies { | |
'@deep-foundation/core': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' }, | |
dependencies: [] | |
}, | |
'@suenot/unit': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/asset': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/wallet': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core', '@suenot/asset', '@suenot/unit' ] | |
} | |
} | |
installationQueue [ | |
{ | |
name: '@deep-foundation/core', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' } | |
}, | |
{ | |
name: '@suenot/unit', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/asset', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/wallet', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
} | |
} | |
] | |
installationSet { | |
'@deep-foundation/core': true, | |
'@suenot/unit': true, | |
'@suenot/asset': true, | |
'@suenot/wallet': true | |
} | |
call body params { | |
code: 'async ({ deep, gql, data: { triggeredByLinkId, newLink } }) => {\n' + | |
" const deepFileName = 'deep.json';\n" + | |
" const fs = await deep.import('fs');\n" + | |
'\n' + | |
' const makeTempDirectory = async () => {\n' + | |
" const os = await deep.import('os');\n" + | |
" const { v4: uuid } = await deep.import('uuid');\n" + | |
' \n' + | |
' const baseTempDirectory = os.tmpdir();\n' + | |
' const randomId = uuid();\n' + | |
" const tempDirectory = [baseTempDirectory,randomId].join('/');\n" + | |
' fs.mkdirSync(tempDirectory);\n' + | |
' console.log(tempDirectory);\n' + | |
' return tempDirectory;\n' + | |
' };\n' + | |
' const npmInstall = async (packageName, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
' const command = `npm --prefix "${tempDirectory}" i ${packageName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
' const npmLogin = async (token, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
' \n' + | |
' const command = `npm set "//registry.npmjs.org/:_authToken" ${token}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
" const makePackagePath = (tempDirectory, packageName) => [tempDirectory, 'node_modules', packageName].join('/');\n" + | |
" const makeDeepJsonPath = (packagePath) => [packagePath, deepFileName].join('/');\n" + | |
" const makePackageJsonPath = (packagePath) => [packagePath, 'package.json'].join('/');\n" + | |
' const loadNpmToken = async () => {\n' + | |
" const containTreeId = await deep.id('@deep-foundation/core', 'containTree');\n" + | |
" const tokenTypeId = await deep.id('@deep-foundation/npm-packager', 'Token');\n" + | |
' const { data: [{ value: { value: npmToken = undefined } = {}} = {}] = []} = await deep.select({\n' + | |
' up: {\n' + | |
' tree_id: { _eq: containTreeId },\n' + | |
' parent: { id: { _eq: triggeredByLinkId } },\n' + | |
' link: { type_id: { _eq: tokenTypeId } }\n' + | |
' }\n' + | |
' });\n' + | |
' return npmToken;\n' + | |
' };\n' + | |
' const deepImport = async (deepJson, packageJson) => {\n' + | |
' if (deepJson.package.name !== packageJson.name) {\n' + | |
' throw new Error(`Package name is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package name: ${deepJson.package.name}.\n' + | |
' package.json package name: ${packageJson.name}.`);\n' + | |
' }\n' + | |
' if (deepJson.package.version !== packageJson.version) {\n' + | |
' throw new Error(`Package version is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package version: ${deepJson.package.version}.\n' + | |
' package.json package version: ${packageJson.version}.`);\n' + | |
' }\n' + | |
" const packager = new (await deep.import('@deep-foundation/deeplinks/imports/packager.js')).Packager(deep);\n" + | |
' const imported = await packager.import(deepJson);\n' + | |
' console.log(imported);\n' + | |
' if (imported?.errors?.length) throw imported;\n' + | |
' return imported;\n' + | |
' };\n' + | |
' const getDeepPackagesList = async (rootPath) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
" const deepFileName = 'deep.json';\n" + | |
' const deepFileNameLength = deepFileName.length;\n' + | |
'\n' + | |
' const command = `find . -name ${deepFileName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: rootPath\n' + | |
' });\n' + | |
" console.log('', `${command}\\n`, output);\n" + | |
'\n' + | |
' const packages = output\n' + | |
' .split(/\\r?\\n/)\n' + | |
' .filter(line => line.trim())\n' + | |
' .map(line => line.slice(2).slice(0, -deepFileNameLength - 1))\n' + | |
" .map(line => line.split('/node_modules/'));\n" + | |
' return packages;\n' + | |
' };\n' + | |
' const getDeepPackagesDependencies = async (rootPath, packages, packageName) => {\n' + | |
' const dictionary = {};\n' + | |
' for (const pkg of packages) {\n' + | |
" const packagePath = [rootPath, pkg.join('/node_modules/')].join('/');\n" + | |
" console.log('packagePath', packagePath);\n" + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
" console.log('packageJsonPath', packageJsonPath);\n" + | |
' if (!fs.existsSync(packageJsonPath)) {\n' + | |
' throw new Error(`package.json for dependency ${pkg} is not found at ${packageJsonPath}. Looks like ${packageName} does not contain ${pkg} dependency in package.json.`);\n' + | |
' }\n' + | |
' const packageJson = await deep.import(packageJsonPath);\n' + | |
" console.log('packageJson', packageJson);\n" + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
" console.log('deepJsonPath', deepJsonPath);\n" + | |
' if (!fs.existsSync(deepJsonPath)) {\n' + | |
' throw new Error(`deep.json for dependency ${pkg} is not found at ${deepJsonPath}. Looks like ${pkg} installed, but it does not contain deep.json. Make sure ${pkg} is a deep package.`);\n' + | |
' }\n' + | |
' const deepJson = await deep.import(deepJsonPath);\n' + | |
" console.log('deepJson', deepJson);\n" + | |
' const dependencies = packageJson.dependencies ?? {};\n' + | |
" console.log('dependencies', dependencies);\n" + | |
' const dependencyPackageName = pkg.at(-1);\n' + | |
" console.log('dependencyPackageName', dependencyPackageName);\n" + | |
' if (Array.isArray(dictionary[dependencyPackageName])) {\n' + | |
" throw new Error('Multiple versions of the same package are not supported yet.');\n" + | |
' }\n' + | |
' dictionary[dependencyPackageName] = { deepJson, packageJson, dependencies };\n' + | |
' }\n' + | |
' for (const pkg in dictionary) {\n' + | |
' const sourceDependencies = dictionary[pkg].dependencies;\n' + | |
' const targetDependencies = [];\n' + | |
' for (const dependency in sourceDependencies)\n' + | |
' {\n' + | |
' if (dictionary[dependency]) {\n' + | |
' targetDependencies.push(dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' dictionary[pkg].dependencies = targetDependencies;\n' + | |
' }\n' + | |
' return dictionary;\n' + | |
' }\n' + | |
' const buildInstallationQueueCore = (deepPackagesDependencies, queue, set, packageName) => {\n' + | |
' const dependencies = deepPackagesDependencies[packageName].dependencies;\n' + | |
' for (const dependency of dependencies) {\n' + | |
' if (!set[dependency]) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' if(!set[packageName]) {\n' + | |
' const deepJson = deepPackagesDependencies[packageName].deepJson;\n' + | |
' const packageJson = deepPackagesDependencies[packageName].packageJson;\n' + | |
' queue.push({ name: packageName, deepJson, packageJson });\n' + | |
' set[packageName] = true;\n' + | |
' }\n' + | |
' }\n' + | |
' const buildInstallationQueue = (deepPackagesDependencies, queue, set) => {\n' + | |
' for (const packageName in deepPackagesDependencies) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, packageName);\n' + | |
' }\n' + | |
' }\n' + | |
' const getExistingPackages = async (packageNames) => {\n' + | |
" const packageTypeId = await deep.id('@deep-foundation/core', 'Package');\n" + | |
" const packageVersionTypeId = await deep.id('@deep-foundation/core', 'PackageVersion');\n" + | |
' const { data: packages } = await deep.select({\n' + | |
' type_id: { _eq: packageTypeId },\n' + | |
' string: { value: { _in: packageNames } }\n' + | |
' }, {\n' + | |
" name: 'GET_EXISTING_PACKAGES_WITH_VERSIONS',\n" + | |
' returning: `\n' + | |
' id\n' + | |
' name: value\n' + | |
' versions: in(where: {type_id: {_eq: ${packageVersionTypeId}}, string: {value: {_is_null: false}}}) {\n' + | |
' id\n' + | |
' version: value\n' + | |
' }\n' + | |
' `\n' + | |
' })\n' + | |
" console.log('packages', packages);\n" + | |
' const existingPackages = packages.reduce(\n' + | |
' (accumulator, currentValue) => {\n' + | |
' const packageId = currentValue?.id;\n' + | |
' const packageName = currentValue?.name?.value;\n' + | |
' if (currentValue?.versions.length !== 1) {\n' + | |
" throw new Error(`'${packageName}' package must have exactly one version. Now it has ${currentValue?.versions.length} versions.`);\n" + | |
' }\n' + | |
' if (accumulator[packageName]) {\n' + | |
" throw new Error(`Multiple packages with name '${packageName}' exist.`)\n" + | |
' }\n' + | |
' const packageVersion = currentValue?.versions?.[0]?.version?.value;\n' + | |
' accumulator[packageName] = { id: packageId, version: packageVersion };\n' + | |
' return accumulator;\n' + | |
' },\n' + | |
' {}\n' + | |
' );\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
' return existingPackages;\n' + | |
' };\n' + | |
'\n' + | |
' if (!triggeredByLinkId) {\n' + | |
" throw new Error('Install link should be inserted using JWT token (role link), it cannot be inserted using hasura secret (role admin).');\n" + | |
' }\n' + | |
'\n' + | |
' const { data: [{ value: { value: packageQuery } }] } = await deep.select({ id: newLink.to_id });\n' + | |
" const packageQueryParts = packageQuery.split('@');\n" + | |
' if (packageQueryParts.length === 3) {\n' + | |
' const packageVersion = packageQueryParts.pop();\n' + | |
' }\n' + | |
" const packageName = packageQueryParts.join('@');\n" + | |
' if (!packageName) {\n' + | |
" throw new Error('Package query value is empty.');\n" + | |
' }\n' + | |
' const tempDirectory = await makeTempDirectory();\n' + | |
' let deepJson;\n' + | |
' let packageJson;\n' + | |
' const installationQueue = [];\n' + | |
' const installationSet = {};\n' + | |
' try {\n' + | |
' const npmToken = await loadNpmToken();\n' + | |
' if (npmToken) {\n' + | |
' await npmLogin(npmToken, tempDirectory);\n' + | |
' }\n' + | |
" const nodeModulesPath = [tempDirectory, 'node_modules'].join('/');\n" + | |
' await npmInstall(packageQuery, tempDirectory);\n' + | |
' const packagePath = makePackagePath(tempDirectory, packageName);\n' + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
' deepJson = await deep.import(deepJsonPath);\n' + | |
' packageJson = await deep.import(packageJsonPath);\n' + | |
'\n' + | |
' const packages = await getDeepPackagesList(nodeModulesPath);\n' + | |
" console.log('packages', packages);\n" + | |
' \n' + | |
' const deepPackagesDependencies = await getDeepPackagesDependencies(nodeModulesPath, packages, packageName);\n' + | |
' delete deepPackagesDependencies[packageName];\n' + | |
" console.log('deepPackagesDependencies', deepPackagesDependencies);\n" + | |
' \n' + | |
' buildInstallationQueue(deepPackagesDependencies, installationQueue, installationSet);\n' + | |
' \n' + | |
" console.log('installationQueue', installationQueue);\n" + | |
" console.log('installationSet', installationSet);\n" + | |
' } finally {\n' + | |
' fs.rmSync(tempDirectory, { recursive: true, force: true });\n' + | |
' }\n' + | |
' \n' + | |
' const existingPackages = await getExistingPackages(installationQueue.map(e => e.name));\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
'\n' + | |
' for (const dependencyPackage of instal'... 1567 more characters, | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzU0In0sImlhdCI6MTcwMDE3OTM5OX0.k_lqxfOqPA8cqXXH7nmks3O_rYPoi21n3t5lX3tmsn0', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 380, | |
oldLink: null, | |
newLink: { from_id: 380, type_id: 750, id: 1416, to_id: 1414, value: null }, | |
promiseId: 1417 | |
} | |
} | |
packages [ | |
{ | |
id: 1108, | |
name: { id: 440, value: '@suenot/unit', link_id: 1108 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1267, | |
name: { id: 517, value: '@suenot/wallet', link_id: 1267 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1310, | |
name: { id: 522, value: '@suenot/wallet', link_id: 1310 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 184, | |
name: { id: 6, value: '@deep-foundation/core', link_id: 184 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1227, | |
name: { id: 483, value: '@suenot/asset', link_id: 1227 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1148, | |
name: { id: 442, value: '@suenot/unit', link_id: 1148 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1188, | |
name: { id: 480, value: '@suenot/asset', link_id: 1188 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
} | |
] | |
rejected { | |
stack: "Error: Multiple packages with name '@suenot/wallet' exist.\n" + | |
' at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:176:17)\n' + | |
' at Array.reduce (<anonymous>)\n' + | |
' at getExistingPackages (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:168:39)\n' + | |
' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n' + | |
' at async eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:234:28)', | |
message: "Multiple packages with name '@suenot/wallet' exist." | |
} | |
/tmp/382c57cb-e910-413b-84a1-bf69a2c161c4 | |
npm --prefix "/tmp/382c57cb-e910-413b-84a1-bf69a2c161c4" i @suenot/[email protected] | |
added 5 packages in 497ms | |
find . -name deep.json | |
./@deep-foundation/core/deep.json | |
./@suenot/unit/deep.json | |
./@suenot/asset/deep.json | |
./@suenot/wallet/deep.json | |
./@suenot/portfolio/deep.json | |
packages [ | |
[ '@deep-foundation/core' ], | |
[ '@suenot/unit' ], | |
[ '@suenot/asset' ], | |
[ '@suenot/wallet' ], | |
[ '@suenot/portfolio' ] | |
] | |
packagePath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@deep-foundation/core | |
packageJsonPath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@deep-foundation/core/package.json | |
packageJson { name: '@deep-foundation/core', version: '0.0.2' } | |
deepJsonPath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@deep-foundation/core/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/core', version: '0.0.2' }, | |
data: [ | |
{ id: 'Type', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Package', type: 'Type' }, | |
{ id: 'Contain', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Value', type: 'Type', from: 'Any', to: 'Type' }, | |
{ id: 'String', type: 'Type' }, | |
{ id: 'Number', type: 'Type' }, | |
{ id: 'Object', type: 'Type' }, | |
{ id: 'Any', type: 'Type' }, | |
{ id: 'Promise', type: 'Type' }, | |
{ id: 'Then', type: 'Type', from: 'Any', to: 'Promise' }, | |
{ id: 'Resolved', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'Rejected', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'typeValue', type: 'Value', from: 'Type', to: 'String' }, | |
{ | |
id: 'packageValue', | |
type: 'Value', | |
from: 'Package', | |
to: 'String' | |
}, | |
{ id: 'Selector', type: 'Type' }, | |
{ | |
id: 'SelectorInclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ id: 'Rule', type: 'Type' }, | |
{ id: 'RuleSubject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleObject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleAction', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ | |
id: 'containValue', | |
type: 'Value', | |
from: 'Contain', | |
to: 'String' | |
}, | |
{ id: 'User', type: 'Type' }, | |
{ id: 'Operation', type: 'Type' }, | |
{ | |
id: 'operationValue', | |
type: 'Value', | |
from: 'Operation', | |
to: 'String' | |
}, | |
{ id: 'AllowInsert', type: 'Operation' }, | |
{ id: 'AllowUpdate', type: 'Operation' }, | |
{ id: 'AllowDelete', type: 'Operation' }, | |
{ id: 'AllowSelect', type: 'Operation' }, | |
{ id: 'File', type: 'Type' }, | |
{ id: 'SyncTextFile', type: 'File' }, | |
{ | |
id: 'syncTextFileValue', | |
type: 'Value', | |
from: 'SyncTextFile', | |
to: 'String' | |
}, | |
{ id: 'ExecutionProvider', type: 'Type' }, | |
{ id: 'JSExecutionProvider', type: 'ExecutionProvider' }, | |
{ id: 'TreeInclude', type: 'Type', from: 'Type', to: 'Any' }, | |
{ id: 'Handler', type: 'Type', from: 'Supports', to: 'Any' }, | |
{ id: 'Tree', type: 'Type' }, | |
{ | |
id: 'TreeIncludeDown', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeUp', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeNode', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ id: 'containTree', type: 'Tree' }, | |
{ | |
id: 'containTreeContain', | |
type: 'TreeIncludeDown', | |
from: 'containTree', | |
to: 'Contain' | |
}, | |
{ | |
id: 'containTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'containTree', | |
to: 'Any' | |
}, | |
{ id: 'PackageNamespace', type: 'Type' }, | |
{ | |
id: 'packageNamespaceValue', | |
type: 'Value', | |
from: 'PackageNamespace', | |
to: 'String' | |
}, | |
{ | |
id: 'PackageActive', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'PackageVersion', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'packageVersionValue', | |
type: 'Value', | |
from: 'PackageVersion', | |
to: 'String' | |
}, | |
{ id: 'HandleOperation', type: 'Type', from: 'Type', to: 'Type' }, | |
{ | |
id: 'HandleInsert', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleUpdate', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleDelete', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'PromiseResult', type: 'Type' }, | |
{ | |
id: 'promiseResultValueRelationTable', | |
type: 'Value', | |
from: 'PromiseResult', | |
to: 'Object' | |
}, | |
{ id: 'PromiseReason', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Focus', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'focusValue', type: 'Value', from: 'Focus', to: 'Object' }, | |
{ id: 'AsyncFile', type: 'File' }, | |
{ | |
id: 'handlersTreeHandler', | |
type: 'TreeIncludeUp', | |
from: 'handlersTree', | |
to: 'Handler' | |
}, | |
{ id: 'Query', type: 'Type' }, | |
{ id: 'queryValue', type: 'Value', from: 'Query', to: 'Object' }, | |
{ id: 'Active', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Fixed', type: 'Type' }, | |
{ id: 'fixedValue', type: 'Value', from: 'Fixed', to: 'Object' }, | |
{ id: 'Space', type: 'Type' }, | |
{ id: 'spaceValue', type: 'Value', from: 'Space', to: 'String' }, | |
{ id: 'AllowLogin', type: 'Operation' }, | |
{ id: 'guests', type: 'Any' }, | |
{ id: 'Join', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'joinTree', type: 'Tree' }, | |
{ | |
id: 'joinTreeJoin', | |
type: 'TreeIncludeUp', | |
from: 'joinTree', | |
to: 'Join' | |
}, | |
{ | |
id: 'joinTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'joinTree', | |
to: 'Any' | |
}, | |
{ id: 'SelectorTree', type: 'Type', from: 'Any', to: 'Tree' }, | |
{ id: 'AllowAdmin', type: 'Operation' }, | |
{ | |
id: 'SelectorExclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ | |
id: 'SelectorFilter', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Query' | |
}, | |
{ | |
id: 'HandleSchedule', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'Schedule', type: 'Type' }, | |
{ | |
id: 'scheduleValue', | |
type: 'Value', | |
from: 'Schedule', | |
to: 'String' | |
}, | |
{ id: 'Router', type: 'Type', value: [Object] }, | |
{ id: 'IsolationProvider', type: 'Type' }, | |
{ id: 'DockerIsolationProvider', type: 'IsolationProvider' }, | |
{ | |
id: 'dockerIsolationProviderValue', | |
type: 'Value', | |
from: 'DockerIsolationProvider', | |
to: 'String' | |
}, | |
{ | |
id: 'JSDockerIsolationProvider', | |
type: 'DockerIsolationProvider', | |
value: [Object] | |
}, | |
{ id: 'Supports', type: 'Type', from: 'Any', to: 'Any' }, | |
{ | |
id: 'dockerSupportsJs', | |
type: 'Supports', | |
from: 'JSDockerIsolationProvider', | |
to: 'JSExecutionProvider' | |
}, | |
{ | |
id: 'PackageInstall', | |
type: 'Type', | |
from: 'Any', | |
to: 'PackageQuery' | |
}, | |
{ | |
id: 'PackagePublish', | |
type: 'Type', | |
from: 'Package', | |
to: 'PackageQuery' | |
}, | |
{ id: 'packageInstallCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packageInstallCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packageInstallCode' | |
}, | |
{ | |
id: 'packageInstallCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackageInstall', | |
to: 'packageInstallCodeHandler' | |
}, | |
{ id: 'packagePublishCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packagePublishCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packagePublishCode' | |
}, | |
{ | |
id: 'packagePublishCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackagePublish', | |
to: 'packagePublishCodeHandler' | |
}, | |
{ id: 'AllowPackageInstall', type: 'Operation' }, | |
{ id: 'portValue', type: 'Value', from: 'Port', to: 'Number' }, | |
{ | |
id: 'HandlePort', | |
type: 'HandleOperation', | |
from: 'Port', | |
to: 'Any' | |
}, | |
{ id: 'Route', type: 'Type' }, | |
{ id: 'RouterListening', type: 'Type', from: 'Router', to: 'Port' }, | |
{ | |
id: 'RouterStringUse', | |
type: 'Type', | |
from: 'Route', | |
to: 'Router' | |
}, | |
{ | |
id: 'routerStringUseValue', | |
type: 'Value', | |
from: 'RouterStringUse', | |
to: 'String' | |
}, | |
... 74 more items | |
], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
} | |
dependencies {} | |
dependencyPackageName @deep-foundation/core | |
packagePath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/unit | |
packageJsonPath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/unit/package.json | |
packageJson { | |
name: '@suenot/unit', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.2', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/unit/deep.json | |
deepJson { | |
package: { name: '@suenot/unit', version: '0.0.2' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Unit', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Unit', to: 'Unit' }, | |
{ | |
id: 'descriptionSymbol', | |
type: 2, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'avatarValue', type: 3, from: 'Avatar', to: 4 }, | |
{ | |
id: 'avatarSymbol', | |
type: 2, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'tickerValue', type: 3, from: 'Ticker', to: 4 }, | |
{ | |
id: 'tickerSymbol', | |
type: 2, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'nameValue', type: 3, from: 'Name', to: 4 }, | |
{ | |
id: 'nameSymbol', | |
type: 2, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 2, | |
from: 'Unit', | |
to: 'Unit', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/unit | |
packagePath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/asset | |
packageJsonPath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/asset/package.json | |
packageJson { | |
name: '@suenot/asset', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.8', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/asset/deep.json | |
deepJson { | |
package: { name: '@suenot/asset', version: '0.0.8' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Asset', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'Avatar', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'tickerValue', type: 2, from: 'Ticker', to: 3 }, | |
{ | |
id: 'tickerSymbol', | |
type: 4, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Asset', | |
to: 'Asset', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/asset | |
packagePath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/wallet | |
packageJsonPath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/wallet/package.json | |
packageJson { | |
name: '@suenot/wallet', | |
dependencies: { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
}, | |
version: '0.0.3', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/wallet/deep.json | |
deepJson { | |
package: { name: '@suenot/wallet', version: '0.0.3' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ id: 'Wallet', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'descriptionValue', type: 2, from: 'Description', to: 3 }, | |
{ | |
id: 'descriptionSymbol', | |
type: 4, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'ContainUnit', type: 1, from: 'Wallet', to: 5 }, | |
{ id: 'Name', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Wallet', | |
to: 'Wallet', | |
value: [Object] | |
}, | |
{ id: 'waletValue', type: 2, from: 'Wallet', to: 6 } | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/core', version: '0.0.2' }, | |
{ name: '@suenot/unit', version: '0.0.2' } | |
] | |
} | |
dependencies { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
} | |
dependencyPackageName @suenot/wallet | |
packagePath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/portfolio | |
packageJsonPath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/portfolio/package.json | |
packageJson { | |
name: '@suenot/portfolio', | |
dependencies: { '@deep-foundation/core': '~0.0.2', '@suenot/wallet': '~0.0.3' }, | |
version: '0.0.3', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/382c57cb-e910-413b-84a1-bf69a2c161c4/node_modules/@suenot/portfolio/deep.json | |
deepJson { | |
package: { name: '@suenot/portfolio', version: '0.0.3' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ id: 'Portfolio', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Portfolio', to: 'Portfolio' }, | |
{ id: 'descriptionValue', type: 2, from: 'Description', to: 3 }, | |
{ | |
id: 'descriptionSymbol', | |
type: 4, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Portfolio', to: 'Portfolio' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'ContainWallet', type: 1, from: 'Portfolio', to: 5 }, | |
{ id: 'Name', type: 1, from: 'Portfolio', to: 'Portfolio' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Portfolio', | |
to: 'Portfolio', | |
value: [Object] | |
}, | |
{ id: 'portfolioValue', type: 2, from: 'Portfolio', to: 6 } | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/core', version: '0.0.2' }, | |
{ name: '@suenot/wallet', version: '0.0.3' } | |
] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2', '@suenot/wallet': '~0.0.3' } | |
dependencyPackageName @suenot/portfolio | |
deepPackagesDependencies { | |
'@deep-foundation/core': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' }, | |
dependencies: [] | |
}, | |
'@suenot/unit': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/asset': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/wallet': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core', '@suenot/asset', '@suenot/unit' ] | |
} | |
} | |
installationQueue [ | |
{ | |
name: '@deep-foundation/core', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' } | |
}, | |
{ | |
name: '@suenot/unit', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/asset', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/wallet', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
} | |
} | |
] | |
installationSet { | |
'@deep-foundation/core': true, | |
'@suenot/unit': true, | |
'@suenot/asset': true, | |
'@suenot/wallet': true | |
} | |
packages [ | |
{ | |
id: 1108, | |
name: { id: 440, value: '@suenot/unit', link_id: 1108 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1267, | |
name: { id: 517, value: '@suenot/wallet', link_id: 1267 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1310, | |
name: { id: 522, value: '@suenot/wallet', link_id: 1310 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 184, | |
name: { id: 6, value: '@deep-foundation/core', link_id: 184 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1227, | |
name: { id: 483, value: '@suenot/asset', link_id: 1227 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1148, | |
name: { id: 442, value: '@suenot/unit', link_id: 1148 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1188, | |
name: { id: 480, value: '@suenot/asset', link_id: 1188 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
} | |
] | |
rejected { | |
stack: "Error: Multiple packages with name '@suenot/wallet' exist.\n" + | |
' at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:176:17)\n' + | |
' at Array.reduce (<anonymous>)\n' + | |
' at getExistingPackages (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:168:39)\n' + | |
' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n' + | |
' at async eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:234:28)', | |
message: "Multiple packages with name '@suenot/wallet' exist." | |
} | |
call body params { | |
code: 'async ({ deep, gql, data: { triggeredByLinkId, newLink } }) => {\n' + | |
" const deepFileName = 'deep.json';\n" + | |
" const fs = await deep.import('fs');\n" + | |
'\n' + | |
' const makeTempDirectory = async () => {\n' + | |
" const os = await deep.import('os');\n" + | |
" const { v4: uuid } = await deep.import('uuid');\n" + | |
' \n' + | |
' const baseTempDirectory = os.tmpdir();\n' + | |
' const randomId = uuid();\n' + | |
" const tempDirectory = [baseTempDirectory,randomId].join('/');\n" + | |
' fs.mkdirSync(tempDirectory);\n' + | |
' console.log(tempDirectory);\n' + | |
' return tempDirectory;\n' + | |
' };\n' + | |
' const npmInstall = async (packageName, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
' const command = `npm --prefix "${tempDirectory}" i ${packageName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
' const npmLogin = async (token, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
' \n' + | |
' const command = `npm set "//registry.npmjs.org/:_authToken" ${token}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
" const makePackagePath = (tempDirectory, packageName) => [tempDirectory, 'node_modules', packageName].join('/');\n" + | |
" const makeDeepJsonPath = (packagePath) => [packagePath, deepFileName].join('/');\n" + | |
" const makePackageJsonPath = (packagePath) => [packagePath, 'package.json'].join('/');\n" + | |
' const loadNpmToken = async () => {\n' + | |
" const containTreeId = await deep.id('@deep-foundation/core', 'containTree');\n" + | |
" const tokenTypeId = await deep.id('@deep-foundation/npm-packager', 'Token');\n" + | |
' const { data: [{ value: { value: npmToken = undefined } = {}} = {}] = []} = await deep.select({\n' + | |
' up: {\n' + | |
' tree_id: { _eq: containTreeId },\n' + | |
' parent: { id: { _eq: triggeredByLinkId } },\n' + | |
' link: { type_id: { _eq: tokenTypeId } }\n' + | |
' }\n' + | |
' });\n' + | |
' return npmToken;\n' + | |
' };\n' + | |
' const deepImport = async (deepJson, packageJson) => {\n' + | |
' if (deepJson.package.name !== packageJson.name) {\n' + | |
' throw new Error(`Package name is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package name: ${deepJson.package.name}.\n' + | |
' package.json package name: ${packageJson.name}.`);\n' + | |
' }\n' + | |
' if (deepJson.package.version !== packageJson.version) {\n' + | |
' throw new Error(`Package version is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package version: ${deepJson.package.version}.\n' + | |
' package.json package version: ${packageJson.version}.`);\n' + | |
' }\n' + | |
" const packager = new (await deep.import('@deep-foundation/deeplinks/imports/packager.js')).Packager(deep);\n" + | |
' const imported = await packager.import(deepJson);\n' + | |
' console.log(imported);\n' + | |
' if (imported?.errors?.length) throw imported;\n' + | |
' return imported;\n' + | |
' };\n' + | |
' const getDeepPackagesList = async (rootPath) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
" const deepFileName = 'deep.json';\n" + | |
' const deepFileNameLength = deepFileName.length;\n' + | |
'\n' + | |
' const command = `find . -name ${deepFileName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: rootPath\n' + | |
' });\n' + | |
" console.log('', `${command}\\n`, output);\n" + | |
'\n' + | |
' const packages = output\n' + | |
' .split(/\\r?\\n/)\n' + | |
' .filter(line => line.trim())\n' + | |
' .map(line => line.slice(2).slice(0, -deepFileNameLength - 1))\n' + | |
" .map(line => line.split('/node_modules/'));\n" + | |
' return packages;\n' + | |
' };\n' + | |
' const getDeepPackagesDependencies = async (rootPath, packages, packageName) => {\n' + | |
' const dictionary = {};\n' + | |
' for (const pkg of packages) {\n' + | |
" const packagePath = [rootPath, pkg.join('/node_modules/')].join('/');\n" + | |
" console.log('packagePath', packagePath);\n" + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
" console.log('packageJsonPath', packageJsonPath);\n" + | |
' if (!fs.existsSync(packageJsonPath)) {\n' + | |
' throw new Error(`package.json for dependency ${pkg} is not found at ${packageJsonPath}. Looks like ${packageName} does not contain ${pkg} dependency in package.json.`);\n' + | |
' }\n' + | |
' const packageJson = await deep.import(packageJsonPath);\n' + | |
" console.log('packageJson', packageJson);\n" + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
" console.log('deepJsonPath', deepJsonPath);\n" + | |
' if (!fs.existsSync(deepJsonPath)) {\n' + | |
' throw new Error(`deep.json for dependency ${pkg} is not found at ${deepJsonPath}. Looks like ${pkg} installed, but it does not contain deep.json. Make sure ${pkg} is a deep package.`);\n' + | |
' }\n' + | |
' const deepJson = await deep.import(deepJsonPath);\n' + | |
" console.log('deepJson', deepJson);\n" + | |
' const dependencies = packageJson.dependencies ?? {};\n' + | |
" console.log('dependencies', dependencies);\n" + | |
' const dependencyPackageName = pkg.at(-1);\n' + | |
" console.log('dependencyPackageName', dependencyPackageName);\n" + | |
' if (Array.isArray(dictionary[dependencyPackageName])) {\n' + | |
" throw new Error('Multiple versions of the same package are not supported yet.');\n" + | |
' }\n' + | |
' dictionary[dependencyPackageName] = { deepJson, packageJson, dependencies };\n' + | |
' }\n' + | |
' for (const pkg in dictionary) {\n' + | |
' const sourceDependencies = dictionary[pkg].dependencies;\n' + | |
' const targetDependencies = [];\n' + | |
' for (const dependency in sourceDependencies)\n' + | |
' {\n' + | |
' if (dictionary[dependency]) {\n' + | |
' targetDependencies.push(dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' dictionary[pkg].dependencies = targetDependencies;\n' + | |
' }\n' + | |
' return dictionary;\n' + | |
' }\n' + | |
' const buildInstallationQueueCore = (deepPackagesDependencies, queue, set, packageName) => {\n' + | |
' const dependencies = deepPackagesDependencies[packageName].dependencies;\n' + | |
' for (const dependency of dependencies) {\n' + | |
' if (!set[dependency]) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' if(!set[packageName]) {\n' + | |
' const deepJson = deepPackagesDependencies[packageName].deepJson;\n' + | |
' const packageJson = deepPackagesDependencies[packageName].packageJson;\n' + | |
' queue.push({ name: packageName, deepJson, packageJson });\n' + | |
' set[packageName] = true;\n' + | |
' }\n' + | |
' }\n' + | |
' const buildInstallationQueue = (deepPackagesDependencies, queue, set) => {\n' + | |
' for (const packageName in deepPackagesDependencies) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, packageName);\n' + | |
' }\n' + | |
' }\n' + | |
' const getExistingPackages = async (packageNames) => {\n' + | |
" const packageTypeId = await deep.id('@deep-foundation/core', 'Package');\n" + | |
" const packageVersionTypeId = await deep.id('@deep-foundation/core', 'PackageVersion');\n" + | |
' const { data: packages } = await deep.select({\n' + | |
' type_id: { _eq: packageTypeId },\n' + | |
' string: { value: { _in: packageNames } }\n' + | |
' }, {\n' + | |
" name: 'GET_EXISTING_PACKAGES_WITH_VERSIONS',\n" + | |
' returning: `\n' + | |
' id\n' + | |
' name: value\n' + | |
' versions: in(where: {type_id: {_eq: ${packageVersionTypeId}}, string: {value: {_is_null: false}}}) {\n' + | |
' id\n' + | |
' version: value\n' + | |
' }\n' + | |
' `\n' + | |
' })\n' + | |
" console.log('packages', packages);\n" + | |
' const existingPackages = packages.reduce(\n' + | |
' (accumulator, currentValue) => {\n' + | |
' const packageId = currentValue?.id;\n' + | |
' const packageName = currentValue?.name?.value;\n' + | |
' if (currentValue?.versions.length !== 1) {\n' + | |
" throw new Error(`'${packageName}' package must have exactly one version. Now it has ${currentValue?.versions.length} versions.`);\n" + | |
' }\n' + | |
' if (accumulator[packageName]) {\n' + | |
" throw new Error(`Multiple packages with name '${packageName}' exist.`)\n" + | |
' }\n' + | |
' const packageVersion = currentValue?.versions?.[0]?.version?.value;\n' + | |
' accumulator[packageName] = { id: packageId, version: packageVersion };\n' + | |
' return accumulator;\n' + | |
' },\n' + | |
' {}\n' + | |
' );\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
' return existingPackages;\n' + | |
' };\n' + | |
'\n' + | |
' if (!triggeredByLinkId) {\n' + | |
" throw new Error('Install link should be inserted using JWT token (role link), it cannot be inserted using hasura secret (role admin).');\n" + | |
' }\n' + | |
'\n' + | |
' const { data: [{ value: { value: packageQuery } }] } = await deep.select({ id: newLink.to_id });\n' + | |
" const packageQueryParts = packageQuery.split('@');\n" + | |
' if (packageQueryParts.length === 3) {\n' + | |
' const packageVersion = packageQueryParts.pop();\n' + | |
' }\n' + | |
" const packageName = packageQueryParts.join('@');\n" + | |
' if (!packageName) {\n' + | |
" throw new Error('Package query value is empty.');\n" + | |
' }\n' + | |
' const tempDirectory = await makeTempDirectory();\n' + | |
' let deepJson;\n' + | |
' let packageJson;\n' + | |
' const installationQueue = [];\n' + | |
' const installationSet = {};\n' + | |
' try {\n' + | |
' const npmToken = await loadNpmToken();\n' + | |
' if (npmToken) {\n' + | |
' await npmLogin(npmToken, tempDirectory);\n' + | |
' }\n' + | |
" const nodeModulesPath = [tempDirectory, 'node_modules'].join('/');\n" + | |
' await npmInstall(packageQuery, tempDirectory);\n' + | |
' const packagePath = makePackagePath(tempDirectory, packageName);\n' + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
' deepJson = await deep.import(deepJsonPath);\n' + | |
' packageJson = await deep.import(packageJsonPath);\n' + | |
'\n' + | |
' const packages = await getDeepPackagesList(nodeModulesPath);\n' + | |
" console.log('packages', packages);\n" + | |
' \n' + | |
' const deepPackagesDependencies = await getDeepPackagesDependencies(nodeModulesPath, packages, packageName);\n' + | |
' delete deepPackagesDependencies[packageName];\n' + | |
" console.log('deepPackagesDependencies', deepPackagesDependencies);\n" + | |
' \n' + | |
' buildInstallationQueue(deepPackagesDependencies, installationQueue, installationSet);\n' + | |
' \n' + | |
" console.log('installationQueue', installationQueue);\n" + | |
" console.log('installationSet', installationSet);\n" + | |
' } finally {\n' + | |
' fs.rmSync(tempDirectory, { recursive: true, force: true });\n' + | |
' }\n' + | |
' \n' + | |
' const existingPackages = await getExistingPackages(installationQueue.map(e => e.name));\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
'\n' + | |
' for (const dependencyPackage of instal'... 1567 more characters, | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzU0In0sImlhdCI6MTcwMDE3OTUyMn0.sXVO5AbCnH-zhuwn9j7ssbu0lptr_0rtsdike6OR4ic', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 380, | |
oldLink: null, | |
newLink: { from_id: 380, type_id: 750, id: 1440, to_id: 1438, value: null }, | |
promiseId: 1441 | |
} | |
} | |
call body params { | |
code: 'async ({ deep, gql, data: { triggeredByLinkId, newLink } }) => {\n' + | |
" const deepFileName = 'deep.json';\n" + | |
" const fs = await deep.import('fs');\n" + | |
'\n' + | |
' const makeTempDirectory = async () => {\n' + | |
" const os = await deep.import('os');\n" + | |
" const { v4: uuid } = await deep.import('uuid');\n" + | |
' \n' + | |
' const baseTempDirectory = os.tmpdir();\n' + | |
' const randomId = uuid();\n' + | |
" const tempDirectory = [baseTempDirectory,randomId].join('/');\n" + | |
' fs.mkdirSync(tempDirectory);\n' + | |
' console.log(tempDirectory);\n' + | |
' return tempDirectory;\n' + | |
' };\n' + | |
' const npmInstall = async (packageName, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
' const command = `npm --prefix "${tempDirectory}" i ${packageName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
' const npmLogin = async (token, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
' \n' + | |
' const command = `npm set "//registry.npmjs.org/:_authToken" ${token}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
" const makePackagePath = (tempDirectory, packageName) => [tempDirectory, 'node_modules', packageName].join('/');\n" + | |
" const makeDeepJsonPath = (packagePath) => [packagePath, deepFileName].join('/');\n" + | |
" const makePackageJsonPath = (packagePath) => [packagePath, 'package.json'].join('/');\n" + | |
' const loadNpmToken = async () => {\n' + | |
" const containTreeId = await deep.id('@deep-foundation/core', 'containTree');\n" + | |
" const tokenTypeId = await deep.id('@deep-foundation/npm-packager', 'Token');\n" + | |
' const { data: [{ value: { value: npmToken = undefined } = {}} = {}] = []} = await deep.select({\n' + | |
' up: {\n' + | |
' tree_id: { _eq: containTreeId },\n' + | |
' parent: { id: { _eq: triggeredByLinkId } },\n' + | |
' link: { type_id: { _eq: tokenTypeId } }\n' + | |
' }\n' + | |
' });\n' + | |
' return npmToken;\n' + | |
' };\n' + | |
' const deepImport = async (deepJson, packageJson) => {\n' + | |
' if (deepJson.package.name !== packageJson.name) {\n' + | |
' throw new Error(`Package name is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package name: ${deepJson.package.name}.\n' + | |
' package.json package name: ${packageJson.name}.`);\n' + | |
' }\n' + | |
' if (deepJson.package.version !== packageJson.version) {\n' + | |
' throw new Error(`Package version is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package version: ${deepJson.package.version}.\n' + | |
' package.json package version: ${packageJson.version}.`);\n' + | |
' }\n' + | |
" const packager = new (await deep.import('@deep-foundation/deeplinks/imports/packager.js')).Packager(deep);\n" + | |
' const imported = await packager.import(deepJson);\n' + | |
' console.log(imported);\n' + | |
' if (imported?.errors?.length) throw imported;\n' + | |
' return imported;\n' + | |
' };\n' + | |
' const getDeepPackagesList = async (rootPath) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
" const deepFileName = 'deep.json';\n" + | |
' const deepFileNameLength = deepFileName.length;\n' + | |
'\n' + | |
' const command = `find . -name ${deepFileName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: rootPath\n' + | |
' });\n' + | |
" console.log('', `${command}\\n`, output);\n" + | |
'\n' + | |
' const packages = output\n' + | |
' .split(/\\r?\\n/)\n' + | |
' .filter(line => line.trim())\n' + | |
' .map(line => line.slice(2).slice(0, -deepFileNameLength - 1))\n' + | |
" .map(line => line.split('/node_modules/'));\n" + | |
' return packages;\n' + | |
' };\n' + | |
' const getDeepPackagesDependencies = async (rootPath, packages, packageName) => {\n' + | |
' const dictionary = {};\n' + | |
' for (const pkg of packages) {\n' + | |
" const packagePath = [rootPath, pkg.join('/node_modules/')].join('/');\n" + | |
" console.log('packagePath', packagePath);\n" + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
" console.log('packageJsonPath', packageJsonPath);\n" + | |
' if (!fs.existsSync(packageJsonPath)) {\n' + | |
' throw new Error(`package.json for dependency ${pkg} is not found at ${packageJsonPath}. Looks like ${packageName} does not contain ${pkg} dependency in package.json.`);\n' + | |
' }\n' + | |
' const packageJson = await deep.import(packageJsonPath);\n' + | |
" console.log('packageJson', packageJson);\n" + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
" console.log('deepJsonPath', deepJsonPath);\n" + | |
' if (!fs.existsSync(deepJsonPath)) {\n' + | |
' throw new Error(`deep.json for dependency ${pkg} is not found at ${deepJsonPath}. Looks like ${pkg} installed, but it does not contain deep.json. Make sure ${pkg} is a deep package.`);\n' + | |
' }\n' + | |
' const deepJson = await deep.import(deepJsonPath);\n' + | |
" console.log('deepJson', deepJson);\n" + | |
' const dependencies = packageJson.dependencies ?? {};\n' + | |
" console.log('dependencies', dependencies);\n" + | |
' const dependencyPackageName = pkg.at(-1);\n' + | |
" console.log('dependencyPackageName', dependencyPackageName);\n" + | |
' if (Array.isArray(dictionary[dependencyPackageName])) {\n' + | |
" throw new Error('Multiple versions of the same package are not supported yet.');\n" + | |
' }\n' + | |
' dictionary[dependencyPackageName] = { deepJson, packageJson, dependencies };\n' + | |
' }\n' + | |
' for (const pkg in dictionary) {\n' + | |
' const sourceDependencies = dictionary[pkg].dependencies;\n' + | |
' const targetDependencies = [];\n' + | |
' for (const dependency in sourceDependencies)\n' + | |
' {\n' + | |
' if (dictionary[dependency]) {\n' + | |
' targetDependencies.push(dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' dictionary[pkg].dependencies = targetDependencies;\n' + | |
' }\n' + | |
' return dictionary;\n' + | |
' }\n' + | |
' const buildInstallationQueueCore = (deepPackagesDependencies, queue, set, packageName) => {\n' + | |
' const dependencies = deepPackagesDependencies[packageName].dependencies;\n' + | |
' for (const dependency of dependencies) {\n' + | |
' if (!set[dependency]) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' if(!set[packageName]) {\n' + | |
' const deepJson = deepPackagesDependencies[packageName].deepJson;\n' + | |
' const packageJson = deepPackagesDependencies[packageName].packageJson;\n' + | |
' queue.push({ name: packageName, deepJson, packageJson });\n' + | |
' set[packageName] = true;\n' + | |
' }\n' + | |
' }\n' + | |
' const buildInstallationQueue = (deepPackagesDependencies, queue, set) => {\n' + | |
' for (const packageName in deepPackagesDependencies) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, packageName);\n' + | |
' }\n' + | |
' }\n' + | |
' const getExistingPackages = async (packageNames) => {\n' + | |
" const packageTypeId = await deep.id('@deep-foundation/core', 'Package');\n" + | |
" const packageVersionTypeId = await deep.id('@deep-foundation/core', 'PackageVersion');\n" + | |
' const { data: packages } = await deep.select({\n' + | |
' type_id: { _eq: packageTypeId },\n' + | |
' string: { value: { _in: packageNames } }\n' + | |
' }, {\n' + | |
" name: 'GET_EXISTING_PACKAGES_WITH_VERSIONS',\n" + | |
' returning: `\n' + | |
' id\n' + | |
' name: value\n' + | |
' versions: in(where: {type_id: {_eq: ${packageVersionTypeId}}, string: {value: {_is_null: false}}}) {\n' + | |
' id\n' + | |
' version: value\n' + | |
' }\n' + | |
' `\n' + | |
' })\n' + | |
" console.log('packages', packages);\n" + | |
' const existingPackages = packages.reduce(\n' + | |
' (accumulator, currentValue) => {\n' + | |
' const packageId = currentValue?.id;\n' + | |
' const packageName = currentValue?.name?.value;\n' + | |
' if (currentValue?.versions.length !== 1) {\n' + | |
" throw new Error(`'${packageName}' package must have exactly one version. Now it has ${currentValue?.versions.length} versions.`);\n" + | |
' }\n' + | |
' if (accumulator[packageName]) {\n' + | |
" throw new Error(`Multiple packages with name '${packageName}' exist.`)\n" + | |
' }\n' + | |
' const packageVersion = currentValue?.versions?.[0]?.version?.value;\n' + | |
' accumulator[packageName] = { id: packageId, version: packageVersion };\n' + | |
' return accumulator;\n' + | |
' },\n' + | |
' {}\n' + | |
' );\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
' return existingPackages;\n' + | |
' };\n' + | |
'\n' + | |
' if (!triggeredByLinkId) {\n' + | |
" throw new Error('Install link should be inserted using JWT token (role link), it cannot be inserted using hasura secret (role admin).');\n" + | |
' }\n' + | |
'\n' + | |
' const { data: [{ value: { value: packageQuery } }] } = await deep.select({ id: newLink.to_id });\n' + | |
" const packageQueryParts = packageQuery.split('@');\n" + | |
' if (packageQueryParts.length === 3) {\n' + | |
' const packageVersion = packageQueryParts.pop();\n' + | |
' }\n' + | |
" const packageName = packageQueryParts.join('@');\n" + | |
' if (!packageName) {\n' + | |
" throw new Error('Package query value is empty.');\n" + | |
' }\n' + | |
' const tempDirectory = await makeTempDirectory();\n' + | |
' let deepJson;\n' + | |
' let packageJson;\n' + | |
' const installationQueue = [];\n' + | |
' const installationSet = {};\n' + | |
' try {\n' + | |
' const npmToken = await loadNpmToken();\n' + | |
' if (npmToken) {\n' + | |
' await npmLogin(npmToken, tempDirectory);\n' + | |
' }\n' + | |
" const nodeModulesPath = [tempDirectory, 'node_modules'].join('/');\n" + | |
' await npmInstall(packageQuery, tempDirectory);\n' + | |
' const packagePath = makePackagePath(tempDirectory, packageName);\n' + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
' deepJson = await deep.import(deepJsonPath);\n' + | |
' packageJson = await deep.import(packageJsonPath);\n' + | |
'\n' + | |
' const packages = await getDeepPackagesList(nodeModulesPath);\n' + | |
" console.log('packages', packages);\n" + | |
' \n' + | |
' const deepPackagesDependencies = await getDeepPackagesDependencies(nodeModulesPath, packages, packageName);\n' + | |
' delete deepPackagesDependencies[packageName];\n' + | |
" console.log('deepPackagesDependencies', deepPackagesDependencies);\n" + | |
' \n' + | |
' buildInstallationQueue(deepPackagesDependencies, installationQueue, installationSet);\n' + | |
' \n' + | |
" console.log('installationQueue', installationQueue);\n" + | |
" console.log('installationSet', installationSet);\n" + | |
' } finally {\n' + | |
' fs.rmSync(tempDirectory, { recursive: true, force: true });\n' + | |
' }\n' + | |
' \n' + | |
' const existingPackages = await getExistingPackages(installationQueue.map(e => e.name));\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
'\n' + | |
' for (const dependencyPackage of instal'... 1567 more characters, | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzU0In0sImlhdCI6MTcwMDE3OTUyMn0.sXVO5AbCnH-zhuwn9j7ssbu0lptr_0rtsdike6OR4ic', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 380, | |
oldLink: null, | |
newLink: { from_id: 380, type_id: 750, id: 1434, to_id: 1432, value: null }, | |
promiseId: 1435 | |
} | |
} | |
/tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2 | |
/tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71 | |
npm --prefix "/tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2" i @trooper2003/[email protected] | |
added 4 packages in 7s | |
find . -name deep.json | |
./@deep-foundation/tsx/deep.json | |
./@deep-foundation/core/deep.json | |
./@trooper2003/units/deep.json | |
./@trooper2003/account-ui/deep.json | |
packages [ | |
[ '@deep-foundation/tsx' ], | |
[ '@deep-foundation/core' ], | |
[ '@trooper2003/units' ], | |
[ '@trooper2003/account-ui' ] | |
] | |
packagePath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@deep-foundation/tsx | |
packageJsonPath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@deep-foundation/tsx/package.json | |
packageJson { | |
name: '@deep-foundation/tsx', | |
keywords: [ 'deep-package' ], | |
version: '0.0.5', | |
dependencies: { '@deep-foundation/core': '^0.0.2' } | |
} | |
deepJsonPath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@deep-foundation/tsx/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/tsx', version: '0.0.5' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ package: [Object], id: 8 }, | |
{ id: 'TSX', type: 1, value: [Object] }, | |
{ id: 'compiler', type: 2, value: [Object] }, | |
{ id: 'handler', type: 3, from: 4, to: 'compiler' }, | |
{ id: 'handleUpdate', type: 5, from: 'TSX', to: 'handler' }, | |
{ id: 'tsxValue', type: 6, from: 'TSX', to: 7 }, | |
{ | |
id: 'tsxSymbol', | |
type: 8, | |
from: 'TSX', | |
to: 'TSX', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '^0.0.2' } | |
dependencyPackageName @deep-foundation/tsx | |
packagePath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@deep-foundation/core | |
packageJsonPath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@deep-foundation/core/package.json | |
packageJson { name: '@deep-foundation/core', version: '0.0.2' } | |
deepJsonPath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@deep-foundation/core/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/core', version: '0.0.2' }, | |
data: [ | |
{ id: 'Type', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Package', type: 'Type' }, | |
{ id: 'Contain', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Value', type: 'Type', from: 'Any', to: 'Type' }, | |
{ id: 'String', type: 'Type' }, | |
{ id: 'Number', type: 'Type' }, | |
{ id: 'Object', type: 'Type' }, | |
{ id: 'Any', type: 'Type' }, | |
{ id: 'Promise', type: 'Type' }, | |
{ id: 'Then', type: 'Type', from: 'Any', to: 'Promise' }, | |
{ id: 'Resolved', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'Rejected', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'typeValue', type: 'Value', from: 'Type', to: 'String' }, | |
{ | |
id: 'packageValue', | |
type: 'Value', | |
from: 'Package', | |
to: 'String' | |
}, | |
{ id: 'Selector', type: 'Type' }, | |
{ | |
id: 'SelectorInclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ id: 'Rule', type: 'Type' }, | |
{ id: 'RuleSubject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleObject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleAction', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ | |
id: 'containValue', | |
type: 'Value', | |
from: 'Contain', | |
to: 'String' | |
}, | |
{ id: 'User', type: 'Type' }, | |
{ id: 'Operation', type: 'Type' }, | |
{ | |
id: 'operationValue', | |
type: 'Value', | |
from: 'Operation', | |
to: 'String' | |
}, | |
{ id: 'AllowInsert', type: 'Operation' }, | |
{ id: 'AllowUpdate', type: 'Operation' }, | |
{ id: 'AllowDelete', type: 'Operation' }, | |
{ id: 'AllowSelect', type: 'Operation' }, | |
{ id: 'File', type: 'Type' }, | |
{ id: 'SyncTextFile', type: 'File' }, | |
{ | |
id: 'syncTextFileValue', | |
type: 'Value', | |
from: 'SyncTextFile', | |
to: 'String' | |
}, | |
{ id: 'ExecutionProvider', type: 'Type' }, | |
{ id: 'JSExecutionProvider', type: 'ExecutionProvider' }, | |
{ id: 'TreeInclude', type: 'Type', from: 'Type', to: 'Any' }, | |
{ id: 'Handler', type: 'Type', from: 'Supports', to: 'Any' }, | |
{ id: 'Tree', type: 'Type' }, | |
{ | |
id: 'TreeIncludeDown', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeUp', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeNode', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ id: 'containTree', type: 'Tree' }, | |
{ | |
id: 'containTreeContain', | |
type: 'TreeIncludeDown', | |
from: 'containTree', | |
to: 'Contain' | |
}, | |
{ | |
id: 'containTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'containTree', | |
to: 'Any' | |
}, | |
{ id: 'PackageNamespace', type: 'Type' }, | |
{ | |
id: 'packageNamespaceValue', | |
type: 'Value', | |
from: 'PackageNamespace', | |
to: 'String' | |
}, | |
{ | |
id: 'PackageActive', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'PackageVersion', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'packageVersionValue', | |
type: 'Value', | |
from: 'PackageVersion', | |
to: 'String' | |
}, | |
{ id: 'HandleOperation', type: 'Type', from: 'Type', to: 'Type' }, | |
{ | |
id: 'HandleInsert', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleUpdate', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleDelete', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'PromiseResult', type: 'Type' }, | |
{ | |
id: 'promiseResultValueRelationTable', | |
type: 'Value', | |
from: 'PromiseResult', | |
to: 'Object' | |
}, | |
{ id: 'PromiseReason', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Focus', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'focusValue', type: 'Value', from: 'Focus', to: 'Object' }, | |
{ id: 'AsyncFile', type: 'File' }, | |
{ | |
id: 'handlersTreeHandler', | |
type: 'TreeIncludeUp', | |
from: 'handlersTree', | |
to: 'Handler' | |
}, | |
{ id: 'Query', type: 'Type' }, | |
{ id: 'queryValue', type: 'Value', from: 'Query', to: 'Object' }, | |
{ id: 'Active', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Fixed', type: 'Type' }, | |
{ id: 'fixedValue', type: 'Value', from: 'Fixed', to: 'Object' }, | |
{ id: 'Space', type: 'Type' }, | |
{ id: 'spaceValue', type: 'Value', from: 'Space', to: 'String' }, | |
{ id: 'AllowLogin', type: 'Operation' }, | |
{ id: 'guests', type: 'Any' }, | |
{ id: 'Join', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'joinTree', type: 'Tree' }, | |
{ | |
id: 'joinTreeJoin', | |
type: 'TreeIncludeUp', | |
from: 'joinTree', | |
to: 'Join' | |
}, | |
{ | |
id: 'joinTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'joinTree', | |
to: 'Any' | |
}, | |
{ id: 'SelectorTree', type: 'Type', from: 'Any', to: 'Tree' }, | |
{ id: 'AllowAdmin', type: 'Operation' }, | |
{ | |
id: 'SelectorExclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ | |
id: 'SelectorFilter', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Query' | |
}, | |
{ | |
id: 'HandleSchedule', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'Schedule', type: 'Type' }, | |
{ | |
id: 'scheduleValue', | |
type: 'Value', | |
from: 'Schedule', | |
to: 'String' | |
}, | |
{ id: 'Router', type: 'Type', value: [Object] }, | |
{ id: 'IsolationProvider', type: 'Type' }, | |
{ id: 'DockerIsolationProvider', type: 'IsolationProvider' }, | |
{ | |
id: 'dockerIsolationProviderValue', | |
type: 'Value', | |
from: 'DockerIsolationProvider', | |
to: 'String' | |
}, | |
{ | |
id: 'JSDockerIsolationProvider', | |
type: 'DockerIsolationProvider', | |
value: [Object] | |
}, | |
{ id: 'Supports', type: 'Type', from: 'Any', to: 'Any' }, | |
{ | |
id: 'dockerSupportsJs', | |
type: 'Supports', | |
from: 'JSDockerIsolationProvider', | |
to: 'JSExecutionProvider' | |
}, | |
{ | |
id: 'PackageInstall', | |
type: 'Type', | |
from: 'Any', | |
to: 'PackageQuery' | |
}, | |
{ | |
id: 'PackagePublish', | |
type: 'Type', | |
from: 'Package', | |
to: 'PackageQuery' | |
}, | |
{ id: 'packageInstallCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packageInstallCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packageInstallCode' | |
}, | |
{ | |
id: 'packageInstallCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackageInstall', | |
to: 'packageInstallCodeHandler' | |
}, | |
{ id: 'packagePublishCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packagePublishCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packagePublishCode' | |
}, | |
{ | |
id: 'packagePublishCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackagePublish', | |
to: 'packagePublishCodeHandler' | |
}, | |
{ id: 'AllowPackageInstall', type: 'Operation' }, | |
{ id: 'portValue', type: 'Value', from: 'Port', to: 'Number' }, | |
{ | |
id: 'HandlePort', | |
type: 'HandleOperation', | |
from: 'Port', | |
to: 'Any' | |
}, | |
{ id: 'Route', type: 'Type' }, | |
{ id: 'RouterListening', type: 'Type', from: 'Router', to: 'Port' }, | |
{ | |
id: 'RouterStringUse', | |
type: 'Type', | |
from: 'Route', | |
to: 'Router' | |
}, | |
{ | |
id: 'routerStringUseValue', | |
type: 'Value', | |
from: 'RouterStringUse', | |
to: 'String' | |
}, | |
... 74 more items | |
], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
} | |
dependencies {} | |
dependencyPackageName @deep-foundation/core | |
packagePath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@trooper2003/units | |
packageJsonPath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@trooper2003/units/package.json | |
packageJson { | |
name: '@trooper2003/units', | |
dependencies: { | |
'@deep-foundation/core': '~0.0.2', | |
'@trooper2003/account-ui': '^0.0.5' | |
}, | |
version: '0.0.3', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@trooper2003/units/deep.json | |
deepJson { | |
package: { name: '@trooper2003/units', version: '0.0.3' }, | |
data: [ { package: [Object], id: 1 }, { id: 'Unit', type: 1 } ], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { | |
'@deep-foundation/core': '~0.0.2', | |
'@trooper2003/account-ui': '^0.0.5' | |
} | |
dependencyPackageName @trooper2003/units | |
packagePath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@trooper2003/account-ui | |
packageJsonPath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@trooper2003/account-ui/package.json | |
packageJson { | |
name: '@trooper2003/account-ui', | |
dependencies: { | |
'@deep-foundation/core': '^0.0.2', | |
'@deep-foundation/tsx': '^0.0.5' | |
}, | |
version: '0.0.5', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/e9e4dc32-cd3f-43b9-8bff-58b91a49b3b2/node_modules/@trooper2003/account-ui/deep.json | |
deepJson { | |
package: { name: '@trooper2003/account-ui', version: '0.0.5' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ id: 'accountClientHandler', type: 1, value: [Object] }, | |
{ id: 'Account', type: 2 }, | |
{ id: 'AccountCanContainNumbers', type: 3, from: 'Account', to: 4 }, | |
{ | |
id: 'accountHandler', | |
type: 5, | |
from: 6, | |
to: 'accountClientHandler' | |
}, | |
{ | |
id: 'accountHandleClient', | |
type: 7, | |
from: 'Account', | |
to: 'accountHandler' | |
} | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/tsx', version: '0.0.5' }, | |
{ name: '@deep-foundation/core', version: '0.0.2' } | |
] | |
} | |
dependencies { '@deep-foundation/core': '^0.0.2', '@deep-foundation/tsx': '^0.0.5' } | |
dependencyPackageName @trooper2003/account-ui | |
deepPackagesDependencies { | |
'@deep-foundation/tsx': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@deep-foundation/tsx', | |
keywords: [Array], | |
version: '0.0.5', | |
dependencies: [Object] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@deep-foundation/core': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' }, | |
dependencies: [] | |
}, | |
'@trooper2003/account-ui': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@trooper2003/account-ui', | |
dependencies: [Object], | |
version: '0.0.5', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core', '@deep-foundation/tsx' ] | |
} | |
} | |
installationQueue [ | |
{ | |
name: '@deep-foundation/core', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' } | |
}, | |
{ | |
name: '@deep-foundation/tsx', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@deep-foundation/tsx', | |
keywords: [Array], | |
version: '0.0.5', | |
dependencies: [Object] | |
} | |
}, | |
{ | |
name: '@trooper2003/account-ui', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@trooper2003/account-ui', | |
dependencies: [Object], | |
version: '0.0.5', | |
keywords: [Array] | |
} | |
} | |
] | |
installationSet { | |
'@deep-foundation/core': true, | |
'@deep-foundation/tsx': true, | |
'@trooper2003/account-ui': true | |
} | |
npm --prefix "/tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71" i @trooper2003/[email protected] | |
added 4 packages in 487ms | |
find . -name deep.json | |
./@deep-foundation/tsx/deep.json | |
./@deep-foundation/core/deep.json | |
./@trooper2003/units/deep.json | |
./@trooper2003/account-ui/deep.json | |
packages [ | |
[ '@deep-foundation/tsx' ], | |
[ '@deep-foundation/core' ], | |
[ '@trooper2003/units' ], | |
[ '@trooper2003/account-ui' ] | |
] | |
packagePath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@deep-foundation/tsx | |
packageJsonPath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@deep-foundation/tsx/package.json | |
packageJson { | |
name: '@deep-foundation/tsx', | |
keywords: [ 'deep-package' ], | |
version: '0.0.5', | |
dependencies: { '@deep-foundation/core': '^0.0.2' } | |
} | |
deepJsonPath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@deep-foundation/tsx/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/tsx', version: '0.0.5' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ package: [Object], id: 8 }, | |
{ id: 'TSX', type: 1, value: [Object] }, | |
{ id: 'compiler', type: 2, value: [Object] }, | |
{ id: 'handler', type: 3, from: 4, to: 'compiler' }, | |
{ id: 'handleUpdate', type: 5, from: 'TSX', to: 'handler' }, | |
{ id: 'tsxValue', type: 6, from: 'TSX', to: 7 }, | |
{ | |
id: 'tsxSymbol', | |
type: 8, | |
from: 'TSX', | |
to: 'TSX', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '^0.0.2' } | |
dependencyPackageName @deep-foundation/tsx | |
packagePath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@deep-foundation/core | |
packageJsonPath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@deep-foundation/core/package.json | |
packageJson { name: '@deep-foundation/core', version: '0.0.2' } | |
deepJsonPath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@deep-foundation/core/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/core', version: '0.0.2' }, | |
data: [ | |
{ id: 'Type', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Package', type: 'Type' }, | |
{ id: 'Contain', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Value', type: 'Type', from: 'Any', to: 'Type' }, | |
{ id: 'String', type: 'Type' }, | |
{ id: 'Number', type: 'Type' }, | |
{ id: 'Object', type: 'Type' }, | |
{ id: 'Any', type: 'Type' }, | |
{ id: 'Promise', type: 'Type' }, | |
{ id: 'Then', type: 'Type', from: 'Any', to: 'Promise' }, | |
{ id: 'Resolved', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'Rejected', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'typeValue', type: 'Value', from: 'Type', to: 'String' }, | |
{ | |
id: 'packageValue', | |
type: 'Value', | |
from: 'Package', | |
to: 'String' | |
}, | |
{ id: 'Selector', type: 'Type' }, | |
{ | |
id: 'SelectorInclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ id: 'Rule', type: 'Type' }, | |
{ id: 'RuleSubject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleObject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleAction', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ | |
id: 'containValue', | |
type: 'Value', | |
from: 'Contain', | |
to: 'String' | |
}, | |
{ id: 'User', type: 'Type' }, | |
{ id: 'Operation', type: 'Type' }, | |
{ | |
id: 'operationValue', | |
type: 'Value', | |
from: 'Operation', | |
to: 'String' | |
}, | |
{ id: 'AllowInsert', type: 'Operation' }, | |
{ id: 'AllowUpdate', type: 'Operation' }, | |
{ id: 'AllowDelete', type: 'Operation' }, | |
{ id: 'AllowSelect', type: 'Operation' }, | |
{ id: 'File', type: 'Type' }, | |
{ id: 'SyncTextFile', type: 'File' }, | |
{ | |
id: 'syncTextFileValue', | |
type: 'Value', | |
from: 'SyncTextFile', | |
to: 'String' | |
}, | |
{ id: 'ExecutionProvider', type: 'Type' }, | |
{ id: 'JSExecutionProvider', type: 'ExecutionProvider' }, | |
{ id: 'TreeInclude', type: 'Type', from: 'Type', to: 'Any' }, | |
{ id: 'Handler', type: 'Type', from: 'Supports', to: 'Any' }, | |
{ id: 'Tree', type: 'Type' }, | |
{ | |
id: 'TreeIncludeDown', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeUp', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeNode', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ id: 'containTree', type: 'Tree' }, | |
{ | |
id: 'containTreeContain', | |
type: 'TreeIncludeDown', | |
from: 'containTree', | |
to: 'Contain' | |
}, | |
{ | |
id: 'containTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'containTree', | |
to: 'Any' | |
}, | |
{ id: 'PackageNamespace', type: 'Type' }, | |
{ | |
id: 'packageNamespaceValue', | |
type: 'Value', | |
from: 'PackageNamespace', | |
to: 'String' | |
}, | |
{ | |
id: 'PackageActive', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'PackageVersion', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'packageVersionValue', | |
type: 'Value', | |
from: 'PackageVersion', | |
to: 'String' | |
}, | |
{ id: 'HandleOperation', type: 'Type', from: 'Type', to: 'Type' }, | |
{ | |
id: 'HandleInsert', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleUpdate', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleDelete', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'PromiseResult', type: 'Type' }, | |
{ | |
id: 'promiseResultValueRelationTable', | |
type: 'Value', | |
from: 'PromiseResult', | |
to: 'Object' | |
}, | |
{ id: 'PromiseReason', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Focus', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'focusValue', type: 'Value', from: 'Focus', to: 'Object' }, | |
{ id: 'AsyncFile', type: 'File' }, | |
{ | |
id: 'handlersTreeHandler', | |
type: 'TreeIncludeUp', | |
from: 'handlersTree', | |
to: 'Handler' | |
}, | |
{ id: 'Query', type: 'Type' }, | |
{ id: 'queryValue', type: 'Value', from: 'Query', to: 'Object' }, | |
{ id: 'Active', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Fixed', type: 'Type' }, | |
{ id: 'fixedValue', type: 'Value', from: 'Fixed', to: 'Object' }, | |
{ id: 'Space', type: 'Type' }, | |
{ id: 'spaceValue', type: 'Value', from: 'Space', to: 'String' }, | |
{ id: 'AllowLogin', type: 'Operation' }, | |
{ id: 'guests', type: 'Any' }, | |
{ id: 'Join', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'joinTree', type: 'Tree' }, | |
{ | |
id: 'joinTreeJoin', | |
type: 'TreeIncludeUp', | |
from: 'joinTree', | |
to: 'Join' | |
}, | |
{ | |
id: 'joinTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'joinTree', | |
to: 'Any' | |
}, | |
{ id: 'SelectorTree', type: 'Type', from: 'Any', to: 'Tree' }, | |
{ id: 'AllowAdmin', type: 'Operation' }, | |
{ | |
id: 'SelectorExclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ | |
id: 'SelectorFilter', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Query' | |
}, | |
{ | |
id: 'HandleSchedule', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'Schedule', type: 'Type' }, | |
{ | |
id: 'scheduleValue', | |
type: 'Value', | |
from: 'Schedule', | |
to: 'String' | |
}, | |
{ id: 'Router', type: 'Type', value: [Object] }, | |
{ id: 'IsolationProvider', type: 'Type' }, | |
{ id: 'DockerIsolationProvider', type: 'IsolationProvider' }, | |
{ | |
id: 'dockerIsolationProviderValue', | |
type: 'Value', | |
from: 'DockerIsolationProvider', | |
to: 'String' | |
}, | |
{ | |
id: 'JSDockerIsolationProvider', | |
type: 'DockerIsolationProvider', | |
value: [Object] | |
}, | |
{ id: 'Supports', type: 'Type', from: 'Any', to: 'Any' }, | |
{ | |
id: 'dockerSupportsJs', | |
type: 'Supports', | |
from: 'JSDockerIsolationProvider', | |
to: 'JSExecutionProvider' | |
}, | |
{ | |
id: 'PackageInstall', | |
type: 'Type', | |
from: 'Any', | |
to: 'PackageQuery' | |
}, | |
{ | |
id: 'PackagePublish', | |
type: 'Type', | |
from: 'Package', | |
to: 'PackageQuery' | |
}, | |
{ id: 'packageInstallCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packageInstallCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packageInstallCode' | |
}, | |
{ | |
id: 'packageInstallCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackageInstall', | |
to: 'packageInstallCodeHandler' | |
}, | |
{ id: 'packagePublishCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packagePublishCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packagePublishCode' | |
}, | |
{ | |
id: 'packagePublishCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackagePublish', | |
to: 'packagePublishCodeHandler' | |
}, | |
{ id: 'AllowPackageInstall', type: 'Operation' }, | |
{ id: 'portValue', type: 'Value', from: 'Port', to: 'Number' }, | |
{ | |
id: 'HandlePort', | |
type: 'HandleOperation', | |
from: 'Port', | |
to: 'Any' | |
}, | |
{ id: 'Route', type: 'Type' }, | |
{ id: 'RouterListening', type: 'Type', from: 'Router', to: 'Port' }, | |
{ | |
id: 'RouterStringUse', | |
type: 'Type', | |
from: 'Route', | |
to: 'Router' | |
}, | |
{ | |
id: 'routerStringUseValue', | |
type: 'Value', | |
from: 'RouterStringUse', | |
to: 'String' | |
}, | |
... 74 more items | |
], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
} | |
dependencies {} | |
dependencyPackageName @deep-foundation/core | |
packagePath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@trooper2003/units | |
packageJsonPath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@trooper2003/units/package.json | |
packageJson { | |
name: '@trooper2003/units', | |
dependencies: { | |
'@deep-foundation/core': '~0.0.2', | |
'@trooper2003/account-ui': '^0.0.5' | |
}, | |
version: '0.0.3', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@trooper2003/units/deep.json | |
deepJson { | |
package: { name: '@trooper2003/units', version: '0.0.3' }, | |
data: [ { package: [Object], id: 1 }, { id: 'Unit', type: 1 } ], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { | |
'@deep-foundation/core': '~0.0.2', | |
'@trooper2003/account-ui': '^0.0.5' | |
} | |
dependencyPackageName @trooper2003/units | |
packagePath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@trooper2003/account-ui | |
packageJsonPath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@trooper2003/account-ui/package.json | |
packageJson { | |
name: '@trooper2003/account-ui', | |
dependencies: { | |
'@deep-foundation/core': '^0.0.2', | |
'@deep-foundation/tsx': '^0.0.5' | |
}, | |
version: '0.0.5', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/489bef84-2aa6-40bd-b2d0-26eeb631de71/node_modules/@trooper2003/account-ui/deep.json | |
deepJson { | |
package: { name: '@trooper2003/account-ui', version: '0.0.5' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ id: 'accountClientHandler', type: 1, value: [Object] }, | |
{ id: 'Account', type: 2 }, | |
{ id: 'AccountCanContainNumbers', type: 3, from: 'Account', to: 4 }, | |
{ | |
id: 'accountHandler', | |
type: 5, | |
from: 6, | |
to: 'accountClientHandler' | |
}, | |
{ | |
id: 'accountHandleClient', | |
type: 7, | |
from: 'Account', | |
to: 'accountHandler' | |
} | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/tsx', version: '0.0.5' }, | |
{ name: '@deep-foundation/core', version: '0.0.2' } | |
] | |
} | |
dependencies { '@deep-foundation/core': '^0.0.2', '@deep-foundation/tsx': '^0.0.5' } | |
dependencyPackageName @trooper2003/account-ui | |
deepPackagesDependencies { | |
'@deep-foundation/tsx': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@deep-foundation/tsx', | |
keywords: [Array], | |
version: '0.0.5', | |
dependencies: [Object] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@deep-foundation/core': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' }, | |
dependencies: [] | |
}, | |
'@trooper2003/account-ui': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@trooper2003/account-ui', | |
dependencies: [Object], | |
version: '0.0.5', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core', '@deep-foundation/tsx' ] | |
} | |
} | |
installationQueue [ | |
{ | |
name: '@deep-foundation/core', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' } | |
}, | |
{ | |
name: '@deep-foundation/tsx', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@deep-foundation/tsx', | |
keywords: [Array], | |
version: '0.0.5', | |
dependencies: [Object] | |
} | |
}, | |
{ | |
name: '@trooper2003/account-ui', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@trooper2003/account-ui', | |
dependencies: [Object], | |
version: '0.0.5', | |
keywords: [Array] | |
} | |
} | |
] | |
installationSet { | |
'@deep-foundation/core': true, | |
'@deep-foundation/tsx': true, | |
'@trooper2003/account-ui': true | |
} | |
packages [ | |
{ | |
id: 184, | |
name: { id: 6, value: '@deep-foundation/core', link_id: 184 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 719, | |
name: { id: 317, value: '@deep-foundation/tsx', link_id: 719 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
} | |
] | |
existingPackages { | |
'@deep-foundation/core': { id: 184, version: '0.0.2' }, | |
'@deep-foundation/tsx': { id: 719, version: '0.0.5' } | |
} | |
existingPackages { | |
'@deep-foundation/core': { id: 184, version: '0.0.2' }, | |
'@deep-foundation/tsx': { id: 719, version: '0.0.5' } | |
} | |
packages [ | |
{ | |
id: 184, | |
name: { id: 6, value: '@deep-foundation/core', link_id: 184 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 719, | |
name: { id: 317, value: '@deep-foundation/tsx', link_id: 719 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
} | |
] | |
existingPackages { | |
'@deep-foundation/core': { id: 184, version: '0.0.2' }, | |
'@deep-foundation/tsx': { id: 719, version: '0.0.5' } | |
} | |
existingPackages { | |
'@deep-foundation/core': { id: 184, version: '0.0.2' }, | |
'@deep-foundation/tsx': { id: 719, version: '0.0.5' } | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:247:40) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:247:40) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
call body params { | |
code: '\n' + | |
'async ({ deep, require, gql, data: { newLink } }) => {\n' + | |
" const ts = require('typescript');\n" + | |
' const { data: [generatedFrom] } = await deep.select({\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'GeneratedFrom'),\n" + | |
' to_id: newLink.id, \n' + | |
' });\n' + | |
' const value = newLink?.value?.value;\n' + | |
" let compiledString = '';\n" + | |
' if (value) {\n' + | |
' const result = ts.transpileModule(value, {\n' + | |
' "compilerOptions": {\n' + | |
' "allowSyntheticDefaultImports": true,\n' + | |
' "experimentalDecorators": true,\n' + | |
' "inlineSourceMap": true,\n' + | |
' inlineSources: true,\n' + | |
' "noImplicitAny": false,\n' + | |
' "removeComments": true,\n' + | |
' "jsx": "react",\n' + | |
' "module": "ESNext",\n' + | |
' "moduleResolution": "node",\n' + | |
' "target": "ESNext",\n' + | |
' "skipLibCheck": true,\n' + | |
' "resolveJsonModule": true,\n' + | |
' "esModuleInterop": true,\n' + | |
' "isolatedModules": true\n' + | |
' }\n' + | |
' });\n' + | |
' if (!result.outputText) {\n' + | |
' throw result;\n' + | |
' }\n' + | |
" compiledString = result.outputText || '';\n" + | |
' }\n' + | |
' if (!generatedFrom) {\n' + | |
' await deep.insert({\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'GeneratedFrom'),\n" + | |
' to_id: newLink.id,\n' + | |
' in: { data: {\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'Contain'),\n" + | |
' from_id: newLink.id,\n' + | |
' } },\n' + | |
' from: { data: {\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'SyncTextFile'),\n" + | |
' string: { data: { value: compiledString } },\n' + | |
' in: { data: {\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'Contain'),\n" + | |
' from_id: newLink.id,\n' + | |
" string: { data: { value: 'generated' } },\n" + | |
' } },\n' + | |
' } },\n' + | |
' });\n' + | |
' } else {\n' + | |
' await deep.update({\n' + | |
' link_id: { _eq: generatedFrom.from_id },\n' + | |
' }, {\n' + | |
' value: compiledString,\n' + | |
" }, { table: 'strings' });\n" + | |
' }\n' + | |
'}\n', | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzE5In0sImlhdCI6MTcwMDE3OTUzM30.sLgQDE3RqkN6HcUdAF_UQpr_LMV66LjXhj6MFHwUlpU', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 754, | |
oldLink: { | |
id: 1480, | |
from_id: 0, | |
type_id: 715, | |
to_id: 0, | |
__typename: 'links', | |
value: null | |
}, | |
newLink: { | |
id: 1480, | |
from_id: 0, | |
type_id: 715, | |
to_id: 0, | |
__typename: 'links', | |
value: [Object] | |
}, | |
promiseId: 1502 | |
} | |
} | |
call body params { | |
code: '\n' + | |
'async ({ deep, require, gql, data: { newLink } }) => {\n' + | |
" const ts = require('typescript');\n" + | |
' const { data: [generatedFrom] } = await deep.select({\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'GeneratedFrom'),\n" + | |
' to_id: newLink.id, \n' + | |
' });\n' + | |
' const value = newLink?.value?.value;\n' + | |
" let compiledString = '';\n" + | |
' if (value) {\n' + | |
' const result = ts.transpileModule(value, {\n' + | |
' "compilerOptions": {\n' + | |
' "allowSyntheticDefaultImports": true,\n' + | |
' "experimentalDecorators": true,\n' + | |
' "inlineSourceMap": true,\n' + | |
' inlineSources: true,\n' + | |
' "noImplicitAny": false,\n' + | |
' "removeComments": true,\n' + | |
' "jsx": "react",\n' + | |
' "module": "ESNext",\n' + | |
' "moduleResolution": "node",\n' + | |
' "target": "ESNext",\n' + | |
' "skipLibCheck": true,\n' + | |
' "resolveJsonModule": true,\n' + | |
' "esModuleInterop": true,\n' + | |
' "isolatedModules": true\n' + | |
' }\n' + | |
' });\n' + | |
' if (!result.outputText) {\n' + | |
' throw result;\n' + | |
' }\n' + | |
" compiledString = result.outputText || '';\n" + | |
' }\n' + | |
' if (!generatedFrom) {\n' + | |
' await deep.insert({\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'GeneratedFrom'),\n" + | |
' to_id: newLink.id,\n' + | |
' in: { data: {\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'Contain'),\n" + | |
' from_id: newLink.id,\n' + | |
' } },\n' + | |
' from: { data: {\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'SyncTextFile'),\n" + | |
' string: { data: { value: compiledString } },\n' + | |
' in: { data: {\n' + | |
" type_id: await deep.id('@deep-foundation/core', 'Contain'),\n" + | |
' from_id: newLink.id,\n' + | |
" string: { data: { value: 'generated' } },\n" + | |
' } },\n' + | |
' } },\n' + | |
' });\n' + | |
' } else {\n' + | |
' await deep.update({\n' + | |
' link_id: { _eq: generatedFrom.from_id },\n' + | |
' }, {\n' + | |
' value: compiledString,\n' + | |
" }, { table: 'strings' });\n" + | |
' }\n' + | |
'}\n', | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzE5In0sImlhdCI6MTcwMDE3OTUzM30.sLgQDE3RqkN6HcUdAF_UQpr_LMV66LjXhj6MFHwUlpU', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 754, | |
oldLink: { | |
id: 1453, | |
from_id: 0, | |
type_id: 715, | |
to_id: 0, | |
__typename: 'links', | |
value: null | |
}, | |
newLink: { | |
id: 1453, | |
from_id: 0, | |
type_id: 715, | |
to_id: 0, | |
__typename: 'links', | |
value: [Object] | |
}, | |
promiseId: 1504 | |
} | |
} | |
call result undefined | |
call result undefined | |
{ | |
ids: [ | |
1462, 1471, 1473, 1475, 1478, | |
1480, 1481, 1482, 1483, 1484, | |
1485, 1486, 1487, 1488, 1489, | |
1490, 1491, 1492, 1493, 1494, | |
1495, 1496, 1497, 1498, 1499, | |
1500, 1501 | |
], | |
errors: [], | |
namespaceId: 1462, | |
packageId: 1483 | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:266:26) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
{ | |
ids: [ | |
1448, 1449, 1450, 1451, 1452, | |
1453, 1454, 1455, 1456, 1457, | |
1458, 1459, 1460, 1461, 1463, | |
1464, 1465, 1466, 1467, 1468, | |
1469, 1470, 1472, 1474, 1476, | |
1477, 1479 | |
], | |
errors: [], | |
namespaceId: 1448, | |
packageId: 1456 | |
} | |
IGNORED ERROR: Call to DeepClient.resolveDependency is failed with Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/@deep-foundation/deeplinks/imports/packager.js from /index.js not supported. | |
Instead change the require of packager.js in /index.js to a dynamic import() which is available in all CommonJS modules. | |
at DeepClient.requireWrapper [as resolveDependency] (file:///index.js:27:12) | |
at DeepClient.<anonymous> (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:721:45) | |
at Generator.next (<anonymous>) | |
at file:///node_modules/@deep-foundation/deeplinks/imports/client.js:7:71 | |
at new Promise (<anonymous>) | |
at __awaiter (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:3:12) | |
at DeepClient.import (file:///node_modules/@deep-foundation/deeplinks/imports/client.js:718:16) | |
at deepImport (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:64:44) | |
at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:266:26) { | |
code: 'ERR_REQUIRE_ESM' | |
} | |
{ | |
ids: [ | |
1527, 1528, 1529, | |
1530, 1531, 1532, | |
1533, 1534, 1535, | |
1536, 1537, 1538, | |
1539 | |
], | |
errors: [], | |
namespaceId: 1527, | |
packageId: 1531 | |
} | |
call result { | |
ids: [ | |
1527, 1528, 1529, | |
1530, 1531, 1532, | |
1533, 1534, 1535, | |
1536, 1537, 1538, | |
1539 | |
], | |
errors: [], | |
namespaceId: 1527, | |
packageId: 1531 | |
} | |
{ | |
ids: [ | |
1541, 1542, 1543, | |
1544, 1545, 1546, | |
1547, 1548, 1549, | |
1550, 1551, 1552, | |
1553 | |
], | |
errors: [], | |
namespaceId: 1541, | |
packageId: 1545 | |
} | |
call result { | |
ids: [ | |
1541, 1542, 1543, | |
1544, 1545, 1546, | |
1547, 1548, 1549, | |
1550, 1551, 1552, | |
1553 | |
], | |
errors: [], | |
namespaceId: 1541, | |
packageId: 1545 | |
} | |
call body params { | |
code: 'async ({ deep, gql, data: { triggeredByLinkId, newLink } }) => {\n' + | |
" const deepFileName = 'deep.json';\n" + | |
" const fs = await deep.import('fs');\n" + | |
'\n' + | |
' const makeTempDirectory = async () => {\n' + | |
" const os = await deep.import('os');\n" + | |
" const { v4: uuid } = await deep.import('uuid');\n" + | |
' \n' + | |
' const baseTempDirectory = os.tmpdir();\n' + | |
' const randomId = uuid();\n' + | |
" const tempDirectory = [baseTempDirectory,randomId].join('/');\n" + | |
' fs.mkdirSync(tempDirectory);\n' + | |
' console.log(tempDirectory);\n' + | |
' return tempDirectory;\n' + | |
' };\n' + | |
' const npmInstall = async (packageName, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
' const command = `npm --prefix "${tempDirectory}" i ${packageName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
' const npmLogin = async (token, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
' \n' + | |
' const command = `npm set "//registry.npmjs.org/:_authToken" ${token}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
" const makePackagePath = (tempDirectory, packageName) => [tempDirectory, 'node_modules', packageName].join('/');\n" + | |
" const makeDeepJsonPath = (packagePath) => [packagePath, deepFileName].join('/');\n" + | |
" const makePackageJsonPath = (packagePath) => [packagePath, 'package.json'].join('/');\n" + | |
' const loadNpmToken = async () => {\n' + | |
" const containTreeId = await deep.id('@deep-foundation/core', 'containTree');\n" + | |
" const tokenTypeId = await deep.id('@deep-foundation/npm-packager', 'Token');\n" + | |
' const { data: [{ value: { value: npmToken = undefined } = {}} = {}] = []} = await deep.select({\n' + | |
' up: {\n' + | |
' tree_id: { _eq: containTreeId },\n' + | |
' parent: { id: { _eq: triggeredByLinkId } },\n' + | |
' link: { type_id: { _eq: tokenTypeId } }\n' + | |
' }\n' + | |
' });\n' + | |
' return npmToken;\n' + | |
' };\n' + | |
' const deepImport = async (deepJson, packageJson) => {\n' + | |
' if (deepJson.package.name !== packageJson.name) {\n' + | |
' throw new Error(`Package name is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package name: ${deepJson.package.name}.\n' + | |
' package.json package name: ${packageJson.name}.`);\n' + | |
' }\n' + | |
' if (deepJson.package.version !== packageJson.version) {\n' + | |
' throw new Error(`Package version is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package version: ${deepJson.package.version}.\n' + | |
' package.json package version: ${packageJson.version}.`);\n' + | |
' }\n' + | |
" const packager = new (await deep.import('@deep-foundation/deeplinks/imports/packager.js')).Packager(deep);\n" + | |
' const imported = await packager.import(deepJson);\n' + | |
' console.log(imported);\n' + | |
' if (imported?.errors?.length) throw imported;\n' + | |
' return imported;\n' + | |
' };\n' + | |
' const getDeepPackagesList = async (rootPath) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
" const deepFileName = 'deep.json';\n" + | |
' const deepFileNameLength = deepFileName.length;\n' + | |
'\n' + | |
' const command = `find . -name ${deepFileName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: rootPath\n' + | |
' });\n' + | |
" console.log('', `${command}\\n`, output);\n" + | |
'\n' + | |
' const packages = output\n' + | |
' .split(/\\r?\\n/)\n' + | |
' .filter(line => line.trim())\n' + | |
' .map(line => line.slice(2).slice(0, -deepFileNameLength - 1))\n' + | |
" .map(line => line.split('/node_modules/'));\n" + | |
' return packages;\n' + | |
' };\n' + | |
' const getDeepPackagesDependencies = async (rootPath, packages, packageName) => {\n' + | |
' const dictionary = {};\n' + | |
' for (const pkg of packages) {\n' + | |
" const packagePath = [rootPath, pkg.join('/node_modules/')].join('/');\n" + | |
" console.log('packagePath', packagePath);\n" + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
" console.log('packageJsonPath', packageJsonPath);\n" + | |
' if (!fs.existsSync(packageJsonPath)) {\n' + | |
' throw new Error(`package.json for dependency ${pkg} is not found at ${packageJsonPath}. Looks like ${packageName} does not contain ${pkg} dependency in package.json.`);\n' + | |
' }\n' + | |
' const packageJson = await deep.import(packageJsonPath);\n' + | |
" console.log('packageJson', packageJson);\n" + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
" console.log('deepJsonPath', deepJsonPath);\n" + | |
' if (!fs.existsSync(deepJsonPath)) {\n' + | |
' throw new Error(`deep.json for dependency ${pkg} is not found at ${deepJsonPath}. Looks like ${pkg} installed, but it does not contain deep.json. Make sure ${pkg} is a deep package.`);\n' + | |
' }\n' + | |
' const deepJson = await deep.import(deepJsonPath);\n' + | |
" console.log('deepJson', deepJson);\n" + | |
' const dependencies = packageJson.dependencies ?? {};\n' + | |
" console.log('dependencies', dependencies);\n" + | |
' const dependencyPackageName = pkg.at(-1);\n' + | |
" console.log('dependencyPackageName', dependencyPackageName);\n" + | |
' if (Array.isArray(dictionary[dependencyPackageName])) {\n' + | |
" throw new Error('Multiple versions of the same package are not supported yet.');\n" + | |
' }\n' + | |
' dictionary[dependencyPackageName] = { deepJson, packageJson, dependencies };\n' + | |
' }\n' + | |
' for (const pkg in dictionary) {\n' + | |
' const sourceDependencies = dictionary[pkg].dependencies;\n' + | |
' const targetDependencies = [];\n' + | |
' for (const dependency in sourceDependencies)\n' + | |
' {\n' + | |
' if (dictionary[dependency]) {\n' + | |
' targetDependencies.push(dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' dictionary[pkg].dependencies = targetDependencies;\n' + | |
' }\n' + | |
' return dictionary;\n' + | |
' }\n' + | |
' const buildInstallationQueueCore = (deepPackagesDependencies, queue, set, packageName) => {\n' + | |
' const dependencies = deepPackagesDependencies[packageName].dependencies;\n' + | |
' for (const dependency of dependencies) {\n' + | |
' if (!set[dependency]) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' if(!set[packageName]) {\n' + | |
' const deepJson = deepPackagesDependencies[packageName].deepJson;\n' + | |
' const packageJson = deepPackagesDependencies[packageName].packageJson;\n' + | |
' queue.push({ name: packageName, deepJson, packageJson });\n' + | |
' set[packageName] = true;\n' + | |
' }\n' + | |
' }\n' + | |
' const buildInstallationQueue = (deepPackagesDependencies, queue, set) => {\n' + | |
' for (const packageName in deepPackagesDependencies) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, packageName);\n' + | |
' }\n' + | |
' }\n' + | |
' const getExistingPackages = async (packageNames) => {\n' + | |
" const packageTypeId = await deep.id('@deep-foundation/core', 'Package');\n" + | |
" const packageVersionTypeId = await deep.id('@deep-foundation/core', 'PackageVersion');\n" + | |
' const { data: packages } = await deep.select({\n' + | |
' type_id: { _eq: packageTypeId },\n' + | |
' string: { value: { _in: packageNames } }\n' + | |
' }, {\n' + | |
" name: 'GET_EXISTING_PACKAGES_WITH_VERSIONS',\n" + | |
' returning: `\n' + | |
' id\n' + | |
' name: value\n' + | |
' versions: in(where: {type_id: {_eq: ${packageVersionTypeId}}, string: {value: {_is_null: false}}}) {\n' + | |
' id\n' + | |
' version: value\n' + | |
' }\n' + | |
' `\n' + | |
' })\n' + | |
" console.log('packages', packages);\n" + | |
' const existingPackages = packages.reduce(\n' + | |
' (accumulator, currentValue) => {\n' + | |
' const packageId = currentValue?.id;\n' + | |
' const packageName = currentValue?.name?.value;\n' + | |
' if (currentValue?.versions.length !== 1) {\n' + | |
" throw new Error(`'${packageName}' package must have exactly one version. Now it has ${currentValue?.versions.length} versions.`);\n" + | |
' }\n' + | |
' if (accumulator[packageName]) {\n' + | |
" throw new Error(`Multiple packages with name '${packageName}' exist.`)\n" + | |
' }\n' + | |
' const packageVersion = currentValue?.versions?.[0]?.version?.value;\n' + | |
' accumulator[packageName] = { id: packageId, version: packageVersion };\n' + | |
' return accumulator;\n' + | |
' },\n' + | |
' {}\n' + | |
' );\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
' return existingPackages;\n' + | |
' };\n' + | |
'\n' + | |
' if (!triggeredByLinkId) {\n' + | |
" throw new Error('Install link should be inserted using JWT token (role link), it cannot be inserted using hasura secret (role admin).');\n" + | |
' }\n' + | |
'\n' + | |
' const { data: [{ value: { value: packageQuery } }] } = await deep.select({ id: newLink.to_id });\n' + | |
" const packageQueryParts = packageQuery.split('@');\n" + | |
' if (packageQueryParts.length === 3) {\n' + | |
' const packageVersion = packageQueryParts.pop();\n' + | |
' }\n' + | |
" const packageName = packageQueryParts.join('@');\n" + | |
' if (!packageName) {\n' + | |
" throw new Error('Package query value is empty.');\n" + | |
' }\n' + | |
' const tempDirectory = await makeTempDirectory();\n' + | |
' let deepJson;\n' + | |
' let packageJson;\n' + | |
' const installationQueue = [];\n' + | |
' const installationSet = {};\n' + | |
' try {\n' + | |
' const npmToken = await loadNpmToken();\n' + | |
' if (npmToken) {\n' + | |
' await npmLogin(npmToken, tempDirectory);\n' + | |
' }\n' + | |
" const nodeModulesPath = [tempDirectory, 'node_modules'].join('/');\n" + | |
' await npmInstall(packageQuery, tempDirectory);\n' + | |
' const packagePath = makePackagePath(tempDirectory, packageName);\n' + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
' deepJson = await deep.import(deepJsonPath);\n' + | |
' packageJson = await deep.import(packageJsonPath);\n' + | |
'\n' + | |
' const packages = await getDeepPackagesList(nodeModulesPath);\n' + | |
" console.log('packages', packages);\n" + | |
' \n' + | |
' const deepPackagesDependencies = await getDeepPackagesDependencies(nodeModulesPath, packages, packageName);\n' + | |
' delete deepPackagesDependencies[packageName];\n' + | |
" console.log('deepPackagesDependencies', deepPackagesDependencies);\n" + | |
' \n' + | |
' buildInstallationQueue(deepPackagesDependencies, installationQueue, installationSet);\n' + | |
' \n' + | |
" console.log('installationQueue', installationQueue);\n" + | |
" console.log('installationSet', installationSet);\n" + | |
' } finally {\n' + | |
' fs.rmSync(tempDirectory, { recursive: true, force: true });\n' + | |
' }\n' + | |
' \n' + | |
' const existingPackages = await getExistingPackages(installationQueue.map(e => e.name));\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
'\n' + | |
' for (const dependencyPackage of instal'... 1567 more characters, | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzU0In0sImlhdCI6MTcwMDE4MDk3N30.nIb7xkf-eTCWDUjXslbgCnLWqfG0nUkI4zkJxgocBxY', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 380, | |
oldLink: null, | |
newLink: { from_id: 380, type_id: 750, id: 1567, to_id: 1564, value: null }, | |
promiseId: 1568 | |
} | |
} | |
call body params { | |
code: 'async ({ deep, gql, data: { triggeredByLinkId, newLink } }) => {\n' + | |
" const deepFileName = 'deep.json';\n" + | |
" const fs = await deep.import('fs');\n" + | |
'\n' + | |
' const makeTempDirectory = async () => {\n' + | |
" const os = await deep.import('os');\n" + | |
" const { v4: uuid } = await deep.import('uuid');\n" + | |
' \n' + | |
' const baseTempDirectory = os.tmpdir();\n' + | |
' const randomId = uuid();\n' + | |
" const tempDirectory = [baseTempDirectory,randomId].join('/');\n" + | |
' fs.mkdirSync(tempDirectory);\n' + | |
' console.log(tempDirectory);\n' + | |
' return tempDirectory;\n' + | |
' };\n' + | |
' const npmInstall = async (packageName, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
' const command = `npm --prefix "${tempDirectory}" i ${packageName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
' const npmLogin = async (token, tempDirectory) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
' \n' + | |
' const command = `npm set "//registry.npmjs.org/:_authToken" ${token}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: tempDirectory\n' + | |
' });\n' + | |
' console.log(`${command}\\n`, output);\n' + | |
' return output;\n' + | |
' };\n' + | |
" const makePackagePath = (tempDirectory, packageName) => [tempDirectory, 'node_modules', packageName].join('/');\n" + | |
" const makeDeepJsonPath = (packagePath) => [packagePath, deepFileName].join('/');\n" + | |
" const makePackageJsonPath = (packagePath) => [packagePath, 'package.json'].join('/');\n" + | |
' const loadNpmToken = async () => {\n' + | |
" const containTreeId = await deep.id('@deep-foundation/core', 'containTree');\n" + | |
" const tokenTypeId = await deep.id('@deep-foundation/npm-packager', 'Token');\n" + | |
' const { data: [{ value: { value: npmToken = undefined } = {}} = {}] = []} = await deep.select({\n' + | |
' up: {\n' + | |
' tree_id: { _eq: containTreeId },\n' + | |
' parent: { id: { _eq: triggeredByLinkId } },\n' + | |
' link: { type_id: { _eq: tokenTypeId } }\n' + | |
' }\n' + | |
' });\n' + | |
' return npmToken;\n' + | |
' };\n' + | |
' const deepImport = async (deepJson, packageJson) => {\n' + | |
' if (deepJson.package.name !== packageJson.name) {\n' + | |
' throw new Error(`Package name is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package name: ${deepJson.package.name}.\n' + | |
' package.json package name: ${packageJson.name}.`);\n' + | |
' }\n' + | |
' if (deepJson.package.version !== packageJson.version) {\n' + | |
' throw new Error(`Package version is not synchronized between ${deepFileName} and package.json files.\n' + | |
' ${deepFileName} package version: ${deepJson.package.version}.\n' + | |
' package.json package version: ${packageJson.version}.`);\n' + | |
' }\n' + | |
" const packager = new (await deep.import('@deep-foundation/deeplinks/imports/packager.js')).Packager(deep);\n" + | |
' const imported = await packager.import(deepJson);\n' + | |
' console.log(imported);\n' + | |
' if (imported?.errors?.length) throw imported;\n' + | |
' return imported;\n' + | |
' };\n' + | |
' const getDeepPackagesList = async (rootPath) => {\n' + | |
" const execSync = (await deep.import('child_process')).execSync;\n" + | |
'\n' + | |
" const deepFileName = 'deep.json';\n" + | |
' const deepFileNameLength = deepFileName.length;\n' + | |
'\n' + | |
' const command = `find . -name ${deepFileName}`;\n' + | |
' const output = execSync(command, { \n' + | |
" encoding: 'utf-8',\n" + | |
' cwd: rootPath\n' + | |
' });\n' + | |
" console.log('', `${command}\\n`, output);\n" + | |
'\n' + | |
' const packages = output\n' + | |
' .split(/\\r?\\n/)\n' + | |
' .filter(line => line.trim())\n' + | |
' .map(line => line.slice(2).slice(0, -deepFileNameLength - 1))\n' + | |
" .map(line => line.split('/node_modules/'));\n" + | |
' return packages;\n' + | |
' };\n' + | |
' const getDeepPackagesDependencies = async (rootPath, packages, packageName) => {\n' + | |
' const dictionary = {};\n' + | |
' for (const pkg of packages) {\n' + | |
" const packagePath = [rootPath, pkg.join('/node_modules/')].join('/');\n" + | |
" console.log('packagePath', packagePath);\n" + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
" console.log('packageJsonPath', packageJsonPath);\n" + | |
' if (!fs.existsSync(packageJsonPath)) {\n' + | |
' throw new Error(`package.json for dependency ${pkg} is not found at ${packageJsonPath}. Looks like ${packageName} does not contain ${pkg} dependency in package.json.`);\n' + | |
' }\n' + | |
' const packageJson = await deep.import(packageJsonPath);\n' + | |
" console.log('packageJson', packageJson);\n" + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
" console.log('deepJsonPath', deepJsonPath);\n" + | |
' if (!fs.existsSync(deepJsonPath)) {\n' + | |
' throw new Error(`deep.json for dependency ${pkg} is not found at ${deepJsonPath}. Looks like ${pkg} installed, but it does not contain deep.json. Make sure ${pkg} is a deep package.`);\n' + | |
' }\n' + | |
' const deepJson = await deep.import(deepJsonPath);\n' + | |
" console.log('deepJson', deepJson);\n" + | |
' const dependencies = packageJson.dependencies ?? {};\n' + | |
" console.log('dependencies', dependencies);\n" + | |
' const dependencyPackageName = pkg.at(-1);\n' + | |
" console.log('dependencyPackageName', dependencyPackageName);\n" + | |
' if (Array.isArray(dictionary[dependencyPackageName])) {\n' + | |
" throw new Error('Multiple versions of the same package are not supported yet.');\n" + | |
' }\n' + | |
' dictionary[dependencyPackageName] = { deepJson, packageJson, dependencies };\n' + | |
' }\n' + | |
' for (const pkg in dictionary) {\n' + | |
' const sourceDependencies = dictionary[pkg].dependencies;\n' + | |
' const targetDependencies = [];\n' + | |
' for (const dependency in sourceDependencies)\n' + | |
' {\n' + | |
' if (dictionary[dependency]) {\n' + | |
' targetDependencies.push(dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' dictionary[pkg].dependencies = targetDependencies;\n' + | |
' }\n' + | |
' return dictionary;\n' + | |
' }\n' + | |
' const buildInstallationQueueCore = (deepPackagesDependencies, queue, set, packageName) => {\n' + | |
' const dependencies = deepPackagesDependencies[packageName].dependencies;\n' + | |
' for (const dependency of dependencies) {\n' + | |
' if (!set[dependency]) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, dependency);\n' + | |
' }\n' + | |
' }\n' + | |
' if(!set[packageName]) {\n' + | |
' const deepJson = deepPackagesDependencies[packageName].deepJson;\n' + | |
' const packageJson = deepPackagesDependencies[packageName].packageJson;\n' + | |
' queue.push({ name: packageName, deepJson, packageJson });\n' + | |
' set[packageName] = true;\n' + | |
' }\n' + | |
' }\n' + | |
' const buildInstallationQueue = (deepPackagesDependencies, queue, set) => {\n' + | |
' for (const packageName in deepPackagesDependencies) {\n' + | |
' buildInstallationQueueCore(deepPackagesDependencies, queue, set, packageName);\n' + | |
' }\n' + | |
' }\n' + | |
' const getExistingPackages = async (packageNames) => {\n' + | |
" const packageTypeId = await deep.id('@deep-foundation/core', 'Package');\n" + | |
" const packageVersionTypeId = await deep.id('@deep-foundation/core', 'PackageVersion');\n" + | |
' const { data: packages } = await deep.select({\n' + | |
' type_id: { _eq: packageTypeId },\n' + | |
' string: { value: { _in: packageNames } }\n' + | |
' }, {\n' + | |
" name: 'GET_EXISTING_PACKAGES_WITH_VERSIONS',\n" + | |
' returning: `\n' + | |
' id\n' + | |
' name: value\n' + | |
' versions: in(where: {type_id: {_eq: ${packageVersionTypeId}}, string: {value: {_is_null: false}}}) {\n' + | |
' id\n' + | |
' version: value\n' + | |
' }\n' + | |
' `\n' + | |
' })\n' + | |
" console.log('packages', packages);\n" + | |
' const existingPackages = packages.reduce(\n' + | |
' (accumulator, currentValue) => {\n' + | |
' const packageId = currentValue?.id;\n' + | |
' const packageName = currentValue?.name?.value;\n' + | |
' if (currentValue?.versions.length !== 1) {\n' + | |
" throw new Error(`'${packageName}' package must have exactly one version. Now it has ${currentValue?.versions.length} versions.`);\n" + | |
' }\n' + | |
' if (accumulator[packageName]) {\n' + | |
" throw new Error(`Multiple packages with name '${packageName}' exist.`)\n" + | |
' }\n' + | |
' const packageVersion = currentValue?.versions?.[0]?.version?.value;\n' + | |
' accumulator[packageName] = { id: packageId, version: packageVersion };\n' + | |
' return accumulator;\n' + | |
' },\n' + | |
' {}\n' + | |
' );\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
' return existingPackages;\n' + | |
' };\n' + | |
'\n' + | |
' if (!triggeredByLinkId) {\n' + | |
" throw new Error('Install link should be inserted using JWT token (role link), it cannot be inserted using hasura secret (role admin).');\n" + | |
' }\n' + | |
'\n' + | |
' const { data: [{ value: { value: packageQuery } }] } = await deep.select({ id: newLink.to_id });\n' + | |
" const packageQueryParts = packageQuery.split('@');\n" + | |
' if (packageQueryParts.length === 3) {\n' + | |
' const packageVersion = packageQueryParts.pop();\n' + | |
' }\n' + | |
" const packageName = packageQueryParts.join('@');\n" + | |
' if (!packageName) {\n' + | |
" throw new Error('Package query value is empty.');\n" + | |
' }\n' + | |
' const tempDirectory = await makeTempDirectory();\n' + | |
' let deepJson;\n' + | |
' let packageJson;\n' + | |
' const installationQueue = [];\n' + | |
' const installationSet = {};\n' + | |
' try {\n' + | |
' const npmToken = await loadNpmToken();\n' + | |
' if (npmToken) {\n' + | |
' await npmLogin(npmToken, tempDirectory);\n' + | |
' }\n' + | |
" const nodeModulesPath = [tempDirectory, 'node_modules'].join('/');\n" + | |
' await npmInstall(packageQuery, tempDirectory);\n' + | |
' const packagePath = makePackagePath(tempDirectory, packageName);\n' + | |
' const deepJsonPath = makeDeepJsonPath(packagePath);\n' + | |
' const packageJsonPath = makePackageJsonPath(packagePath);\n' + | |
' deepJson = await deep.import(deepJsonPath);\n' + | |
' packageJson = await deep.import(packageJsonPath);\n' + | |
'\n' + | |
' const packages = await getDeepPackagesList(nodeModulesPath);\n' + | |
" console.log('packages', packages);\n" + | |
' \n' + | |
' const deepPackagesDependencies = await getDeepPackagesDependencies(nodeModulesPath, packages, packageName);\n' + | |
' delete deepPackagesDependencies[packageName];\n' + | |
" console.log('deepPackagesDependencies', deepPackagesDependencies);\n" + | |
' \n' + | |
' buildInstallationQueue(deepPackagesDependencies, installationQueue, installationSet);\n' + | |
' \n' + | |
" console.log('installationQueue', installationQueue);\n" + | |
" console.log('installationSet', installationSet);\n" + | |
' } finally {\n' + | |
' fs.rmSync(tempDirectory, { recursive: true, force: true });\n' + | |
' }\n' + | |
' \n' + | |
' const existingPackages = await getExistingPackages(installationQueue.map(e => e.name));\n' + | |
" console.log('existingPackages', existingPackages);\n" + | |
'\n' + | |
' for (const dependencyPackage of instal'... 1567 more characters, | |
container: { | |
name: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
host: 'deep-138d60d2a0fd040bfe13e80d143de80d', | |
port: 40317, | |
options: { | |
publish: false, | |
forceRestart: true, | |
handler: 'deepf/js-docker-isolation-provider:main' | |
} | |
}, | |
jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiNzU0In0sImlhdCI6MTcwMDE4MDk3N30.nIb7xkf-eTCWDUjXslbgCnLWqfG0nUkI4zkJxgocBxY', | |
secret: '4459a8e24fec162fd9ff71b57abec189396cad50cf867871', | |
data: { | |
triggeredByLinkId: 380, | |
oldLink: null, | |
newLink: { from_id: 380, type_id: 750, id: 1571, to_id: 1565, value: null }, | |
promiseId: 1573 | |
} | |
} | |
/tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059 | |
/tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3 | |
npm --prefix "/tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059" i @suenot/[email protected] | |
added 5 packages in 5s | |
find . -name deep.json | |
./@deep-foundation/core/deep.json | |
./@suenot/transaction-tests/deep.json | |
./@suenot/unit/deep.json | |
./@suenot/asset/deep.json | |
./@suenot/wallet/deep.json | |
packages [ | |
[ '@deep-foundation/core' ], | |
[ '@suenot/transaction-tests' ], | |
[ '@suenot/unit' ], | |
[ '@suenot/asset' ], | |
[ '@suenot/wallet' ] | |
] | |
packagePath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@deep-foundation/core | |
packageJsonPath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@deep-foundation/core/package.json | |
packageJson { name: '@deep-foundation/core', version: '0.0.2' } | |
deepJsonPath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@deep-foundation/core/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/core', version: '0.0.2' }, | |
data: [ | |
{ id: 'Type', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Package', type: 'Type' }, | |
{ id: 'Contain', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Value', type: 'Type', from: 'Any', to: 'Type' }, | |
{ id: 'String', type: 'Type' }, | |
{ id: 'Number', type: 'Type' }, | |
{ id: 'Object', type: 'Type' }, | |
{ id: 'Any', type: 'Type' }, | |
{ id: 'Promise', type: 'Type' }, | |
{ id: 'Then', type: 'Type', from: 'Any', to: 'Promise' }, | |
{ id: 'Resolved', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'Rejected', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'typeValue', type: 'Value', from: 'Type', to: 'String' }, | |
{ | |
id: 'packageValue', | |
type: 'Value', | |
from: 'Package', | |
to: 'String' | |
}, | |
{ id: 'Selector', type: 'Type' }, | |
{ | |
id: 'SelectorInclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ id: 'Rule', type: 'Type' }, | |
{ id: 'RuleSubject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleObject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleAction', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ | |
id: 'containValue', | |
type: 'Value', | |
from: 'Contain', | |
to: 'String' | |
}, | |
{ id: 'User', type: 'Type' }, | |
{ id: 'Operation', type: 'Type' }, | |
{ | |
id: 'operationValue', | |
type: 'Value', | |
from: 'Operation', | |
to: 'String' | |
}, | |
{ id: 'AllowInsert', type: 'Operation' }, | |
{ id: 'AllowUpdate', type: 'Operation' }, | |
{ id: 'AllowDelete', type: 'Operation' }, | |
{ id: 'AllowSelect', type: 'Operation' }, | |
{ id: 'File', type: 'Type' }, | |
{ id: 'SyncTextFile', type: 'File' }, | |
{ | |
id: 'syncTextFileValue', | |
type: 'Value', | |
from: 'SyncTextFile', | |
to: 'String' | |
}, | |
{ id: 'ExecutionProvider', type: 'Type' }, | |
{ id: 'JSExecutionProvider', type: 'ExecutionProvider' }, | |
{ id: 'TreeInclude', type: 'Type', from: 'Type', to: 'Any' }, | |
{ id: 'Handler', type: 'Type', from: 'Supports', to: 'Any' }, | |
{ id: 'Tree', type: 'Type' }, | |
{ | |
id: 'TreeIncludeDown', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeUp', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeNode', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ id: 'containTree', type: 'Tree' }, | |
{ | |
id: 'containTreeContain', | |
type: 'TreeIncludeDown', | |
from: 'containTree', | |
to: 'Contain' | |
}, | |
{ | |
id: 'containTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'containTree', | |
to: 'Any' | |
}, | |
{ id: 'PackageNamespace', type: 'Type' }, | |
{ | |
id: 'packageNamespaceValue', | |
type: 'Value', | |
from: 'PackageNamespace', | |
to: 'String' | |
}, | |
{ | |
id: 'PackageActive', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'PackageVersion', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'packageVersionValue', | |
type: 'Value', | |
from: 'PackageVersion', | |
to: 'String' | |
}, | |
{ id: 'HandleOperation', type: 'Type', from: 'Type', to: 'Type' }, | |
{ | |
id: 'HandleInsert', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleUpdate', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleDelete', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'PromiseResult', type: 'Type' }, | |
{ | |
id: 'promiseResultValueRelationTable', | |
type: 'Value', | |
from: 'PromiseResult', | |
to: 'Object' | |
}, | |
{ id: 'PromiseReason', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Focus', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'focusValue', type: 'Value', from: 'Focus', to: 'Object' }, | |
{ id: 'AsyncFile', type: 'File' }, | |
{ | |
id: 'handlersTreeHandler', | |
type: 'TreeIncludeUp', | |
from: 'handlersTree', | |
to: 'Handler' | |
}, | |
{ id: 'Query', type: 'Type' }, | |
{ id: 'queryValue', type: 'Value', from: 'Query', to: 'Object' }, | |
{ id: 'Active', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Fixed', type: 'Type' }, | |
{ id: 'fixedValue', type: 'Value', from: 'Fixed', to: 'Object' }, | |
{ id: 'Space', type: 'Type' }, | |
{ id: 'spaceValue', type: 'Value', from: 'Space', to: 'String' }, | |
{ id: 'AllowLogin', type: 'Operation' }, | |
{ id: 'guests', type: 'Any' }, | |
{ id: 'Join', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'joinTree', type: 'Tree' }, | |
{ | |
id: 'joinTreeJoin', | |
type: 'TreeIncludeUp', | |
from: 'joinTree', | |
to: 'Join' | |
}, | |
{ | |
id: 'joinTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'joinTree', | |
to: 'Any' | |
}, | |
{ id: 'SelectorTree', type: 'Type', from: 'Any', to: 'Tree' }, | |
{ id: 'AllowAdmin', type: 'Operation' }, | |
{ | |
id: 'SelectorExclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ | |
id: 'SelectorFilter', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Query' | |
}, | |
{ | |
id: 'HandleSchedule', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'Schedule', type: 'Type' }, | |
{ | |
id: 'scheduleValue', | |
type: 'Value', | |
from: 'Schedule', | |
to: 'String' | |
}, | |
{ id: 'Router', type: 'Type', value: [Object] }, | |
{ id: 'IsolationProvider', type: 'Type' }, | |
{ id: 'DockerIsolationProvider', type: 'IsolationProvider' }, | |
{ | |
id: 'dockerIsolationProviderValue', | |
type: 'Value', | |
from: 'DockerIsolationProvider', | |
to: 'String' | |
}, | |
{ | |
id: 'JSDockerIsolationProvider', | |
type: 'DockerIsolationProvider', | |
value: [Object] | |
}, | |
{ id: 'Supports', type: 'Type', from: 'Any', to: 'Any' }, | |
{ | |
id: 'dockerSupportsJs', | |
type: 'Supports', | |
from: 'JSDockerIsolationProvider', | |
to: 'JSExecutionProvider' | |
}, | |
{ | |
id: 'PackageInstall', | |
type: 'Type', | |
from: 'Any', | |
to: 'PackageQuery' | |
}, | |
{ | |
id: 'PackagePublish', | |
type: 'Type', | |
from: 'Package', | |
to: 'PackageQuery' | |
}, | |
{ id: 'packageInstallCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packageInstallCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packageInstallCode' | |
}, | |
{ | |
id: 'packageInstallCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackageInstall', | |
to: 'packageInstallCodeHandler' | |
}, | |
{ id: 'packagePublishCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packagePublishCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packagePublishCode' | |
}, | |
{ | |
id: 'packagePublishCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackagePublish', | |
to: 'packagePublishCodeHandler' | |
}, | |
{ id: 'AllowPackageInstall', type: 'Operation' }, | |
{ id: 'portValue', type: 'Value', from: 'Port', to: 'Number' }, | |
{ | |
id: 'HandlePort', | |
type: 'HandleOperation', | |
from: 'Port', | |
to: 'Any' | |
}, | |
{ id: 'Route', type: 'Type' }, | |
{ id: 'RouterListening', type: 'Type', from: 'Router', to: 'Port' }, | |
{ | |
id: 'RouterStringUse', | |
type: 'Type', | |
from: 'Route', | |
to: 'Router' | |
}, | |
{ | |
id: 'routerStringUseValue', | |
type: 'Value', | |
from: 'RouterStringUse', | |
to: 'String' | |
}, | |
... 74 more items | |
], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
} | |
dependencies {} | |
dependencyPackageName @deep-foundation/core | |
packagePath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/transaction-tests | |
packageJsonPath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/transaction-tests/package.json | |
packageJson { | |
name: '@suenot/transaction-tests', | |
dependencies: { '@suenot/unit': '~0.0.2', '@suenot/wallet': '~0.0.3' }, | |
version: '0.0.2', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/transaction-tests/deep.json | |
deepJson { | |
package: { name: '@suenot/transaction-tests', version: '0.0.2' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ id: 'wallet1', type: 1, value: [Object] }, | |
{ | |
id: 'wallet1Name', | |
type: 2, | |
from: 'wallet1', | |
to: 'wallet1', | |
value: [Object] | |
}, | |
{ id: 'unit1', type: 3 }, | |
{ | |
id: 'unit1Description', | |
type: 4, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Avatar', | |
type: 5, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Ticker', | |
type: 6, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Name', | |
type: 7, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@suenot/wallet', version: '0.0.3' }, | |
{ name: '@suenot/unit', version: '0.0.2' } | |
] | |
} | |
dependencies { '@suenot/unit': '~0.0.2', '@suenot/wallet': '~0.0.3' } | |
dependencyPackageName @suenot/transaction-tests | |
packagePath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/unit | |
packageJsonPath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/unit/package.json | |
packageJson { | |
name: '@suenot/unit', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.2', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/unit/deep.json | |
deepJson { | |
package: { name: '@suenot/unit', version: '0.0.2' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Unit', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Unit', to: 'Unit' }, | |
{ | |
id: 'descriptionSymbol', | |
type: 2, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'avatarValue', type: 3, from: 'Avatar', to: 4 }, | |
{ | |
id: 'avatarSymbol', | |
type: 2, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'tickerValue', type: 3, from: 'Ticker', to: 4 }, | |
{ | |
id: 'tickerSymbol', | |
type: 2, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'nameValue', type: 3, from: 'Name', to: 4 }, | |
{ | |
id: 'nameSymbol', | |
type: 2, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 2, | |
from: 'Unit', | |
to: 'Unit', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/unit | |
packagePath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/asset | |
packageJsonPath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/asset/package.json | |
packageJson { | |
name: '@suenot/asset', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.8', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/asset/deep.json | |
deepJson { | |
package: { name: '@suenot/asset', version: '0.0.8' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Asset', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'Avatar', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'tickerValue', type: 2, from: 'Ticker', to: 3 }, | |
{ | |
id: 'tickerSymbol', | |
type: 4, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Asset', | |
to: 'Asset', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/asset | |
packagePath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/wallet | |
packageJsonPath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/wallet/package.json | |
packageJson { | |
name: '@suenot/wallet', | |
dependencies: { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
}, | |
version: '0.0.3', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/ecb1d4ec-a5bd-4bd0-879b-fe94a26a7059/node_modules/@suenot/wallet/deep.json | |
deepJson { | |
package: { name: '@suenot/wallet', version: '0.0.3' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ id: 'Wallet', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'descriptionValue', type: 2, from: 'Description', to: 3 }, | |
{ | |
id: 'descriptionSymbol', | |
type: 4, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'ContainUnit', type: 1, from: 'Wallet', to: 5 }, | |
{ id: 'Name', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Wallet', | |
to: 'Wallet', | |
value: [Object] | |
}, | |
{ id: 'waletValue', type: 2, from: 'Wallet', to: 6 } | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/core', version: '0.0.2' }, | |
{ name: '@suenot/unit', version: '0.0.2' } | |
] | |
} | |
dependencies { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
} | |
dependencyPackageName @suenot/wallet | |
deepPackagesDependencies { | |
'@deep-foundation/core': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' }, | |
dependencies: [] | |
}, | |
'@suenot/unit': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/asset': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/wallet': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core', '@suenot/asset', '@suenot/unit' ] | |
} | |
} | |
installationQueue [ | |
{ | |
name: '@deep-foundation/core', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' } | |
}, | |
{ | |
name: '@suenot/unit', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/asset', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/wallet', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
} | |
} | |
] | |
installationSet { | |
'@deep-foundation/core': true, | |
'@suenot/unit': true, | |
'@suenot/asset': true, | |
'@suenot/wallet': true | |
} | |
npm --prefix "/tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3" i @suenot/[email protected] | |
added 5 packages in 594ms | |
find . -name deep.json | |
./@deep-foundation/core/deep.json | |
./@suenot/transaction-tests/deep.json | |
./@suenot/unit/deep.json | |
./@suenot/asset/deep.json | |
./@suenot/wallet/deep.json | |
packages [ | |
[ '@deep-foundation/core' ], | |
[ '@suenot/transaction-tests' ], | |
[ '@suenot/unit' ], | |
[ '@suenot/asset' ], | |
[ '@suenot/wallet' ] | |
] | |
packagePath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@deep-foundation/core | |
packageJsonPath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@deep-foundation/core/package.json | |
packageJson { name: '@deep-foundation/core', version: '0.0.2' } | |
deepJsonPath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@deep-foundation/core/deep.json | |
deepJson { | |
package: { name: '@deep-foundation/core', version: '0.0.2' }, | |
data: [ | |
{ id: 'Type', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Package', type: 'Type' }, | |
{ id: 'Contain', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Value', type: 'Type', from: 'Any', to: 'Type' }, | |
{ id: 'String', type: 'Type' }, | |
{ id: 'Number', type: 'Type' }, | |
{ id: 'Object', type: 'Type' }, | |
{ id: 'Any', type: 'Type' }, | |
{ id: 'Promise', type: 'Type' }, | |
{ id: 'Then', type: 'Type', from: 'Any', to: 'Promise' }, | |
{ id: 'Resolved', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'Rejected', type: 'Type', from: 'Promise', to: 'Any' }, | |
{ id: 'typeValue', type: 'Value', from: 'Type', to: 'String' }, | |
{ | |
id: 'packageValue', | |
type: 'Value', | |
from: 'Package', | |
to: 'String' | |
}, | |
{ id: 'Selector', type: 'Type' }, | |
{ | |
id: 'SelectorInclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ id: 'Rule', type: 'Type' }, | |
{ id: 'RuleSubject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleObject', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ id: 'RuleAction', type: 'Type', from: 'Rule', to: 'Selector' }, | |
{ | |
id: 'containValue', | |
type: 'Value', | |
from: 'Contain', | |
to: 'String' | |
}, | |
{ id: 'User', type: 'Type' }, | |
{ id: 'Operation', type: 'Type' }, | |
{ | |
id: 'operationValue', | |
type: 'Value', | |
from: 'Operation', | |
to: 'String' | |
}, | |
{ id: 'AllowInsert', type: 'Operation' }, | |
{ id: 'AllowUpdate', type: 'Operation' }, | |
{ id: 'AllowDelete', type: 'Operation' }, | |
{ id: 'AllowSelect', type: 'Operation' }, | |
{ id: 'File', type: 'Type' }, | |
{ id: 'SyncTextFile', type: 'File' }, | |
{ | |
id: 'syncTextFileValue', | |
type: 'Value', | |
from: 'SyncTextFile', | |
to: 'String' | |
}, | |
{ id: 'ExecutionProvider', type: 'Type' }, | |
{ id: 'JSExecutionProvider', type: 'ExecutionProvider' }, | |
{ id: 'TreeInclude', type: 'Type', from: 'Type', to: 'Any' }, | |
{ id: 'Handler', type: 'Type', from: 'Supports', to: 'Any' }, | |
{ id: 'Tree', type: 'Type' }, | |
{ | |
id: 'TreeIncludeDown', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeUp', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ | |
id: 'TreeIncludeNode', | |
type: 'TreeInclude', | |
from: 'Tree', | |
to: 'Any' | |
}, | |
{ id: 'containTree', type: 'Tree' }, | |
{ | |
id: 'containTreeContain', | |
type: 'TreeIncludeDown', | |
from: 'containTree', | |
to: 'Contain' | |
}, | |
{ | |
id: 'containTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'containTree', | |
to: 'Any' | |
}, | |
{ id: 'PackageNamespace', type: 'Type' }, | |
{ | |
id: 'packageNamespaceValue', | |
type: 'Value', | |
from: 'PackageNamespace', | |
to: 'String' | |
}, | |
{ | |
id: 'PackageActive', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'PackageVersion', | |
type: 'Type', | |
from: 'PackageNamespace', | |
to: 'Package' | |
}, | |
{ | |
id: 'packageVersionValue', | |
type: 'Value', | |
from: 'PackageVersion', | |
to: 'String' | |
}, | |
{ id: 'HandleOperation', type: 'Type', from: 'Type', to: 'Type' }, | |
{ | |
id: 'HandleInsert', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleUpdate', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ | |
id: 'HandleDelete', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'PromiseResult', type: 'Type' }, | |
{ | |
id: 'promiseResultValueRelationTable', | |
type: 'Value', | |
from: 'PromiseResult', | |
to: 'Object' | |
}, | |
{ id: 'PromiseReason', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Focus', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'focusValue', type: 'Value', from: 'Focus', to: 'Object' }, | |
{ id: 'AsyncFile', type: 'File' }, | |
{ | |
id: 'handlersTreeHandler', | |
type: 'TreeIncludeUp', | |
from: 'handlersTree', | |
to: 'Handler' | |
}, | |
{ id: 'Query', type: 'Type' }, | |
{ id: 'queryValue', type: 'Value', from: 'Query', to: 'Object' }, | |
{ id: 'Active', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'Fixed', type: 'Type' }, | |
{ id: 'fixedValue', type: 'Value', from: 'Fixed', to: 'Object' }, | |
{ id: 'Space', type: 'Type' }, | |
{ id: 'spaceValue', type: 'Value', from: 'Space', to: 'String' }, | |
{ id: 'AllowLogin', type: 'Operation' }, | |
{ id: 'guests', type: 'Any' }, | |
{ id: 'Join', type: 'Type', from: 'Any', to: 'Any' }, | |
{ id: 'joinTree', type: 'Tree' }, | |
{ | |
id: 'joinTreeJoin', | |
type: 'TreeIncludeUp', | |
from: 'joinTree', | |
to: 'Join' | |
}, | |
{ | |
id: 'joinTreeAny', | |
type: 'TreeIncludeNode', | |
from: 'joinTree', | |
to: 'Any' | |
}, | |
{ id: 'SelectorTree', type: 'Type', from: 'Any', to: 'Tree' }, | |
{ id: 'AllowAdmin', type: 'Operation' }, | |
{ | |
id: 'SelectorExclude', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Any' | |
}, | |
{ | |
id: 'SelectorFilter', | |
type: 'Type', | |
from: 'Selector', | |
to: 'Query' | |
}, | |
{ | |
id: 'HandleSchedule', | |
type: 'HandleOperation', | |
from: 'Any', | |
to: 'Handler' | |
}, | |
{ id: 'Schedule', type: 'Type' }, | |
{ | |
id: 'scheduleValue', | |
type: 'Value', | |
from: 'Schedule', | |
to: 'String' | |
}, | |
{ id: 'Router', type: 'Type', value: [Object] }, | |
{ id: 'IsolationProvider', type: 'Type' }, | |
{ id: 'DockerIsolationProvider', type: 'IsolationProvider' }, | |
{ | |
id: 'dockerIsolationProviderValue', | |
type: 'Value', | |
from: 'DockerIsolationProvider', | |
to: 'String' | |
}, | |
{ | |
id: 'JSDockerIsolationProvider', | |
type: 'DockerIsolationProvider', | |
value: [Object] | |
}, | |
{ id: 'Supports', type: 'Type', from: 'Any', to: 'Any' }, | |
{ | |
id: 'dockerSupportsJs', | |
type: 'Supports', | |
from: 'JSDockerIsolationProvider', | |
to: 'JSExecutionProvider' | |
}, | |
{ | |
id: 'PackageInstall', | |
type: 'Type', | |
from: 'Any', | |
to: 'PackageQuery' | |
}, | |
{ | |
id: 'PackagePublish', | |
type: 'Type', | |
from: 'Package', | |
to: 'PackageQuery' | |
}, | |
{ id: 'packageInstallCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packageInstallCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packageInstallCode' | |
}, | |
{ | |
id: 'packageInstallCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackageInstall', | |
to: 'packageInstallCodeHandler' | |
}, | |
{ id: 'packagePublishCode', type: 'SyncTextFile', value: [Object] }, | |
{ | |
id: 'packagePublishCodeHandler', | |
type: 'Handler', | |
from: 'dockerSupportsJs', | |
to: 'packagePublishCode' | |
}, | |
{ | |
id: 'packagePublishCodeHandleInsert', | |
type: 'HandleInsert', | |
from: 'PackagePublish', | |
to: 'packagePublishCodeHandler' | |
}, | |
{ id: 'AllowPackageInstall', type: 'Operation' }, | |
{ id: 'portValue', type: 'Value', from: 'Port', to: 'Number' }, | |
{ | |
id: 'HandlePort', | |
type: 'HandleOperation', | |
from: 'Port', | |
to: 'Any' | |
}, | |
{ id: 'Route', type: 'Type' }, | |
{ id: 'RouterListening', type: 'Type', from: 'Router', to: 'Port' }, | |
{ | |
id: 'RouterStringUse', | |
type: 'Type', | |
from: 'Route', | |
to: 'Router' | |
}, | |
{ | |
id: 'routerStringUseValue', | |
type: 'Value', | |
from: 'RouterStringUse', | |
to: 'String' | |
}, | |
... 74 more items | |
], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
} | |
dependencies {} | |
dependencyPackageName @deep-foundation/core | |
packagePath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/transaction-tests | |
packageJsonPath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/transaction-tests/package.json | |
packageJson { | |
name: '@suenot/transaction-tests', | |
dependencies: { '@suenot/unit': '~0.0.2', '@suenot/wallet': '~0.0.3' }, | |
version: '0.0.2', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/transaction-tests/deep.json | |
deepJson { | |
package: { name: '@suenot/transaction-tests', version: '0.0.2' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ package: [Object], id: 7 }, | |
{ id: 'wallet1', type: 1, value: [Object] }, | |
{ | |
id: 'wallet1Name', | |
type: 2, | |
from: 'wallet1', | |
to: 'wallet1', | |
value: [Object] | |
}, | |
{ id: 'unit1', type: 3 }, | |
{ | |
id: 'unit1Description', | |
type: 4, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Avatar', | |
type: 5, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Ticker', | |
type: 6, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
}, | |
{ | |
id: 'unit1Name', | |
type: 7, | |
from: 'unit1', | |
to: 'unit1', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@suenot/wallet', version: '0.0.3' }, | |
{ name: '@suenot/unit', version: '0.0.2' } | |
] | |
} | |
dependencies { '@suenot/unit': '~0.0.2', '@suenot/wallet': '~0.0.3' } | |
dependencyPackageName @suenot/transaction-tests | |
packagePath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/unit | |
packageJsonPath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/unit/package.json | |
packageJson { | |
name: '@suenot/unit', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.2', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/unit/deep.json | |
deepJson { | |
package: { name: '@suenot/unit', version: '0.0.2' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Unit', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Unit', to: 'Unit' }, | |
{ | |
id: 'descriptionSymbol', | |
type: 2, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'avatarValue', type: 3, from: 'Avatar', to: 4 }, | |
{ | |
id: 'avatarSymbol', | |
type: 2, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'tickerValue', type: 3, from: 'Ticker', to: 4 }, | |
{ | |
id: 'tickerSymbol', | |
type: 2, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Unit', to: 'Unit' }, | |
{ id: 'nameValue', type: 3, from: 'Name', to: 4 }, | |
{ | |
id: 'nameSymbol', | |
type: 2, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 2, | |
from: 'Unit', | |
to: 'Unit', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/unit | |
packagePath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/asset | |
packageJsonPath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/asset/package.json | |
packageJson { | |
name: '@suenot/asset', | |
dependencies: { '@deep-foundation/core': '~0.0.2' }, | |
version: '0.0.8', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/asset/deep.json | |
deepJson { | |
package: { name: '@suenot/asset', version: '0.0.8' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ id: 'Asset', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'Avatar', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'Ticker', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'tickerValue', type: 2, from: 'Ticker', to: 3 }, | |
{ | |
id: 'tickerSymbol', | |
type: 4, | |
from: 'Ticker', | |
to: 'Ticker', | |
value: [Object] | |
}, | |
{ id: 'Name', type: 1, from: 'Asset', to: 'Asset' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Asset', | |
to: 'Asset', | |
value: [Object] | |
} | |
], | |
errors: [], | |
dependencies: [ { name: '@deep-foundation/core', version: '0.0.2' } ] | |
} | |
dependencies { '@deep-foundation/core': '~0.0.2' } | |
dependencyPackageName @suenot/asset | |
packagePath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/wallet | |
packageJsonPath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/wallet/package.json | |
packageJson { | |
name: '@suenot/wallet', | |
dependencies: { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
}, | |
version: '0.0.3', | |
keywords: [ 'deep-package' ] | |
} | |
deepJsonPath /tmp/9dda1f64-d03d-4a60-95f2-54d581e422f3/node_modules/@suenot/wallet/deep.json | |
deepJson { | |
package: { name: '@suenot/wallet', version: '0.0.3' }, | |
data: [ | |
{ package: [Object], id: 1 }, | |
{ package: [Object], id: 2 }, | |
{ package: [Object], id: 3 }, | |
{ package: [Object], id: 4 }, | |
{ package: [Object], id: 5 }, | |
{ package: [Object], id: 6 }, | |
{ id: 'Wallet', type: 1 }, | |
{ id: 'Description', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'descriptionValue', type: 2, from: 'Description', to: 3 }, | |
{ | |
id: 'descriptionSymbol', | |
type: 4, | |
from: 'Description', | |
to: 'Description', | |
value: [Object] | |
}, | |
{ id: 'Avatar', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'avatarValue', type: 2, from: 'Avatar', to: 3 }, | |
{ | |
id: 'avatarSymbol', | |
type: 4, | |
from: 'Avatar', | |
to: 'Avatar', | |
value: [Object] | |
}, | |
{ id: 'ContainUnit', type: 1, from: 'Wallet', to: 5 }, | |
{ id: 'Name', type: 1, from: 'Wallet', to: 'Wallet' }, | |
{ id: 'nameValue', type: 2, from: 'Name', to: 3 }, | |
{ | |
id: 'nameSymbol', | |
type: 4, | |
from: 'Name', | |
to: 'Name', | |
value: [Object] | |
}, | |
{ | |
id: 'symbol', | |
type: 4, | |
from: 'Wallet', | |
to: 'Wallet', | |
value: [Object] | |
}, | |
{ id: 'waletValue', type: 2, from: 'Wallet', to: 6 } | |
], | |
errors: [], | |
dependencies: [ | |
{ name: '@deep-foundation/core', version: '0.0.2' }, | |
{ name: '@suenot/unit', version: '0.0.2' } | |
] | |
} | |
dependencies { | |
'@deep-foundation/core': '~0.0.2', | |
'@suenot/asset': '~0.0.2', | |
'@suenot/unit': '~0.0.2' | |
} | |
dependencyPackageName @suenot/wallet | |
deepPackagesDependencies { | |
'@deep-foundation/core': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' }, | |
dependencies: [] | |
}, | |
'@suenot/unit': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/asset': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core' ] | |
}, | |
'@suenot/wallet': { | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
}, | |
dependencies: [ '@deep-foundation/core', '@suenot/asset', '@suenot/unit' ] | |
} | |
} | |
installationQueue [ | |
{ | |
name: '@deep-foundation/core', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
strict: true, | |
dependencies: [] | |
}, | |
packageJson: { name: '@deep-foundation/core', version: '0.0.2' } | |
}, | |
{ | |
name: '@suenot/unit', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/unit', | |
dependencies: [Object], | |
version: '0.0.2', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/asset', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/asset', | |
dependencies: [Object], | |
version: '0.0.8', | |
keywords: [Array] | |
} | |
}, | |
{ | |
name: '@suenot/wallet', | |
deepJson: { | |
package: [Object], | |
data: [Array], | |
errors: [], | |
dependencies: [Array] | |
}, | |
packageJson: { | |
name: '@suenot/wallet', | |
dependencies: [Object], | |
version: '0.0.3', | |
keywords: [Array] | |
} | |
} | |
] | |
installationSet { | |
'@deep-foundation/core': true, | |
'@suenot/unit': true, | |
'@suenot/asset': true, | |
'@suenot/wallet': true | |
} | |
packages [ | |
{ | |
id: 1108, | |
name: { id: 440, value: '@suenot/unit', link_id: 1108 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1267, | |
name: { id: 517, value: '@suenot/wallet', link_id: 1267 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1310, | |
name: { id: 522, value: '@suenot/wallet', link_id: 1310 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 184, | |
name: { id: 6, value: '@deep-foundation/core', link_id: 184 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1227, | |
name: { id: 483, value: '@suenot/asset', link_id: 1227 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1148, | |
name: { id: 442, value: '@suenot/unit', link_id: 1148 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1188, | |
name: { id: 480, value: '@suenot/asset', link_id: 1188 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
} | |
] | |
rejected { | |
stack: "Error: Multiple packages with name '@suenot/wallet' exist.\n" + | |
' at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:176:17)\n' + | |
' at Array.reduce (<anonymous>)\n' + | |
' at getExistingPackages (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:168:39)\n' + | |
' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n' + | |
' at async eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:234:28)', | |
message: "Multiple packages with name '@suenot/wallet' exist." | |
} | |
packages [ | |
{ | |
id: 1108, | |
name: { id: 440, value: '@suenot/unit', link_id: 1108 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1267, | |
name: { id: 517, value: '@suenot/wallet', link_id: 1267 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1310, | |
name: { id: 522, value: '@suenot/wallet', link_id: 1310 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 184, | |
name: { id: 6, value: '@deep-foundation/core', link_id: 184 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1227, | |
name: { id: 483, value: '@suenot/asset', link_id: 1227 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1148, | |
name: { id: 442, value: '@suenot/unit', link_id: 1148 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
}, | |
{ | |
id: 1188, | |
name: { id: 480, value: '@suenot/asset', link_id: 1188 }, | |
versions: [ [Object] ], | |
__typename: 'links' | |
} | |
] | |
rejected { | |
stack: "Error: Multiple packages with name '@suenot/wallet' exist.\n" + | |
' at eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:176:17)\n' + | |
' at Array.reduce (<anonymous>)\n' + | |
' at getExistingPackages (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:168:39)\n' + | |
' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n' + | |
' at async eval (eval at memoized (/node_modules/lodash/memoize.js:62:23), <anonymous>:234:28)', | |
message: "Multiple packages with name '@suenot/wallet' exist." | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment