diff --git a/.npmignore b/.npmignore index 581e6b4ccf..81cf27234d 100644 --- a/.npmignore +++ b/.npmignore @@ -12,6 +12,9 @@ docs/* docs/docson/* !docs/docson/build-schema.json site/ +lib/amdjs +lib/es6 +lib/js .vscode/ .github/ odoc_gen diff --git a/belt-js/.gitignore b/belt-js/.gitignore new file mode 100644 index 0000000000..c3af857904 --- /dev/null +++ b/belt-js/.gitignore @@ -0,0 +1 @@ +lib/ diff --git a/belt-js/LICENSE b/belt-js/LICENSE new file mode 100644 index 0000000000..04505f9feb --- /dev/null +++ b/belt-js/LICENSE @@ -0,0 +1,23 @@ +Copyright (C) 2015-2016 Bloomberg Finance L.P. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +In addition to the permissions granted to you by the LGPL, you may combine +or link a "work that uses the Library" with a publicly distributed version +of this file to produce a combined library or application, then distribute +that combined work under the terms of your choosing, with no requirement +to comply with the obligations normally placed on you by section 4 of the +LGPL version 3 (or the corresponding section of a later version of the LGPL +should you choose to use a later version). + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. \ No newline at end of file diff --git a/belt-js/package.json b/belt-js/package.json new file mode 100644 index 0000000000..4dc4f50001 --- /dev/null +++ b/belt-js/package.json @@ -0,0 +1,29 @@ +{ + "name": "belt-js", + "version": "2.2.3", + "description": "BuckleScript compiled standard libraries", + "repository": { + "type": "git", + "url": "git+https://github.com/bucklescript/bucklescript.git" + }, + "keywords": [ + "ocaml", + "bucklescript", + "stdlib", + "functional programming" + ], + "author": { + "name": "Hongbo Zhang" + }, + "maintainers": [ + { + "name": "hongbo_zhang", + "email": "bobzhang1988@gmail.com" + } + ], + "license": "SEE LICENSE IN LICENSE", + "bugs": { + "url": "https://github.com/bucklescript/bucklescript/issues" + }, + "homepage": "https://github.com/bucklescript/bucklescript#readme" +} diff --git a/jscomp/core/js_packages_info.ml b/jscomp/core/js_packages_info.ml index 6416529ddb..206f2dc41e 100644 --- a/jscomp/core/js_packages_info.ml +++ b/jscomp/core/js_packages_info.ml @@ -238,7 +238,9 @@ let string_of_module_id else begin match module_system with | AmdJS | NodeJS | Es6 -> - dep_package_name // dep_path // js_file + (* HACK - TODO Replace belt-js upstream and not here *) + let upd_dep_package_name = if dep_package_name = "bs-platform" then "belt-js" else dep_package_name in + upd_dep_package_name // dep_path // js_file (** Note we did a post-processing when working on Windows *) | Es6_global | AmdJS_global -> diff --git a/package.json b/package.json index 85a385a06b..64ead0caa8 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,7 @@ { + "dependencies": { + "belt-js": "2.2.3" + }, "devDependencies": { "benchmark": "^2.1.4", "colors": "^1.1.2", @@ -29,7 +32,8 @@ "cover": "istanbul cover --report html ./node_modules/.bin/_mocha -- ./jscomp/test/**/*test.js && open coverage/index.html", "coverage": "istanbul cover ./node_modules/.bin/_mocha --report lcovonly -- './jscomp/test/*test.js'", "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info", - "postinstall": "node scripts/install.js" + "postinstall": "node scripts/install.js", + "prepublishOnly": "./scripts/prepublish.sh" }, "name": "bs-platform", "version": "2.2.3", diff --git a/scripts/prepublish.sh b/scripts/prepublish.sh new file mode 100755 index 0000000000..bf035b2617 --- /dev/null +++ b/scripts/prepublish.sh @@ -0,0 +1,21 @@ +#!/bin/sh +BELT_FOLDER_NAME="belt-js" +MAIN_PACKAGE_VERSION=$(node -p -e "require('./package.json').version") +BELT_IMPORTED_PACKAGE_VERSION=$(node -p -e "require('./package.json').dependencies['belt-js']") +BELT_PACKAGE_VERSION=$(node -p -e "require('./$BELT_FOLDER_NAME/package.json').version") + +echo "**Preparing and publishing belt-js...**\n" + +if [ $MAIN_PACKAGE_VERSION != $BELT_PACKAGE_VERSION ]; then + echo "Error: bs-platform and belt-js don't have the same version.\nbs-platform is $MAIN_PACKAGE_VERSION and belt-js is $BELT_PACKAGE_VERSION" +elif [ $BELT_IMPORTED_PACKAGE_VERSION != $BELT_PACKAGE_VERSION ]; then + echo "Error: the imported version of belt-js in bs-platform is not the latest.\nbs-platform is dependent on $BELT_IMPORTED_PACKAGE_VERSION and belt-js version is $BELT_PACKAGE_VERSION" +else + make && make install && \ + cd jscomp && cd ../belt-js && \ + mkdir -p ./lib/js && cp ../lib/js/* ./lib/js && \ + mkdir -p ./lib/amdjs && cp ../lib/amdjs/* ./lib/amdjs && \ + mkdir -p ./lib/es6 && cp ../lib/es6/* ./lib/es6 && \ + echo "Finished prepublishing $BELT_FOLDER_NAME, version $BELT_PACKAGE_VERSION" && \ + npm publish +fi