diff --git a/apps/toolbox/src/main-page.xml b/apps/toolbox/src/main-page.xml
index 152bbd68f6..80fc6b3196 100644
--- a/apps/toolbox/src/main-page.xml
+++ b/apps/toolbox/src/main-page.xml
@@ -6,14 +6,15 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/apps/toolbox/src/pages/fs.ts b/apps/toolbox/src/pages/fs.ts
new file mode 100644
index 0000000000..8dfee7e375
--- /dev/null
+++ b/apps/toolbox/src/pages/fs.ts
@@ -0,0 +1,14 @@
+import { EventData, Page, knownFolders, path, File } from '@nativescript/core';
+import { open } from '@nativescript/core/file-system/v2';
+let page: Page;
+
+export function navigatingTo(args: EventData) {
+ page = args.object;
+}
+
+export function openRandomTmp() {
+ File.fromPath(path.join(knownFolders.temp().path, 'random.txt'));
+ open(path.join(knownFolders.temp().path, 'random.txt'), (error, fd) => {
+ console.info('openRandomTmp', error, fd);
+ });
+}
diff --git a/apps/toolbox/src/pages/fs.xml b/apps/toolbox/src/pages/fs.xml
new file mode 100644
index 0000000000..5292f4ce8a
--- /dev/null
+++ b/apps/toolbox/src/pages/fs.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/core/file-system/v2/constants/index.android.ts b/packages/core/file-system/v2/constants/index.android.ts
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/core/file-system/v2/constants/index.d.ts b/packages/core/file-system/v2/constants/index.d.ts
new file mode 100644
index 0000000000..241610c782
--- /dev/null
+++ b/packages/core/file-system/v2/constants/index.d.ts
@@ -0,0 +1,176 @@
+/**
+ * Flag indicating to open a file for read-only access.
+ */
+export const O_RDONLY;
+/**
+ * Flag indicating to open a file for write-only access.
+ */
+export const O_WRONLY;
+/**
+ * Flag indicating to open a file for read-write access.
+ */
+export const O_RDWR;
+/**
+ * Flag indicating to create the file if it does not already exist.
+ */
+export const O_CREAT;
+/**
+ * Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists.
+ */
+export const O_EXCL;
+/**
+ * Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one).
+ */
+export const O_NOCTTY;
+/***
+ * Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero.
+ */
+export const O_TRUNC;
+/**
+ * Flag indicating that data will be appended to the end of the file.
+ */
+export const O_APPEND;
+/**
+ * Flag indicating that the open should fail if the path is not a directory.
+ */
+export const O_DIRECTORY;
+/**
+ * Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only.
+ */
+export const O_NOATIME;
+/**
+ * Flag indicating that the open should fail if the path is a symbolic link.
+ */
+export const O_NOFOLLOW;
+/**
+ * Flag indicating that the file is opened for synchronized I/O with write operations waiting for file integrity.
+ */
+export const O_SYNC;
+/**
+ * Flag indicating that the file is opened for synchronized I/O with write operations waiting for data integrity.
+ */
+export const O_DSYNC;
+/**
+ * Flag indicating to open the symbolic link itself rather than the resource it is pointing to.
+ */
+export const O_SYMLINK;
+/**
+ * When set, an attempt will be made to minimize caching effects of file I/O.
+ */
+export const O_DIRECT;
+/**
+ * Flag indicating to open the file in nonblocking mode when possible.
+ */
+export const O_NONBLOCK;
+
+/**
+ * Flag indicating that the file is visible to the calling process. This is useful for determining if a file exists, but says nothing about rwx permissions. Default if no mode is specified.
+ */
+export const F_OK;
+/**
+ * Flag indicating that the file can be read by the calling process.
+ */
+export const R_OK;
+/**
+ * Flag indicating that the file can be written by the calling process.
+ */
+export const W_OK;
+/**
+ * Flag indicating that the file can be executed by the calling process.
+ */
+export const X_OK;
+
+/**
+ * If present, the copy operation will fail with an error if the destination path already exists.
+ */
+export const COPYFILE_EXCL;
+/**
+ * If present, the copy operation will attempt to create a copy-on-write reflink. If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used.
+ */
+export const COPYFILE_FICLONE;
+/**
+ * If present, the copy operation will attempt to create a copy-on-write reflink. If the underlying platform does not support copy-on-write, then the operation will fail with an error.
+ */
+export const COPYFILE_FICLONE_FORCE;
+
+/**
+ * Bit mask used to extract the file type code.
+ */
+export const S_IFMT;
+/**
+ * File type constant for a regular file.
+ */
+export const S_IFREG;
+/**
+ * File type constant for a directory.
+ */
+export const S_IFDIR;
+/**
+ * File type constant for a character-oriented device file.
+ */
+export const S_IFCHR;
+/**
+ * File type constant for a block-oriented device file.
+ */
+export const S_IFBLK;
+/**
+ * File type constant for a FIFO/pipe.
+ */
+export const S_IFIFO;
+/**
+ * File type constant for a symbolic link.
+ */
+export const S_IFLNK;
+/**
+ * File type constant for a socket.
+ */
+export const S_IFSOCK;
+
+/**
+ * File mode indicating readable, writable, and executable by owner.
+ */
+export const S_IRWXU;
+/**
+ * File mode indicating readable by owner.
+ */
+export const S_IRUSR;
+/**
+ * File mode indicating writable by owner.
+ */
+export const S_IWUSR;
+/**
+ * File mode indicating executable by owner.
+ */
+export const S_IXUSR;
+/**
+ * File mode indicating readable, writable, and executable by group.
+ */
+export const S_IRWXG;
+/**
+ * File mode indicating readable by group.
+ */
+export const S_IRGRP;
+/**
+ * File mode indicating writable by group.
+ */
+export const S_IWGRP;
+/**
+ * File mode indicating executable by group.
+ */
+export const S_IXGRP;
+/**
+ * File mode indicating readable, writable, and executable by others.
+ */
+export const S_IRWXO;
+/**
+ * File mode indicating readable by others.
+ */
+export const S_IROTH;
+/**
+ * File mode indicating writable by others.
+ */
+export const S_IWOTH;
+/**
+ * File mode indicating executable by others.
+ */
+export const S_IXOTH;
diff --git a/packages/core/file-system/v2/constants/index.ios.ts b/packages/core/file-system/v2/constants/index.ios.ts
new file mode 100644
index 0000000000..2736adc417
--- /dev/null
+++ b/packages/core/file-system/v2/constants/index.ios.ts
@@ -0,0 +1,176 @@
+/**
+ * Flag indicating to open a file for read-only access.
+ */
+export const O_RDONLY = TNSFsConstants.FILE_OPEN_OPTIONS_O_RDONLY();
+/**
+ * Flag indicating to open a file for write-only access.
+ */
+export const O_WRONLY = TNSFsConstants.FILE_OPEN_OPTIONS_O_WRONLY();
+/**
+ * Flag indicating to open a file for read-write access.
+ */
+export const O_RDWR = TNSFsConstants.FILE_OPEN_OPTIONS_O_RDWR();
+/**
+ * Flag indicating to create the file if it does not already exist.
+ */
+export const O_CREAT = TNSFsConstants.FILE_OPEN_OPTIONS_O_CREAT();
+/**
+ * Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists.
+ */
+export const O_EXCL = TNSFsConstants.FILE_OPEN_OPTIONS_O_EXCL();
+/**
+ * Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one).
+ */
+export const O_NOCTTY = TNSFsConstants.FILE_OPEN_OPTIONS_O_NOCTTY();
+/***
+ * Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero.
+ */
+export const O_TRUNC = TNSFsConstants.FILE_OPEN_OPTIONS_O_TRUNC();
+/**
+ * Flag indicating that data will be appended to the end of the file.
+ */
+export const O_APPEND = TNSFsConstants.FILE_OPEN_OPTIONS_O_APPEND();
+/**
+ * Flag indicating that the open should fail if the path is not a directory.
+ */
+export const O_DIRECTORY = TNSFsConstants.FILE_OPEN_OPTIONS_O_DIRECTORY();
+/**
+ * Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only.
+ */
+export const O_NOATIME = TNSFsConstants.FILE_OPEN_OPTIONS_O_NOATIME();
+/**
+ * Flag indicating that the open should fail if the path is a symbolic link.
+ */
+export const O_NOFOLLOW = TNSFsConstants.FILE_OPEN_OPTIONS_O_NOFOLLOW();
+/**
+ * Flag indicating that the file is opened for synchronized I/O with write operations waiting for file integrity.
+ */
+export const O_SYNC = TNSFsConstants.FILE_OPEN_OPTIONS_O_SYNC();
+/**
+ * Flag indicating that the file is opened for synchronized I/O with write operations waiting for data integrity.
+ */
+export const O_DSYNC = TNSFsConstants.FILE_OPEN_OPTIONS_O_DSYNC();
+/**
+ * Flag indicating to open the symbolic link itself rather than the resource it is pointing to.
+ */
+export const O_SYMLINK = TNSFsConstants.FILE_OPEN_OPTIONS_O_SYMLINK();
+/**
+ * When set, an attempt will be made to minimize caching effects of file I/O.
+ */
+export const O_DIRECT = TNSFsConstants.FILE_OPEN_OPTIONS_O_DIRECT();
+/**
+ * Flag indicating to open the file in nonblocking mode when possible.
+ */
+export const O_NONBLOCK = TNSFsConstants.FILE_OPEN_OPTIONS_O_NONBLOCK();
+
+/**
+ * Flag indicating that the file is visible to the calling process. This is useful for determining if a file exists, but says nothing about rwx permissions. Default if no mode is specified.
+ */
+export const F_OK = TNSFsConstants.FILE_ACCESS_OPTIONS_F_OK();
+/**
+ * Flag indicating that the file can be read by the calling process.
+ */
+export const R_OK = TNSFsConstants.FILE_ACCESS_OPTIONS_R_OK();
+/**
+ * Flag indicating that the file can be written by the calling process.
+ */
+export const W_OK = TNSFsConstants.FILE_ACCESS_OPTIONS_W_OK();
+/**
+ * Flag indicating that the file can be executed by the calling process.
+ */
+export const X_OK = TNSFsConstants.FILE_ACCESS_OPTIONS_X_OK();
+
+/**
+ * If present, the copy operation will fail with an error if the destination path already exists.
+ */
+export const COPYFILE_EXCL = TNSFsConstants.FILE_COPY_OPTIONS_COPYFILE_EXCL();
+/**
+ * If present, the copy operation will attempt to create a copy-on-write reflink. If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used.
+ */
+export const COPYFILE_FICLONE = TNSFsConstants.FILE_COPY_OPTIONS_COPYFILE_FICLONE();
+/**
+ * If present, the copy operation will attempt to create a copy-on-write reflink. If the underlying platform does not support copy-on-write, then the operation will fail with an error.
+ */
+export const COPYFILE_FICLONE_FORCE = TNSFsConstants.FILE_COPY_OPTIONS_COPYFILE_FICLONE_FORCE();
+
+/**
+ * Bit mask used to extract the file type code.
+ */
+export const S_IFMT = TNSFsConstants.FILE_TYPE_OPTIONS_S_IFMT();
+/**
+ * File type constant for a regular file.
+ */
+export const S_IFREG = TNSFsConstants.FILE_TYPE_OPTIONS_S_IFREG();
+/**
+ * File type constant for a directory.
+ */
+export const S_IFDIR = TNSFsConstants.FILE_TYPE_OPTIONS_S_IFDIR();
+/**
+ * File type constant for a character-oriented device file.
+ */
+export const S_IFCHR = TNSFsConstants.FILE_TYPE_OPTIONS_S_IFCHR();
+/**
+ * File type constant for a block-oriented device file.
+ */
+export const S_IFBLK = TNSFsConstants.FILE_TYPE_OPTIONS_S_IFBLK();
+/**
+ * File type constant for a FIFO/pipe.
+ */
+export const S_IFIFO = TNSFsConstants.FILE_TYPE_OPTIONS_S_IFIFO();
+/**
+ * File type constant for a symbolic link.
+ */
+export const S_IFLNK = TNSFsConstants.FILE_TYPE_OPTIONS_S_IFLNK();
+/**
+ * File type constant for a socket.
+ */
+export const S_IFSOCK = TNSFsConstants.FILE_TYPE_OPTIONS_S_IFSOCK();
+
+/**
+ * File mode indicating readable, writable, and executable by owner.
+ */
+export const S_IRWXU = TNSFsConstants.FILE_MODE_OPTIONS_S_IRWXU();
+/**
+ * File mode indicating readable by owner.
+ */
+export const S_IRUSR = TNSFsConstants.FILE_MODE_OPTIONS_S_IRUSR();
+/**
+ * File mode indicating writable by owner.
+ */
+export const S_IWUSR = TNSFsConstants.FILE_MODE_OPTIONS_S_IWUSR();
+/**
+ * File mode indicating executable by owner.
+ */
+export const S_IXUSR = TNSFsConstants.FILE_MODE_OPTIONS_S_IXUSR();
+/**
+ * File mode indicating readable, writable, and executable by group.
+ */
+export const S_IRWXG = TNSFsConstants.FILE_MODE_OPTIONS_S_IRWXG();
+/**
+ * File mode indicating readable by group.
+ */
+export const S_IRGRP = TNSFsConstants.FILE_MODE_OPTIONS_S_IRGRP();
+/**
+ * File mode indicating writable by group.
+ */
+export const S_IWGRP = TNSFsConstants.FILE_MODE_OPTIONS_S_IWGRP();
+/**
+ * File mode indicating executable by group.
+ */
+export const S_IXGRP = TNSFsConstants.FILE_MODE_OPTIONS_S_IXGRP();
+/**
+ * File mode indicating readable, writable, and executable by others.
+ */
+export const S_IRWXO = TNSFsConstants.FILE_MODE_OPTIONS_S_IRWXO();
+/**
+ * File mode indicating readable by others.
+ */
+export const S_IROTH = TNSFsConstants.FILE_MODE_OPTIONS_S_IROTH();
+/**
+ * File mode indicating writable by others.
+ */
+export const S_IWOTH = TNSFsConstants.FILE_MODE_OPTIONS_S_IWOTH();
+/**
+ * File mode indicating executable by others.
+ */
+export const S_IXOTH = TNSFsConstants.FILE_MODE_OPTIONS_S_IXOTH();
diff --git a/packages/core/file-system/v2/index.android.ts b/packages/core/file-system/v2/index.android.ts
new file mode 100644
index 0000000000..bf2fb7ce7e
--- /dev/null
+++ b/packages/core/file-system/v2/index.android.ts
@@ -0,0 +1,41 @@
+import { NativeError, parseFlags } from './utils';
+
+class Callback extends org.nativescript.widgets.filesystem.AsyncCallback {}
+
+export function open(path: string, flags: string | number, callback: (error: Error, fd: number) => void);
+export function open(path: string, flags: string | number, mode: number | undefined | null, callback: (error: Error | null, fd: number) => void);
+export function open(path: string, flags: string | number, callback: (error: Error | null, fd: number) => void);
+export function open(path: string, flags: unknown, mode?: unknown, callback?: unknown) {
+ let realflags = parseFlags('r');
+ let realMode = 0o666;
+ if (typeof flags === 'string') {
+ realflags = parseFlags(flags);
+ }
+
+ if (typeof flags === 'number') {
+ realflags = flags;
+ }
+
+ if (typeof mode === 'number') {
+ realMode = mode;
+ }
+ org.nativescript.widgets.filesystem.FileSystem.open(path, realflags, realMode, (fd, error) => {
+ const len = arguments.length;
+ let cb;
+ if (len === 2) {
+ cb = flags;
+ } else if (len === 3) {
+ cb = mode;
+ } else if (len === 4) {
+ cb = callback;
+ }
+ if (typeof cb === 'function') {
+ let e = null;
+ if (error) {
+ e = NativeError.fromNative(error);
+ }
+
+ cb(e, fd);
+ }
+ });
+}
diff --git a/packages/core/file-system/v2/index.d.ts b/packages/core/file-system/v2/index.d.ts
new file mode 100644
index 0000000000..1c73eeb24a
--- /dev/null
+++ b/packages/core/file-system/v2/index.d.ts
@@ -0,0 +1,6 @@
+export * as constants from './constants';
+
+export function open(path: string, callback: (error: Error, fd: number) => void);
+export function open(path: string, flags: string | number, callback: (error: Error, fd: number) => void);
+export function open(path: string, flags: string | number, mode: number | undefined | null, callback: (error: Error | null, fd: number) => void);
+export function open(path: string, flags: string | number, mode?: number | undefined | null, callback?: (error: Error | null, fd: number) => void);
diff --git a/packages/core/file-system/v2/index.ios.ts b/packages/core/file-system/v2/index.ios.ts
new file mode 100644
index 0000000000..45bed77d1d
--- /dev/null
+++ b/packages/core/file-system/v2/index.ios.ts
@@ -0,0 +1,50 @@
+import { NativeError, parseFlags } from './utils';
+
+const callbacks = new Set();
+
+export function open(path: string, flags: string | number, callback: (error: Error, fd: number) => void);
+export function open(path: string, flags: string | number, mode: number | undefined | null, callback: (error: Error | null, fd: number) => void);
+export function open(path: string, flags: string | number, callback: (error: Error | null, fd: number) => void);
+export function open(path: string, flags: unknown, mode?: unknown, callback?: unknown) {
+ let realflags = parseFlags('r');
+ let realMode = 0o666;
+ if (typeof flags === 'string') {
+ realflags = parseFlags(flags);
+ }
+
+ if (typeof flags === 'number') {
+ realflags = flags;
+ }
+
+ if (typeof mode === 'number') {
+ realMode = mode;
+ }
+ const cb = (error) => {
+ console.log('cb', error);
+ // const len = arguments.length;
+ // let cb;
+ // if (len === 2) {
+ // cb = flags;
+ // } else if (len === 3) {
+ // cb = mode;
+ // } else if (len === 4) {
+ // cb = callback;
+ // }
+ // if (typeof cb === 'function') {
+ // let e = null;
+ // if (error) {
+ // e = NativeError.fromNative(error);
+ // }
+
+ // cb(e, fd);
+ // }
+ };
+ callbacks.add(cb);
+ TNSFileSystem.accessWithModeCallback(path, realMode, cb);
+ // TNSFileSystem.openFlagsModeCallback(
+ // path,
+ // realflags,
+ // realMode,
+ // cb
+ // )
+}
diff --git a/packages/core/file-system/v2/promises/index.android.ts b/packages/core/file-system/v2/promises/index.android.ts
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/core/file-system/v2/promises/index.d.ts b/packages/core/file-system/v2/promises/index.d.ts
new file mode 100644
index 0000000000..f877551e96
--- /dev/null
+++ b/packages/core/file-system/v2/promises/index.d.ts
@@ -0,0 +1 @@
+export class FileHandle {}
diff --git a/packages/core/file-system/v2/promises/index.ios.ts b/packages/core/file-system/v2/promises/index.ios.ts
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/core/file-system/v2/utils.ts b/packages/core/file-system/v2/utils.ts
new file mode 100644
index 0000000000..6c8c7b5a48
--- /dev/null
+++ b/packages/core/file-system/v2/utils.ts
@@ -0,0 +1,66 @@
+import { O_APPEND, O_CREAT, O_DSYNC, O_EXCL, O_RDONLY, O_SYNC, O_TRUNC, O_WRONLY } from './constants';
+export function parseFlags(flags: string) {
+ let ret = 0;
+ switch (flags) {
+ case 'a':
+ ret = O_APPEND | O_CREAT;
+ break;
+ case 'ax':
+ ret = O_APPEND | O_CREAT | O_EXCL;
+ break;
+ case 'a+':
+ ret = O_APPEND | O_CREAT | O_RDONLY;
+ break;
+ case 'ax+':
+ ret = O_APPEND | O_CREAT | O_RDONLY | O_EXCL;
+ break;
+ case 'as':
+ ret = O_APPEND | O_CREAT | O_DSYNC;
+ break;
+ case 'as+':
+ ret = O_APPEND | O_CREAT | O_DSYNC | O_RDONLY;
+ break;
+ case 'r':
+ ret = O_RDONLY;
+ break;
+ case 'r+':
+ ret = O_RDONLY | O_WRONLY;
+ break;
+ case 'rs+':
+ ret = O_RDONLY | O_WRONLY | O_DSYNC;
+ break;
+ case 'w':
+ ret = O_WRONLY;
+ break;
+ case 'wx':
+ ret = O_WRONLY | O_EXCL;
+ break;
+ case 'w+':
+ ret = O_WRONLY | O_RDONLY | O_CREAT | O_TRUNC;
+ break;
+ case 'wx+':
+ ret = O_WRONLY | O_RDONLY | O_CREAT | O_TRUNC | O_EXCL;
+ break;
+ }
+ return ret;
+}
+
+export class NativeError extends Error {
+ #native: any;
+ static fromNative(native: any, message?: string) {
+ if (global.isAndroid) {
+ const error = new NativeError(message || native?.getMessage?.());
+ error.#native = native;
+ return error;
+ } else if (global.isIOS) {
+ const error = new NativeError(message || native?.localizedDescription);
+ error.#native = native;
+ return error;
+ } else {
+ }
+ }
+
+ get native() {
+ return this.#native;
+ }
+}
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/Info.plist b/packages/core/platforms/ios/TNSWidgets.xcframework/Info.plist
index 83ff73fcd9..9534135682 100644
--- a/packages/core/platforms/ios/TNSWidgets.xcframework/Info.plist
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/Info.plist
@@ -8,32 +8,32 @@
DebugSymbolsPath
dSYMs
LibraryIdentifier
- ios-arm64_x86_64-simulator
+ ios-arm64
LibraryPath
TNSWidgets.framework
SupportedArchitectures
arm64
- x86_64
SupportedPlatform
ios
- SupportedPlatformVariant
- simulator
DebugSymbolsPath
dSYMs
LibraryIdentifier
- ios-arm64
+ ios-arm64_x86_64-simulator
LibraryPath
TNSWidgets.framework
SupportedArchitectures
arm64
+ x86_64
SupportedPlatform
ios
+ SupportedPlatformVariant
+ simulator
CFBundlePackageType
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSByteBuf.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSByteBuf.h
new file mode 100644
index 0000000000..f2b1ef5e83
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSByteBuf.h
@@ -0,0 +1,16 @@
+//
+// TNSByteBuf.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 18/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSByteBuf_h
+#define TNSByteBuf_h
+#import
+#import "nativescript_common.h"
+@interface TNSByteBuf:NSData
+@end
+
+#endif /* TNSByteBuf_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSByteBufMut.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSByteBufMut.h
new file mode 100644
index 0000000000..5c2e06d2d8
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSByteBufMut.h
@@ -0,0 +1,16 @@
+//
+// TNSByteBufMut.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 22/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSByteBufMut_h
+#define TNSByteBufMut_h
+#import
+#import "nativescript_common.h"
+@interface TNSByteBufMut: NSMutableData
+@end
+
+#endif /* TNSByteBufMut_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFileHandle.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFileHandle.h
new file mode 100644
index 0000000000..cc8f5e2c41
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFileHandle.h
@@ -0,0 +1,63 @@
+//
+// TNSFileHandle.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 10/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFileHandle_h
+#define TNSFileHandle_h
+#import
+#import "nativescript_common.h"
+#import "TNSHelpers.h"
+#import "TNSFsCallback+Internal.h"
+#import "TNSByteBufMut+Internal.h"
+#import "TNSFsStat+Internal.h"
+@interface TNSFileHandle : NSObject
+
+- (id _Nonnull )addCloseListener:(id _Nonnull (^_Nonnull)(void))listener;
+- (void)removeCloseListener:(id _Nonnull (^_Nonnull)(void))listener;
+
+-(instancetype)initWithHandle:(FileHandle* _Nonnull)handle;
+
+-(void)appendFileWithString:(nonnull NSString*)string callback:(nonnull void(^)(NSError* _Nullable))callback;
+-(void)appendFileWithData:(nonnull NSData*)data callback:(nonnull void(^)(NSError* _Nullable))callback;
+
+-(void)chmod:(uint)mode callback:(void(^_Nonnull)(NSError*_Nonnull))callback;
+
+-(void)fchown:(uint)uid gid:(uint)gid callback:(void(^_Nonnull)(NSError*_Nullable))callback;
+
+-(void)close:(nonnull void(^)(NSError*_Nullable))callback;
+
+- (void)datasync:(void (^_Nonnull)(NSError * _Nullable))callback;
+
+@property (readonly) int fd;
+
+-(void)readWithBuffer:(nonnull NSMutableData*) buffer offset:(int)offset length:(int)length position:(int)position callback:(nonnull void(^)(long,NSMutableData* _Nullable,NSError* _Nullable))callback;
+
+-(void)readFile:(NSString*)encoding callback:(void(^)(TNSByteBufMut*,NSError*))callback;
+
+-(void)readv:(NSArray*)buffer position:(long)position callback:(void(^)(long,NSError*))callback;
+
+-(void)stat:(nonnull void(^)(TNSFsStat* _Nonnull, NSError* _Nullable))callback;
+
+-(void)sync:(nonnull void(^)(NSError* _Nullable)) callback;
+
+-(void)truncate:(unsigned long)length callback:(void(^)(NSError*))callback;
+
+-(void)utimes:(long)atime mtime:(long)mtime andCallback:(nonnull void(^)(NSError* _Nullable)) callback;
+
+-(void)writeWithData:(nonnull NSData*)data offset:(int)offset length:(int)length position:(long)position callback:(nonnull void(^)(long,NSData*,NSError* _Nullable))callback;
+
+-(void)writeWithString:(nonnull NSString*)string encoding:(NSString*)encoding position:(long)position callback:(nonnull void(^)(long,NSString*,NSError* _Nullable))callback;
+
+-(void)writeFileWithData:(nonnull NSData*)data callback:(nonnull void(^)(NSError* _Nullable))callback;
+
+-(void)writeFileWithString:(nonnull NSString*)string callback:(nonnull void(^)(NSError* _Nullable))callback;
+
+@end
+
+
+
+#endif /* TNSFileHandle_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFileSystem.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFileSystem.h
new file mode 100644
index 0000000000..f695d8086c
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFileSystem.h
@@ -0,0 +1,183 @@
+//
+// TNSFileSystem.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 10/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFileSystem_h
+#define TNSFileSystem_h
+#import
+#import "nativescript_common.h"
+#import "TNSFileHandle.h"
+#import "TNSFsDir.h"
+#import "TNSFsDirent.h"
+#import "TNSByteBuf.h"
+#import "TNSFsCallback.h"
+#import "TNSFsStat.h"
+#import "TNSFsWatcher.h"
+#import "TNSFsStatWatcher.h"
+
+@interface TNSFileSystem : NSObject
+
++(void)accessSync:(NSString*)path withMode:(int)mode;
++(void)access:(NSString*)path withMode:(int)mode callback:(void(^)(NSError*))callback;
+
++(void)appendFileSync:(NSString*)path withString:(NSString*)string mode:(int)mode flags:(int)flags ;
++(void)appendFile:(NSString*)path withString:(NSString*)string mode:(int)mode flags:(int)flags callback:(void(^)(NSError*))callback;
+
++(void)appendFileSync:(NSString*)path withData:(NSData*)data mode:(int)mode flags:(int)flags ;
++(void)appendFile:(NSString*)path withData:(NSData*)data mode:(int)mode flags:(int)flags callback:(void(^)(NSError*))callback;
+
++(void)appendFileSyncWithFd:(int)fd withString:(NSString*)string;
++(void)appendFileWithFd:(int)fd withString:(NSString*)string callback:(void(^)(NSError*))callback;
+
++(void)appendFileSyncWithFd:(int)fd withData:(NSData*)data;
++(void)appendFileWithFd:(int)fd withData:(NSData*)data callback:(void(^)(NSError*))callback;
+
++(void)chmodSync:(NSString*)path mode:(uint)mode;
++(void)chmod:(NSString*)path mode:(uint)mode withCallback:(void(^)(NSError*))callback;
+
++(void)chownSync:(NSString*)path uid:(uint)uid gid:(uint)gid;
++(void)chown:(NSString*)path uid:(uint)uid gid:(uint)gid withCallback:(void(^)(NSError*))callback;
+
++(void)closeSync:(int)handle;
++(void)close:(int)handle withCallback:(void(^)(NSError*))callback;
+
++(void)copyFileSyncWithSrc:(NSString*)src dest:(NSString*)dest flags:(uint)flags;
++(void)copyFileWithSrc:(NSString*)src dest:(NSString*)dest flags:(uint)flags callback:(void(^)(NSError*))callback;
+
++(BOOL)existsSync:(NSString*)path;
++(void)existsSync:(NSString*)path callback:(void(^)(BOOL))callback;
+
++(void)fchmodSync:(int)fd mode:(uint)mode;
++(void)fchmod:(int)fd mode:(uint)mode withCallback:(void(^)(NSError*))callback;
+
++(void)fchownSync:(int)fd uid:(uint)uid gid:(uint)gid;
++(void)fchown:(int)fd uid:(uint)uid gid:(uint)gid withCallback:(void(^)(NSError*))callback;
+
++(void)fdatasyncSync:(int)fd;
++(void)fdatasync:(int)fd withCallback:(void(^)(NSError*))callback;
+
++(TNSFsStat*)fstatSync:(int)fd;
++(void)fstate:(int)fd withCallback:(void(^)(TNSFsStat*,NSError*))callback;
+
++(void)fsyncSync:(int)fd;
++(void)fsync:(int)fd withCallback:(void(^)(NSError*))callback;
+
++(void)ftruncateSync:(int)fd length:(long)length;
++(void)ftruncate:(int)fd length:(long)length withCallback:(void(^)(NSError*))callback;
+
++(void)futimesSync:(int)fd atime:(long)atime utime:(long)utime;
++(void)futimes:(int)fd atime:(long)atime utime:(long)utime withCallback:(void(^)(NSError*))callback;
+
++(void)lchmodSync:(NSString*)path mode:(uint)mode;
++(void)lchmod:(NSString*)path mode:(uint)mode withCallback:(void(^)(NSError*))callback;
+
++(void)lchownSync:(NSString*)path uid:(uint)uid gid:(uint)gid;
++(void)lchown:(NSString*)path uid:(uint)uid gid:(uint)gid withCallback:(void(^)(NSError*))callback;
+
++(void)lutimesSync:(NSString*)path atime:(long)atime utime:(long)utime;
++(void)lutimes:(NSString*)path atime:(long)atime utime:(long)utime withCallback:(void(^)(NSError*))callback;
+
++(void)linkSync:(NSString*)existingPath newPath:(NSString*)newPath;
++(void)link:(NSString*)existingPath newPath:(NSString*)newPath withCallback:(void(^)(NSError*))callback;
+
++(TNSFsStat*)lstatSync:(NSString*)path;
++(void)lstat:(NSString*)path withCallback:(void(^)(TNSFsStat*,NSError*))callback;
+
++(void)mkdirSync:(NSString*)path mode:(uint)mode recursive:(BOOL)recursive;
++(void)mkdir:(NSString*)path mode:(uint)mode recursive:(BOOL)recursive callback:(void(^)(NSError*))callback;
+
++(NSString*)mkdtempSync:(NSString*)prefix;
++(void)mkdtemp:(NSString*)prefix callback:(void(^)(NSString*,NSError*))callback;
+
++(int)openSync:(NSString*)path flags:(int)flags mode:(int)mode;
++(void)open:(NSString*)path flags:(int)flags mode:(int)mode callback:(void(^)(int,NSError*))callback;
+
++(TNSFsDir*)opendirSync:(NSString*)path;
++(void)opendir:(NSString*)path callback:(void(^)(TNSFsDir*,NSError*))callback;
+
++(long)readSync:(int)fd withBuffer:(NSMutableData*)buffer offset:(int)offset length:(int)length position:(int)position;
++(void)read:(int)fd withBuffer:(NSMutableData*)buffer offset:(int)offset length:(int)length position:(int)position callback:(void(^)(long,NSMutableData*,NSError*))callback;
+
++(NSArray*)readdirSync:(NSString*)path;
++(void)readdir:(NSString*)path callback:(void(^)(NSArray*,NSError*))callback;
+
++(TNSByteBufMut*)readFileSync:(NSString*)path flag:(int)flags;
++(void)readFile:(NSString*)path flag:(int)flags callback:(void(^)(TNSByteBufMut*,NSError*))callback;
+
++(NSString*)readlinkSync:(NSString*)path;
++(void)readlink:(NSString*)path callback:(void(^)(NSString*,NSError*))callback;
+
++(long)readvSync:(int)fd buffer:(NSArray*)buffer position:(long)position;
++(void)readv:(int)fd buffer:(NSArray*)buffer position:(long)position callback:(void(^)(long,NSError*))callback;
+
++(NSString*)realpathSync:(NSString*)path;
++(void)realpath:(NSString*)path callback:(void(^)(NSString*,NSError*))callback;
+
++(void)renameSync:(NSString*)oldPath newPath:(NSString*)newPath;
++(void)rename:(NSString*)oldPath newPath:(NSString*)newPath callback:(void(^)(NSError*))callback;
+
++(void)rmdirSync:(NSString*)path maxRetries:(int)maxRetries recursive:(BOOL)recursive retryDelay:(long)retryDelay;
++(void)rmdir:(NSString*)path maxRetries:(int)maxRetries recursive:(BOOL)recursive retryDelay:(long)retryDelay callback:(void(^)(NSError*))callback;
+
++(void)rmSync:(NSString*)path maxRetries:(int)maxRetries recursive:(BOOL)recursive retryDelay:(long)retryDelay;
++(void)rm:(NSString*)path maxRetries:(int)maxRetries recursive:(BOOL)recursive retryDelay:(long)retryDelay callback:(void(^)(NSError*))callback;
+
++(TNSFsStat*)statSync:(NSString*)path throwIfNoEntry:(BOOL)throwIfNoEntry;
++(void)stat:(NSString*)path throwIfNoEntry:(BOOL)throwIfNoEntry withCallback:(void(^)(TNSFsStat*,NSError*))callback;
+
++(void)symlinkSync:(NSString*)target path:(NSString*)path type:(NSString*)type;
++(void)symlink:(NSString*)target path:(NSString*)path type:(NSString*)type callback:(void(^)(NSError*))callback;
+
++(void)truncateSync:(NSString*)path length:(unsigned long)length;
++(void)truncate:(NSString*)path length:(unsigned long)length withCallback:(void(^)(NSError*))callback;
+
++(void)unlinkSync:(NSString*)path;
++(void)unlink:(NSString*)path callback:(void(^)(NSError*))callback;
+
++(void)unwatchFile:(NSString*)filename;
+
++(void)utimesSync:(NSString*)path atime:(long)atime utime:(long)utime;
++(void)utimes:(NSString*)path atime:(long)atime utime:(long)utime withCallback:(void(^)(NSError*))callback;
+
+
++(TNSFsStatWatcher*)watchWithFileName:(NSString*)filename persistent:(BOOL)persistent recursive:(BOOL)recursive encoding:(NSString*)encoding signal:(void(^)(NSError*))signal listener:(void(^)(NSString*,NSString*))listener;
+
++(TNSFsWatcher*)watchFileWithFileName:(NSString*)filename bigint:(BOOL)bigint persistent:(BOOL)persistent interval:(unsigned long)interval listener:(void(^)(TNSFsStat*,TNSFsStat*))listener;
+
+
++(void)writeFileSync:(int)fd data:(NSData*)data optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags;
++(void)writeFile:(int)fd data:(NSData*)data optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags signal:(void(^)(NSError*))signal callback:(void(^)(NSError*))callback;
+
++(void)writeFileWithPathSync:(NSString*)path data:(NSData*)data optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags;
++(void)writeFileWithPath:(NSString*)path data:(NSData*)data optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags signal:(void(^)(NSError*))signal callback:(void(^)(NSError*))callback;
+
+
++(void)writeFileSync:(int)fd string:(NSString*)string optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags;
++(void)writeFile:(int)fd string:(NSString*)data optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags signal:(void(^)(NSError*))signal callback:(void(^)(NSError*))callback;
+
++(void)writeFileWithPathSync:(NSString*)path string:(NSString*)string optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags;
++(void)writeFileWithPath:(NSString*)path string:(NSString*)string optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags signal:(void(^)(NSError*))signal callback:(void(^)(NSError*))callback;
+
+
++(long)writeSync:(int)fd withBuffer:(NSData*)buffer offset:(int)offset length:(int)length position:(int)position;
++(void)write:(int)fd withBuffer:(NSData*)buffer offset:(int)offset length:(int)length position:(int)position callback:(void(^)(long,TNSByteBuf*,NSError*))callback;
+
+
++(long)writeSync:(int)fd withString:(NSString*)string position:(int)position encoding:(NSString*)encoding;
++(void)write:(int)fd withString:(NSString*)string position:(int)position encoding:(NSString*)encoding callback:(void(^)(long,NSError*))callback;
+
+
++(long)writevSync:(int)fd buffers:(NSArray*)buffers position:(long)position;
++(void)writev:(int)fd buffers:(NSArray*)buffers position:(long)position callback:(void(^)(long,NSError*))callback;
+
+
++(void) openWithPath:(NSString*)path flags:(int)flag mode:(int)mode callback:(void(^)(TNSFileHandle*,NSError*))callback;
+
+@end
+
+
+#endif /* TNSFileSystem_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsCallback.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsCallback.h
new file mode 100644
index 0000000000..a8a5728b90
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsCallback.h
@@ -0,0 +1,18 @@
+//
+// TNSFsCallback.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 19/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsCallback_h
+#define TNSFsCallback_h
+#import
+#import "nativescript_common.h"
+#import "TNSHelpers.h"
+
+@interface TNSFsCallback: NSObject
+@end
+
+#endif /* TNSFsCallback_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsConstants.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsConstants.h
new file mode 100644
index 0000000000..7fe503839d
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsConstants.h
@@ -0,0 +1,103 @@
+//
+// TNSFsConstants.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 23/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsConstants_h
+#define TNSFsConstants_h
+#import
+#import "nativescript_common.h"
+@interface TNSFsConstants : NSObject
++(unsigned int) FILE_COPY_OPTIONS_COPYFILE_EXCL;
+
++(unsigned int) FILE_COPY_OPTIONS_COPYFILE_FICLONE;
+
++(unsigned int) FILE_COPY_OPTIONS_COPYFILE_FICLONE_FORCE;
+
++(int) FILE_OPEN_OPTIONS_O_RDONLY;
+
++(int) FILE_OPEN_OPTIONS_O_WRONLY;
+
++(int) FILE_OPEN_OPTIONS_O_RDWR;
+
++(int) FILE_OPEN_OPTIONS_O_CREAT;
+
++(int) FILE_OPEN_OPTIONS_O_EXCL;
+
++(int) FILE_OPEN_OPTIONS_O_NOCTTY;
+
++(int) FILE_OPEN_OPTIONS_O_TRUNC;
+
++(int) FILE_OPEN_OPTIONS_O_APPEND;
+
++(int) FILE_OPEN_OPTIONS_O_DIRECTORY;
+
++(int) FILE_OPEN_OPTIONS_O_NOATIME;
+
++(int) FILE_OPEN_OPTIONS_O_NOFOLLOW;
+
++(int) FILE_OPEN_OPTIONS_O_SYNC;
+
++(int) FILE_OPEN_OPTIONS_O_DSYNC;
+
++(int) FILE_OPEN_OPTIONS_O_SYMLINK;
+
++(int) FILE_OPEN_OPTIONS_O_DIRECT;
+
++(int) FILE_OPEN_OPTIONS_O_NONBLOCK;
+
++(int) FILE_ACCESS_OPTIONS_F_OK;
+
++(int) FILE_ACCESS_OPTIONS_R_OK;
+
++(int) FILE_ACCESS_OPTIONS_W_OK;
+
++(int) FILE_ACCESS_OPTIONS_X_OK;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFMT;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFREG;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFDIR;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFCHR;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFBLK;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFIFO;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFLNK;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFSOCK;
+
++(mode_t) FILE_MODE_OPTIONS_S_IRWXU;
+
++(mode_t) FILE_MODE_OPTIONS_S_IRUSR;
+
++(mode_t) FILE_MODE_OPTIONS_S_IWUSR;
+
++(mode_t) FILE_MODE_OPTIONS_S_IXUSR;
+
++(mode_t) FILE_MODE_OPTIONS_S_IRWXG;
+
++(mode_t) FILE_MODE_OPTIONS_S_IRGRP;
+
++(mode_t) FILE_MODE_OPTIONS_S_IWGRP;
+
++(mode_t) FILE_MODE_OPTIONS_S_IXGRP;
+
++(mode_t) FILE_MODE_OPTIONS_S_IRWXO;
+
++(mode_t) FILE_MODE_OPTIONS_S_IROTH;
+
++(mode_t) FILE_MODE_OPTIONS_S_IWOTH;
+
++(mode_t) FILE_MODE_OPTIONS_S_IXOTH;
+
+
+@end
+
+#endif /* TNSFsConstants_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsDir.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsDir.h
new file mode 100644
index 0000000000..74715ce364
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsDir.h
@@ -0,0 +1,22 @@
+//
+// TNSFsDir.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 18/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsDir_h
+#define TNSFsDir_h
+#import
+#import "nativescript_common.h"
+#import "TNSFsDirent.h"
+@interface TNSFsDir: NSObject
+@property (readonly) NSString* path;
+-(void)close:(void(^)(NSError*)) callback;
+-(void)closeSync;
+
+-(void)read:(void(^)(TNSFsDirent*,NSError*)) callback;
+-(TNSFsDirent*)readSync;
+@end
+#endif /* TNSFsDir_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsDirent.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsDirent.h
new file mode 100644
index 0000000000..31390f21d6
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsDirent.h
@@ -0,0 +1,23 @@
+//
+// TNSFsDirent.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 18/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsDirent_h
+#define TNSFsDirent_h
+#import
+@interface TNSFsDirent: NSObject
+-(BOOL)isBlockDevice;
+-(BOOL)isCharacterDevice;
+-(BOOL)isDirectory;
+-(BOOL)isFIFO;
+-(BOOL)isFile;
+-(BOOL)isSocket;
+-(BOOL)isSymbolicLink;
+-(NSString*)name;
+@end
+
+#endif /* TNSFsDirent_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsStat.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsStat.h
new file mode 100644
index 0000000000..77702cc73b
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsStat.h
@@ -0,0 +1,41 @@
+//
+// TNSFsStat.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsStat_h
+#define TNSFsStat_h
+#import
+#import "nativescript_common.h"
+@interface TNSFsStat: NSObject
+@property (readonly) long dev;
+@property (readonly) long ino;
+@property (readonly) int mode;
+@property (readonly) long nlink;
+@property (readonly) int uid;
+@property (readonly) int gid;
+@property (readonly) long rdev;
+@property (readonly) long size;
+@property (readonly) long blksize;
+@property (readonly) long blocks;
+@property (readonly) double atimeMs;
+@property (readonly) double mtimeMs;
+@property (readonly) double ctimeMs;
+@property (readonly) double birthtimeMs;
+@property (readonly) NSDate* atime;
+@property (readonly) NSDate* mtime;
+@property (readonly) NSDate* ctime;
+@property (readonly) NSDate* birthtime;
+-(BOOL)isBlockDevice;
+-(BOOL)isCharacterDevice;
+-(BOOL)isDirectory;
+-(BOOL)isFIFO;
+-(BOOL)isFile;
+-(BOOL)isSocket;
+-(BOOL)isSymbolicLink;
+@end
+
+#endif /* TNSFsStat_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsStatWatcher.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsStatWatcher.h
new file mode 100644
index 0000000000..d353a983d3
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsStatWatcher.h
@@ -0,0 +1,18 @@
+//
+// TNSFsStatWatcher.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 21/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsStatWatcher_h
+#define TNSFsStatWatcher_h
+#import
+
+@interface TNSFsStatWatcher: NSObject
+-(void)ref;
+-(void)unref;
+@end
+
+#endif /* TNSFsStatWatcher_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsWatcher.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsWatcher.h
new file mode 100644
index 0000000000..bea4355bc5
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSFsWatcher.h
@@ -0,0 +1,29 @@
+//
+// TNSFsWatcher.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 21/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsWatcher_h
+#define TNSFsWatcher_h
+#import
+@interface TNSFsWatcher: NSObject
+-(id)addChangeListener:(id(^)(NSString*,NSString*))listener;
+-(void)removeChangeListener:(id(^)(NSString*,NSString*))listener;
+
+-(id)addCloseListener:(id(^)(void))listener;
+-(void)removeCloseListener:(id(^)(void))listener;
+
+
+-(id)addErrorListener:(id(^)(NSError*))listener;
+-(void)removeErrorListener:(id(^)(NSError*))listener;
+
+-(void)close;
+-(void)ref;
+-(void)unref;
+
+@end
+
+#endif /* TNSFsWatcher_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSHelpers.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSHelpers.h
new file mode 100644
index 0000000000..c5a2150256
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSHelpers.h
@@ -0,0 +1,18 @@
+//
+// TNSHelpers.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 10/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSHelpers_h
+#define TNSHelpers_h
+#import
+#import "nativescript_common.h"
+@interface TNSHelpers: NSObject
++(NSError*)toError:(NSException*)exception;
++(NSError*)fromRustErrorChar:(char*) error;
+@end
+
+#endif /* TNSHelpers_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSWidgets.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSWidgets.h
index 7da1d2adbb..293aeab682 100644
--- a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSWidgets.h
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSWidgets.h
@@ -22,3 +22,15 @@ FOUNDATION_EXPORT const unsigned char TNSWidgetsVersionString[];
#import "TNSProcess.h"
#import "NSString+Async.h"
#import "NSData+Async.h"
+#import "TNSFileSystem.h"
+#import "TNSFileHandle.h"
+#import "TNSHelpers.h"
+#import "TNSFsDir.h"
+#import "TNSFsDirent.h"
+#import "TNSByteBuf.h"
+#import "TNSFsCallback.h"
+#import "TNSFsStat.h"
+#import "TNSFsWatcher.h"
+#import "TNSFsStatWatcher.h"
+#import "TNSByteBufMut.h"
+#import "TNSFsConstants.h"
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Info.plist b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Info.plist
index e78f57b5fd..e59acc5d1d 100644
Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Info.plist and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Info.plist differ
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSByteBuf+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSByteBuf+Internal.h
new file mode 100644
index 0000000000..52cc8c3f28
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSByteBuf+Internal.h
@@ -0,0 +1,17 @@
+//
+// TNSByteBuf+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSByteBuf_Internal_h
+#define TNSByteBuf_Internal_h
+#import "TNSByteBuf.h"
+@interface TNSByteBuf()
+@property ByteBuf *innerBuf;
+-(instancetype)initWithByteBuf:(ByteBuf*)byteBuf;
+@end
+
+#endif /* TNSByteBuf_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSByteBufMut+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSByteBufMut+Internal.h
new file mode 100644
index 0000000000..231885ac61
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSByteBufMut+Internal.h
@@ -0,0 +1,18 @@
+//
+// TNSByteBufMut+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 22/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSByteBufMut_Internal_h
+#define TNSByteBufMut_Internal_h
+#import "TNSByteBufMut.h"
+@interface TNSByteBufMut()
+@property (nullable) ByteBufMut *innerBuf;
+- (instancetype)initWithByteBufMut:(ByteBufMut *)byteBuf;
+- (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
+@end
+
+#endif /* TNSByteBufMut_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFileHandle+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFileHandle+Internal.h
new file mode 100644
index 0000000000..5e30901939
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFileHandle+Internal.h
@@ -0,0 +1,17 @@
+//
+// TNSFileHandle+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 23/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFileHandle_Internal_h
+#define TNSFileHandle_Internal_h
+#import "TNSFileHandle.h"
+@interface TNSFileHandle()
+@property FileHandle* handle;
+@property NSMutableSet* closeListeners;
+@end
+
+#endif /* TNSFileHandle_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsCallback+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsCallback+Internal.h
new file mode 100644
index 0000000000..41127f0102
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsCallback+Internal.h
@@ -0,0 +1,31 @@
+//
+// TNSFsCallback+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsCallback_Internal_h
+#define TNSFsCallback_Internal_h
+#import "nativescript_common.h"
+#import "TNSFsCallback.h"
+
+typedef void (*InternalOnSuccessCallback)(void *result);
+
+typedef void (*InternalOnErrorCallback)(NSError *error);
+
+
+@interface TNSFsCallback()
+@property BOOL autoClear;
+@property const AsyncCallback* callback;
+
+
+-(instancetype)initWithSuccess:(InternalOnSuccessCallback)success andErrorCallback:(InternalOnErrorCallback)error;
++(NSMutableSet*)callbackStore;
++(void)addCallback:(TNSFsCallback*)callback;
++(void)removeCallback:(TNSFsCallback*)callback;
+
+@end
+
+#endif /* TNSFsCallback_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsDir+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsDir+Internal.h
new file mode 100644
index 0000000000..be45f41d43
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsDir+Internal.h
@@ -0,0 +1,17 @@
+//
+// TNSFsDir+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsDir_Internal_h
+#define TNSFsDir_Internal_h
+#import "TNSFsDir.h"
+@interface TNSFsDir()
+@property FileDir* dir;
+-(instancetype)initWithDir:(FileDir*)dir;
+@end
+
+#endif /* TNSFsDir_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsDirent+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsDirent+Internal.h
new file mode 100644
index 0000000000..41a2de2d47
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsDirent+Internal.h
@@ -0,0 +1,18 @@
+//
+// TNSFsDirent+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsDirent_Internal_h
+#define TNSFsDirent_Internal_h
+#import "TNSFsDirent.h"
+#import "nativescript_common.h"
+@interface TNSFsDirent()
+@property FileDirent* dirent;
+-(instancetype)initWithDirent:(FileDirent*)dirent;
+@end
+
+#endif /* TNSFsDirent_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsStat+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsStat+Internal.h
new file mode 100644
index 0000000000..9443ae1961
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsStat+Internal.h
@@ -0,0 +1,17 @@
+//
+// TNSFsStat+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsStat_Internal_h
+#define TNSFsStat_Internal_h
+#import "TNSFsStat.h"
+@interface TNSFsStat()
+@property FileStat* fileStat;
+-(instancetype)initWithFileStat:(FileStat*)fileStat;
+@end
+
+#endif /* TNSFsStat_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsStatWatcher+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsStatWatcher+Internal.h
new file mode 100644
index 0000000000..b37484c7a0
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsStatWatcher+Internal.h
@@ -0,0 +1,20 @@
+//
+// TNSFsStatWatcher+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 21/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsStatWatcher_Internal_h
+#define TNSFsStatWatcher_Internal_h
+#import "TNSFsStatWatcher.h"
+#import "TNSFsCallback+Internal.h"
+
+@interface TNSFsStatWatcher()
+@property TNSFsCallback* callback;
+@property NSString* filename;
+-(instancetype)initWithCallback:(TNSFsCallback*)callback;
+@end
+
+#endif /* TNSFsStatWatcher_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsWatcher+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsWatcher+Internal.h
new file mode 100644
index 0000000000..d46c6e552e
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders/TNSFsWatcher+Internal.h
@@ -0,0 +1,23 @@
+//
+// TNSFsWatcher+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 21/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsWatcher_Internal_h
+#define TNSFsWatcher_Internal_h
+#import "TNSFsWatcher.h"
+#import "TNSFsCallback+Internal.h"
+
+@interface TNSFsWatcher()
+@property NSString* filename;
+@property TNSFsCallback* callback;
+@property NSMutableSet* changeListeners;
+@property NSMutableSet* closeListeners;
+@property NSMutableSet* errorListeners;
+-(instancetype)initWithFilename:(NSString*)filename callback:(TNSFsCallback*)callback;
+@end
+
+#endif /* TNSFsWatcher_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/TNSWidgets b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/TNSWidgets
index 415387102a..fdff53ae48 100755
Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/TNSWidgets and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/TNSWidgets differ
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets
index bd9f3f7510..28bb15c7dd 100644
Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets differ
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSByteBuf.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSByteBuf.h
new file mode 100644
index 0000000000..f2b1ef5e83
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSByteBuf.h
@@ -0,0 +1,16 @@
+//
+// TNSByteBuf.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 18/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSByteBuf_h
+#define TNSByteBuf_h
+#import
+#import "nativescript_common.h"
+@interface TNSByteBuf:NSData
+@end
+
+#endif /* TNSByteBuf_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSByteBufMut.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSByteBufMut.h
new file mode 100644
index 0000000000..5c2e06d2d8
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSByteBufMut.h
@@ -0,0 +1,16 @@
+//
+// TNSByteBufMut.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 22/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSByteBufMut_h
+#define TNSByteBufMut_h
+#import
+#import "nativescript_common.h"
+@interface TNSByteBufMut: NSMutableData
+@end
+
+#endif /* TNSByteBufMut_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFileHandle.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFileHandle.h
new file mode 100644
index 0000000000..cc8f5e2c41
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFileHandle.h
@@ -0,0 +1,63 @@
+//
+// TNSFileHandle.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 10/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFileHandle_h
+#define TNSFileHandle_h
+#import
+#import "nativescript_common.h"
+#import "TNSHelpers.h"
+#import "TNSFsCallback+Internal.h"
+#import "TNSByteBufMut+Internal.h"
+#import "TNSFsStat+Internal.h"
+@interface TNSFileHandle : NSObject
+
+- (id _Nonnull )addCloseListener:(id _Nonnull (^_Nonnull)(void))listener;
+- (void)removeCloseListener:(id _Nonnull (^_Nonnull)(void))listener;
+
+-(instancetype)initWithHandle:(FileHandle* _Nonnull)handle;
+
+-(void)appendFileWithString:(nonnull NSString*)string callback:(nonnull void(^)(NSError* _Nullable))callback;
+-(void)appendFileWithData:(nonnull NSData*)data callback:(nonnull void(^)(NSError* _Nullable))callback;
+
+-(void)chmod:(uint)mode callback:(void(^_Nonnull)(NSError*_Nonnull))callback;
+
+-(void)fchown:(uint)uid gid:(uint)gid callback:(void(^_Nonnull)(NSError*_Nullable))callback;
+
+-(void)close:(nonnull void(^)(NSError*_Nullable))callback;
+
+- (void)datasync:(void (^_Nonnull)(NSError * _Nullable))callback;
+
+@property (readonly) int fd;
+
+-(void)readWithBuffer:(nonnull NSMutableData*) buffer offset:(int)offset length:(int)length position:(int)position callback:(nonnull void(^)(long,NSMutableData* _Nullable,NSError* _Nullable))callback;
+
+-(void)readFile:(NSString*)encoding callback:(void(^)(TNSByteBufMut*,NSError*))callback;
+
+-(void)readv:(NSArray*)buffer position:(long)position callback:(void(^)(long,NSError*))callback;
+
+-(void)stat:(nonnull void(^)(TNSFsStat* _Nonnull, NSError* _Nullable))callback;
+
+-(void)sync:(nonnull void(^)(NSError* _Nullable)) callback;
+
+-(void)truncate:(unsigned long)length callback:(void(^)(NSError*))callback;
+
+-(void)utimes:(long)atime mtime:(long)mtime andCallback:(nonnull void(^)(NSError* _Nullable)) callback;
+
+-(void)writeWithData:(nonnull NSData*)data offset:(int)offset length:(int)length position:(long)position callback:(nonnull void(^)(long,NSData*,NSError* _Nullable))callback;
+
+-(void)writeWithString:(nonnull NSString*)string encoding:(NSString*)encoding position:(long)position callback:(nonnull void(^)(long,NSString*,NSError* _Nullable))callback;
+
+-(void)writeFileWithData:(nonnull NSData*)data callback:(nonnull void(^)(NSError* _Nullable))callback;
+
+-(void)writeFileWithString:(nonnull NSString*)string callback:(nonnull void(^)(NSError* _Nullable))callback;
+
+@end
+
+
+
+#endif /* TNSFileHandle_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFileSystem.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFileSystem.h
new file mode 100644
index 0000000000..f695d8086c
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFileSystem.h
@@ -0,0 +1,183 @@
+//
+// TNSFileSystem.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 10/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFileSystem_h
+#define TNSFileSystem_h
+#import
+#import "nativescript_common.h"
+#import "TNSFileHandle.h"
+#import "TNSFsDir.h"
+#import "TNSFsDirent.h"
+#import "TNSByteBuf.h"
+#import "TNSFsCallback.h"
+#import "TNSFsStat.h"
+#import "TNSFsWatcher.h"
+#import "TNSFsStatWatcher.h"
+
+@interface TNSFileSystem : NSObject
+
++(void)accessSync:(NSString*)path withMode:(int)mode;
++(void)access:(NSString*)path withMode:(int)mode callback:(void(^)(NSError*))callback;
+
++(void)appendFileSync:(NSString*)path withString:(NSString*)string mode:(int)mode flags:(int)flags ;
++(void)appendFile:(NSString*)path withString:(NSString*)string mode:(int)mode flags:(int)flags callback:(void(^)(NSError*))callback;
+
++(void)appendFileSync:(NSString*)path withData:(NSData*)data mode:(int)mode flags:(int)flags ;
++(void)appendFile:(NSString*)path withData:(NSData*)data mode:(int)mode flags:(int)flags callback:(void(^)(NSError*))callback;
+
++(void)appendFileSyncWithFd:(int)fd withString:(NSString*)string;
++(void)appendFileWithFd:(int)fd withString:(NSString*)string callback:(void(^)(NSError*))callback;
+
++(void)appendFileSyncWithFd:(int)fd withData:(NSData*)data;
++(void)appendFileWithFd:(int)fd withData:(NSData*)data callback:(void(^)(NSError*))callback;
+
++(void)chmodSync:(NSString*)path mode:(uint)mode;
++(void)chmod:(NSString*)path mode:(uint)mode withCallback:(void(^)(NSError*))callback;
+
++(void)chownSync:(NSString*)path uid:(uint)uid gid:(uint)gid;
++(void)chown:(NSString*)path uid:(uint)uid gid:(uint)gid withCallback:(void(^)(NSError*))callback;
+
++(void)closeSync:(int)handle;
++(void)close:(int)handle withCallback:(void(^)(NSError*))callback;
+
++(void)copyFileSyncWithSrc:(NSString*)src dest:(NSString*)dest flags:(uint)flags;
++(void)copyFileWithSrc:(NSString*)src dest:(NSString*)dest flags:(uint)flags callback:(void(^)(NSError*))callback;
+
++(BOOL)existsSync:(NSString*)path;
++(void)existsSync:(NSString*)path callback:(void(^)(BOOL))callback;
+
++(void)fchmodSync:(int)fd mode:(uint)mode;
++(void)fchmod:(int)fd mode:(uint)mode withCallback:(void(^)(NSError*))callback;
+
++(void)fchownSync:(int)fd uid:(uint)uid gid:(uint)gid;
++(void)fchown:(int)fd uid:(uint)uid gid:(uint)gid withCallback:(void(^)(NSError*))callback;
+
++(void)fdatasyncSync:(int)fd;
++(void)fdatasync:(int)fd withCallback:(void(^)(NSError*))callback;
+
++(TNSFsStat*)fstatSync:(int)fd;
++(void)fstate:(int)fd withCallback:(void(^)(TNSFsStat*,NSError*))callback;
+
++(void)fsyncSync:(int)fd;
++(void)fsync:(int)fd withCallback:(void(^)(NSError*))callback;
+
++(void)ftruncateSync:(int)fd length:(long)length;
++(void)ftruncate:(int)fd length:(long)length withCallback:(void(^)(NSError*))callback;
+
++(void)futimesSync:(int)fd atime:(long)atime utime:(long)utime;
++(void)futimes:(int)fd atime:(long)atime utime:(long)utime withCallback:(void(^)(NSError*))callback;
+
++(void)lchmodSync:(NSString*)path mode:(uint)mode;
++(void)lchmod:(NSString*)path mode:(uint)mode withCallback:(void(^)(NSError*))callback;
+
++(void)lchownSync:(NSString*)path uid:(uint)uid gid:(uint)gid;
++(void)lchown:(NSString*)path uid:(uint)uid gid:(uint)gid withCallback:(void(^)(NSError*))callback;
+
++(void)lutimesSync:(NSString*)path atime:(long)atime utime:(long)utime;
++(void)lutimes:(NSString*)path atime:(long)atime utime:(long)utime withCallback:(void(^)(NSError*))callback;
+
++(void)linkSync:(NSString*)existingPath newPath:(NSString*)newPath;
++(void)link:(NSString*)existingPath newPath:(NSString*)newPath withCallback:(void(^)(NSError*))callback;
+
++(TNSFsStat*)lstatSync:(NSString*)path;
++(void)lstat:(NSString*)path withCallback:(void(^)(TNSFsStat*,NSError*))callback;
+
++(void)mkdirSync:(NSString*)path mode:(uint)mode recursive:(BOOL)recursive;
++(void)mkdir:(NSString*)path mode:(uint)mode recursive:(BOOL)recursive callback:(void(^)(NSError*))callback;
+
++(NSString*)mkdtempSync:(NSString*)prefix;
++(void)mkdtemp:(NSString*)prefix callback:(void(^)(NSString*,NSError*))callback;
+
++(int)openSync:(NSString*)path flags:(int)flags mode:(int)mode;
++(void)open:(NSString*)path flags:(int)flags mode:(int)mode callback:(void(^)(int,NSError*))callback;
+
++(TNSFsDir*)opendirSync:(NSString*)path;
++(void)opendir:(NSString*)path callback:(void(^)(TNSFsDir*,NSError*))callback;
+
++(long)readSync:(int)fd withBuffer:(NSMutableData*)buffer offset:(int)offset length:(int)length position:(int)position;
++(void)read:(int)fd withBuffer:(NSMutableData*)buffer offset:(int)offset length:(int)length position:(int)position callback:(void(^)(long,NSMutableData*,NSError*))callback;
+
++(NSArray*)readdirSync:(NSString*)path;
++(void)readdir:(NSString*)path callback:(void(^)(NSArray*,NSError*))callback;
+
++(TNSByteBufMut*)readFileSync:(NSString*)path flag:(int)flags;
++(void)readFile:(NSString*)path flag:(int)flags callback:(void(^)(TNSByteBufMut*,NSError*))callback;
+
++(NSString*)readlinkSync:(NSString*)path;
++(void)readlink:(NSString*)path callback:(void(^)(NSString*,NSError*))callback;
+
++(long)readvSync:(int)fd buffer:(NSArray*)buffer position:(long)position;
++(void)readv:(int)fd buffer:(NSArray*)buffer position:(long)position callback:(void(^)(long,NSError*))callback;
+
++(NSString*)realpathSync:(NSString*)path;
++(void)realpath:(NSString*)path callback:(void(^)(NSString*,NSError*))callback;
+
++(void)renameSync:(NSString*)oldPath newPath:(NSString*)newPath;
++(void)rename:(NSString*)oldPath newPath:(NSString*)newPath callback:(void(^)(NSError*))callback;
+
++(void)rmdirSync:(NSString*)path maxRetries:(int)maxRetries recursive:(BOOL)recursive retryDelay:(long)retryDelay;
++(void)rmdir:(NSString*)path maxRetries:(int)maxRetries recursive:(BOOL)recursive retryDelay:(long)retryDelay callback:(void(^)(NSError*))callback;
+
++(void)rmSync:(NSString*)path maxRetries:(int)maxRetries recursive:(BOOL)recursive retryDelay:(long)retryDelay;
++(void)rm:(NSString*)path maxRetries:(int)maxRetries recursive:(BOOL)recursive retryDelay:(long)retryDelay callback:(void(^)(NSError*))callback;
+
++(TNSFsStat*)statSync:(NSString*)path throwIfNoEntry:(BOOL)throwIfNoEntry;
++(void)stat:(NSString*)path throwIfNoEntry:(BOOL)throwIfNoEntry withCallback:(void(^)(TNSFsStat*,NSError*))callback;
+
++(void)symlinkSync:(NSString*)target path:(NSString*)path type:(NSString*)type;
++(void)symlink:(NSString*)target path:(NSString*)path type:(NSString*)type callback:(void(^)(NSError*))callback;
+
++(void)truncateSync:(NSString*)path length:(unsigned long)length;
++(void)truncate:(NSString*)path length:(unsigned long)length withCallback:(void(^)(NSError*))callback;
+
++(void)unlinkSync:(NSString*)path;
++(void)unlink:(NSString*)path callback:(void(^)(NSError*))callback;
+
++(void)unwatchFile:(NSString*)filename;
+
++(void)utimesSync:(NSString*)path atime:(long)atime utime:(long)utime;
++(void)utimes:(NSString*)path atime:(long)atime utime:(long)utime withCallback:(void(^)(NSError*))callback;
+
+
++(TNSFsStatWatcher*)watchWithFileName:(NSString*)filename persistent:(BOOL)persistent recursive:(BOOL)recursive encoding:(NSString*)encoding signal:(void(^)(NSError*))signal listener:(void(^)(NSString*,NSString*))listener;
+
++(TNSFsWatcher*)watchFileWithFileName:(NSString*)filename bigint:(BOOL)bigint persistent:(BOOL)persistent interval:(unsigned long)interval listener:(void(^)(TNSFsStat*,TNSFsStat*))listener;
+
+
++(void)writeFileSync:(int)fd data:(NSData*)data optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags;
++(void)writeFile:(int)fd data:(NSData*)data optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags signal:(void(^)(NSError*))signal callback:(void(^)(NSError*))callback;
+
++(void)writeFileWithPathSync:(NSString*)path data:(NSData*)data optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags;
++(void)writeFileWithPath:(NSString*)path data:(NSData*)data optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags signal:(void(^)(NSError*))signal callback:(void(^)(NSError*))callback;
+
+
++(void)writeFileSync:(int)fd string:(NSString*)string optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags;
++(void)writeFile:(int)fd string:(NSString*)data optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags signal:(void(^)(NSError*))signal callback:(void(^)(NSError*))callback;
+
++(void)writeFileWithPathSync:(NSString*)path string:(NSString*)string optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags;
++(void)writeFileWithPath:(NSString*)path string:(NSString*)string optionsEncoding:(NSString*)encoding mode:(int)mode flags:(int)flags signal:(void(^)(NSError*))signal callback:(void(^)(NSError*))callback;
+
+
++(long)writeSync:(int)fd withBuffer:(NSData*)buffer offset:(int)offset length:(int)length position:(int)position;
++(void)write:(int)fd withBuffer:(NSData*)buffer offset:(int)offset length:(int)length position:(int)position callback:(void(^)(long,TNSByteBuf*,NSError*))callback;
+
+
++(long)writeSync:(int)fd withString:(NSString*)string position:(int)position encoding:(NSString*)encoding;
++(void)write:(int)fd withString:(NSString*)string position:(int)position encoding:(NSString*)encoding callback:(void(^)(long,NSError*))callback;
+
+
++(long)writevSync:(int)fd buffers:(NSArray*)buffers position:(long)position;
++(void)writev:(int)fd buffers:(NSArray*)buffers position:(long)position callback:(void(^)(long,NSError*))callback;
+
+
++(void) openWithPath:(NSString*)path flags:(int)flag mode:(int)mode callback:(void(^)(TNSFileHandle*,NSError*))callback;
+
+@end
+
+
+#endif /* TNSFileSystem_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsCallback.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsCallback.h
new file mode 100644
index 0000000000..a8a5728b90
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsCallback.h
@@ -0,0 +1,18 @@
+//
+// TNSFsCallback.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 19/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsCallback_h
+#define TNSFsCallback_h
+#import
+#import "nativescript_common.h"
+#import "TNSHelpers.h"
+
+@interface TNSFsCallback: NSObject
+@end
+
+#endif /* TNSFsCallback_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsConstants.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsConstants.h
new file mode 100644
index 0000000000..7fe503839d
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsConstants.h
@@ -0,0 +1,103 @@
+//
+// TNSFsConstants.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 23/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsConstants_h
+#define TNSFsConstants_h
+#import
+#import "nativescript_common.h"
+@interface TNSFsConstants : NSObject
++(unsigned int) FILE_COPY_OPTIONS_COPYFILE_EXCL;
+
++(unsigned int) FILE_COPY_OPTIONS_COPYFILE_FICLONE;
+
++(unsigned int) FILE_COPY_OPTIONS_COPYFILE_FICLONE_FORCE;
+
++(int) FILE_OPEN_OPTIONS_O_RDONLY;
+
++(int) FILE_OPEN_OPTIONS_O_WRONLY;
+
++(int) FILE_OPEN_OPTIONS_O_RDWR;
+
++(int) FILE_OPEN_OPTIONS_O_CREAT;
+
++(int) FILE_OPEN_OPTIONS_O_EXCL;
+
++(int) FILE_OPEN_OPTIONS_O_NOCTTY;
+
++(int) FILE_OPEN_OPTIONS_O_TRUNC;
+
++(int) FILE_OPEN_OPTIONS_O_APPEND;
+
++(int) FILE_OPEN_OPTIONS_O_DIRECTORY;
+
++(int) FILE_OPEN_OPTIONS_O_NOATIME;
+
++(int) FILE_OPEN_OPTIONS_O_NOFOLLOW;
+
++(int) FILE_OPEN_OPTIONS_O_SYNC;
+
++(int) FILE_OPEN_OPTIONS_O_DSYNC;
+
++(int) FILE_OPEN_OPTIONS_O_SYMLINK;
+
++(int) FILE_OPEN_OPTIONS_O_DIRECT;
+
++(int) FILE_OPEN_OPTIONS_O_NONBLOCK;
+
++(int) FILE_ACCESS_OPTIONS_F_OK;
+
++(int) FILE_ACCESS_OPTIONS_R_OK;
+
++(int) FILE_ACCESS_OPTIONS_W_OK;
+
++(int) FILE_ACCESS_OPTIONS_X_OK;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFMT;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFREG;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFDIR;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFCHR;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFBLK;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFIFO;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFLNK;
+
++(mode_t) FILE_TYPE_OPTIONS_S_IFSOCK;
+
++(mode_t) FILE_MODE_OPTIONS_S_IRWXU;
+
++(mode_t) FILE_MODE_OPTIONS_S_IRUSR;
+
++(mode_t) FILE_MODE_OPTIONS_S_IWUSR;
+
++(mode_t) FILE_MODE_OPTIONS_S_IXUSR;
+
++(mode_t) FILE_MODE_OPTIONS_S_IRWXG;
+
++(mode_t) FILE_MODE_OPTIONS_S_IRGRP;
+
++(mode_t) FILE_MODE_OPTIONS_S_IWGRP;
+
++(mode_t) FILE_MODE_OPTIONS_S_IXGRP;
+
++(mode_t) FILE_MODE_OPTIONS_S_IRWXO;
+
++(mode_t) FILE_MODE_OPTIONS_S_IROTH;
+
++(mode_t) FILE_MODE_OPTIONS_S_IWOTH;
+
++(mode_t) FILE_MODE_OPTIONS_S_IXOTH;
+
+
+@end
+
+#endif /* TNSFsConstants_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsDir.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsDir.h
new file mode 100644
index 0000000000..74715ce364
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsDir.h
@@ -0,0 +1,22 @@
+//
+// TNSFsDir.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 18/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsDir_h
+#define TNSFsDir_h
+#import
+#import "nativescript_common.h"
+#import "TNSFsDirent.h"
+@interface TNSFsDir: NSObject
+@property (readonly) NSString* path;
+-(void)close:(void(^)(NSError*)) callback;
+-(void)closeSync;
+
+-(void)read:(void(^)(TNSFsDirent*,NSError*)) callback;
+-(TNSFsDirent*)readSync;
+@end
+#endif /* TNSFsDir_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsDirent.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsDirent.h
new file mode 100644
index 0000000000..31390f21d6
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsDirent.h
@@ -0,0 +1,23 @@
+//
+// TNSFsDirent.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 18/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsDirent_h
+#define TNSFsDirent_h
+#import
+@interface TNSFsDirent: NSObject
+-(BOOL)isBlockDevice;
+-(BOOL)isCharacterDevice;
+-(BOOL)isDirectory;
+-(BOOL)isFIFO;
+-(BOOL)isFile;
+-(BOOL)isSocket;
+-(BOOL)isSymbolicLink;
+-(NSString*)name;
+@end
+
+#endif /* TNSFsDirent_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsStat.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsStat.h
new file mode 100644
index 0000000000..77702cc73b
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsStat.h
@@ -0,0 +1,41 @@
+//
+// TNSFsStat.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsStat_h
+#define TNSFsStat_h
+#import
+#import "nativescript_common.h"
+@interface TNSFsStat: NSObject
+@property (readonly) long dev;
+@property (readonly) long ino;
+@property (readonly) int mode;
+@property (readonly) long nlink;
+@property (readonly) int uid;
+@property (readonly) int gid;
+@property (readonly) long rdev;
+@property (readonly) long size;
+@property (readonly) long blksize;
+@property (readonly) long blocks;
+@property (readonly) double atimeMs;
+@property (readonly) double mtimeMs;
+@property (readonly) double ctimeMs;
+@property (readonly) double birthtimeMs;
+@property (readonly) NSDate* atime;
+@property (readonly) NSDate* mtime;
+@property (readonly) NSDate* ctime;
+@property (readonly) NSDate* birthtime;
+-(BOOL)isBlockDevice;
+-(BOOL)isCharacterDevice;
+-(BOOL)isDirectory;
+-(BOOL)isFIFO;
+-(BOOL)isFile;
+-(BOOL)isSocket;
+-(BOOL)isSymbolicLink;
+@end
+
+#endif /* TNSFsStat_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsStatWatcher.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsStatWatcher.h
new file mode 100644
index 0000000000..d353a983d3
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsStatWatcher.h
@@ -0,0 +1,18 @@
+//
+// TNSFsStatWatcher.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 21/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsStatWatcher_h
+#define TNSFsStatWatcher_h
+#import
+
+@interface TNSFsStatWatcher: NSObject
+-(void)ref;
+-(void)unref;
+@end
+
+#endif /* TNSFsStatWatcher_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsWatcher.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsWatcher.h
new file mode 100644
index 0000000000..bea4355bc5
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSFsWatcher.h
@@ -0,0 +1,29 @@
+//
+// TNSFsWatcher.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 21/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsWatcher_h
+#define TNSFsWatcher_h
+#import
+@interface TNSFsWatcher: NSObject
+-(id)addChangeListener:(id(^)(NSString*,NSString*))listener;
+-(void)removeChangeListener:(id(^)(NSString*,NSString*))listener;
+
+-(id)addCloseListener:(id(^)(void))listener;
+-(void)removeCloseListener:(id(^)(void))listener;
+
+
+-(id)addErrorListener:(id(^)(NSError*))listener;
+-(void)removeErrorListener:(id(^)(NSError*))listener;
+
+-(void)close;
+-(void)ref;
+-(void)unref;
+
+@end
+
+#endif /* TNSFsWatcher_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSHelpers.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSHelpers.h
new file mode 100644
index 0000000000..c5a2150256
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSHelpers.h
@@ -0,0 +1,18 @@
+//
+// TNSHelpers.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 10/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSHelpers_h
+#define TNSHelpers_h
+#import
+#import "nativescript_common.h"
+@interface TNSHelpers: NSObject
++(NSError*)toError:(NSException*)exception;
++(NSError*)fromRustErrorChar:(char*) error;
+@end
+
+#endif /* TNSHelpers_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSWidgets.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSWidgets.h
index 7da1d2adbb..293aeab682 100644
--- a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSWidgets.h
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSWidgets.h
@@ -22,3 +22,15 @@ FOUNDATION_EXPORT const unsigned char TNSWidgetsVersionString[];
#import "TNSProcess.h"
#import "NSString+Async.h"
#import "NSData+Async.h"
+#import "TNSFileSystem.h"
+#import "TNSFileHandle.h"
+#import "TNSHelpers.h"
+#import "TNSFsDir.h"
+#import "TNSFsDirent.h"
+#import "TNSByteBuf.h"
+#import "TNSFsCallback.h"
+#import "TNSFsStat.h"
+#import "TNSFsWatcher.h"
+#import "TNSFsStatWatcher.h"
+#import "TNSByteBufMut.h"
+#import "TNSFsConstants.h"
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Info.plist b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Info.plist
index 05d9989145..7bad22c258 100644
Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Info.plist and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Info.plist differ
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSByteBuf+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSByteBuf+Internal.h
new file mode 100644
index 0000000000..52cc8c3f28
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSByteBuf+Internal.h
@@ -0,0 +1,17 @@
+//
+// TNSByteBuf+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSByteBuf_Internal_h
+#define TNSByteBuf_Internal_h
+#import "TNSByteBuf.h"
+@interface TNSByteBuf()
+@property ByteBuf *innerBuf;
+-(instancetype)initWithByteBuf:(ByteBuf*)byteBuf;
+@end
+
+#endif /* TNSByteBuf_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSByteBufMut+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSByteBufMut+Internal.h
new file mode 100644
index 0000000000..231885ac61
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSByteBufMut+Internal.h
@@ -0,0 +1,18 @@
+//
+// TNSByteBufMut+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 22/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSByteBufMut_Internal_h
+#define TNSByteBufMut_Internal_h
+#import "TNSByteBufMut.h"
+@interface TNSByteBufMut()
+@property (nullable) ByteBufMut *innerBuf;
+- (instancetype)initWithByteBufMut:(ByteBufMut *)byteBuf;
+- (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
+@end
+
+#endif /* TNSByteBufMut_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFileHandle+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFileHandle+Internal.h
new file mode 100644
index 0000000000..5e30901939
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFileHandle+Internal.h
@@ -0,0 +1,17 @@
+//
+// TNSFileHandle+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 23/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFileHandle_Internal_h
+#define TNSFileHandle_Internal_h
+#import "TNSFileHandle.h"
+@interface TNSFileHandle()
+@property FileHandle* handle;
+@property NSMutableSet* closeListeners;
+@end
+
+#endif /* TNSFileHandle_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsCallback+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsCallback+Internal.h
new file mode 100644
index 0000000000..41127f0102
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsCallback+Internal.h
@@ -0,0 +1,31 @@
+//
+// TNSFsCallback+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsCallback_Internal_h
+#define TNSFsCallback_Internal_h
+#import "nativescript_common.h"
+#import "TNSFsCallback.h"
+
+typedef void (*InternalOnSuccessCallback)(void *result);
+
+typedef void (*InternalOnErrorCallback)(NSError *error);
+
+
+@interface TNSFsCallback()
+@property BOOL autoClear;
+@property const AsyncCallback* callback;
+
+
+-(instancetype)initWithSuccess:(InternalOnSuccessCallback)success andErrorCallback:(InternalOnErrorCallback)error;
++(NSMutableSet*)callbackStore;
++(void)addCallback:(TNSFsCallback*)callback;
++(void)removeCallback:(TNSFsCallback*)callback;
+
+@end
+
+#endif /* TNSFsCallback_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsDir+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsDir+Internal.h
new file mode 100644
index 0000000000..be45f41d43
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsDir+Internal.h
@@ -0,0 +1,17 @@
+//
+// TNSFsDir+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsDir_Internal_h
+#define TNSFsDir_Internal_h
+#import "TNSFsDir.h"
+@interface TNSFsDir()
+@property FileDir* dir;
+-(instancetype)initWithDir:(FileDir*)dir;
+@end
+
+#endif /* TNSFsDir_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsDirent+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsDirent+Internal.h
new file mode 100644
index 0000000000..41a2de2d47
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsDirent+Internal.h
@@ -0,0 +1,18 @@
+//
+// TNSFsDirent+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsDirent_Internal_h
+#define TNSFsDirent_Internal_h
+#import "TNSFsDirent.h"
+#import "nativescript_common.h"
+@interface TNSFsDirent()
+@property FileDirent* dirent;
+-(instancetype)initWithDirent:(FileDirent*)dirent;
+@end
+
+#endif /* TNSFsDirent_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsStat+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsStat+Internal.h
new file mode 100644
index 0000000000..9443ae1961
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsStat+Internal.h
@@ -0,0 +1,17 @@
+//
+// TNSFsStat+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 20/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsStat_Internal_h
+#define TNSFsStat_Internal_h
+#import "TNSFsStat.h"
+@interface TNSFsStat()
+@property FileStat* fileStat;
+-(instancetype)initWithFileStat:(FileStat*)fileStat;
+@end
+
+#endif /* TNSFsStat_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsStatWatcher+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsStatWatcher+Internal.h
new file mode 100644
index 0000000000..b37484c7a0
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsStatWatcher+Internal.h
@@ -0,0 +1,20 @@
+//
+// TNSFsStatWatcher+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 21/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsStatWatcher_Internal_h
+#define TNSFsStatWatcher_Internal_h
+#import "TNSFsStatWatcher.h"
+#import "TNSFsCallback+Internal.h"
+
+@interface TNSFsStatWatcher()
+@property TNSFsCallback* callback;
+@property NSString* filename;
+-(instancetype)initWithCallback:(TNSFsCallback*)callback;
+@end
+
+#endif /* TNSFsStatWatcher_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsWatcher+Internal.h b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsWatcher+Internal.h
new file mode 100644
index 0000000000..d46c6e552e
--- /dev/null
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/TNSFsWatcher+Internal.h
@@ -0,0 +1,23 @@
+//
+// TNSFsWatcher+Internal.h
+// TNSWidgets
+//
+// Created by Osei Fortune on 21/02/2022.
+// Copyright © 2022 Telerik A D. All rights reserved.
+//
+
+#ifndef TNSFsWatcher_Internal_h
+#define TNSFsWatcher_Internal_h
+#import "TNSFsWatcher.h"
+#import "TNSFsCallback+Internal.h"
+
+@interface TNSFsWatcher()
+@property NSString* filename;
+@property TNSFsCallback* callback;
+@property NSMutableSet* changeListeners;
+@property NSMutableSet* closeListeners;
+@property NSMutableSet* errorListeners;
+-(instancetype)initWithFilename:(NSString*)filename callback:(TNSFsCallback*)callback;
+@end
+
+#endif /* TNSFsWatcher_Internal_h */
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/TNSWidgets b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/TNSWidgets
index d335b9342d..3cbd292dfa 100755
Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/TNSWidgets and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/TNSWidgets differ
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/_CodeSignature/CodeResources b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/_CodeSignature/CodeResources
index d7582fadc0..840e335412 100644
--- a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/_CodeSignature/CodeResources
+++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/_CodeSignature/CodeResources
@@ -12,6 +12,54 @@
o8366y9zYMOVyObC3vtKKy/8jxA=
+ Headers/TNSByteBuf.h
+
+ HCtK4RjaGHy5RJLs7KphyeW6U0U=
+
+ Headers/TNSByteBufMut.h
+
+ Zijib9+IaGAHnLUw+QvmPVPQ6ME=
+
+ Headers/TNSFileHandle.h
+
+ YzhbXaLycDkMIgl8Kdo73dK31RI=
+
+ Headers/TNSFileSystem.h
+
+ kv9poTHdNaKmuQjJNYi7k6PEbQ0=
+
+ Headers/TNSFsCallback.h
+
+ e04jBWPEX6wmAuTCVMcgGqRJZqg=
+
+ Headers/TNSFsConstants.h
+
+ 069AjVG0gnq/SNAOHNU1T1dPbQA=
+
+ Headers/TNSFsDir.h
+
+ CiQLeO3azs37XYUEFOSfvupM64A=
+
+ Headers/TNSFsDirent.h
+
+ PcYKj72Qp97FMhHZfJO5/oPsZZs=
+
+ Headers/TNSFsStat.h
+
+ WYdwjVG85hMXHy9yyRDe8hkfauI=
+
+ Headers/TNSFsStatWatcher.h
+
+ D8iIKnxoC5MahgpiQugQBSltf3E=
+
+ Headers/TNSFsWatcher.h
+
+ 6V8Og3MWV9sQEDTqZ6/cCbCp7pM=
+
+ Headers/TNSHelpers.h
+
+ ixbxZqxU2k1PZGCo2hDobB34pQM=
+
Headers/TNSLabel.h
x8V4jT6oNNls+KE3y/DE6ij9eCk=
@@ -22,7 +70,7 @@
Headers/TNSWidgets.h
- gUvu5bjZg5Aie5iJ1krxFmDrHwk=
+ x1Et8g5KmhtdiMduM440LyCtS6M=
Headers/UIImage+TNSBlocks.h
@@ -34,7 +82,7 @@
Info.plist
- WsLLFjQ3sruW6pvEfLRTXorurcg=
+ sKm7JLV0WYP+fzMQK40XXAQUV48=
Modules/module.modulemap
@@ -44,6 +92,42 @@
wRUUMHgrTVWHd/e8bDqN8sYZth4=
+ PrivateHeaders/TNSByteBuf+Internal.h
+
+ PeSX6S/62P2jku4k2zLz4boesQc=
+
+ PrivateHeaders/TNSByteBufMut+Internal.h
+
+ krRD8CKrDB1D238yQXSdhuBVbBo=
+
+ PrivateHeaders/TNSFileHandle+Internal.h
+
+ tNi99YMvYeK9yz32pKsFj1ML874=
+
+ PrivateHeaders/TNSFsCallback+Internal.h
+
+ rxhSBewoBzi4syjSnXWX8EXVV1c=
+
+ PrivateHeaders/TNSFsDir+Internal.h
+
+ 8aMdYpG11ZVOIitc2EMB4E4P6TE=
+
+ PrivateHeaders/TNSFsDirent+Internal.h
+
+ EuonFUIP0q+gQDBS6Y9fk/QHOEQ=
+
+ PrivateHeaders/TNSFsStat+Internal.h
+
+ arRRahesBOr2zry1fYaIvQGsi4I=
+
+ PrivateHeaders/TNSFsStatWatcher+Internal.h
+
+ /o8wcDw5Qja0rlSFrmzYID90UQM=
+
+ PrivateHeaders/TNSFsWatcher+Internal.h
+
+ ZAE03BigxXzKVkh9rmE7yDH9yjY=
+
PrivateHeaders/UIView+PropertyBag.h
3USXIiZgky+5k7en+R6oyZ3pP18=
@@ -65,6 +149,90 @@
1Iuk4atAJ89zujXqrLBvGz7Ny52RXNdD5c1ZMK0SFgs=
+ Headers/TNSByteBuf.h
+
+ hash2
+
+ CbcVfyyWc163dXU84HJQKdy66HaFIo+MIQKU+bLEMH4=
+
+
+ Headers/TNSByteBufMut.h
+
+ hash2
+
+ lBuuQTHVha9aZnFZd7vBRiaoyB3mcerpz4vIyo9KLaA=
+
+
+ Headers/TNSFileHandle.h
+
+ hash2
+
+ 32+HSeYMWcm9QgjNfITJkQMBEcH/INDEFt2Ju6UalEQ=
+
+
+ Headers/TNSFileSystem.h
+
+ hash2
+
+ 9J9CnwVXYyhxzp+EQpAHL3woXzXqnPlNkLLk/QojVZI=
+
+
+ Headers/TNSFsCallback.h
+
+ hash2
+
+ NcN5cekkDi3Db6ohl6FJ7zxtr869jxFkoL4AVbicGpg=
+
+
+ Headers/TNSFsConstants.h
+
+ hash2
+
+ tjTSCyBPjuVkhA0K+6N2y/TQGdF7fVTSH9wYIbHf8KI=
+
+
+ Headers/TNSFsDir.h
+
+ hash2
+
+ xYDShLtTKqn1jpFkwicG1fI1+HoBTIsjmeXjWS/b89Y=
+
+
+ Headers/TNSFsDirent.h
+
+ hash2
+
+ bJAXw9JRBCzcOuBcDVgslUdPMDeZ6UL6vn1opnyAeJw=
+
+
+ Headers/TNSFsStat.h
+
+ hash2
+
+ kxHj7Bsm/cAsOkVa5r9yT64FDVaFdw7a6klRY49t+2M=
+
+
+ Headers/TNSFsStatWatcher.h
+
+ hash2
+
+ UDC+ZATnQTqQlErj9/XFni1NfLO3MWfZ1CXG9m1XHzA=
+
+
+ Headers/TNSFsWatcher.h
+
+ hash2
+
+ RML6f2FZn8DfzW52Ua7jZ9ESJ08Dtw49IGwSmTgKQ7M=
+
+
+ Headers/TNSHelpers.h
+
+ hash2
+
+ R1neFQeRqZ2qIIiqax147Q5zA3X0w+9CMXExdHo8uz8=
+
+
Headers/TNSLabel.h
hash2
@@ -83,7 +251,7 @@
hash2
- V99t2zLwRPOs90tbGiQbhbdAFJlW7mp7X2R5337ewUA=
+ GZunXhWUPizLIQ/eqQnM5MJjgf1M8QtYxFyjlRDJfsw=
Headers/UIImage+TNSBlocks.h
@@ -114,6 +282,69 @@
S+GqZzjPH/SqyxwzyysFybjZsbwS5lxcTwL04W79IGA=
+ PrivateHeaders/TNSByteBuf+Internal.h
+
+ hash2
+
+ 42QPuKzJHI9+nWO0lzSxfaunJwm/hl+hKz5m5ZBJGOE=
+
+
+ PrivateHeaders/TNSByteBufMut+Internal.h
+
+ hash2
+
+ RRxV7tl3B97MIlJ9HZ6emmFYlK3/1OOwxVS/81dzsrI=
+
+
+ PrivateHeaders/TNSFileHandle+Internal.h
+
+ hash2
+
+ pjnrhuKQHmiS7v/AFpdIv8cDo+ttnXYI+D6iFcGhwDQ=
+
+
+ PrivateHeaders/TNSFsCallback+Internal.h
+
+ hash2
+
+ OzJzxlRbi3JwCdjnSvJDJqyFxgBiJbhi+eZ1PHUclGA=
+
+
+ PrivateHeaders/TNSFsDir+Internal.h
+
+ hash2
+
+ PwG5z/DHFTma7l2V+vOUPSvBtg5Td5uTcRnADX6QPmU=
+
+
+ PrivateHeaders/TNSFsDirent+Internal.h
+
+ hash2
+
+ y4MU//Lc3bujlqN2l/fC0Kx8XInNS7mBQuhMkKvNsYA=
+
+
+ PrivateHeaders/TNSFsStat+Internal.h
+
+ hash2
+
+ n32K/8P4zZt7zU6TKZP7uRttsw/3Vqg8Xo8yvRuXGMI=
+
+
+ PrivateHeaders/TNSFsStatWatcher+Internal.h
+
+ hash2
+
+ FnTLgJ4S3kHECTOHT4bpQINJdKgCwu2/e4viUXOHtfU=
+
+
+ PrivateHeaders/TNSFsWatcher+Internal.h
+
+ hash2
+
+ cD10WE9aPsxkHzAh9x/wbSfIY6yC0wYtGkQdU/LOIvM=
+
+
PrivateHeaders/UIView+PropertyBag.h
hash2
diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets
index 8bbd13ed79..c1b1fef91b 100644
Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets differ
diff --git a/packages/types-ios/src/lib/ios/objc-x86_64/objc!TNSWidgets.d.ts b/packages/types-ios/src/lib/ios/objc-x86_64/objc!TNSWidgets.d.ts
index 27e568bccd..6e6e8b2672 100644
--- a/packages/types-ios/src/lib/ios/objc-x86_64/objc!TNSWidgets.d.ts
+++ b/packages/types-ios/src/lib/ios/objc-x86_64/objc!TNSWidgets.d.ts
@@ -1,4 +1,556 @@
+declare class TNSByteBuf extends NSData {
+
+ static alloc(): TNSByteBuf; // inherited from NSObject
+
+ static data(): TNSByteBuf; // inherited from NSData
+
+ static dataWithBytesLength(bytes: interop.Pointer | interop.Reference, length: number): TNSByteBuf; // inherited from NSData
+
+ static dataWithBytesNoCopyLength(bytes: interop.Pointer | interop.Reference, length: number): TNSByteBuf; // inherited from NSData
+
+ static dataWithBytesNoCopyLengthFreeWhenDone(bytes: interop.Pointer | interop.Reference, length: number, b: boolean): TNSByteBuf; // inherited from NSData
+
+ static dataWithContentsOfFile(path: string): TNSByteBuf; // inherited from NSData
+
+ static dataWithContentsOfFileOptionsError(path: string, readOptionsMask: NSDataReadingOptions): TNSByteBuf; // inherited from NSData
+
+ static dataWithContentsOfURL(url: NSURL): TNSByteBuf; // inherited from NSData
+
+ static dataWithContentsOfURLOptionsError(url: NSURL, readOptionsMask: NSDataReadingOptions): TNSByteBuf; // inherited from NSData
+
+ static dataWithData(data: NSData): TNSByteBuf; // inherited from NSData
+
+ static new(): TNSByteBuf; // inherited from NSObject
+}
+
+declare class TNSByteBufMut extends NSMutableData {
+
+ static alloc(): TNSByteBufMut; // inherited from NSObject
+
+ static data(): TNSByteBufMut; // inherited from NSData
+
+ static dataWithBytesLength(bytes: interop.Pointer | interop.Reference, length: number): TNSByteBufMut; // inherited from NSData
+
+ static dataWithBytesNoCopyLength(bytes: interop.Pointer | interop.Reference, length: number): TNSByteBufMut; // inherited from NSData
+
+ static dataWithBytesNoCopyLengthFreeWhenDone(bytes: interop.Pointer | interop.Reference, length: number, b: boolean): TNSByteBufMut; // inherited from NSData
+
+ static dataWithCapacity(aNumItems: number): TNSByteBufMut; // inherited from NSMutableData
+
+ static dataWithContentsOfFile(path: string): TNSByteBufMut; // inherited from NSData
+
+ static dataWithContentsOfFileOptionsError(path: string, readOptionsMask: NSDataReadingOptions): TNSByteBufMut; // inherited from NSData
+
+ static dataWithContentsOfURL(url: NSURL): TNSByteBufMut; // inherited from NSData
+
+ static dataWithContentsOfURLOptionsError(url: NSURL, readOptionsMask: NSDataReadingOptions): TNSByteBufMut; // inherited from NSData
+
+ static dataWithData(data: NSData): TNSByteBufMut; // inherited from NSData
+
+ static dataWithLength(length: number): TNSByteBufMut; // inherited from NSMutableData
+
+ static new(): TNSByteBufMut; // inherited from NSObject
+}
+
+declare class TNSFileHandle extends NSObject {
+
+ static alloc(): TNSFileHandle; // inherited from NSObject
+
+ static new(): TNSFileHandle; // inherited from NSObject
+
+ readonly fd: number;
+
+ constructor(o: { handle: any; });
+
+ addCloseListener(listener: () => any): any;
+
+ appendFileWithDataCallback(data: NSData, callback: (p1: NSError) => void): void;
+
+ appendFileWithStringCallback(string: string, callback: (p1: NSError) => void): void;
+
+ chmodCallback(mode: number, callback: (p1: NSError) => void): void;
+
+ close(callback: (p1: NSError) => void): void;
+
+ datasync(callback: (p1: NSError) => void): void;
+
+ fchownGidCallback(uid: number, gid: number, callback: (p1: NSError) => void): void;
+
+ initWithHandle(handle: any): this;
+
+ readFileCallback(encoding: string, callback: (p1: interop.Pointer | interop.Reference, p2: NSError) => void): void;
+
+ readWithBufferOffsetLengthPositionCallback(buffer: NSMutableData, offset: number, length: number, position: number, callback: (p1: number, p2: NSMutableData, p3: NSError) => void): void;
+
+ readvPositionCallback(buffer: NSArray | NSMutableData[], position: number, callback: (p1: number, p2: NSError) => void): void;
+
+ removeCloseListener(listener: () => any): void;
+
+ stat(callback: (p1: interop.Pointer | interop.Reference, p2: NSError) => void): void;
+
+ sync(callback: (p1: NSError) => void): void;
+
+ truncateCallback(length: number, callback: (p1: NSError) => void): void;
+
+ utimesMtimeAndCallback(atime: number, mtime: number, callback: (p1: NSError) => void): void;
+
+ writeFileWithDataCallback(data: NSData, callback: (p1: NSError) => void): void;
+
+ writeFileWithStringCallback(string: string, callback: (p1: NSError) => void): void;
+
+ writeWithDataOffsetLengthPositionCallback(data: NSData, offset: number, length: number, position: number, callback: (p1: number, p2: NSData, p3: NSError) => void): void;
+
+ writeWithStringEncodingPositionCallback(string: string, encoding: string, position: number, callback: (p1: number, p2: string, p3: NSError) => void): void;
+}
+
+declare class TNSFileSystem extends NSObject {
+
+ static accessSyncWithMode(path: string, mode: number): void;
+
+ static accessWithModeCallback(path: string, mode: number, callback: (p1: NSError) => void): void;
+
+ static alloc(): TNSFileSystem; // inherited from NSObject
+
+ static appendFileSyncWithDataModeFlags(path: string, data: NSData, mode: number, flags: number): void;
+
+ static appendFileSyncWithFdWithData(fd: number, data: NSData): void;
+
+ static appendFileSyncWithFdWithString(fd: number, string: string): void;
+
+ static appendFileSyncWithStringModeFlags(path: string, string: string, mode: number, flags: number): void;
+
+ static appendFileWithDataModeFlagsCallback(path: string, data: NSData, mode: number, flags: number, callback: (p1: NSError) => void): void;
+
+ static appendFileWithFdWithDataCallback(fd: number, data: NSData, callback: (p1: NSError) => void): void;
+
+ static appendFileWithFdWithStringCallback(fd: number, string: string, callback: (p1: NSError) => void): void;
+
+ static appendFileWithStringModeFlagsCallback(path: string, string: string, mode: number, flags: number, callback: (p1: NSError) => void): void;
+
+ static chmodModeWithCallback(path: string, mode: number, callback: (p1: NSError) => void): void;
+
+ static chmodSyncMode(path: string, mode: number): void;
+
+ static chownSyncUidGid(path: string, uid: number, gid: number): void;
+
+ static chownUidGidWithCallback(path: string, uid: number, gid: number, callback: (p1: NSError) => void): void;
+
+ static closeSync(handle: number): void;
+
+ static closeWithCallback(handle: number, callback: (p1: NSError) => void): void;
+
+ static copyFileSyncWithSrcDestFlags(src: string, dest: string, flags: number): void;
+
+ static copyFileWithSrcDestFlagsCallback(src: string, dest: string, flags: number, callback: (p1: NSError) => void): void;
+
+ static existsSync(path: string): boolean;
+
+ static existsSyncCallback(path: string, callback: (p1: boolean) => void): void;
+
+ static fchmodModeWithCallback(fd: number, mode: number, callback: (p1: NSError) => void): void;
+
+ static fchmodSyncMode(fd: number, mode: number): void;
+
+ static fchownSyncUidGid(fd: number, uid: number, gid: number): void;
+
+ static fchownUidGidWithCallback(fd: number, uid: number, gid: number, callback: (p1: NSError) => void): void;
+
+ static fdatasyncSync(fd: number): void;
+
+ static fdatasyncWithCallback(fd: number, callback: (p1: NSError) => void): void;
+
+ static fstatSync(fd: number): TNSFsStat;
+
+ static fstateWithCallback(fd: number, callback: (p1: TNSFsStat, p2: NSError) => void): void;
+
+ static fsyncSync(fd: number): void;
+
+ static fsyncWithCallback(fd: number, callback: (p1: NSError) => void): void;
+
+ static ftruncateLengthWithCallback(fd: number, length: number, callback: (p1: NSError) => void): void;
+
+ static ftruncateSyncLength(fd: number, length: number): void;
+
+ static futimesAtimeUtimeWithCallback(fd: number, atime: number, utime: number, callback: (p1: NSError) => void): void;
+
+ static futimesSyncAtimeUtime(fd: number, atime: number, utime: number): void;
+
+ static lchmodModeWithCallback(path: string, mode: number, callback: (p1: NSError) => void): void;
+
+ static lchmodSyncMode(path: string, mode: number): void;
+
+ static lchownSyncUidGid(path: string, uid: number, gid: number): void;
+
+ static lchownUidGidWithCallback(path: string, uid: number, gid: number, callback: (p1: NSError) => void): void;
+
+ static linkNewPathWithCallback(existingPath: string, newPath: string, callback: (p1: NSError) => void): void;
+
+ static linkSyncNewPath(existingPath: string, newPath: string): void;
+
+ static lstatSync(path: string): TNSFsStat;
+
+ static lstatWithCallback(path: string, callback: (p1: TNSFsStat, p2: NSError) => void): void;
+
+ static lutimesAtimeUtimeWithCallback(path: string, atime: number, utime: number, callback: (p1: NSError) => void): void;
+
+ static lutimesSyncAtimeUtime(path: string, atime: number, utime: number): void;
+
+ static mkdirModeRecursiveCallback(path: string, mode: number, recursive: boolean, callback: (p1: NSError) => void): void;
+
+ static mkdirSyncModeRecursive(path: string, mode: number, recursive: boolean): void;
+
+ static mkdtempCallback(prefix: string, callback: (p1: string, p2: NSError) => void): void;
+
+ static mkdtempSync(prefix: string): string;
+
+ static new(): TNSFileSystem; // inherited from NSObject
+
+ static openFlagsModeCallback(path: string, flags: number, mode: number, callback: (p1: number, p2: NSError) => void): void;
+
+ static openHandleWithPathFlagsModeCallback(path: string, flag: number, mode: number, callback: (p1: TNSFileHandle, p2: NSError) => void): void;
+
+ static openSyncFlagsMode(path: string, flags: number, mode: number): number;
+
+ static opendirCallback(path: string, callback: (p1: TNSFsDir, p2: NSError) => void): void;
+
+ static opendirSync(path: string): TNSFsDir;
+
+ static readFileFlagCallback(path: string, flags: number, callback: (p1: TNSByteBuf, p2: NSError) => void): void;
+
+ static readFileSyncFlag(path: string, flags: number): any;
+
+ static readSyncWithBufferOffsetLengthPosition(fd: number, buffer: NSMutableData, offset: number, length: number, position: number): number;
+
+ static readWithBufferOffsetLengthPositionCallback(fd: number, buffer: NSMutableData, offset: number, length: number, position: number, callback: (p1: number, p2: NSMutableData, p3: NSError) => void): void;
+
+ static readdirCallback(path: string, callback: (p1: NSArray, p2: NSError) => void): void;
+
+ static readdirSync(path: string): NSArray;
+
+ static readlinkCallback(path: string, callback: (p1: string, p2: NSError) => void): void;
+
+ static readlinkSync(path: string): string;
+
+ static readvBufferPositionCallback(fd: number, buffer: NSArray | NSMutableData[], position: number, callback: (p1: number, p2: NSError) => void): void;
+
+ static readvSyncBufferPosition(fd: number, buffer: NSArray | NSMutableData[], position: number): number;
+
+ static realpathCallback(path: string, callback: (p1: string, p2: NSError) => void): void;
+
+ static realpathSync(path: string): string;
+
+ static renameNewPathCallback(oldPath: string, newPath: string, callback: (p1: NSError) => void): void;
+
+ static renameSyncNewPath(oldPath: string, newPath: string): void;
+
+ static rmMaxRetriesRecursiveRetryDelayCallback(path: string, maxRetries: number, recursive: boolean, retryDelay: number, callback: (p1: NSError) => void): void;
+
+ static rmSyncMaxRetriesRecursiveRetryDelay(path: string, maxRetries: number, recursive: boolean, retryDelay: number): void;
+
+ static rmdirMaxRetriesRecursiveRetryDelayCallback(path: string, maxRetries: number, recursive: boolean, retryDelay: number, callback: (p1: NSError) => void): void;
+
+ static rmdirSyncMaxRetriesRecursiveRetryDelay(path: string, maxRetries: number, recursive: boolean, retryDelay: number): void;
+
+ static statSyncThrowIfNoEntry(path: string, throwIfNoEntry: boolean): TNSFsStat;
+
+ static statThrowIfNoEntryWithCallback(path: string, throwIfNoEntry: boolean, callback: (p1: TNSFsStat, p2: NSError) => void): void;
+
+ static symlinkPathTypeCallback(target: string, path: string, type: string, callback: (p1: NSError) => void): void;
+
+ static symlinkSyncPathType(target: string, path: string, type: string): void;
+
+ static truncateLengthWithCallback(path: string, length: number, callback: (p1: NSError) => void): void;
+
+ static truncateSyncLength(path: string, length: number): void;
+
+ static unlinkCallback(path: string, callback: (p1: NSError) => void): void;
+
+ static unlinkSync(path: string): void;
+
+ static unwatchFile(filename: string): void;
+
+ static utimesAtimeUtimeWithCallback(path: string, atime: number, utime: number, callback: (p1: NSError) => void): void;
+
+ static utimesSyncAtimeUtime(path: string, atime: number, utime: number): void;
+
+ static watchFileWithFileNameBigintPersistentIntervalListener(filename: string, bigint: boolean, persistent: boolean, interval: number, listener: (p1: string, p2: string) => void): void;
+
+ static watchWithFileNamePersistentRecursiveEncodingSignalListener(filename: string, persistent: boolean, recursive: boolean, encoding: string, signal: (p1: NSError) => void, listener: (p1: string, p2: string) => void): void;
+
+ static writeFileDataOptionsEncodingModeFlagsSignalCallback(fd: number, data: NSData, encoding: string, mode: number, flags: number, signal: (p1: NSError) => void, callback: (p1: NSError) => void): void;
+
+ static writeFileStringOptionsEncodingModeFlagsSignalCallback(fd: number, data: string, encoding: string, mode: number, flags: number, signal: (p1: NSError) => void, callback: (p1: NSError) => void): void;
+
+ static writeFileSyncDataOptionsEncodingModeFlags(fd: number, data: NSData, encoding: string, mode: number, flags: number): void;
+
+ static writeFileSyncStringOptionsEncodingModeFlags(fd: number, string: string, encoding: string, mode: number, flags: number): void;
+
+ static writeFileWithPathDataOptionsEncodingModeFlagsSignalCallback(path: string, data: NSData, encoding: string, mode: number, flags: number, signal: (p1: NSError) => void, callback: (p1: NSError) => void): void;
+
+ static writeFileWithPathStringOptionsEncodingModeFlagsSignalCallback(path: string, string: string, encoding: string, mode: number, flags: number, signal: (p1: NSError) => void, callback: (p1: NSError) => void): void;
+
+ static writeFileWithPathSyncDataOptionsEncodingModeFlags(path: string, data: NSData, encoding: string, mode: number, flags: number): void;
+
+ static writeFileWithPathSyncStringOptionsEncodingModeFlags(path: string, string: string, encoding: string, mode: number, flags: number): void;
+
+ static writeSyncWithBufferOffsetLengthPosition(fd: number, buffer: NSData, offset: number, length: number, position: number): number;
+
+ static writeSyncWithStringPositionEncoding(fd: number, string: string, position: number, encoding: string): number;
+
+ static writeWithBufferOffsetLengthPositionCallback(fd: number, buffer: NSData, offset: number, length: number, position: number, callback: (p1: number, p2: TNSByteBuf, p3: NSError) => void): void;
+
+ static writeWithStringPositionEncodingCallback(fd: number, string: string, position: number, encoding: string, callback: (p1: number, p2: NSError) => void): void;
+
+ static writevBuffersPositionCallback(fd: number, buffers: NSArray | NSData[], position: number, callback: (p1: number, p2: NSError) => void): void;
+
+ static writevSyncBuffersPosition(fd: number, buffers: NSArray | NSData[], position: number): number;
+}
+
+declare class TNSFsCallback extends NSObject {
+
+ static alloc(): TNSFsCallback; // inherited from NSObject
+
+ static new(): TNSFsCallback; // inherited from NSObject
+}
+
+declare class TNSFsConstants extends NSObject {
+
+ static FILE_ACCESS_OPTIONS_F_OK(): number;
+
+ static FILE_ACCESS_OPTIONS_R_OK(): number;
+
+ static FILE_ACCESS_OPTIONS_W_OK(): number;
+
+ static FILE_ACCESS_OPTIONS_X_OK(): number;
+
+ static FILE_COPY_OPTIONS_COPYFILE_EXCL(): number;
+
+ static FILE_COPY_OPTIONS_COPYFILE_FICLONE(): number;
+
+ static FILE_COPY_OPTIONS_COPYFILE_FICLONE_FORCE(): number;
+
+ static FILE_MODE_OPTIONS_S_IRGRP(): number;
+
+ static FILE_MODE_OPTIONS_S_IROTH(): number;
+
+ static FILE_MODE_OPTIONS_S_IRUSR(): number;
+
+ static FILE_MODE_OPTIONS_S_IRWXG(): number;
+
+ static FILE_MODE_OPTIONS_S_IRWXO(): number;
+
+ static FILE_MODE_OPTIONS_S_IRWXU(): number;
+
+ static FILE_MODE_OPTIONS_S_IWGRP(): number;
+
+ static FILE_MODE_OPTIONS_S_IWOTH(): number;
+
+ static FILE_MODE_OPTIONS_S_IWUSR(): number;
+
+ static FILE_MODE_OPTIONS_S_IXGRP(): number;
+
+ static FILE_MODE_OPTIONS_S_IXOTH(): number;
+
+ static FILE_MODE_OPTIONS_S_IXUSR(): number;
+
+ static FILE_OPEN_OPTIONS_O_APPEND(): number;
+
+ static FILE_OPEN_OPTIONS_O_CREAT(): number;
+
+ static FILE_OPEN_OPTIONS_O_DIRECT(): number;
+
+ static FILE_OPEN_OPTIONS_O_DIRECTORY(): number;
+
+ static FILE_OPEN_OPTIONS_O_DSYNC(): number;
+
+ static FILE_OPEN_OPTIONS_O_EXCL(): number;
+
+ static FILE_OPEN_OPTIONS_O_NOATIME(): number;
+
+ static FILE_OPEN_OPTIONS_O_NOCTTY(): number;
+
+ static FILE_OPEN_OPTIONS_O_NOFOLLOW(): number;
+
+ static FILE_OPEN_OPTIONS_O_NONBLOCK(): number;
+
+ static FILE_OPEN_OPTIONS_O_RDONLY(): number;
+
+ static FILE_OPEN_OPTIONS_O_RDWR(): number;
+
+ static FILE_OPEN_OPTIONS_O_SYMLINK(): number;
+
+ static FILE_OPEN_OPTIONS_O_SYNC(): number;
+
+ static FILE_OPEN_OPTIONS_O_TRUNC(): number;
+
+ static FILE_OPEN_OPTIONS_O_WRONLY(): number;
+
+ static FILE_TYPE_OPTIONS_S_IFBLK(): number;
+
+ static FILE_TYPE_OPTIONS_S_IFCHR(): number;
+
+ static FILE_TYPE_OPTIONS_S_IFDIR(): number;
+
+ static FILE_TYPE_OPTIONS_S_IFIFO(): number;
+
+ static FILE_TYPE_OPTIONS_S_IFLNK(): number;
+
+ static FILE_TYPE_OPTIONS_S_IFMT(): number;
+
+ static FILE_TYPE_OPTIONS_S_IFREG(): number;
+
+ static FILE_TYPE_OPTIONS_S_IFSOCK(): number;
+
+ static alloc(): TNSFsConstants; // inherited from NSObject
+
+ static new(): TNSFsConstants; // inherited from NSObject
+}
+
+declare class TNSFsDir extends NSObject {
+
+ static alloc(): TNSFsDir; // inherited from NSObject
+
+ static new(): TNSFsDir; // inherited from NSObject
+
+ readonly path: string;
+
+ close(callback: (p1: NSError) => void): void;
+
+ closeSync(): void;
+
+ read(callback: (p1: TNSFsDirent, p2: NSError) => void): void;
+
+ readSync(): TNSFsDirent;
+}
+
+declare class TNSFsDirent extends NSObject {
+
+ static alloc(): TNSFsDirent; // inherited from NSObject
+
+ static new(): TNSFsDirent; // inherited from NSObject
+
+ isBlockDevice(): boolean;
+
+ isCharacterDevice(): boolean;
+
+ isDirectory(): boolean;
+
+ isFIFO(): boolean;
+
+ isFile(): boolean;
+
+ isSocket(): boolean;
+
+ isSymbolicLink(): boolean;
+
+ name(): string;
+}
+
+declare class TNSFsStat extends NSObject {
+
+ static alloc(): TNSFsStat; // inherited from NSObject
+
+ static new(): TNSFsStat; // inherited from NSObject
+
+ readonly atime: Date;
+
+ readonly atimeMs: number;
+
+ readonly birthtime: Date;
+
+ readonly birthtimeMs: number;
+
+ readonly blksize: number;
+
+ readonly blocks: number;
+
+ readonly ctime: Date;
+
+ readonly ctimeMs: number;
+
+ readonly dev: number;
+
+ readonly gid: number;
+
+ readonly ino: number;
+
+ readonly mode: number;
+
+ readonly mtime: Date;
+
+ readonly mtimeMs: number;
+
+ readonly nlink: number;
+
+ readonly rdev: number;
+
+ readonly size: number;
+
+ readonly uid: number;
+
+ isBlockDevice(): boolean;
+
+ isCharacterDevice(): boolean;
+
+ isDirectory(): boolean;
+
+ isFIFO(): boolean;
+
+ isFile(): boolean;
+
+ isSocket(): boolean;
+
+ isSymbolicLink(): boolean;
+}
+
+declare class TNSFsStatWatcher extends NSObject {
+
+ static alloc(): TNSFsStatWatcher; // inherited from NSObject
+
+ static new(): TNSFsStatWatcher; // inherited from NSObject
+
+ ref(): void;
+
+ unref(): void;
+}
+
+declare class TNSFsWatcher extends NSObject {
+
+ static alloc(): TNSFsWatcher; // inherited from NSObject
+
+ static new(): TNSFsWatcher; // inherited from NSObject
+
+ addChangeListener(listener: (p1: string, p2: string) => any): any;
+
+ addCloseListener(listener: () => any): any;
+
+ addErrorListener(listener: (p1: NSError) => any): any;
+
+ close(): void;
+
+ ref(): void;
+
+ removeChangeListener(listener: (p1: string, p2: string) => any): void;
+
+ removeCloseListener(listener: () => any): void;
+
+ removeErrorListener(listener: (p1: NSError) => any): void;
+
+ unref(): void;
+}
+
+declare class TNSHelpers extends NSObject {
+
+ static alloc(): TNSHelpers; // inherited from NSObject
+
+ static fromRustErrorChar(error: string | interop.Pointer | interop.Reference): NSError;
+
+ static new(): TNSHelpers; // inherited from NSObject
+
+ static toError(exception: NSException): NSError;
+}
+
declare class TNSLabel extends UILabel {
static alloc(): TNSLabel; // inherited from NSObject
diff --git a/packages/ui-mobile-base/android/build.gradle b/packages/ui-mobile-base/android/build.gradle
index 8168b5bf67..4f0b6b0d6b 100644
--- a/packages/ui-mobile-base/android/build.gradle
+++ b/packages/ui-mobile-base/android/build.gradle
@@ -1,13 +1,19 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
+
+ def computeBuildToolsVersion = { -> project.hasProperty("androidBuildToolsVersion") ? androidBuildToolsVersion : "${ANDRIOD_BUILD_TOOLS_VERSION}"}
+
repositories {
google()
- jcenter()
+ mavenCentral()
+ maven {
+ url "https://plugins.gradle.org/m2/"
+ }
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.2.0'
-
+ classpath "com.android.tools.build:gradle:${computeBuildToolsVersion}"
+ classpath 'org.mozilla.rust-android-gradle:plugin:0.9.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
@@ -16,7 +22,7 @@ buildscript {
allprojects {
repositories {
google()
- jcenter()
+ mavenCentral()
}
}
@@ -24,4 +30,4 @@ task clean(type: Delete) {
delete rootProject.buildDir
}
-project.ext.useAndroidX=true
\ No newline at end of file
+project.ext.useAndroidX=true
diff --git a/packages/ui-mobile-base/android/gradle.properties b/packages/ui-mobile-base/android/gradle.properties
index fab0e33e62..e888a02d5e 100644
--- a/packages/ui-mobile-base/android/gradle.properties
+++ b/packages/ui-mobile-base/android/gradle.properties
@@ -1,23 +1,26 @@
-# Project-wide Gradle settings.
-
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-
-# For more details on how to configure your build environment visit
+## For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
-
+#
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
-# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# Default value: -Xmx1024m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
-
+#
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
-
-# Due to a known issue with Android Gradle Plugin versions 3.0.* and 3.1.*,
-# the configuration on demand should be disabled.
-# https://developer.android.com/studio/known-issues
-org.gradle.configureondemand=false
\ No newline at end of file
+#Fri Feb 04 10:31:24 AST 2022
+android_x_material_version=1.4.0
+android_x_fragment_version=1.3.6
+android.useAndroidX=true
+COMPILE_SDK_VERSION=31
+android_x_view_pager_version=1.0.0
+ANDRIOD_BUILD_TOOLS_VERSION=7.1.0
+android_x_exif_interface_version=1.3.2
+org.gradle.configureondemand=false
+MIN_SDK_VERSION=17
+BUILD_TOOLS_VERSION=31.0.0
+android_x_transition_version=1.4.1
+android.enableJetifier=true
+android_x_app_compat_version=1.3.1
diff --git a/packages/ui-mobile-base/android/gradle/wrapper/gradle-wrapper.properties b/packages/ui-mobile-base/android/gradle/wrapper/gradle-wrapper.properties
index 2aa9a6ed40..e29e6beb20 100644
--- a/packages/ui-mobile-base/android/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/ui-mobile-base/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
diff --git a/packages/ui-mobile-base/android/settings.gradle b/packages/ui-mobile-base/android/settings.gradle
index 09ee5ce4ca..d68c259f96 100644
--- a/packages/ui-mobile-base/android/settings.gradle
+++ b/packages/ui-mobile-base/android/settings.gradle
@@ -1 +1,2 @@
include ':widgets'
+include ':widgetsdemo'
diff --git a/packages/ui-mobile-base/android/widgets/build.gradle b/packages/ui-mobile-base/android/widgets/build.gradle
index f81817404f..db9f575900 100644
--- a/packages/ui-mobile-base/android/widgets/build.gradle
+++ b/packages/ui-mobile-base/android/widgets/build.gradle
@@ -1,4 +1,6 @@
-import groovy.json.JsonSlurper //used to parse package.json
+import groovy.json.JsonSlurper
+
+//used to parse package.json
import groovy.json.JsonBuilder
import groovy.json.JsonOutput
@@ -6,95 +8,108 @@ def isWinOs = System.properties['os.name'].toLowerCase().contains('windows')
apply plugin: 'com.android.library'
-def computeCompileSdkVersion () {
- if(project.hasProperty("compileSdk")) {
- return compileSdk
- }
- else {
- return 28
- }
+def computeCompileSdkVersion = { ->
+ project.hasProperty("compileSdk") ? compileSdk : COMPILE_SDK_VERSION as int }
+def computeTargetSdkVersion = { ->
+ project.hasProperty("targetSdk") ? targetSdk : COMPILE_SDK_VERSION as int }
+def computeBuildToolsVersion = { ->
+ project.hasProperty("buildToolsVersion") ? buildToolsVersion : BUILD_TOOLS_VERSION as String
}
-def computeBuildToolsVersion() {
- if(project.hasProperty("buildToolsVersion")) {
- return buildToolsVersion
- }
- else {
- return "28.0.2"
- }
-}
-def computeAndroidXVersion() {
- if(project.hasProperty("androidxVersion")) {
- return androidxVersion
- }
- else {
- return "1.0.0"
- }
-}
+android {
+ compileSdkVersion computeCompileSdkVersion()
+ buildToolsVersion computeBuildToolsVersion()
-def computeSupportVersion() {
- if(project.hasProperty("supportVersion")) {
- return supportVersion
- }
- else {
- return "28.0.0"
- }
-}
+ defaultConfig {
+ minSdkVersion MIN_SDK_VERSION
+ targetSdkVersion computeTargetSdkVersion()
+ versionCode 1
+ versionName "1.0"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
-def computeTargetSdkVersion() {
- if(project.hasProperty("targetSdk")) {
- return targetSdk
- }
- else {
- return 28
- }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
}
-android {
- compileSdkVersion computeCompileSdkVersion()
- buildToolsVersion computeBuildToolsVersion()
-
- defaultConfig {
- minSdkVersion 16
- targetSdkVersion computeTargetSdkVersion()
- versionCode 1
- versionName "1.0"
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
+apply plugin: 'org.mozilla.rust-android-gradle.rust-android'
+
+cargo {
+ module = "../../nativescript_common"
+ libname = "nativescript_common"
+ targets = ["arm","arm64","x86","x86_64"]
+
+ apiLevels = [
+ "arm": 17,
+ "arm64": 21,
+ "x86": 17,
+ "x86_64": 21
+ ]
+ profile = 'debug'
}
dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
-
- if(project.hasProperty("useAndroidX")) {
- println 'Using android X'
- def androidxVersion = computeAndroidXVersion()
- implementation 'androidx.viewpager:viewpager:' + androidxVersion
- implementation 'androidx.fragment:fragment:' + androidxVersion
- implementation 'androidx.transition:transition:' + androidxVersion
- implementation "androidx.exifinterface:exifinterface:1.3.2"
- implementation "androidx.appcompat:appcompat:1.1.0"
- } else {
- println 'Using support library'
- implementation 'com.android.support:support-v4:' + computeSupportVersion()
- }
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
+
+
+ def androidXAppCompatVersion = "${android_x_app_compat_version}"
+ if (project.hasProperty("androidXAppCompat")) {
+ androidXAppCompatVersion = androidXAppCompat
+ }
+
+ def androidXExifInterfaceVersion = "${android_x_exif_interface_version}"
+ if (project.hasProperty("androidXExifInterface")) {
+ androidXExifInterfaceVersion = androidXExifInterface
+ }
+
+ def androidXViewPagerVersion = "${android_x_view_pager_version}"
+ if (project.hasProperty("androidXViewPager")) {
+ androidXViewPagerVersion = androidXViewPager
+ }
+
+ def androidXFragmentVersion = "${android_x_fragment_version}"
+ if (project.hasProperty("androidXFragment")) {
+ androidXFragmentVersion = androidXFragment
+ }
+
+ def androidXTransitionVersion = "${android_x_transition_version}"
+ if (project.hasProperty("androidXTransition")) {
+ androidXTransitionVersion = androidXTransition
+ }
+
+
+ implementation "androidx.appcompat:appcompat:$androidXAppCompatVersion"
+ implementation "androidx.exifinterface:exifinterface:$androidXExifInterfaceVersion"
+ implementation "androidx.viewpager2:viewpager2:$androidXViewPagerVersion"
+ implementation "androidx.fragment:fragment:$androidXFragmentVersion"
+ implementation "androidx.transition:transition:$androidXTransitionVersion"
+}
+
+task cleanBuildDir(type: Delete) {
+ delete "../build/"
}
-task cleanBuildDir (type: Delete) {
- delete "../build/"
+task copyAar {
+ doLast {
+ copy {
+ from "build/outputs/aar/widgets-release.aar"
+ into "../build/"
+ }
+ }
}
-task copyAar << {
- copy {
- from "build/outputs/aar/widgets-release.aar"
- into "../build/"
- }
+tasks.whenTaskAdded { task ->
+ if ((task.name == 'javaPreCompileDebug' || task.name == 'javaPreCompileRelease')) {
+ task.dependsOn 'cargoBuild'
+ }
}
assemble.dependsOn(cleanBuildDir)
diff --git a/packages/ui-mobile-base/android/widgets/src/main/AndroidManifest.xml b/packages/ui-mobile-base/android/widgets/src/main/AndroidManifest.xml
index 8036856574..219362d3c7 100644
--- a/packages/ui-mobile-base/android/widgets/src/main/AndroidManifest.xml
+++ b/packages/ui-mobile-base/android/widgets/src/main/AndroidManifest.xml
@@ -1,9 +1,26 @@
+ xmlns:tools="http://schemas.android.com/tools"
+ package="org.nativescript.widgets">
+
+
+
+
+ android:allowBackup="true"
+ >
+
+
+
-
\ No newline at end of file
+
diff --git a/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/AsyncCallback.java b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/AsyncCallback.java
new file mode 100644
index 0000000000..5b498beb21
--- /dev/null
+++ b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/AsyncCallback.java
@@ -0,0 +1,26 @@
+package org.nativescript.widgets.filesystem;
+
+public abstract class AsyncCallback {
+ final long nativeCallback;
+
+ private native long createAsyncCallback(AsyncCallback callback);
+
+ private native void disposeAsyncCallback(long callback);
+
+ static {
+ FileSystem.loadNative();
+ }
+
+ public AsyncCallback() {
+ nativeCallback = createAsyncCallback(this);
+ }
+
+ public abstract void onSuccess(T result);
+
+ public abstract void onError(Object error);
+
+ @Override
+ protected void finalize() throws Throwable {
+ disposeAsyncCallback(nativeCallback);
+ }
+}
diff --git a/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/Constants.java b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/Constants.java
new file mode 100644
index 0000000000..3ed3df6f5e
--- /dev/null
+++ b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/Constants.java
@@ -0,0 +1,187 @@
+package org.nativescript.widgets.filesystem;
+
+public class Constants {
+
+
+ static {
+ FileSystem.loadNative();
+ }
+
+ /**
+ * Flag indicating to open a file for read-only access.
+ */
+ public static int O_RDONLY;
+ /**
+ * Flag indicating to open a file for write-only access.
+ */
+ public static int O_WRONLY;
+ /**
+ * Flag indicating to open a file for read-write access.
+ */
+ public static int O_RDWR;
+ /**
+ * Flag indicating to create the file if it does not already exist.
+ */
+ public static int O_CREAT;
+ /**
+ * Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists.
+ */
+ public static int O_EXCL;
+ /**
+ * Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one).
+ */
+ public static int O_NOCTTY;
+ /***
+ * Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero.
+ */
+ public static int O_TRUNC;
+ /**
+ * Flag indicating that data will be appended to the end of the file.
+ */
+ public static int O_APPEND;
+ /**
+ * Flag indicating that the open should fail if the path is not a directory.
+ */
+ public static int O_DIRECTORY;
+ /**
+ * Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only.
+ */
+ public static int O_NOATIME;
+ /**
+ * Flag indicating that the open should fail if the path is a symbolic link.
+ */
+ public static int O_NOFOLLOW;
+ /**
+ * Flag indicating that the file is opened for synchronized I/O with write operations waiting for file integrity.
+ */
+ public static int O_SYNC;
+ /**
+ * Flag indicating that the file is opened for synchronized I/O with write operations waiting for data integrity.
+ */
+ public static int O_DSYNC;
+ /**
+ * Flag indicating to open the symbolic link itself rather than the resource it is pointing to.
+ */
+ public static int O_SYMLINK;
+ /**
+ * When set, an attempt will be made to minimize caching effects of file I/O.
+ */
+ public static int O_DIRECT;
+ /**
+ * Flag indicating to open the file in nonblocking mode when possible.
+ */
+ public static int O_NONBLOCK;
+
+
+ /**
+ * Flag indicating that the file is visible to the calling process. This is useful for determining if a file exists, but says nothing about rwx permissions. Default if no mode is specified.
+ */
+ public static int F_OK;
+ /**
+ * Flag indicating that the file can be read by the calling process.
+ */
+ public static int R_OK;
+ /**
+ * Flag indicating that the file can be written by the calling process.
+ */
+ public static int W_OK;
+ /**
+ * Flag indicating that the file can be executed by the calling process.
+ */
+ public static int X_OK;
+
+ /**
+ * If present, the copy operation will fail with an error if the destination path already exists.
+ */
+ public static int COPYFILE_EXCL;
+ /**
+ * If present, the copy operation will attempt to create a copy-on-write reflink. If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used.
+ */
+ public static int COPYFILE_FICLONE;
+ /**
+ * If present, the copy operation will attempt to create a copy-on-write reflink. If the underlying platform does not support copy-on-write, then the operation will fail with an error.
+ */
+ public static int COPYFILE_FICLONE_FORCE;
+
+ /**
+ * Bit mask used to extract the file type code.
+ */
+ public static int S_IFMT;
+ /**
+ * File type constant for a regular file.
+ */
+ public static int S_IFREG;
+ /**
+ * File type constant for a directory.
+ */
+ public static int S_IFDIR;
+ /**
+ * File type constant for a character-oriented device file.
+ */
+ public static int S_IFCHR;
+ /**
+ * File type constant for a block-oriented device file.
+ */
+ public static int S_IFBLK;
+ /**
+ * File type constant for a FIFO/pipe.
+ */
+ public static int S_IFIFO;
+ /**
+ * File type constant for a symbolic link.
+ */
+ public static int S_IFLNK;
+ /**
+ * File type constant for a socket.
+ */
+ public static int S_IFSOCK;
+
+ /**
+ * File mode indicating readable, writable, and executable by owner.
+ */
+ public static int S_IRWXU;
+ /**
+ * File mode indicating readable by owner.
+ */
+ public static int S_IRUSR;
+ /**
+ * File mode indicating writable by owner.
+ */
+ public static int S_IWUSR;
+ /**
+ * File mode indicating executable by owner.
+ */
+ public static int S_IXUSR;
+ /**
+ * File mode indicating readable, writable, and executable by group.
+ */
+ public static int S_IRWXG;
+ /**
+ * File mode indicating readable by group.
+ */
+ public static int S_IRGRP;
+ /**
+ * File mode indicating writable by group.
+ */
+ public static int S_IWGRP;
+ /**
+ * File mode indicating executable by group.
+ */
+ public static int S_IXGRP;
+ /**
+ * File mode indicating readable, writable, and executable by others.
+ */
+ public static int S_IRWXO;
+ /**
+ * File mode indicating readable by others.
+ */
+ public static int S_IROTH;
+ /**
+ * File mode indicating writable by others.
+ */
+ public static int S_IWOTH;
+ /**
+ * File mode indicating executable by others.
+ */
+ public static int S_IXOTH;
+}
diff --git a/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileDir.java b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileDir.java
new file mode 100644
index 0000000000..60cf04c388
--- /dev/null
+++ b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileDir.java
@@ -0,0 +1,50 @@
+package org.nativescript.widgets.filesystem;
+
+public class FileDir {
+ long nativeFileDir;
+
+ private static native String nativePath(long fileDir);
+
+ private static native String nativeCloseSync(long fileDir);
+
+ private static native void nativeClose(long fileDir, long callback);
+
+ private static native FileDirent nativeReadSync(long fileDir);
+
+ private static native void nativeRead(long fileDir, long callback);
+
+ private static native void dispose(long nativeFileDir);
+
+ static {
+ FileSystem.loadNative();
+ }
+
+ FileDir(long dir) {
+ nativeFileDir = dir;
+ }
+
+ public String getPath() {
+ return nativePath(nativeFileDir);
+ }
+
+ public void closeSync() {
+ nativeCloseSync(nativeFileDir);
+ }
+
+ public void close(AsyncCallback callback) {
+ nativeClose(nativeFileDir, callback.nativeCallback);
+ }
+
+ public FileDirent readSync() {
+ return nativeReadSync(nativeFileDir);
+ }
+
+ public void read(AsyncCallback callback) {
+ nativeRead(nativeFileDir, callback.nativeCallback);
+ }
+
+ @Override
+ protected void finalize() throws Throwable {
+ dispose(nativeFileDir);
+ }
+}
diff --git a/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileDirent.java b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileDirent.java
new file mode 100644
index 0000000000..55c8d31295
--- /dev/null
+++ b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileDirent.java
@@ -0,0 +1,68 @@
+package org.nativescript.widgets.filesystem;
+
+public class FileDirent {
+ long nativeFileDirent;
+
+ private static native String nativeName(long nativeFileDirent);
+
+ private static native void nativeDispose(long nativeFileDirent);
+
+ private static native boolean nativeIsBlockDevice(long nativeFileDirent);
+
+ private static native boolean nativeIsCharacterDevice(long nativeFileDirent);
+
+ private static native boolean nativeIsDirectory(long nativeFileDirent);
+
+ private static native boolean nativeIsFifo(long nativeFileDirent);
+
+ private static native boolean nativeIsFile(long nativeFileDirent);
+
+ private static native boolean nativeIsSocket(long nativeFileDirent);
+
+ private static native boolean nativeIsSymbolicLink(long nativeFileDirent);
+
+ static {
+ FileSystem.loadNative();
+ }
+
+ FileDirent(long dirent) {
+ nativeFileDirent = dirent;
+ }
+
+ public String getName() {
+ return nativeName(nativeFileDirent);
+ }
+
+ public boolean isBlockDevice() {
+ return nativeIsBlockDevice(nativeFileDirent);
+ }
+
+ public boolean isCharacterDevice() {
+ return nativeIsCharacterDevice(nativeFileDirent);
+ }
+
+ public boolean isDirectory() {
+ return nativeIsDirectory(nativeFileDirent);
+ }
+
+ public boolean isFifo() {
+ return nativeIsFifo(nativeFileDirent);
+ }
+
+ public boolean isFile() {
+ return nativeIsFile(nativeFileDirent);
+ }
+
+ public boolean isSocket() {
+ return nativeIsSocket(nativeFileDirent);
+ }
+
+ public boolean isSymbolicLink() {
+ return nativeIsSymbolicLink(nativeFileDirent);
+ }
+
+ @Override
+ protected void finalize() throws Throwable {
+ nativeDispose(nativeFileDirent);
+ }
+}
diff --git a/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileHandle.java b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileHandle.java
new file mode 100644
index 0000000000..a93d2bf741
--- /dev/null
+++ b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileHandle.java
@@ -0,0 +1,291 @@
+package org.nativescript.widgets.filesystem;
+
+import android.os.ParcelFileDescriptor;
+
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+public class FileHandle {
+ public boolean closed;
+ int fd;
+ long nativeFileHandle;
+
+ static native long nativeInit(int fd);
+
+ static native FileHandle nativeOpen(String path, int flags, int mode, long callback);
+
+ static native long nativeDispose(long fd);
+
+ static native void nativeClose(long fh);
+
+ static native void nativeAppend(long fo, long fi);
+
+ static native void nativeAppendString(long fh, String data);
+
+ static native void nativeAppendBytes(long fh, byte[] data);
+
+ static native void nativeAppendBuffer(long fh, ByteBuffer data);
+
+ static native long nativeRead(long fh, byte[] buffer, long offset, long length, long position);
+
+ static native long nativeReadBuffer(long fh, ByteBuffer buffer, long offset, long length, long position);
+
+ static native long nativeWrite(long fh, long data);
+
+ static native void nativeWriteString(long fh, String data);
+
+ static native long nativeWriteBytes(long fh, byte[] data);
+
+ static native long nativeWriteBuffer(long fh, ByteBuffer buffer);
+
+ static native JSONObject nativeStat(long fh);
+
+ static native void nativeDataSync(long fh);
+
+ static native void nativeSync(long fh);
+
+ static native void nativeFutimes(long fh, long atime, long mtime);
+
+ static native void nativeCopyFile(String src, String dest);
+
+ static native void nativeUnlink(String path);
+
+ FileHandle(ParcelFileDescriptor pfd) {
+ // Gets around the warning
+ /*
+ * Peer expected signal when closed unable to deliver after detach
+ * */
+ try {
+ ParcelFileDescriptor descriptor = pfd.dup();
+ fd = descriptor.detachFd();
+ nativeFileHandle = nativeInit(
+ fd
+ );
+ // close orig
+ pfd.close();
+ } catch (IOException ignored) {
+ }
+ }
+
+ FileHandle(int fd){
+ nativeFileHandle = nativeInit(fd);
+ }
+
+ int getFd() {
+ return fd;
+ }
+
+ public static void open(String path, int flag, int mode, AsyncCallback callback) {
+ nativeOpen(path, flag, mode, callback.nativeCallback);
+ }
+
+ /*
+
+ public void close(FileSystem.Callback callback) {
+ executor.execute(() -> {
+ try {
+ closeSync(this);
+ callback.onSuccess(null);
+ } catch (IOException e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ public void appendFile(FileHandle data, String options, FileSystem.Callback callback) {
+ executors.execute(() -> {
+ boolean error = false;
+ try {
+ appendFileSync(this, data, options);
+ } catch (IOException e) {
+ callback.onError(e);
+ error = true;
+ } finally {
+ if (!error) {
+ callback.onSuccess(null);
+ }
+ }
+ });
+ }
+
+ public void appendFile(String data, String options, FileSystem.Callback callback) {
+ executors.execute(() -> {
+ boolean error = false;
+ try {
+ appendFileSync(this, data, options);
+ } catch (IOException e) {
+ callback.onError(e);
+ error = true;
+ } finally {
+ if (!error) {
+ callback.onSuccess(null);
+ }
+ }
+ });
+ }
+
+ public void appendFile(ByteBuffer data, String options, FileSystem.Callback callback) {
+ executors.execute(() -> {
+ try {
+ appendFileSync(this, data, options);
+ callback.onSuccess(null);
+ } catch (IOException e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ public void appendFile(byte[] data, String options, FileSystem.Callback callback) {
+ executors.execute(() -> {
+ try {
+ appendFileSync(this, data, options);
+ callback.onSuccess(null);
+ } catch (IOException e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ public void read(byte[] buffer, int offset, int length, int position, FileSystem.Callback callback) {
+ executors.execute(() -> {
+ try {
+ long read = readSync(this, buffer, offset, length, position);
+ callback.onSuccess(read);
+ } catch (IOException e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ public void read(ByteBuffer buffer, int offset, int length, int position, FileSystem.Callback callback) {
+ executors.execute(() -> {
+ try {
+ long read = readSync(this, buffer, offset, length, position);
+ callback.onSuccess(read);
+ } catch (IOException e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ public void stat(FileSystem.Callback callback) {
+ executor.execute(() -> {
+ try {
+ JSONObject json = statSync(this);
+ callback.onSuccess(json.toString());
+ } catch (IOException e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ public void datasync(FileSystem.Callback callback) {
+ executor.execute(() -> {
+ try {
+ fdatasyncSync(this);
+ callback.onSuccess(null);
+ } catch (Exception e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ public void sync(FileSystem.Callback callback) {
+ executor.execute(() -> {
+ try {
+ fsyncSync(this);
+ callback.onSuccess(null);
+ } catch (Exception e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ public void futimes(long atime, long mtime, FileSystem.Callback callback) {
+ executor.execute(() -> {
+ try {
+ futimesSync(this, atime, mtime);
+ callback.onSuccess(null);
+ } catch (Exception e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ public void copyFile(String src, String dest, FileSystem.Callback callback) {
+ executors.execute(() -> {
+ try {
+ copyFileSync(src, dest);
+ callback.onSuccess(null);
+ } catch (Exception e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ public void write(FileHandle data, String options, FileSystem.Callback callback) {
+ executors.execute(() -> {
+ boolean error = false;
+ try {
+ writeSync(this, data, options);
+ } catch (IOException e) {
+ callback.onError(e);
+ error = true;
+ } finally {
+ if (!error) {
+ callback.onSuccess(null);
+ }
+ }
+ });
+ }
+
+ public void write(String data, String options, FileSystem.Callback callback) {
+ executors.execute(() -> {
+ boolean error = false;
+ try {
+ writeSync(this, data, options);
+ } catch (IOException e) {
+ callback.onError(e);
+ error = true;
+ } finally {
+ if (!error) {
+ callback.onSuccess(null);
+ }
+ }
+ });
+ }
+
+ public void write(ByteBuffer data, String options, FileSystem.Callback callback) {
+ executors.execute(() -> {
+ try {
+ writeSync(this, data, options);
+ callback.onSuccess(null);
+ } catch (IOException e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ public void write(byte[] data, String options, FileSystem.Callback callback) {
+ executors.execute(() -> {
+ try {
+ writeSync(this, data, options);
+ callback.onSuccess(null);
+ } catch (IOException e) {
+ callback.onError(e);
+ }
+ });
+ }
+
+ @Override
+ protected void finalize() throws Throwable {
+ try {
+ closeSync(this);
+ nativeDispose(nativeFileHandle);
+ } catch (Exception ignored) {
+ }
+ }
+ */
+}
diff --git a/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileStat.java b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileStat.java
new file mode 100644
index 0000000000..9fa6f293bb
--- /dev/null
+++ b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileStat.java
@@ -0,0 +1,133 @@
+package org.nativescript.widgets.filesystem;
+
+public class FileStat {
+ long dev;
+ long ino;
+ int mode;
+ long nlink;
+ int uid;
+ int gid;
+ long rdev;
+ long size;
+ long blksize;
+ long blocks;
+ double atimeMs;
+ double mtimeMs;
+ double ctimeMs;
+ double birthtimeMs;
+ double birthtime;
+ double atime;
+ double mtime;
+ double ctime;
+ boolean isBlockDevice;
+ boolean isCharacterDevice;
+ boolean isDirectory;
+ boolean isFIFO;
+ boolean isFile;
+ boolean isSocket;
+ boolean isSymbolicLink;
+
+ static {
+ FileSystem.loadNative();
+ }
+
+ public long getDev() {
+ return dev;
+ }
+
+ public long getIno() {
+ return ino;
+ }
+
+ public int getMode() {
+ return mode;
+ }
+
+ public long getNlink() {
+ return nlink;
+ }
+
+ public int getUid() {
+ return uid;
+ }
+
+ public int getGid() {
+ return gid;
+ }
+
+ public long getRdev() {
+ return rdev;
+ }
+
+ public long getSize() {
+ return size;
+ }
+
+ public long getBlksize() {
+ return blksize;
+ }
+
+ public long getBlocks() {
+ return blocks;
+ }
+
+ public double getAtimeMs() {
+ return atimeMs;
+ }
+
+ public double getMtimeMs() {
+ return mtimeMs;
+ }
+
+ public double getCtimeMs() {
+ return ctimeMs;
+ }
+
+ public double getBirthtimeMs() {
+ return birthtimeMs;
+ }
+
+ public double getBirthtime() {
+ return birthtime;
+ }
+
+ public double getAtime() {
+ return atime;
+ }
+
+ public double getMtime() {
+ return mtime;
+ }
+
+ public double getCtime() {
+ return ctime;
+ }
+
+ public boolean isBlockDevice() {
+ return isBlockDevice;
+ }
+
+ public boolean isCharacterDevice() {
+ return isCharacterDevice;
+ }
+
+ public boolean isDirectory() {
+ return isDirectory;
+ }
+
+ public boolean isFIFO() {
+ return isFIFO;
+ }
+
+ public boolean isFile() {
+ return isFile;
+ }
+
+ public boolean isSocket() {
+ return isSocket;
+ }
+
+ public boolean isSymbolicLink() {
+ return isSymbolicLink;
+ }
+}
diff --git a/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileSystem.java b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileSystem.java
new file mode 100644
index 0000000000..00b8be4bad
--- /dev/null
+++ b/packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/filesystem/FileSystem.java
@@ -0,0 +1,1169 @@
+package org.nativescript.widgets.filesystem;
+
+import java.lang.ref.PhantomReference;
+import java.lang.ref.Reference;
+import java.lang.ref.ReferenceQueue;
+import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class FileSystem {
+
+ private static native void disposeByteBufMut(long buffer);
+
+ private static native void nativeAccess(String path, int mode, long callback);
+
+ private static native void nativeAppendFileWithBytes(int fd, byte[] bytes, long callback);
+
+ private static native void nativeAppendFileWithString(int fd, String data, long callback);
+
+ private static native void nativeAppendFileWithPathBytes(String path, byte[] bytes, int mode, int flags, long callback);
+
+ private static native void nativeAppendFileWithPathString(String path, String data, int mode, int flags, long callback);
+
+ private static native void nativeChmod(String path, int mode, long callback);
+
+ private static native void nativeChown(String path, int uid, int gid, long callback);
+
+ private static native void nativeCopyFile(String src, String dest, int flags, long callback);
+
+ private static native void nativeExists(String path, long callback);
+
+ private static native void nativeFchmod(int fd, int mode, long callback);
+
+ private static native void nativeFchown(int fd, int uid, int gid, long callback);
+
+ private static native void nativeFdatasync(int fd, long callback);
+
+ private static native void nativeFstat(int fd, long callback);
+
+ private static native void nativeFsync(int fd, long callback);
+
+ private static native void nativeFtruncate(int fd, long len, long callback);
+
+ private static native void nativeFutimes(int fd, long atime, long mtime, long callback);
+
+ private static native void nativeLchmod(String path, int mode, long callback);
+
+ private static native void nativeLchown(String path, int uid, int gid, long callback);
+
+ private static native void nativeLutimes(String path, long atime, long mtime, long callback);
+
+ private static native void nativeLink(String oldPath, String newPath, long callback);
+
+ private static native void nativeLstat(String path, long callback);
+
+ private static native void nativeMkdir(String path, int mode, boolean recursive, long callback);
+
+ private static native void nativeMkdtemp(String prefix, long callback);
+
+ private static native void nativeOpen(String path, int flags, int mode, long callback);
+
+ private static native void nativeOpenDir(String path, long callback);
+
+ private static native void nativeRead(int fd, ByteBuffer buffer, long offset, long length, long position, long callback);
+
+ private static native void nativeReadWithBytes(int fd, byte[] buffer, long offset, long length, long position, long callback);
+
+ private static native void nativeReaddirWithFileTypes(String path, String encoding, long callback);
+
+ private static native void nativeReaddirWithFile(String path, String encoding, long callback);
+
+ private static native void nativeReadFile(String path, int flags, long callback);
+
+ private static native void nativeReadFileBytes(String path, int flags, long callback);
+
+ private static native void nativeReadFileWithFd(int fd, int flags, long callback);
+
+ private static native void nativeReadFileBytesWithFd(int fd, int flags, long callback);
+
+ private static native void nativeReadLink(String path, String encoding, long callback);
+
+ private static native void nativeReadv(int fd, ByteBuffer[] buffers, long position, long callback);
+
+ private static native void nativeRealPath(String path, long callback);
+
+ private static native void nativeRename(String oldPath, String newPath, long callback);
+
+ private static native void nativeRmdir(String path, int maxRetries, boolean recursive, long retryDelay, long callback);
+
+ private static native void nativeRm(String path, int maxRetries, boolean recursive, long retryDelay, long callback);
+
+ private static native void nativeStat(String path, boolean throwIfNoEntry, long callback);
+
+ private static native void nativeSymlink(String target, String path, long callback);
+
+ private static native void nativeTruncate(String path, long len, long callback);
+
+ private static native void nativeUnlink(String path, long callback);
+
+ private static native void nativeUnwatchFile(String path, long callback);
+
+ private static native void nativeUtimes(String path, long atime, long mtime, long callback);
+
+ private static native FsWatcher nativeWatch(String path, boolean persistent, boolean recursive, String encoding, long callback);
+
+ private static native FileWatcher nativeWatchFile(String path, boolean bigint, boolean persistent, long interval, long callback);
+
+ private static native void nativeWrite(int fd, ByteBuffer buffer, long offset, long length, long position, long callback);
+
+ private static native void nativeWriteBytes(int fd, byte[] buffer, long offset, long length, long position, long callback);
+
+ private static native void nativeWriteString(int fd, String string, String encoding, long position, long callback);
+
+ private static native void nativeWriteFileWithString(int fd, String data, long callback);
+
+ private static native void nativeWriteFileWithBuffer(int fd, ByteBuffer data, long callback);
+
+ private static native void nativeWriteFileWithBytes(int fd, byte[] data, long callback);
+
+ private static native void nativeWriteFileWithStringFromPath(String path, String data, String encoding, int mode, int flag, long callback);
+
+ private static native void nativeWriteFileWithBytesFromPath(String path, byte[] data, String encoding, int mode, int flag, long callback);
+
+ private static native void nativeWriteFileWithBufferFromPath(String path, ByteBuffer data, String encoding, int mode, int flag, long callback);
+
+ private static native void nativeWritev(int fd, ByteBuffer[] buffers, long position, long callback);
+
+ private static native void nativeAccessSync(String path, int mode);
+
+ private static native void nativeAppendFileWithBytesSync(int fd, byte[] bytes);
+
+ private static native void nativeAppendFileWithStringSync(int fd, String data);
+
+ private static native void nativeAppendFileWithPathBytesSync(String path, byte[] bytes, int mode, int flags);
+
+ private static native void nativeAppendFileWithPathStringSync(String path, String data, int mode, int flags);
+
+ private static native void nativeChmodSync(String path, int mode);
+
+ private static native void nativeChownSync(String path, int uid, int gid);
+
+ private static native void nativeCopyFileSync(String src, String dest, int flags);
+
+ private static native boolean nativeExistsSync(String path);
+
+ private static native void nativeFchmodSync(int fd, int mode);
+
+ private static native void nativeFchownSync(int fd, int uid, int gid);
+
+ private static native void nativeFdatasyncSync(int fd);
+
+ private static native FileStat nativeFstatSync(int fd);
+
+ private static native void nativeFsyncSync(int fd);
+
+ private static native void nativeFtruncateSync(int fd, long len);
+
+ private static native void nativeFutimesSync(int fd, long atime, long mtime);
+
+ private static native void nativeLchmodSync(String path, int mode);
+
+ private static native void nativeLchownSync(String path, int uid, int gid);
+
+ private static native void nativeLutimesSync(String path, long atime, long mtime);
+
+ private static native void nativeLinkSync(String oldPath, String newPath);
+
+ private static native FileStat nativeLstatSync(String path);
+
+ private static native void nativeMkdirSync(String path, int mode, boolean recursive);
+
+ private static native String nativeMkdtempSync(String prefix);
+
+ private static native int nativeOpenSync(String path, int flags, int mode);
+
+ private static native FileDir nativeOpenDirSync(String path);
+
+ private static native long nativeReadSync(int fd, ByteBuffer buffer, long offset, long length, long position);
+
+ private static native long nativeReadWithBytesSync(int fd, byte[] buffer, long offset, long length, long position);
+
+ private static native FileDirent[] nativeReaddirWithFileTypesSync(String path, String encoding);
+
+ private static native String[] nativeReaddirWithFileSync(String path, String encoding);
+
+ private static native ByteBuffer nativeReadFileSync(String path, int flags);
+
+ private static native byte[] nativeReadFileBytesSync(String path, int flags);
+
+ private static native ByteBuffer nativeReadFileWithFdSync(int fd, int flags);
+
+ private static native byte[] nativeReadFileBytesWithFdSync(int fd, int flags);
+
+ private static native String nativeReadLinkSync(String path, String encoding);
+
+ private static native long nativeReadvSync(int fd, ByteBuffer[] buffers, long position);
+
+ private static native String nativeRealPathSync(String path);
+
+ private static native void nativeRenameSync(String oldPath, String newPath);
+
+ private static native void nativeRmdirSync(String path, int maxRetries, boolean recursive, long retryDelay);
+
+ private static native void nativeRmSync(String path, int maxRetries, boolean recursive, long retryDelay);
+
+ private static native FileStat nativeStatSync(String path, boolean throwIfNoEntry);
+
+ private static native void nativeSymlinkSync(String target, String path);
+
+ private static native void nativeTruncateSync(String path, long len);
+
+ private static native void nativeUnlinkSync(String path);
+
+ private static native void nativeUtimesSync(String path, long atime, long mtime);
+
+ private static native long nativeWriteSync(int fd, ByteBuffer buffer, long offset, long length, long position);
+
+ private static native long nativeWriteBytesSync(int fd, byte[] buffer, long offset, long length, long position);
+
+ private static native long nativeWriteStringSync(int fd, String string, String encoding, long position);
+
+ private static native void nativeWriteFileWithStringSync(int fd, String data);
+
+ private static native void nativeWriteFileWithBufferSync(int fd, ByteBuffer data);
+
+ private static native void nativeWriteFileWithBytesSync(int fd, byte[] data);
+
+ private static native void nativeWriteFileWithStringFromPathSync(String path, String data, String encoding, int mode, int flag);
+
+ private static native void nativeWriteFileWithBytesFromPathSync(String path, byte[] data, String encoding, int mode, int flag);
+
+ private static native void nativeWriteFileWithBufferFromPathSync(String path, ByteBuffer data, String encoding, int mode, int flag);
+
+ private static native long nativeWritevSync(int fd, ByteBuffer[] buffers, long position);
+
+ private static boolean isLoaded = false;
+
+ static void loadNative() {
+ if (isLoaded) {
+ return;
+ }
+ try {
+ System.loadLibrary("nativescript_common");
+ } catch (Exception ignored) {
+ }
+ }
+
+ private static ReferenceQueue bufferRefQue = new ReferenceQueue<>();
+ private static HashMap, Long> keyMap = new HashMap<>();
+ private static HashMap> map = new HashMap<>();
+
+ private static ExecutorService executor = Executors.newSingleThreadExecutor();
+
+ private static AtomicBoolean monitoring = new AtomicBoolean();
+
+ static {
+ loadNative();
+ startWatch();
+ }
+
+ static final String FILE_OPTIONS_PATH = "path";
+ static final String FILE_OPTIONS_DIRECTORY = "directory";
+ static final String FILE_OPTIONS_DIRECTORY_CACHE = "CACHE";
+
+ private static void startWatch() {
+ if (monitoring.get()) {
+ return;
+ }
+ monitoring.set(true);
+ AtomicInteger dropped = new AtomicInteger();
+ executor.execute(() -> {
+ while (monitoring.get()) {
+ Reference extends ByteBuffer> tmp = bufferRefQue.poll();
+ if (tmp != null) {
+ Long key = keyMap.get(tmp);
+ if (key != null) {
+ keyMap.remove(tmp);
+ map.remove(key);
+ disposeByteBufMut(key);
+ dropped.getAndIncrement();
+ }
+ }
+ }
+ });
+ }
+
+ private static void stopWatch() {
+ monitoring.set(false);
+ executor.shutdown();
+ }
+
+ public static void restartWatch() {
+ startWatch();
+ executor = Executors.newSingleThreadExecutor();
+ startWatch();
+ }
+
+ public static void watchItem(long key, ByteBuffer value) {
+ Reference ref = new PhantomReference<>(value, bufferRefQue);
+ keyMap.put(ref, key);
+ map.put(key, ref);
+ }
+
+ private static void watchRef(ByteBuffer buffer) {
+ Reference ref = new PhantomReference<>(buffer, bufferRefQue);
+ }
+
+ public static void access(String path, int mode, AsyncCallback callback) {
+ nativeAccess(path, mode, callback.nativeCallback);
+ }
+
+ public static void appendFile(int fd, byte[] bytes, AsyncCallback callback) {
+ nativeAppendFileWithBytes(fd, bytes, callback.nativeCallback);
+ }
+
+ public static void appendFile(int fd, String string, AsyncCallback callback) {
+ nativeAppendFileWithString(fd, string, callback.nativeCallback);
+ }
+
+ public static void appendFile(String path, byte[] data, int flags, int mode, AsyncCallback callback) {
+ nativeAppendFileWithPathBytes(path, data, flags, mode, callback.nativeCallback);
+ }
+
+ public static void appendFile(String path, String data, int flags, int mode, AsyncCallback callback) {
+ nativeAppendFileWithPathString(path, data, flags, mode, callback.nativeCallback);
+ }
+
+ public static void chmod(String path, int mode, AsyncCallback callback) {
+ nativeChmod(path, mode, callback.nativeCallback);
+ }
+
+ public static void chown(String path, int uid, int gid, AsyncCallback callback) {
+ nativeChown(path, uid, gid, callback.nativeCallback);
+ }
+
+ public static void copyFile(String src, String dest, int flags, AsyncCallback callback) {
+ nativeCopyFile(src, dest, flags, callback.nativeCallback);
+ }
+
+ public static void exists(String path, AsyncCallback callback) {
+ nativeExists(path, callback.nativeCallback);
+ }
+
+ public static void fchmod(int fd, int mode, AsyncCallback callback) {
+ nativeFchmod(fd, mode, callback.nativeCallback);
+ }
+
+ public static void fchown(int fd, int uid, int gid, AsyncCallback callback) {
+ nativeFchown(fd, uid, gid, callback.nativeCallback);
+ }
+
+ public static void fdatasync(int fd, AsyncCallback callback) {
+ nativeFdatasync(fd, callback.nativeCallback);
+ }
+
+ public static void fstat(int fd, AsyncCallback callback) {
+ nativeFstat(fd, callback.nativeCallback);
+ }
+
+ public static void fsync(int fd, AsyncCallback callback) {
+ nativeFsync(fd, callback.nativeCallback);
+ }
+
+ public static void ftruncate(int fd, long len, AsyncCallback callback) {
+ nativeFtruncate(fd, len, callback.nativeCallback);
+ }
+
+ public static void futimes(int fd, long atime, long mtime, AsyncCallback callback) {
+ nativeFutimes(fd, atime, mtime, callback.nativeCallback);
+ }
+
+ public static void lchmod(String path, int mode, AsyncCallback callback) {
+ nativeLchmod(path, mode, callback.nativeCallback);
+ }
+
+ public static void lchown(String path, int uid, int gid, AsyncCallback callback) {
+ nativeLchown(path, uid, gid, callback.nativeCallback);
+ }
+
+ public static void lutimes(String path, long atime, long mtime, AsyncCallback callback) {
+ nativeLutimes(path, atime, mtime, callback.nativeCallback);
+ }
+
+ public static void link(String oldPath, String newPath, AsyncCallback callback) {
+ nativeLink(oldPath, newPath, callback.nativeCallback);
+ }
+
+ public static void lstat(String path, AsyncCallback callback) {
+ nativeLstat(path, callback.nativeCallback);
+ }
+
+ public static void mkdir(String path, int mode, boolean recursive, AsyncCallback callback) {
+ nativeMkdir(path, mode, recursive, callback.nativeCallback);
+ }
+
+ public static void mkdtemp(String prefix, AsyncCallback callback) {
+ nativeMkdtemp(prefix, callback.nativeCallback);
+ }
+
+ public static void open(String path, int flag, int mode, AsyncCallback callback) {
+ nativeOpen(path, flag, mode, callback.nativeCallback);
+ }
+
+ public static void openDir(String path, AsyncCallback callback) {
+ nativeOpenDir(path, callback.nativeCallback);
+ }
+
+ public static void read(int fd, ByteBuffer buffer, long offset, long length, long position, AsyncCallback callback) {
+ nativeRead(fd, buffer, offset, length, position, callback.nativeCallback);
+ }
+
+ public static void read(int fd, byte[] buffer, long offset, long length, long position, AsyncCallback callback) {
+ nativeReadWithBytes(fd, buffer, offset, length, position, callback.nativeCallback);
+ }
+
+ public static void readdir(String path, String encoding, boolean withTypes, AsyncCallback