@vltpkg/graph 1.0.0-rc.5 → 1.0.0-rc.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/esm/actual/load.d.ts.map +1 -1
  2. package/dist/esm/actual/load.js +25 -8
  3. package/dist/esm/actual/load.js.map +1 -1
  4. package/dist/esm/diff.d.ts +2 -0
  5. package/dist/esm/diff.d.ts.map +1 -1
  6. package/dist/esm/edge.d.ts +1 -0
  7. package/dist/esm/edge.d.ts.map +1 -1
  8. package/dist/esm/edge.js +4 -0
  9. package/dist/esm/edge.js.map +1 -1
  10. package/dist/esm/graph.d.ts +18 -4
  11. package/dist/esm/graph.d.ts.map +1 -1
  12. package/dist/esm/graph.js +50 -39
  13. package/dist/esm/graph.js.map +1 -1
  14. package/dist/esm/ideal/append-nodes.d.ts +1 -1
  15. package/dist/esm/ideal/append-nodes.d.ts.map +1 -1
  16. package/dist/esm/ideal/append-nodes.js +146 -64
  17. package/dist/esm/ideal/append-nodes.js.map +1 -1
  18. package/dist/esm/ideal/build-ideal-from-starting-graph.d.ts +2 -5
  19. package/dist/esm/ideal/build-ideal-from-starting-graph.d.ts.map +1 -1
  20. package/dist/esm/ideal/build-ideal-from-starting-graph.js +23 -12
  21. package/dist/esm/ideal/build-ideal-from-starting-graph.js.map +1 -1
  22. package/dist/esm/ideal/build.d.ts.map +1 -1
  23. package/dist/esm/ideal/build.js +0 -2
  24. package/dist/esm/ideal/build.js.map +1 -1
  25. package/dist/esm/ideal/get-ordered-dependencies.d.ts +10 -0
  26. package/dist/esm/ideal/get-ordered-dependencies.d.ts.map +1 -0
  27. package/dist/esm/ideal/get-ordered-dependencies.js +42 -0
  28. package/dist/esm/ideal/get-ordered-dependencies.js.map +1 -0
  29. package/dist/esm/ideal/peers.d.ts +71 -0
  30. package/dist/esm/ideal/peers.d.ts.map +1 -0
  31. package/dist/esm/ideal/peers.js +318 -0
  32. package/dist/esm/ideal/peers.js.map +1 -0
  33. package/dist/esm/ideal/{add-nodes.d.ts → refresh-ideal-graph.d.ts} +9 -5
  34. package/dist/esm/ideal/refresh-ideal-graph.d.ts.map +1 -0
  35. package/dist/esm/ideal/refresh-ideal-graph.js +79 -0
  36. package/dist/esm/ideal/refresh-ideal-graph.js.map +1 -0
  37. package/dist/esm/ideal/types.d.ts +65 -1
  38. package/dist/esm/ideal/types.d.ts.map +1 -1
  39. package/dist/esm/ideal/types.js.map +1 -1
  40. package/dist/esm/install.d.ts +3 -2
  41. package/dist/esm/install.d.ts.map +1 -1
  42. package/dist/esm/install.js +21 -5
  43. package/dist/esm/install.js.map +1 -1
  44. package/dist/esm/lockfile/load-nodes.d.ts.map +1 -1
  45. package/dist/esm/lockfile/load-nodes.js +8 -2
  46. package/dist/esm/lockfile/load-nodes.js.map +1 -1
  47. package/dist/esm/lockfile/load.d.ts +0 -4
  48. package/dist/esm/lockfile/load.d.ts.map +1 -1
  49. package/dist/esm/lockfile/load.js +4 -29
  50. package/dist/esm/lockfile/load.js.map +1 -1
  51. package/dist/esm/node.d.ts +14 -0
  52. package/dist/esm/node.d.ts.map +1 -1
  53. package/dist/esm/node.js +16 -0
  54. package/dist/esm/node.js.map +1 -1
  55. package/package.json +21 -21
  56. package/dist/esm/ideal/add-nodes.d.ts.map +0 -1
  57. package/dist/esm/ideal/add-nodes.js +0 -39
  58. package/dist/esm/ideal/add-nodes.js.map +0 -1
  59. package/dist/esm/ideal/remove-nodes.d.ts +0 -7
  60. package/dist/esm/ideal/remove-nodes.d.ts.map +0 -1
  61. package/dist/esm/ideal/remove-nodes.js +0 -19
  62. package/dist/esm/ideal/remove-nodes.js.map +0 -1
