![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
oss-mariner
Advanced tools
A node.js library for analyzing open source library dependencies
A node.js library for analyzing open source library dependencies.
Mariner's goal is to help you to support the open source projects you rely upon by making it easy to get a list of the open issues in your dependencies.
Mariner takes an input list of GitHub repos, fetches details about them from GitHub, and outputs a file containing a list of issues for each project.
NOTE: This library is in the experimental stage, so expect breaking changes even if the version number does not indicate that.
The first couple alpha versions of Mariner only supported calls via GitHub's REST API. More
recently, we added the ability to invoke GitHub's GraphQL API. The GraphQL API is hundreds of
times faster, so the REST-related calls are now deprecated, and will be removed "soon". The
GraphQL approach is shown in the runExample.ts
example.
If you just want to USE Mariner, you don't need to do a git clone.
Instead, you'll create your own new node project, and install the oss-mariner package via npm:
npm install oss-mariner
You'll also need a GitHub token and a config file. (Keep reading for more info on these.)
npm init
to make it a node project.runExample.ts
into index.js
.
index.js
comment out the existing line that imports mariner.index.js
, uncomment the line saying how mariner would normally be imported.examples
and create two new files inside of it: exampleData.json
and config.json
. You can copy the contents of our examples into those new files or you can use the examples as a template for your own data and config choices. The exampleData.json
should contain the repos that you're interested in getting issues from. For more info on the format of this file, look atthe Input File Format section. More info on config.json can also be found below and the example files can be found here:
public
keywords from class members.implements Xxxx
from the FancyLogger class declaration.: string
).npm install oss-mariner
"type": "module"
to package.json
to allow using "import" rather than "require".export MARINER_GITHUB_TOKEN={Insert your GitHub token here}
. You will either have to do this once each time you restart your system, or else configure your system to do so automatically.node index.js
.generateHtml()
creates the html based on two parameters: maxIssuesAge
and issuesByDependency
maxIssueAge
defaults to 30 days, anything over 30 days won't get written, You can edit this number.<h3 class="dependency-name">facebook/jest</h3>
<table class="issue-list">
<tr class="issue-header-row">
<th>Title</th>
<th>Age</th>
</tr>
<tr class="issue-row">
<td class="issue-title">
<a href="https://github.com/facebook/jest/issues/12522"
>Rework asynchronous tests documentation</a>
</td>
<td class="issue-age">15 days</td>
<td class="issue-languages">JavaScript,CSS,Shell,Handlebars,Prolog</td>
</tr>
<tr class="issue-row">
<td class="issue-title">
<a href="https://github.com/facebook/jest/issues/12495">Use Admonitions on website</a>
</td>
<td class="issue-age">22 days</td>
<td class="issue-languages">JavaScript,CSS,TypeScript,Shell,Handlebars,Prolog</td>
</tr>
<tr class="issue-row">
<td class="issue-title">
<a href="https://github.com/facebook/jest/issues/12592"
>[Bug]: test `notify › does not report --notify flag` is flaky</a
>
</td>
<td class="issue-age">17 days</td>
<td class="issue-languages">JavaScript,CSS,TypeScript,Shell,Handlebars,Prolog</td>
</tr>
</table>
generateConfluenceMarkup()
creates the markup based on two parameters: maxIssuesAge
and issuesByDependency
maxIssueAge
defaults to 30 days, anything over 30 days won't get written, You can edit this number.h2. Updated: February 22, 2021, 5:38 PM PST
h3. babel/babel
||_Title_||_Age_||_Languages_||
|[all the core-js imports are removed|https://github.com/babel/babel/issues/12545]|62 days|Javascript|
h3. facebook/jest
||_Title_||_Age_||_Languages_||
|[Lost of context between tests when using dynamic ESM import|https://github.com/facebook/jest/issues/10944]|72 days|Typescript, Javascript|
generateGitHubMarkdown()
creates the markdown based on two parameters: maxIssuesAge
and issuesByDependency
maxIssueAge
defaults to 30 days, anything over 30 days won't get written, You can edit this number.## Updated: 2022-01-18T22:53:35.522Z
### babel/babel
|**Title**|**Age**|
|:----|:----|
|[[Bug]: Typescript plugin fails on named tuple positions where the name is a reserved word in JS|https://github.com/babel/babel/issues/13702]|147 days|Typescript|
|[[preset-env] all the core-js imports are removed|https://github.com/babel/babel/issues/12545]|392 days|
| [[Bug]: TypeError: Error while loading config - yield\* (intermediate value) is not iterable|https://github.com/babel/babel/issues/13462]|218 days|Typescript|
You can use our example config options as written, or customize the fields if you choose.
labelsToSearch
is an array of the labels you'd like Mariner to search for in the issues it will return. The defaults in our example are ones that will make it easy for someone to make a first contribution to a repo.inputFilePath
is accurate. If you followed the steps above and put exampleData.json
into a top-level folder called examples
, you won't have to change the value of this variable.outputFilePath
is the place you'd like the results written todaysAgoCreated
is for deciding how fresh you want the issues to be. If you only want issues that were created in the last week, then choose 7, for example.numberOfReposPerCall
: we recommend not changing this number. Unless you're getting an error from GitHub that your query string is too long, in which case try a smaller number.The input file is a JSON file in the format:
"https://api.github.com/repos/spring-projects/spring-framework"
: 19805,"square/retrofit": 5023
,examples/exampleData.json
for a complete example.The output file is a JSON file in the format:
{
"repository/name": [
{
"title": "Issue Title 1",
"createdAt": "2020-10-16T01:07:36Z",
"repositoryNameWithOwner": "repository/name",
"languages": ["JavaScript", "TypeScript", "CSS"],
"url": "https://github.com/repository/name/issues/65",
"updatedAt": "2020-10-16T01:07:36Z",
"labels": [
"Hacktoberfest",
"good first issue"
]
},
{
"title": "Issue Title 2",
"createdAt": "2020-10-12T22:37:17Z",
"repositoryNameWithOwner": "repository/name",
"languages": ["JavaScript"],
"url": "https://github.com/repository/name/issues/58",
"updatedAt": "2020-10-12T22:37:17Z",
"labels": [
"Hacktoberfest",
"good first issue"
]
}
],
"respository/second_name": [
{
"title": "Issue 102",
"createdAt": "2020-10-03T13:16:58Z",
"repositoryNameWithOwner": "respository/second_name",
"languages": ["JavaScript", "Rust"],
"url": "https://github.com/respository/second_name/issues/12137",
"updatedAt": "2020-10-03T13:16:58Z",
"labels": [
"claimed",
"good first issue",
"i: enhancement"
]
}
],
}
Please note that only the first 100 labels per issue will be fetched. If a single issue has over 100 labels, these will be excluded without any errors or warnings.
To run Mariner, you must create a token. The GitHub token must be a valid personal access token. It does not require any permissions beyond the default, so when you create it you can leave all the boxes unchecked. Be careful not to share your token with anyone. If it gets exposed, revoke it and create a replacement. See https://github.com/settings/tokens/new for how to create a token.
Mariner can be called from Javascript or from Typescript. You can see an example here: https://github.com/indeedeng/Mariner/blob/master/examples/runOldCode.ts
Mariner is in transition from the old way of accessing GitHub data (REST) to the new way (GraphQL)
To invoke mariner using the new GraphQL code, Invoke the finder()
, passing the
appropiate parameters in finder.findIssues()
you can see an example here:
https://github.com/indeedeng/Mariner/blob/master/examples/runExample.ts
If you are using the examples/runOldCode.ts file
, (using the old REST code that is very slow)
invoke the DependencyDetailsRetriever.run()
method, passing appropriate parameters. Please
see the examples/runOldCode.ts file
for more information.
We don't recommend using the abbreviated
feature.
It will omit entries that have fewer than a hard-coded number of projects that depend on them.
The Open Source team at Indeed, who can be reached at opensource@indeed.com.
Read the Code of Conduct and Contact the Maintainers before making any changes or a PR. If an issue doesn’t already exist that describes the change you want to make, we recommend creating one. If an issue does exist, please comment on it saying that you are starting to work on it, to avoid duplicating effort.
Clone the repository from GitHub.
Run npm ci
to install the libraries used in the project. Read more about npm ci here.
Follow the instructions in examples/runExample.ts
or examples/runOldCode.ts
to configure the input and output files. NOTE: An example input file is included, in the examples directory.
Run nvm use
to use the appropiate version of Node specified in the .nvmrc file.
Run npm run build
to compile the code to Javascript.
Run node dist/examples/runExample.js
(to use GraphQL) or node dist/examples/runOldCode.ts
(to use REST calls), to run the example program. It requires internet access, since it calls the GitHub API. It will take a couple minutes to complete. Some of the output includes the word "ERROR", so don't panic.
Ensure to lint your code by running npm run lint
before submitting any code for review. Either manually fix the errors or run npm run lint:fix
to automatically fix any errors.
Husky is set up to run linting checks pre-commit which should prevent being able to commit linting errors; however, There is a bug in husky where occasionally the hooks won't run in an IDE.
You should have local copies of both the oss-mariner project and the project that will include it.
In the oss-mariner project, run npm link
. This will "publish" oss-mariner locally on your
computer. Then in the other project, run npm link oss-mariner
.
This will replace the public npm version of oss-mariner with your local copy.
To undo run npm unlink --no-save oss-mariner
on your project’s directory to remove the local symlink.
To remove global symlink go to oss-mariner project and run npm unlink
The Open Source team at Indeed, who can be reached at opensource@indeed.com.
If you are a maintainer, you can follow these steps to publish a new version of the package:
nvm use
to use the appropiate version of Node specified in the .nvmrc filenpm install
to update package-lock.json
npm run lint
, then run npm test
, then run npm run build
to make sure there are no errorsnpm publish --dry-run
npm login
npm publish
Releases
Draft a new release
buttonv2.1.3
Publish release
buttonThis project is governed by the Contributor Covenant v 1.4.1.
This project uses the Apache 2.0 license.
FAQs
A node.js library for analyzing open source library dependencies
The npm package oss-mariner receives a total of 21 weekly downloads. As such, oss-mariner popularity was classified as not popular.
We found that oss-mariner demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.