Skip to content

Proposal to add bs-stdlib #2171

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 5 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -12,6 +12,9 @@ docs/*
docs/docson/*
!docs/docson/build-schema.json
site/
lib/amdjs
lib/es6
lib/js
.vscode/
.github/
odoc_gen
1 change: 1 addition & 0 deletions belt-js/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
lib/
23 changes: 23 additions & 0 deletions belt-js/LICENSE
Original file line number Diff line number Diff line change
@@ -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.
29 changes: 29 additions & 0 deletions belt-js/package.json
Original file line number Diff line number Diff line change
@@ -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": "[email protected]"
}
],
"license": "SEE LICENSE IN LICENSE",
"bugs": {
"url": "https://github.com/bucklescript/bucklescript/issues"
},
"homepage": "https://github.com/bucklescript/bucklescript#readme"
}
4 changes: 3 additions & 1 deletion jscomp/core/js_packages_info.ml
Original file line number Diff line number Diff line change
@@ -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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This really does seem like the wrong place to make the swap, and it also breaks -global module system users (of which I am one)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Happy to move it somewhere else, if you have suggestions. I'll try to fix the -global platform.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wish I could help, but I sadly haven't looked at the BuckleScript code much at all.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also thought about this package_name in bs_version, that gets generated from build_version. @bobzhang would that be better? I'm unsure if that'd break other things.

upd_dep_package_name // dep_path // js_file
(** Note we did a post-processing when working on Windows *)
| Es6_global
| AmdJS_global ->
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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",
21 changes: 21 additions & 0 deletions scripts/prepublish.sh
Original file line number Diff line number Diff line change
@@ -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