// deno-fmt-ignore-file // deno-lint-ignore-file // Copyright Joyent and Node contributors. All rights reserved. MIT license. // Taken from Node 18.12.1 // This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually 'use strict'; const common = require('../common'); const dc = require('diagnostics_channel'); const assert = require('assert'); const { Channel } = dc; const input = { foo: 'bar' }; // Should not have named channel assert.ok(!dc.hasSubscribers('test')); // Individual channel objects can be created to avoid future lookups const channel = dc.channel('test'); assert.ok(channel instanceof Channel); // No subscribers yet, should not publish assert.ok(!channel.hasSubscribers); const subscriber = common.mustCall((message, name) => { assert.strictEqual(name, channel.name); assert.deepStrictEqual(message, input); }); // Now there's a subscriber, should publish channel.subscribe(subscriber); assert.ok(channel.hasSubscribers); // The ActiveChannel prototype swap should not fail instanceof assert.ok(channel instanceof Channel); // Should trigger the subscriber once channel.publish(input); // Should not publish after subscriber is unsubscribed assert.ok(channel.unsubscribe(subscriber)); assert.ok(!channel.hasSubscribers); // unsubscribe() should return false when subscriber is not found assert.ok(!channel.unsubscribe(subscriber)); assert.throws(() => { channel.subscribe(null); }, { code: 'ERR_INVALID_ARG_TYPE' });