@@ -1,39 +0,0 @@
1
- import { error } from '@vltpkg/error-cause';
2
- import { appendNodes } from "./append-nodes.js";
3
- import { resolveSaveType } from "../resolve-save-type.js";
4
- /**
5
- * Add new nodes in the given `graph` for dependencies specified at `add`.
6
- */
7
- export const addNodes = async ({ add, graph, modifiers, packageInfo, scurry, actual, remover, ...specOptions }) => {
8
- const seen = new Set();
9
- const extractPromises = [];
10
- const seenExtracted = new Set();
11
- // iterates on the list of dependencies per importer updating
12
- // the graph using metadata fetch from the registry manifest files
13
- for (const [depID, dependencies] of add) {
14
- const importer = graph.nodes.get(depID);
15
- if (!importer) {
16
- throw error('Could not find importer', { found: depID });
17
- }
18
- modifiers?.tryImporter(importer);
19
- // Removes any edges and nodes that are currently part of the
20
- // graph but are also in the list of dependencies to be installed
21
- const deps = [...dependencies.values()];
22
- for (const dep of deps) {
23
- const { spec } = dep;
24
- const existingEdge = importer.edgesOut.get(spec.name);
25
- dep.type = resolveSaveType(importer, spec.name, dep.type);
26
- const node = existingEdge?.to;
27
- if (node)
28
- graph.removeNode(node);
29
- }
30
- // Add new nodes for packages defined in the dependencies list fetching
31
- // metadata from the registry manifests and updating the graph
32
- await appendNodes(dependencies, packageInfo, graph, importer, deps, scurry, specOptions, seen, modifiers, modifiers?.tryDependencies(importer, deps), extractPromises, actual, seenExtracted, remover);
33
- }
34
- // Wait for all extraction promises to complete
35
- if (extractPromises.length > 0) {
36
- await Promise.all(extractPromises);
37
- }
38
- };
39
- //# sourceMappingURL=add-nodes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-nodes.js","sourceRoot":"","sources":["../../../src/ideal/add-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AA0CzD;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,EAC7B,GAAG,EACH,KAAK,EACL,SAAS,EACT,WAAW,EACX,MAAM,EACN,MAAM,EACN,OAAO,EACP,GAAG,WAAW,EACE,EAAE,EAAE;IACpB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAS,CAAA;IAC7B,MAAM,eAAe,GAA6B,EAAE,CAAA;IACpD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAS,CAAA;IAEtC,6DAA6D;IAC7D,kEAAkE;IAClE,KAAK,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC1D,CAAC;QACD,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;QAEhC,6DAA6D;QAC7D,iEAAiE;QACjE,MAAM,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;QACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;YACpB,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrD,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YACzD,MAAM,IAAI,GAAG,YAAY,EAAE,EAAE,CAAA;YAC7B,IAAI,IAAI;gBAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;QAED,uEAAuE;QACvE,8DAA8D;QAC9D,MAAM,WAAW,CACf,YAAY,EACZ,WAAW,EACX,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,WAAW,EACX,IAAI,EACJ,SAAS,EACT,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,EAC1C,eAAe,EACf,MAAM,EACN,aAAa,EACb,OAAO,CACR,CAAA;IACH,CAAC;IAED,+CAA+C;IAC/C,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACpC,CAAC;AACH,CAAC,CAAA","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport { appendNodes } from './append-nodes.ts'\nimport { resolveSaveType } from '../resolve-save-type.ts'\nimport type { PathScurry } from 'path-scurry'\nimport type { DepID } from '@vltpkg/dep-id'\nimport type { PackageInfoClient } from '@vltpkg/package-info'\nimport type { SpecOptions } from '@vltpkg/spec'\nimport type { RollbackRemove } from '@vltpkg/rollback-remove'\nimport type {\n BuildIdealAddOptions,\n BuildIdealFromGraphOptions,\n} from './types.ts'\nimport type { GraphModifier } from '../modifiers.ts'\nimport type { ExtractResult } from '../reify/extract-node.ts'\nimport type { Graph } from '../graph.ts'\n\nexport type AddNodesOptions = BuildIdealAddOptions &\n BuildIdealFromGraphOptions &\n SpecOptions & {\n /**\n * The graph modifiers helper object.\n */\n modifiers?: GraphModifier\n /**\n * A {@link PathScurry} instance based on the `projectRoot` path\n */\n scurry: PathScurry\n\n /**\n * A {@link PackageInfoClient} instance to read manifest info from.\n */\n packageInfo: PackageInfoClient\n\n /**\n * The actual graph to compare against for early extraction\n */\n actual?: Graph\n\n /**\n * A {@link RollbackRemove} instance to handle extraction rollbacks\n */\n remover: RollbackRemove\n }\n\n/**\n * Add new nodes in the given `graph` for dependencies specified at `add`.\n */\nexport const addNodes = async ({\n add,\n graph,\n modifiers,\n packageInfo,\n scurry,\n actual,\n remover,\n ...specOptions\n}: AddNodesOptions) => {\n const seen = new Set<DepID>()\n const extractPromises: Promise<ExtractResult>[] = []\n const seenExtracted = new Set<DepID>()\n\n // iterates on the list of dependencies per importer updating\n // the graph using metadata fetch from the registry manifest files\n for (const [depID, dependencies] of add) {\n const importer = graph.nodes.get(depID)\n if (!importer) {\n throw error('Could not find importer', { found: depID })\n }\n modifiers?.tryImporter(importer)\n\n // Removes any edges and nodes that are currently part of the\n // graph but are also in the list of dependencies to be installed\n const deps = [...dependencies.values()]\n for (const dep of deps) {\n const { spec } = dep\n const existingEdge = importer.edgesOut.get(spec.name)\n dep.type = resolveSaveType(importer, spec.name, dep.type)\n const node = existingEdge?.to\n if (node) graph.removeNode(node)\n }\n\n // Add new nodes for packages defined in the dependencies list fetching\n // metadata from the registry manifests and updating the graph\n await appendNodes(\n dependencies,\n packageInfo,\n graph,\n importer,\n deps,\n scurry,\n specOptions,\n seen,\n modifiers,\n modifiers?.tryDependencies(importer, deps),\n extractPromises,\n actual,\n seenExtracted,\n remover,\n )\n }\n\n // Wait for all extraction promises to complete\n if (extractPromises.length > 0) {\n await Promise.all(extractPromises)\n }\n}\n"]}
@@ -1,7 +0,0 @@
1
- import type { BuildIdealFromGraphOptions, BuildIdealRemoveOptions } from './types.ts';
2
- export type RemoveNodesOptions = BuildIdealFromGraphOptions & BuildIdealRemoveOptions;
3
- /**
4
- * Remove nodes from the current `graph`.
5
- */
6
- export declare const removeNodes: ({ graph, remove, }: RemoveNodesOptions) => void;
7
- //# sourceMappingURL=remove-nodes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove-nodes.d.ts","sourceRoot":"","sources":["../../../src/ideal/remove-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,YAAY,CAAA;AAGnB,MAAM,MAAM,kBAAkB,GAAG,0BAA0B,GACzD,uBAAuB,CAAA;AAEzB;;GAEG;AACH,eAAO,MAAM,WAAW,uBAGrB,kBAAkB,SAapB,CAAA"}
@@ -1,19 +0,0 @@
1
- import { error } from '@vltpkg/error-cause';
2
- /**
3
- * Remove nodes from the current `graph`.
4
- */
5
- export const removeNodes = ({ graph, remove, }) => {
6
- for (const [depID, names] of remove) {
7
- const importer = graph.nodes.get(depID);
8
- if (!importer) {
9
- throw error('Could not find importer', { found: depID });
10
- }
11
- // Removes any edges / nodes pointing to the specified name
12
- for (const name of names) {
13
- const node = importer.edgesOut.get(name)?.to;
14
- if (node)
15
- graph.removeNode(node);
16
- }
17
- }
18
- };
19
- //# sourceMappingURL=remove-nodes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove-nodes.js","sourceRoot":"","sources":["../../../src/ideal/remove-nodes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAK3C;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,KAAK,EACL,MAAM,GACa,EAAE,EAAE;IACvB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC1D,CAAC;QAED,2DAA2D;QAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAA;YAC5C,IAAI,IAAI;gBAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;AACH,CAAC,CAAA","sourcesContent":["import type {\n BuildIdealFromGraphOptions,\n BuildIdealRemoveOptions,\n} from './types.ts'\nimport { error } from '@vltpkg/error-cause'\n\nexport type RemoveNodesOptions = BuildIdealFromGraphOptions &\n BuildIdealRemoveOptions\n\n/**\n * Remove nodes from the current `graph`.\n */\nexport const removeNodes = ({\n graph,\n remove,\n}: RemoveNodesOptions) => {\n for (const [depID, names] of remove) {\n const importer = graph.nodes.get(depID)\n if (!importer) {\n throw error('Could not find importer', { found: depID })\n }\n\n // Removes any edges / nodes pointing to the specified name\n for (const name of names) {\n const node = importer.edgesOut.get(name)?.to\n if (node) graph.removeNode(node)\n }\n }\n}\n"]}