Skip to content

Commit 491558a

Browse files
authored
Add compatibility for v5 and update dependencies (#167)
1 parent f3183a3 commit 491558a

File tree

10 files changed

+3822
-3834
lines changed

10 files changed

+3822
-3834
lines changed

lib/adapters/redis.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module.exports = config => {
1313
if (!redisClient && typeof db !== 'undefined') {
1414
debug(`Setting up Redis client for db: ${db}`);
1515
}
16-
16+
1717
const pub = redisClient || redis.createClient(db, config.redisOptions);
1818
const sub = pub.duplicate();
1919

lib/core.js

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
11
const debug = require('debug')('feathers-sync');
2-
const { hooks, _ } = require('@feathersjs/commons');
2+
const feathers = require('@feathersjs/feathers');
3+
const { _ } = require('@feathersjs/commons');
34
const SYNC = Symbol('feathers-sync/enabled');
45

6+
const defaultEvents = ['created', 'updated', 'removed', 'patched'];
7+
const getServiceOptions = service => {
8+
if (typeof feathers.getServiceOptions === 'function') {
9+
return feathers.getServiceOptions(service);
10+
}
11+
12+
return {};
13+
};
14+
515
module.exports = app => {
616
if (app[SYNC]) {
717
return;
@@ -30,17 +40,20 @@ module.exports = app => {
3040

3141
app.mixins.push((service, path) => {
3242
if (typeof service._emit !== 'function') {
43+
const { events: customEvents = service.events } = getServiceOptions(service);
44+
const events = defaultEvents.concat(customEvents);
45+
3346
service._emit = service.emit;
3447
service.emit = function (event, data, ctx) {
3548
const disabled = ctx && ctx[SYNC] === false;
3649

37-
if (!service._serviceEvents.includes(event) || disabled) {
50+
if (!events.includes(event) || disabled) {
3851
debug(`Passing through non-service event '${path} ${event}'`);
3952
return this._emit(event, data, ctx);
4053
}
4154

42-
const context = hooks.isHookObject(ctx)
43-
? _.omit(ctx, 'app', 'service')
55+
const context = ctx && (ctx.app === app || ctx.service === service)
56+
? _.omit(ctx, 'app', 'service', 'self')
4457
: ctx;
4558

4659
debug(`Sending sync-out event '${path} ${event}'`);

package-lock.json

Lines changed: 3770 additions & 3801 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,26 +44,27 @@
4444
"src": "src"
4545
},
4646
"dependencies": {
47-
"amqp-connection-manager": "^3.2.1",
48-
"amqplib": "^0.6.0",
47+
"amqp-connection-manager": "^3.2.2",
48+
"amqplib": "^0.8.0",
4949
"debug": "^4.3.1",
50-
"lodash": "^4.17.20",
50+
"lodash": "^4.17.21",
5151
"nats": "^1.4.12",
52-
"redis": "^3.0.2"
52+
"redis": "^3.1.2"
5353
},
5454
"devDependencies": {
55-
"@feathersjs/feathers": "^4.5.11",
55+
"@feathersjs/feathers": "^5.0.0-pre.5",
5656
"@semantic-release/commit-analyzer": "^8.0.1",
57-
"@semantic-release/npm": "^7.0.10",
58-
"@semantic-release/release-notes-generator": "^9.0.1",
59-
"@types/node": "^14.14.22",
60-
"bson": "^4.2.2",
61-
"dtslint": "^4.0.6",
62-
"mocha": "^8.2.1",
57+
"@semantic-release/npm": "^7.1.3",
58+
"@semantic-release/release-notes-generator": "^9.0.3",
59+
"@types/node": "^15.12.5",
60+
"bson": "^4.4.0",
61+
"dtslint": "^4.1.0",
62+
"mocha": "^9.0.1",
63+
"npm-check-updates": "^11.7.1",
6364
"nyc": "^15.1.0",
64-
"semantic-release": "^17.3.7",
65-
"semistandard": "^16.0.0",
66-
"typescript": "^4.1.3"
65+
"semantic-release": "^17.4.4",
66+
"semistandard": "^16.0.1",
67+
"typescript": "^4.3.4"
6768
},
6869
"mocha": {
6970
"timeout": 30000,

test/adapters/amqp.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ describe('feathers-sync AMQP tests', () => {
1414
before(async () => {
1515
app1 = createApp();
1616
await app1.sync.ready;
17-
17+
1818
app2 = createApp();
1919
await app2.sync.ready;
2020

@@ -36,7 +36,7 @@ describe('feathers-sync AMQP tests', () => {
3636
assert.ok(context);
3737
assert.deepStrictEqual(context.result, data);
3838
assert.strictEqual(context.method, 'create');
39-
assert.strictEqual(context.type, 'after');
39+
assert.strictEqual(context.type, null);
4040
assert.strictEqual(context.service, app.service('todo'));
4141
assert.strictEqual(context.app, app);
4242

test/adapters/nats.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ describe('feathers-sync NATS tests', () => {
1212
before(async () => {
1313
app1 = createApp();
1414
await app1.sync.ready;
15-
15+
1616
app2 = createApp();
1717
await app2.sync.ready;
1818

@@ -34,7 +34,7 @@ describe('feathers-sync NATS tests', () => {
3434
assert.ok(context);
3535
assert.deepStrictEqual(context.result, data);
3636
assert.strictEqual(context.method, 'create');
37-
assert.strictEqual(context.type, 'after');
37+
assert.strictEqual(context.type, null);
3838
assert.strictEqual(context.service, app.service('todo'));
3939
assert.strictEqual(context.app, app);
4040

test/adapters/redis.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ describe('feathers-sync Redis tests', () => {
3434
assert.ok(context);
3535
assert.deepStrictEqual(context.result, data);
3636
assert.strictEqual(context.method, 'create');
37-
assert.strictEqual(context.type, 'after');
37+
assert.strictEqual(context.type, null);
3838
assert.strictEqual(context.service, app.service('todo'));
3939
assert.strictEqual(context.app, app);
4040

test/core.test.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@ describe('feathers-sync core tests', () => {
3131
path: 'todo',
3232
data: message,
3333
context: {
34-
arguments: [message],
34+
arguments: [message, {}],
3535
data: message,
3636
params: {},
37-
type: 'after',
37+
type: null,
3838
method: 'create',
39+
event: 'created',
3940
path: 'todo',
4041
result: message
4142
}
@@ -126,10 +127,14 @@ describe('feathers-sync core tests', () => {
126127
});
127128
});
128129

129-
it('sync-in does nothing for invalid event (path)', () => {
130-
app.emit('sync-in', {
131-
event: 'something',
132-
path: 'todos'
133-
});
130+
it('sync-in fails for invalid event (path)', () => {
131+
try {
132+
app.emit('sync-in', {
133+
event: 'something',
134+
path: 'todos'
135+
});
136+
} catch (error) {
137+
assert.strictEqual(error.message, 'Can not find service \'todos\'');
138+
}
134139
});
135140
});

types/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Application } from "@feathersjs/feathers";
22

3-
// TypeScript Version: 3.0
3+
// TypeScript Version: 4.0
44
export interface SyncOptions {
55
key?: string;
66
uri: string;

types/index.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import feathers from '@feathersjs/feathers';
1+
import { feathers } from '@feathersjs/feathers';
22
import sync, { redis } from 'feathers-sync';
33

44
const app = feathers();

0 commit comments

Comments
 (0)