Compare commits

..

No commits in common. "master" and "v3.3.0" have entirely different histories.

20 changed files with 128 additions and 311 deletions

36
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,36 @@
<!--
- Please ask questions at https://groups.google.com/forum/#!forum/loopbackjs or
https://gitter.im/strongloop/loopback
- Immediate support is available through our subscription plans, see
https://strongloop.com/api-connect-faqs/
-->
### Bug or feature request
<!--
Mark your choice with an "x" (eg. [x], NOT [*]).
-->
- [ ] Bug
- [ ] Feature request
### Description of feature (or steps to reproduce if bug)
### Link to sample repo to reproduce issue (if bug)
### Expected result
### Actual result (if bug)
### Additional information (Node.js version, LoopBack version, etc)

View File

@ -1,50 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
labels: bug
---
<!-- 🚨 STOP 🚨 STOP 🚨 STOP 🚨
HELP US HELP YOU, PLEASE
- Do a quick search to avoid duplicate issues
- Provide as much information as possible (reproduction sandbox, use case for features, etc.)
- Consider using a more suitable venue for questions such as Stack Overflow, Gitter, etc.
Please fill in the *entire* template below.
-->
## Steps to reproduce
<!-- Describe how to reproduce the issue -->
## Current Behavior
<!-- Describe the observed result -->
## Expected Behavior
<!-- Describe what did you expect instead, what is the desired outcome? -->
## Link to reproduction sandbox
<!--
See https://loopback.io/doc/en/contrib/Reporting-issues.html#loopback-3x-bugs
Note: Failure to provide a sandbox application for reproduction purposes will result in the issue being closed.
-->
## Additional information
<!--
Copy+paste the output of these two commands:
node -e 'console.log(process.platform, process.arch, process.versions.node)'
npm ls --prod --depth 0 | grep loopback
-->
## Related Issues
<!-- Did you find other bugs that looked similar? -->
_See [Reporting Issues](http://loopback.io/doc/en/contrib/Reporting-issues.html) for more tips on writing good issues_

View File

@ -1,25 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
labels: feature
---
## Suggestion
<!-- A summary of what you'd like to see added or changed -->
## Use Cases
<!--
What do you want to use this for?
What shortcomings exist with current approaches?
-->
## Examples
<!-- Show how this would be used and what the behavior would be -->
## Acceptance criteria
TBD - will be filled by the team.

View File

@ -1,27 +0,0 @@
---
name: Question
about: The issue tracker is not for questions. Please use Stack Overflow or other resources for help.
labels: question
---
<!-- 🚨 STOP 🚨 STOP 🚨 STOP 🚨
THE ISSUE TRACKER IS NOT FOR QUESTIONS.
DO NOT CREATE A NEW ISSUE TO ASK A QUESTION.
Please use one of the following resources for help:
**Questions**
- https://stackoverflow.com/tags/loopbackjs
- https://groups.google.com/forum/#!forum/loopbackjs
- https://gitter.im/strongloop/loopback
**Immediate support**
- https://strongloop.com/api-connect-faqs/
- https://strongloop.com/node-js/subscription-plans/
-->

View File

@ -1,11 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: Report a security vulnerability
url: https://loopback.io/doc/en/contrib/Reporting-issues.html#security-issues
about: Do not report security vulnerabilities using GitHub issues. Please send an email to `reachsl@us.ibm.com` instead.
- name: Get help on StackOverflow
url: https://stackoverflow.com/tags/loopbackjs
about: Please ask and answer questions on StackOverflow.
- name: Join our mailing list
url: https://groups.google.com/forum/#!forum/loopbackjs
about: You can also post your question to our mailing list.

View File

@ -1,18 +1,24 @@
### Description
#### Related issues
<!--
Please provide a high-level description of the changes made by your pull request.
Please use the following link syntaxes:
Include references to all related GitHub issues and other pull requests, for example:
Fixes #123
Implements #254
See also #23
- #49 (to reference issues in the current repository)
- strongloop/loopback#49 (to reference issues in another repository)
-->
## Checklist
- None
👉 [Read and sign the CLA (Contributor License Agreement)](https://cla.strongloop.com/agreements/strongloop/loopback-context) 👈
### Checklist
<!--
Please mark your choice with an "x" (i.e. [x], see
https://github.com/blog/1375-task-lists-in-gfm-issues-pulls-comments)
-->
- [ ] `npm test` passes on your machine
- [ ] New tests added or existing tests modified to cover all changes
- [ ] Code conforms with the [style guide](https://loopback.io/doc/en/contrib/style-guide-es6.html)
- [ ] Commit messages are following our [guidelines](https://loopback.io/doc/en/contrib/git-commit-messages.html)
- [ ] Code conforms with the [style
guide](http://loopback.io/doc/en/contrib/style-guide.html)

24
.github/stale.yml vendored
View File

@ -1,24 +0,0 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 14
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- security
- critical
- p1
- major
- good first issue
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: >
This issue has been closed due to continued inactivity. Thank you for your understanding.
If you believe this to be in error, please contact one of the code owners,
listed in the `CODEOWNERS` file at the top-level of this repository.

View File

@ -1,6 +1,7 @@
sudo: false
language: node_js
node_js:
- "4"
- "6"
- "7"
- "8"
- "10"
- "12"

View File

@ -1,47 +1,3 @@
2021-01-19, Version 3.5.2
=========================
* chore: update LTS status to End-of-Life (Rifa Achrinza)
2020-03-06, Version 3.5.1
=========================
* Update LTS status in README (Miroslav Bajtoš)
2020-02-17, Version 3.5.0
=========================
* Add support for Node.js 12 (Ahmet Cetin)
* chore: enable stalebot (Diana Lau)
* chore: improve issue and PR templates (Nora)
* Drop support for Node.js 6.x (Miroslav Bajtoš)
* chore: update copyrights years (Agnes Lin)
2019-01-02, Version 3.4.0
=========================
* Travis: enable Node.js 10.x (Miroslav Bajtoš)
* Node version ^10.14 added to engines list (Ahmet Cetin)
* add lts annoucement (jannyHou)
* Upgrade dependecies, fix new linter errors (Miroslav Bajtoš)
* Drop support for Node.js 4.x, 5.x and 7.x (Miroslav Bajtoš)
* Create Issue and PR Templates (#36) (Sakib Hasan)
* Add CODEOWNERS file (Diana Lau)
2017-07-21, Version 3.3.0
=========================

View File

@ -1,6 +0,0 @@
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners,
# the last matching pattern has the most precendence.
# Core team members from IBM
* @bajtos @josieusa

View File

@ -1,17 +1,5 @@
# loopback-context
**⚠️ LoopBack 3 has reached end of life. We are no longer accepting pull requests or providing
support for community users. The only exception is fixes for critical bugs and security
vulnerabilities provided as part of support for IBM API Connect customers. (See
[Module Long Term Support Policy](#module-long-term-support-policy) below.)**
We urge all LoopBack 3 users to migrate their applications to LoopBack 4 as
soon as possible. Refer to our
[Migration Guide](https://loopback.io/doc/en/lb4/migration-overview.html)
for more information on how to upgrade.
## Overview
Current context for LoopBack applications, based on cls-hooked.
## WARNING
@ -44,7 +32,7 @@ $ npm install --save loopback-context cls-hooked
```
Make sure you are running on a Node.js version supported by this module
(`^4.5`, `^5.10`, `^6.0`, `^7.0`, `^8.2.1` or `^10.14`). When installing, check the output of `npm install`
(`^4.5`, `^5.10`, `^6.0`, `^7.0` or `^8.2.1`). When installing, check the output of `npm install`
and make sure there are no `engine` related warnings.
## Usage
@ -242,14 +230,3 @@ module.exports = function(YourModel) {
...
};
```
## Module Long Term Support Policy
This module adopts the [Module Long Term Support (LTS)](http://github.com/CloudNativeJS/ModuleLTS) policy, with the following End Of Life (EOL) dates:
| Version | Status | Published | EOL |
| ------- | --------------- | --------- | -------- |
| 3.x | End-of-Life | Jan 2017 | Dec 2020 |
| 1.x | End-of-Life | Aug 2016 | Apr 2019 |
Learn more about our LTS plan in the [docs](https://loopback.io/doc/en/contrib/Long-term-support.html).

View File

@ -1,5 +1,5 @@
// Copyright IBM Corp. 2016. All Rights Reserved.
// Node module: loopback-context
// Copyright IBM Corp. 2015. All Rights Reserved.
// Node module: loopback-context-cls
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT

View File

@ -1,4 +1,4 @@
// Copyright IBM Corp. 2016. All Rights Reserved.
// Copyright IBM Corp. 2014,2016. All Rights Reserved.
// Node module: loopback-context
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT

View File

@ -1,9 +1,9 @@
{
"name": "loopback-context",
"version": "3.5.2",
"version": "3.3.0",
"description": "Current context for LoopBack applications, based on cls-hooked",
"engines": {
"node": "^8.2.1 || ^10.14 || ^12.15"
"node": "^4.5 || ^5.10 || ^6.0 || ^7.0 || ^8.2.1"
},
"keywords": [
"StrongLoop",
@ -27,14 +27,13 @@
},
"devDependencies": {
"async-1.5.2": "file:./test/stub-modules/async-1.5.2",
"chai": "^4.1.2",
"dirty-chai": "^2.0.1",
"eslint": "^5.0.1",
"eslint-config-loopback": "^10.0.0",
"chai": "^3.5.0",
"dirty-chai": "^1.2.2",
"eslint": "^3.14.1",
"eslint-config-loopback": "^8.0.0",
"loopback": "^3.0.0",
"mocha": "^5.2.0",
"supertest": "^3.1.0",
"mocha": "^2.5.3",
"supertest": "^1.2.0",
"when-3.7.7": "file:./test/stub-modules/when-3.7.7"
},
"author": "IBM Corp."
}
}

View File

@ -1,5 +1,5 @@
// Copyright IBM Corp. 2016,2017. All Rights Reserved.
// Node module: loopback-context
// Copyright IBM Corp. 2015,2016. All Rights Reserved.
// Node module: loopback-context-cls
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT

View File

@ -1,5 +1,5 @@
// Copyright IBM Corp. 2016. All Rights Reserved.
// Node module: loopback-context
// Copyright IBM Corp. 2014,2016. All Rights Reserved.
// Node module: loopback-context-cls
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT

View File

@ -1,8 +1,3 @@
// Copyright IBM Corp. 2016. All Rights Reserved.
// Node module: loopback-context
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
'use strict';
var chai = require('chai');

View File

@ -1,5 +1,5 @@
// Copyright IBM Corp. 2016,2018. All Rights Reserved.
// Node module: loopback-context
// Copyright IBM Corp. 2013,2016. All Rights Reserved.
// Node module: loopback-context-cls
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
@ -52,7 +52,7 @@ describe('LoopBack Context', function() {
TestModel.test = function(inst, cb) {
var tmpCtx = LoopBackContext.getCurrentContext();
if (tmpCtx) tmpCtx.set('data', 'a value stored in context');
if (process.domain) cb = process.domain.bind(cb); // IMPORTANT
if (process.domain) cb = process.domain.bind(cb); // IMPORTANT
runInOtherDomain(cb);
};
@ -106,53 +106,53 @@ describe('LoopBack Context', function() {
// https://gist.github.com/marlonkjoseph/f42f3c71f746896a0d4b7279a34ea753
// Heavily edited by others
it('keeps context when using waterfall() from async 1.5.2',
function(done) {
LoopBackContext.runInContext(function() {
function(done) {
LoopBackContext.runInContext(function() {
// Trigger async waterfall callbacks
asyncV152.waterfall([
function pushToContext(next) {
var ctx = LoopBackContext.getCurrentContext();
expect(ctx).is.an('object');
ctx.set('test-key', 'test-value');
next();
},
function pullFromContext(next) {
var ctx = LoopBackContext.getCurrentContext();
expect(ctx).is.an('object');
var testValue = ctx && ctx.get('test-key', 'test-value');
next(null, testValue);
},
function verify(testValue, next) {
expect(testValue).to.equal('test-value');
next();
},
], done);
});
asyncV152.waterfall([
function pushToContext(next) {
var ctx = LoopBackContext.getCurrentContext();
expect(ctx).is.an('object');
ctx.set('test-key', 'test-value');
next();
},
function pullFromContext(next) {
var ctx = LoopBackContext.getCurrentContext();
expect(ctx).is.an('object');
var testValue = ctx && ctx.get('test-key', 'test-value');
next(null, testValue);
},
function verify(testValue, next) {
expect(testValue).to.equal('test-value');
next();
},
], done);
});
});
it('handles concurrent then() calls with when v3.7.7 promises & bind option',
function() {
return Promise.all([
runWithPushedValue('test-value-1', {bind: true}),
runWithPushedValue('test-value-2', {bind: true}),
])
.then(function verify(values) {
var failureCount = getFailureCount(values);
expect(failureCount).to.equal(0);
});
function() {
return Promise.all([
runWithPushedValue('test-value-1', {bind: true}),
runWithPushedValue('test-value-2', {bind: true}),
])
.then(function verify(values) {
var failureCount = getFailureCount(values);
expect(failureCount).to.equal(0);
});
});
it('fails once without bind option and when v3.7.7 promises',
function() {
return Promise.all([
runWithPushedValue('test-value-3'),
runWithPushedValue('test-value-4'),
])
.then(function verify(values) {
var failureCount = getFailureCount(values);
expect(failureCount).to.equal(1);
});
function() {
return Promise.all([
runWithPushedValue('test-value-3'),
runWithPushedValue('test-value-4'),
])
.then(function verify(values) {
var failureCount = getFailureCount(values);
expect(failureCount).to.equal(1);
});
});
var timeout = 100;
@ -191,23 +191,23 @@ describe('LoopBack Context', function() {
runWithRequestId('test-value-5', true),
runWithRequestId('test-value-6', true),
])
.then(function verify(values) {
var failureCount = getFailureCount(values);
expect(failureCount).to.equal(0);
});
.then(function verify(values) {
var failureCount = getFailureCount(values);
expect(failureCount).to.equal(0);
});
});
it('fails & mixes up ctx among requests in mw chains if next() cb is unbound',
function() {
return Promise.all([
runWithRequestId('test-value-7'),
runWithRequestId('test-value-8'),
])
.then(function verify(values) {
var failureCount = getFailureCount(values);
expect(failureCount).to.equal(1);
});
function() {
return Promise.all([
runWithRequestId('test-value-7'),
runWithRequestId('test-value-8'),
])
.then(function verify(values) {
var failureCount = getFailureCount(values);
expect(failureCount).to.equal(1);
});
});
function runWithRequestId(pushedValue, bindNextCb) {
return new Promise(function chainExecutor(outerResolve, reject) {

View File

@ -1,7 +1,2 @@
// Copyright IBM Corp. 2017. All Rights Reserved.
// Node module: loopback-context
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
'use strict';
module.exports = require('async');

View File

@ -1,7 +1,2 @@
// Copyright IBM Corp. 2017. All Rights Reserved.
// Node module: loopback-context
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
'use strict';
module.exports = require('when');