Skip to content

Commit

Permalink
GoogleChromeLabs#129 Draft - support for new fileHierarchy() function…
Browse files Browse the repository at this point in the history
… which adds a handle to the requested directory as well as the content of that directory
  • Loading branch information
reubenfirmin committed Nov 24, 2022
1 parent d30afb0 commit 1c1d614
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
.DS_Store
node_modules/
dist/

.idea
30 changes: 30 additions & 0 deletions src/file-hierarchy.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/**
* Copyright 2020 Google LLC
*
* Licensed 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.
*/
// @license © 2020 Google LLC. Licensed under the Apache License, Version 2.0.

// there is no legacy fallback possible for this since it changes the return type
const implementation = import('./fs-access/file-hierarchy.mjs');

/**
* Variant of (and largely delegates to) directory-open. Opens a directory from disk using the File System Access API.
* Includes a reference to the directory which was opened, and therefore is not backward compatible with
* `<input type webkitdirectory>`.
*
* @type { typeof import("../index").fileHierarchy }
*/
export async function fileHierarchy(...args) {
return (await implementation).default(...args);
}
40 changes: 40 additions & 0 deletions src/fs-access/file-hierarchy.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/**
* Copyright 2020 Google LLC
*
* Licensed 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.
*/
// @license © 2020 Google LLC. Licensed under the Apache License, Version 2.0.

import getFiles from './directory-open.mjs';

/**
* Variant of (and largely delegates to) directory-open. Opens a directory from disk using the File System Access API.
* Includes a reference to the directory which was opened, and therefore is not backward compatible with
* `<input type webkitdirectory>`.
*
* @type { typeof import("../index").fileHierarchy }
*/
export default async (options = {}) => {
options.recursive = options.recursive || false;
options.mode = options.mode || 'read';
const handle = await window.showDirectoryPicker({
id: options.id,
startIn: options.startIn,
mode: options.mode,
});
const dirResults = getFiles(options);
return {
currentDir: handle,
contents: dirResults,
};
};

0 comments on commit 1c1d614

Please sign in to comment.