mirror of
https://github.com/aspnet/JavaScriptServices.git
synced 2025-12-23 01:58:29 +00:00
Update domain-task to export baseUrl from 'main' instead of only 'fetch'. Goal is to avoid Webpack detecting dependency on isomorphic-fetch unless you're actually using it.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "domain-task",
|
"name": "domain-task",
|
||||||
"version": "2.0.1",
|
"version": "2.0.2",
|
||||||
"description": "Tracks outstanding operations for a logical thread of execution",
|
"description": "Tracks outstanding operations for a logical thread of execution",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
import * as url from 'url';
|
import * as url from 'url';
|
||||||
import * as domain from 'domain';
|
import * as domain from 'domain';
|
||||||
import * as domainContext from 'domain-context';
|
import * as domainContext from 'domain-context';
|
||||||
|
import { baseUrl } from './main';
|
||||||
const isomorphicFetch = require('isomorphic-fetch');
|
const isomorphicFetch = require('isomorphic-fetch');
|
||||||
const isNode = typeof process === 'object' && process.versions && !!process.versions.node;
|
const isNode = typeof process === 'object' && process.versions && !!process.versions.node;
|
||||||
|
|
||||||
// Not using a symbol, because this may need to run in a version of Node.js that doesn't support them
|
|
||||||
const domainTaskStateKey = '__DOMAIN_TASK_INTERNAL_FETCH_BASEURL__DO_NOT_REFERENCE_THIS__';
|
|
||||||
let noDomainBaseUrl: string;
|
|
||||||
|
|
||||||
function issueRequest(baseUrl: string, req: string | Request, init?: RequestInit): Promise<any> {
|
function issueRequest(baseUrl: string, req: string | Request, init?: RequestInit): Promise<any> {
|
||||||
// Resolve relative URLs
|
// Resolve relative URLs
|
||||||
if (baseUrl) {
|
if (baseUrl) {
|
||||||
@@ -70,16 +67,6 @@ export function fetch(url: string | Request, init?: RequestInit): Promise<any> {
|
|||||||
return issueRequest(baseUrl(), url, init);
|
return issueRequest(baseUrl(), url, init);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function baseUrl(url?: string): string {
|
// Re-exporting baseUrl from this module for back-compatibility only
|
||||||
if (url) {
|
// Newer code that wants to access baseUrl should use the version exported from the root of this package
|
||||||
if (domain.active) {
|
export { baseUrl } from './main';
|
||||||
// There's an active domain (e.g., in Node.js), so associate the base URL with it
|
|
||||||
domainContext.set(domainTaskStateKey, url);
|
|
||||||
} else {
|
|
||||||
// There's no active domain (e.g., in browser), so there's just one shared base URL
|
|
||||||
noDomainBaseUrl = url;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return domain.active ? domainContext.get(domainTaskStateKey) : noDomainBaseUrl;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
// This file determines the top-level package exports
|
// This file determines the top-level package exports
|
||||||
export { addTask, run } from './main';
|
export { addTask, run, baseUrl } from './main';
|
||||||
export { fetch } from './fetch';
|
export { fetch } from './fetch';
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
import * as domain from 'domain';
|
import * as domain from 'domain';
|
||||||
import * as domainContext from 'domain-context';
|
import * as domainContext from 'domain-context';
|
||||||
|
|
||||||
|
// Not using symbols, because this may need to run in a version of Node.js that doesn't support them
|
||||||
const domainTasksStateKey = '__DOMAIN_TASKS';
|
const domainTasksStateKey = '__DOMAIN_TASKS';
|
||||||
|
const domainTaskBaseUrlStateKey = '__DOMAIN_TASK_INTERNAL_FETCH_BASEURL__DO_NOT_REFERENCE_THIS__';
|
||||||
|
|
||||||
|
let noDomainBaseUrl: string;
|
||||||
|
|
||||||
export function addTask(task: PromiseLike<any>) {
|
export function addTask(task: PromiseLike<any>) {
|
||||||
if (task && domain.active) {
|
if (task && domain.active) {
|
||||||
@@ -57,6 +62,20 @@ export function run<T>(codeToRun: () => T, completionCallback: (error: any) => v
|
|||||||
return synchronousResult;
|
return synchronousResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function baseUrl(url?: string): string {
|
||||||
|
if (url) {
|
||||||
|
if (domain.active) {
|
||||||
|
// There's an active domain (e.g., in Node.js), so associate the base URL with it
|
||||||
|
domainContext.set(domainTaskBaseUrlStateKey, url);
|
||||||
|
} else {
|
||||||
|
// There's no active domain (e.g., in browser), so there's just one shared base URL
|
||||||
|
noDomainBaseUrl = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return domain.active ? domainContext.get(domainTaskBaseUrlStateKey) : noDomainBaseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
interface DomainTasksState {
|
interface DomainTasksState {
|
||||||
numRemainingTasks: number;
|
numRemainingTasks: number;
|
||||||
hasIssuedSuccessCallback: boolean;
|
hasIssuedSuccessCallback: boolean;
|
||||||
|
|||||||
Reference in New Issue
Block a user