@maka/meteor-sdk 0.2.6 → 0.2.7
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.
- package/isopackets/combined/npm/node_modules/meteor/babel-compiler/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/boilerplate-generator/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/constraint-solver/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/ddp-client/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/ecmascript/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/ecmascript-runtime/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/ecmascript-runtime-client/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/ecmascript-runtime-server/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/fetch/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/inter-process-messaging/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/logging/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/logic-solver/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/meteor/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/modules/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/modules-runtime/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/npm-mongo/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/package-version-parser/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/promise/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/react-fast-refresh/node_modules/.package-lock.json +1 -1
- package/isopackets/combined/npm/node_modules/meteor/socket-stream-client/node_modules/.package-lock.json +1 -1
- package/package.json +1 -1
- package/tools/isobuild/meteor-npm.js +68 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/meteor-sdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"description": "Programmatic Node API over the Meteor build tool (bundle/run/create/etc.) -- for driving Meteor's build system from plain Node code instead of shelling out to a meteor CLI (there isn't one anymore; see README.md). \"dependencies\" is generated by scripts/write-tool-package-json.js from scripts/dev-bundle-tool-package.js at the monorepo root -- do not hand-edit that field, edit that file and re-run the script instead.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -731,6 +731,8 @@ var updateExistingNpmDirectory = async function (packageName, newPackageNpmDir,
|
|
|
731
731
|
npmTree.dependencies[name] = { version };
|
|
732
732
|
});
|
|
733
733
|
|
|
734
|
+
reconcileGitDependencies(npmTree, installedDependenciesTree);
|
|
735
|
+
|
|
734
736
|
let minInstalledTree;
|
|
735
737
|
try {
|
|
736
738
|
minInstalledTree = minimizeDependencyTree(installedDependenciesTree);
|
|
@@ -838,6 +840,72 @@ var updateExistingNpmDirectory = async function (packageName, newPackageNpmDir,
|
|
|
838
840
|
npmDependencies);
|
|
839
841
|
};
|
|
840
842
|
|
|
843
|
+
// Git-URL dependencies could never satisfy the strict string comparison
|
|
844
|
+
// in updateExistingNpmDirectory: Npm.depends declares the spec the
|
|
845
|
+
// author wrote (e.g. "git+https://github.com/org/repo#v1.2.3") while
|
|
846
|
+
// npm's lockfile records what it resolved (e.g.
|
|
847
|
+
// "git+ssh://git@github.com/org/repo.git#<commit-sha>"). The result was
|
|
848
|
+
// a FULL reinstall of the package's npm deps -- git clone included --
|
|
849
|
+
// on every single build, and during `run` the .npm/package churn could
|
|
850
|
+
// re-fire the file watcher, restarting the app in a loop ("ddp-server:
|
|
851
|
+
// updating npm dependencies ..." flapping forever).
|
|
852
|
+
//
|
|
853
|
+
// Reconcile before comparing: a declared git dep is satisfied by an
|
|
854
|
+
// installed copy from the same repository when the declared ref is
|
|
855
|
+
// consistent with what's installed -- a commit-sha ref must prefix the
|
|
856
|
+
// resolved sha, a "v1.2.3"/"1.2.3" tag must equal the installed
|
|
857
|
+
// package's own version, and a symbolic ref (branch) is accepted as-is
|
|
858
|
+
// (it can move upstream, but reinstalling every build is strictly
|
|
859
|
+
// worse; pin by tag or sha for reproducibility). On a match the
|
|
860
|
+
// declared version is rewritten to the installed resolved URL so the
|
|
861
|
+
// strict subtree comparison passes; on a mismatch (e.g. the tag was
|
|
862
|
+
// bumped) nothing is rewritten and the normal update runs.
|
|
863
|
+
function parseGitUrl(url) {
|
|
864
|
+
if (typeof url !== "string") {
|
|
865
|
+
return null;
|
|
866
|
+
}
|
|
867
|
+
const m = url.match(
|
|
868
|
+
/^git\+(?:https?|ssh|git|file):\/\/(?:[^@/]+@)?([^#?]+?)(?:\.git)?(?:#(.*))?$/i
|
|
869
|
+
);
|
|
870
|
+
if (! m) {
|
|
871
|
+
return null;
|
|
872
|
+
}
|
|
873
|
+
return { repo: m[1].toLowerCase(), ref: m[2] || null };
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
function reconcileGitDependencies(npmTree, installedTree) {
|
|
877
|
+
_.each(npmTree.dependencies, (dep, name) => {
|
|
878
|
+
const declared = parseGitUrl(dep.version);
|
|
879
|
+
if (! declared) {
|
|
880
|
+
return;
|
|
881
|
+
}
|
|
882
|
+
const installed = installedTree.dependencies &&
|
|
883
|
+
installedTree.dependencies[name];
|
|
884
|
+
const resolved = installed && parseGitUrl(installed.resolved);
|
|
885
|
+
if (! resolved || resolved.repo !== declared.repo) {
|
|
886
|
+
return;
|
|
887
|
+
}
|
|
888
|
+
const ref = declared.ref;
|
|
889
|
+
let refSatisfied;
|
|
890
|
+
if (! ref) {
|
|
891
|
+
refSatisfied = true;
|
|
892
|
+
} else if (/^[0-9a-f]{7,40}$/i.test(ref)) {
|
|
893
|
+
refSatisfied = !! resolved.ref &&
|
|
894
|
+
resolved.ref.toLowerCase().startsWith(ref.toLowerCase());
|
|
895
|
+
} else if (/^v?\d+(\.\d+)*([-+.].*)?$/.test(ref)) {
|
|
896
|
+
refSatisfied = !! installed.version &&
|
|
897
|
+
ref.replace(/^v/, "") === installed.version;
|
|
898
|
+
} else {
|
|
899
|
+
refSatisfied = true;
|
|
900
|
+
}
|
|
901
|
+
if (refSatisfied) {
|
|
902
|
+
dep.version = minimizeDependencyTree({
|
|
903
|
+
dependencies: { [name]: installed },
|
|
904
|
+
}).dependencies[name].version;
|
|
905
|
+
}
|
|
906
|
+
});
|
|
907
|
+
}
|
|
908
|
+
|
|
841
909
|
function isSubtreeOf(subsetTree, supersetTree, predicate) {
|
|
842
910
|
if (subsetTree === supersetTree) {
|
|
843
911
|
return true;
|