blob: bf7f7f6cef634cdcebb76c197a29fe27f0895c75 [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import type { TaskEntryServices } from './ports.js';
export { TaskEntryServicesProvider } from './services-context.js';
export {
TaskEntryRoot,
TaskEntryWorkspacePickerConsumer,
useTaskEntryHostModel,
} from './ui/task-entry-provider.js';
export type { TaskEntryShellProjection } from './ui/task-entry-provider.js';
export {
useTaskEntryController,
type TaskEntryController,
} from './controller/use-task-entry-controller.js';
export {
resolveProjectSelection,
selectAvailableProfile,
taskEntryDraftKey,
} from './model/task-entry-selection.js';
export { resolveWorkBoardStartTarget } from './model/work-board-target.js';
export { folderOpenFailure } from './model/folder-open-failure.js';
export type {
TaskEntryCatalog,
TaskEntryFolderOpenResult,
TaskEntryHost,
TaskEntryServices,
} from './ports.js';
const noopSubscription = (): (() => void) => () => undefined;
export function createFakeTaskEntryServices(
overrides: { [Service in keyof TaskEntryServices]?: Partial<TaskEntryServices[Service]> } = {},
): TaskEntryServices {
return {
catalog: {
getCatalog: async () => ({ defaultProfileId: 'local', hosts: [] }),
subscribeChanges: noopSubscription,
addProject: async () => ({ ok: false, reason: 'cancelled' }),
restoreProject: async () => ({ ok: false, reason: 'cancelled' }),
relinkProject: async () => ({ ok: false, reason: 'cancelled' }),
renameProject: async () => undefined,
archiveProject: async () => undefined,
...overrides.catalog,
},
sessions: {
relocateWorkspace: async () => ({ ok: false, reason: 'operation_unavailable' }),
relocateToDedicatedDirectory: async () => ({ ok: false, reason: 'operation_unavailable' }),
...overrides.sessions,
},
folders: {
openProjectFolder: async () => ({ kind: 'opened' }),
openWorkspaceFolder: async () => ({ kind: 'opened' }),
...overrides.folders,
},
};
}