@qqbrowser/qbot-claw-launcher 0.9.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +1 -0
  2. package/debug.html +440 -0
  3. package/dist/config.d.ts +15 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +23 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +128 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/installer.d.ts +20 -0
  12. package/dist/installer.d.ts.map +1 -0
  13. package/dist/installer.js +335 -0
  14. package/dist/installer.js.map +1 -0
  15. package/dist/quarantine.d.ts +37 -0
  16. package/dist/quarantine.d.ts.map +1 -0
  17. package/dist/quarantine.js +315 -0
  18. package/dist/quarantine.js.map +1 -0
  19. package/dist/reportLog.d.ts +28 -0
  20. package/dist/reportLog.d.ts.map +1 -0
  21. package/dist/reportLog.js +262 -0
  22. package/dist/reportLog.js.map +1 -0
  23. package/dist/server.d.ts +4 -0
  24. package/dist/server.d.ts.map +1 -0
  25. package/dist/server.js +425 -0
  26. package/dist/server.js.map +1 -0
  27. package/dist/service.d.ts +11 -0
  28. package/dist/service.d.ts.map +1 -0
  29. package/dist/service.js +197 -0
  30. package/dist/service.js.map +1 -0
  31. package/dist/state.d.ts +21 -0
  32. package/dist/state.d.ts.map +1 -0
  33. package/dist/state.js +62 -0
  34. package/dist/state.js.map +1 -0
  35. package/dist/utils.d.ts +25 -0
  36. package/dist/utils.d.ts.map +1 -0
  37. package/dist/utils.js +101 -0
  38. package/dist/utils.js.map +1 -0
  39. package/node_modules/@parcel/watcher/LICENSE +21 -0
  40. package/node_modules/@parcel/watcher/README.md +136 -0
  41. package/node_modules/@parcel/watcher/index.d.ts +49 -0
  42. package/node_modules/@parcel/watcher/index.js +42 -0
  43. package/node_modules/@parcel/watcher/index.js.flow +48 -0
  44. package/node_modules/@parcel/watcher/node_modules/picomatch/LICENSE +21 -0
  45. package/node_modules/@parcel/watcher/node_modules/picomatch/README.md +738 -0
  46. package/node_modules/@parcel/watcher/node_modules/picomatch/index.js +17 -0
  47. package/node_modules/@parcel/watcher/node_modules/picomatch/lib/constants.js +180 -0
  48. package/node_modules/@parcel/watcher/node_modules/picomatch/lib/parse.js +1085 -0
  49. package/node_modules/@parcel/watcher/node_modules/picomatch/lib/picomatch.js +341 -0
  50. package/node_modules/@parcel/watcher/node_modules/picomatch/lib/scan.js +391 -0
  51. package/node_modules/@parcel/watcher/node_modules/picomatch/lib/utils.js +72 -0
  52. package/node_modules/@parcel/watcher/node_modules/picomatch/package.json +83 -0
  53. package/node_modules/@parcel/watcher/node_modules/picomatch/posix.js +3 -0
  54. package/node_modules/@parcel/watcher/package.json +39 -0
  55. package/node_modules/@parcel/watcher/wrapper.js +74 -0
  56. package/node_modules/@parcel/watcher-darwin-arm64/LICENSE +21 -0
  57. package/node_modules/@parcel/watcher-darwin-arm64/README.md +1 -0
  58. package/node_modules/@parcel/watcher-darwin-arm64/package.json +30 -0
  59. package/node_modules/@parcel/watcher-darwin-arm64/watcher.node +0 -0
  60. package/node_modules/fs-xattr/LICENSE +21 -0
  61. package/node_modules/fs-xattr/build/Makefile +347 -0
  62. package/node_modules/fs-xattr/build/Release/.deps/Release/obj.target/xattr/src/async.o.d +15 -0
  63. package/node_modules/fs-xattr/build/Release/.deps/Release/obj.target/xattr/src/error.o.d +12 -0
  64. package/node_modules/fs-xattr/build/Release/.deps/Release/obj.target/xattr/src/sync.o.d +15 -0
  65. package/node_modules/fs-xattr/build/Release/.deps/Release/obj.target/xattr/src/util.o.d +12 -0
  66. package/node_modules/fs-xattr/build/Release/.deps/Release/obj.target/xattr/src/xattr.o.d +14 -0
  67. package/node_modules/fs-xattr/build/Release/.deps/Release/xattr.node.d +1 -0
  68. package/node_modules/fs-xattr/build/Release/obj.target/xattr/src/async.o +0 -0
  69. package/node_modules/fs-xattr/build/Release/obj.target/xattr/src/error.o +0 -0
  70. package/node_modules/fs-xattr/build/Release/obj.target/xattr/src/sync.o +0 -0
  71. package/node_modules/fs-xattr/build/Release/obj.target/xattr/src/util.o +0 -0
  72. package/node_modules/fs-xattr/build/Release/obj.target/xattr/src/xattr.o +0 -0
  73. package/node_modules/fs-xattr/build/Release/xattr.node +0 -0
  74. package/node_modules/fs-xattr/build/binding.Makefile +6 -0
  75. package/node_modules/fs-xattr/build/config.gypi +530 -0
  76. package/node_modules/fs-xattr/build/gyp-mac-tool +772 -0
  77. package/node_modules/fs-xattr/build/xattr.target.mk +185 -0
  78. package/node_modules/fs-xattr/index.d.ts +47 -0
  79. package/node_modules/fs-xattr/index.js +80 -0
  80. package/node_modules/fs-xattr/package.json +29 -0
  81. package/node_modules/fs-xattr/readme.md +101 -0
  82. package/node_modules/is-extglob/LICENSE +21 -0
  83. package/node_modules/is-extglob/README.md +107 -0
  84. package/node_modules/is-extglob/index.js +20 -0
  85. package/node_modules/is-extglob/package.json +69 -0
  86. package/node_modules/is-glob/LICENSE +21 -0
  87. package/node_modules/is-glob/README.md +206 -0
  88. package/node_modules/is-glob/index.js +150 -0
  89. package/node_modules/is-glob/package.json +81 -0
  90. package/package.json +45 -0
@@ -0,0 +1,185 @@
1
+ # This file is generated by gyp; do not edit.
2
+
3
+ TOOLSET := target
4
+ TARGET := xattr
5
+ DEFS_Debug := \
6
+ '-DNODE_GYP_MODULE_NAME=xattr' \
7
+ '-DUSING_UV_SHARED=1' \
8
+ '-DUSING_V8_SHARED=1' \
9
+ '-DV8_DEPRECATION_WARNINGS=1' \
10
+ '-D_GLIBCXX_USE_CXX11_ABI=1' \
11
+ '-D_FILE_OFFSET_BITS=64' \
12
+ '-D_DARWIN_USE_64_BIT_INODE=1' \
13
+ '-D_LARGEFILE_SOURCE' \
14
+ '-DOPENSSL_NO_PINSHARED' \
15
+ '-DOPENSSL_THREADS' \
16
+ '-DBUILDING_NODE_EXTENSION' \
17
+ '-DDEBUG' \
18
+ '-D_DEBUG'
19
+
20
+ # Flags passed to all source files.
21
+ CFLAGS_Debug := \
22
+ -O0 \
23
+ -gdwarf-2 \
24
+ -fno-strict-aliasing \
25
+ -mmacosx-version-min=13.5 \
26
+ -arch arm64 \
27
+ -Wall \
28
+ -Wendif-labels \
29
+ -W \
30
+ -Wno-unused-parameter
31
+
32
+ # Flags passed to only C files.
33
+ CFLAGS_C_Debug :=
34
+
35
+ # Flags passed to only C++ files.
36
+ CFLAGS_CC_Debug := \
37
+ -std=gnu++20 \
38
+ -stdlib=libc++ \
39
+ -fno-rtti \
40
+ -fno-exceptions
41
+
42
+ # Flags passed to only ObjC files.
43
+ CFLAGS_OBJC_Debug :=
44
+
45
+ # Flags passed to only ObjC++ files.
46
+ CFLAGS_OBJCC_Debug :=
47
+
48
+ INCS_Debug := \
49
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/include/node \
50
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/src \
51
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/deps/openssl/config \
52
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/deps/openssl/openssl/include \
53
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/deps/uv/include \
54
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/deps/zlib \
55
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/deps/v8/include
56
+
57
+ DEFS_Release := \
58
+ '-DNODE_GYP_MODULE_NAME=xattr' \
59
+ '-DUSING_UV_SHARED=1' \
60
+ '-DUSING_V8_SHARED=1' \
61
+ '-DV8_DEPRECATION_WARNINGS=1' \
62
+ '-D_GLIBCXX_USE_CXX11_ABI=1' \
63
+ '-D_FILE_OFFSET_BITS=64' \
64
+ '-D_DARWIN_USE_64_BIT_INODE=1' \
65
+ '-D_LARGEFILE_SOURCE' \
66
+ '-DOPENSSL_NO_PINSHARED' \
67
+ '-DOPENSSL_THREADS' \
68
+ '-DBUILDING_NODE_EXTENSION'
69
+
70
+ # Flags passed to all source files.
71
+ CFLAGS_Release := \
72
+ -O3 \
73
+ -gdwarf-2 \
74
+ -fno-strict-aliasing \
75
+ -mmacosx-version-min=13.5 \
76
+ -arch arm64 \
77
+ -Wall \
78
+ -Wendif-labels \
79
+ -W \
80
+ -Wno-unused-parameter
81
+
82
+ # Flags passed to only C files.
83
+ CFLAGS_C_Release :=
84
+
85
+ # Flags passed to only C++ files.
86
+ CFLAGS_CC_Release := \
87
+ -std=gnu++20 \
88
+ -stdlib=libc++ \
89
+ -fno-rtti \
90
+ -fno-exceptions
91
+
92
+ # Flags passed to only ObjC files.
93
+ CFLAGS_OBJC_Release :=
94
+
95
+ # Flags passed to only ObjC++ files.
96
+ CFLAGS_OBJCC_Release :=
97
+
98
+ INCS_Release := \
99
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/include/node \
100
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/src \
101
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/deps/openssl/config \
102
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/deps/openssl/openssl/include \
103
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/deps/uv/include \
104
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/deps/zlib \
105
+ -I/Users/morris/Library/Caches/node-gyp/24.14.0/deps/v8/include
106
+
107
+ OBJS := \
108
+ $(obj).target/$(TARGET)/src/async.o \
109
+ $(obj).target/$(TARGET)/src/error.o \
110
+ $(obj).target/$(TARGET)/src/sync.o \
111
+ $(obj).target/$(TARGET)/src/util.o \
112
+ $(obj).target/$(TARGET)/src/xattr.o
113
+
114
+ # Add to the list of files we specially track dependencies for.
115
+ all_deps += $(OBJS)
116
+
117
+ # CFLAGS et al overrides must be target-local.
118
+ # See "Target-specific Variable Values" in the GNU Make manual.
119
+ $(OBJS): TOOLSET := $(TOOLSET)
120
+ $(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE))
121
+ $(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE))
122
+ $(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE))
123
+ $(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE))
124
+
125
+ # Suffix rules, putting all outputs into $(obj).
126
+
127
+ $(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.c FORCE_DO_CMD
128
+ @$(call do_cmd,cc,1)
129
+
130
+ # Try building from generated source, too.
131
+
132
+ $(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD
133
+ @$(call do_cmd,cc,1)
134
+
135
+ $(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.c FORCE_DO_CMD
136
+ @$(call do_cmd,cc,1)
137
+
138
+ # End of this set of suffix rules
139
+ ### Rules for final target.
140
+ LDFLAGS_Debug := \
141
+ -undefined dynamic_lookup \
142
+ -Wl,-search_paths_first \
143
+ -mmacosx-version-min=13.5 \
144
+ -arch arm64 \
145
+ -L$(builddir) \
146
+ -stdlib=libc++
147
+
148
+ LIBTOOLFLAGS_Debug := \
149
+ -undefined dynamic_lookup \
150
+ -Wl,-search_paths_first
151
+
152
+ LDFLAGS_Release := \
153
+ -undefined dynamic_lookup \
154
+ -Wl,-search_paths_first \
155
+ -mmacosx-version-min=13.5 \
156
+ -arch arm64 \
157
+ -L$(builddir) \
158
+ -stdlib=libc++
159
+
160
+ LIBTOOLFLAGS_Release := \
161
+ -undefined dynamic_lookup \
162
+ -Wl,-search_paths_first
163
+
164
+ LIBS :=
165
+
166
+ $(builddir)/xattr.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE))
167
+ $(builddir)/xattr.node: LIBS := $(LIBS)
168
+ $(builddir)/xattr.node: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE))
169
+ $(builddir)/xattr.node: TOOLSET := $(TOOLSET)
170
+ $(builddir)/xattr.node: $(OBJS) FORCE_DO_CMD
171
+ $(call do_cmd,solink_module)
172
+
173
+ all_deps += $(builddir)/xattr.node
174
+ # Add target alias
175
+ .PHONY: xattr
176
+ xattr: $(builddir)/xattr.node
177
+
178
+ # Short alias for building this executable.
179
+ .PHONY: xattr.node
180
+ xattr.node: $(builddir)/xattr.node
181
+
182
+ # Add executable to "all" target.
183
+ .PHONY: all
184
+ all: $(builddir)/xattr.node
185
+
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Get extended attribute `attr` from file at `path`.
3
+ *
4
+ * @returns a `Promise` that will resolve with the value of the attribute.
5
+ */
6
+ export function getAttribute (path: string, attr: string): Promise<Buffer>
7
+
8
+ /**
9
+ * Synchronous version of `getAttribute`.
10
+ */
11
+ export function getAttributeSync (path: string, attr: string): Buffer
12
+
13
+ /**
14
+ * Set extended attribute `attr` to `value` on file at `path`.
15
+ *
16
+ * @returns a `Promise` that will resolve when the value has been set.
17
+ */
18
+ export function setAttribute (path: string, attr: string, value: Buffer | string): Promise<void>
19
+
20
+ /**
21
+ * Synchronous version of `setAttribute`.
22
+ */
23
+ export function setAttributeSync (path: string, attr: string, value: Buffer | string): void
24
+
25
+ /**
26
+ * Remove extended attribute `attr` on file at `path`.
27
+ *
28
+ * @returns a `Promise` that will resolve when the value has been removed.
29
+ */
30
+ export function removeAttribute (path: string, attr: string): Promise<void>
31
+
32
+ /**
33
+ * Synchronous version of `removeAttribute`.
34
+ */
35
+ export function removeAttributeSync (path: string, attr: string): void
36
+
37
+ /**
38
+ * List all attributes on file at `path`.
39
+ *
40
+ * @returns a `Promise` that will resolve with an array of strings, e.g. `['user.linusu.test', 'com.apple.FinderInfo']`.
41
+ */
42
+ export function listAttributes (path: string): Promise<string[]>
43
+
44
+ /**
45
+ * Synchronous version of `listAttributes`.
46
+ */
47
+ export function listAttributesSync (path: string): string[]
@@ -0,0 +1,80 @@
1
+ import { createRequire } from 'node:module'
2
+
3
+ const addon = createRequire(import.meta.url)('./build/Release/xattr')
4
+
5
+ function validateArgument (key, val) {
6
+ switch (key) {
7
+ case 'path':
8
+ if (typeof val === 'string') return val
9
+ throw new TypeError('`path` must be a string')
10
+ case 'attr':
11
+ if (typeof val === 'string') return val
12
+ throw new TypeError('`attr` must be a string')
13
+ case 'value':
14
+ if (typeof val === 'string') return Buffer.from(val)
15
+ if (Buffer.isBuffer(val)) return val
16
+ throw new TypeError('`value` must be a string or buffer')
17
+ default:
18
+ throw new Error(`Unknown argument: ${key}`)
19
+ }
20
+ }
21
+
22
+ /* Async methods */
23
+
24
+ export function getAttribute (path, attr) {
25
+ path = validateArgument('path', path)
26
+ attr = validateArgument('attr', attr)
27
+
28
+ return addon.get(path, attr)
29
+ }
30
+
31
+ export function setAttribute (path, attr, value) {
32
+ path = validateArgument('path', path)
33
+ attr = validateArgument('attr', attr)
34
+ value = validateArgument('value', value)
35
+
36
+ return addon.set(path, attr, value)
37
+ }
38
+
39
+ export function listAttributes (path) {
40
+ path = validateArgument('path', path)
41
+
42
+ return addon.list(path)
43
+ }
44
+
45
+ export function removeAttribute (path, attr) {
46
+ path = validateArgument('path', path)
47
+ attr = validateArgument('attr', attr)
48
+
49
+ return addon.remove(path, attr)
50
+ }
51
+
52
+ /* Sync methods */
53
+
54
+ export function getAttributeSync (path, attr) {
55
+ path = validateArgument('path', path)
56
+ attr = validateArgument('attr', attr)
57
+
58
+ return addon.getSync(path, attr)
59
+ }
60
+
61
+ export function setAttributeSync (path, attr, value) {
62
+ path = validateArgument('path', path)
63
+ attr = validateArgument('attr', attr)
64
+ value = validateArgument('value', value)
65
+
66
+ return addon.setSync(path, attr, value)
67
+ }
68
+
69
+ export function listAttributesSync (path) {
70
+ path = validateArgument('path', path)
71
+
72
+ return addon.listSync(path)
73
+ }
74
+
75
+ export function removeAttributeSync (path, attr) {
76
+ path = validateArgument('path', path)
77
+ attr = validateArgument('attr', attr)
78
+
79
+ return addon.removeSync(path, attr)
80
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "fs-xattr",
3
+ "version": "0.4.0",
4
+ "license": "MIT",
5
+ "repository": "LinusU/fs-xattr",
6
+ "type": "module",
7
+ "exports": "./index.js",
8
+ "files": [
9
+ "index.d.ts",
10
+ "index.js",
11
+ "build/"
12
+ ],
13
+ "scripts": {
14
+ "test": "standard && mocha && ts-readme-generator --check",
15
+ "lint": "standard"
16
+ },
17
+ "devDependencies": {
18
+ "fs-temp": "^1.1.2",
19
+ "mocha": "^8.4.0",
20
+ "standard": "^16.0.3",
21
+ "ts-readme-generator": "^0.4.3"
22
+ },
23
+ "engines": {
24
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
25
+ },
26
+ "os": [
27
+ "!win32"
28
+ ]
29
+ }
@@ -0,0 +1,101 @@
1
+ # fs-xattr
2
+
3
+ Node.js module for manipulating extended attributes.
4
+
5
+ There are already some libraries for this, why use `fs-xattr`?
6
+
7
+ - Very useful errors
8
+ - No limits on value size
9
+ - Clean and easy api
10
+ - Proper asynchronous implementation
11
+
12
+ ## Installation
13
+
14
+ ```sh
15
+ npm install --save fs-xattr
16
+ ```
17
+
18
+ ## Usage
19
+
20
+ ```javascript
21
+ import { getAttribute, setAttribute } from 'fs-xattr'
22
+
23
+ await setAttribute('index.js', 'user.linusu.test', 'Hello, World!')
24
+
25
+ console.log(await getAttribute('index.js', 'user.linusu.test'))
26
+ //=> Hello, World!
27
+ ```
28
+
29
+ ## API
30
+
31
+ ### `getAttribute(path, attr)`
32
+
33
+ - `path` (`string`, required)
34
+ - `attr` (`string`, required)
35
+ - returns `Promise<Buffer>` - a `Promise` that will resolve with the value of the attribute.
36
+
37
+ Get extended attribute `attr` from file at `path`.
38
+
39
+ ### `getAttributeSync(path, attr)`
40
+
41
+ - `path` (`string`, required)
42
+ - `attr` (`string`, required)
43
+ - returns `Buffer`
44
+
45
+ Synchronous version of `getAttribute`.
46
+
47
+ ### `setAttribute(path, attr, value)`
48
+
49
+ - `path` (`string`, required)
50
+ - `attr` (`string`, required)
51
+ - `value` (`Buffer` or `string`, required)
52
+ - returns `Promise<void>` - a `Promise` that will resolve when the value has been set.
53
+
54
+ Set extended attribute `attr` to `value` on file at `path`.
55
+
56
+ ### `setAttributeSync(path, attr, value)`
57
+
58
+ - `path` (`string`, required)
59
+ - `attr` (`string`, required)
60
+ - `value` (`Buffer` or `string`, required)
61
+
62
+ Synchronous version of `setAttribute`.
63
+
64
+ ### `removeAttribute(path, attr)`
65
+
66
+ - `path` (`string`, required)
67
+ - `attr` (`string`, required)
68
+ - returns `Promise<void>` - a `Promise` that will resolve when the value has been removed.
69
+
70
+ Remove extended attribute `attr` on file at `path`.
71
+
72
+ ### `removeAttributeSync(path, attr)`
73
+
74
+ - `path` (`string`, required)
75
+ - `attr` (`string`, required)
76
+
77
+ Synchronous version of `removeAttribute`.
78
+
79
+ ### `listAttributes(path)`
80
+
81
+ - `path` (`string`, required)
82
+ - returns `Promise<Array<string>>` - a `Promise` that will resolve with an array of strings, e.g. `['user.linusu.test', 'com.apple.FinderInfo']`.
83
+
84
+ List all attributes on file at `path`.
85
+
86
+ ### `listAttributesSync(path)`
87
+
88
+ - `path` (`string`, required)
89
+ - returns `Array<string>`
90
+
91
+ Synchronous version of `listAttributes`.
92
+
93
+ ## Namespaces
94
+
95
+ For the large majority of Linux filesystem there are currently 4 supported namespaces (`user`, `trusted`, `security`, and `system`) you can use. Some other systems, like FreeBSD have only 2 (`user` and `system`).
96
+
97
+ Be sure to use a namespace that is appropriate for your supported platforms. You can read more about this in [the "Extended File Attributes" Wikipedia article](https://en.wikipedia.org/wiki/Extended_file_attributes#Implementations).
98
+
99
+ Using a namespace like `com.linusu.test` would work on macOS, but would give you the following error on Debian Linux:
100
+
101
+ > Error \[ENOTSUP]: The file system does not support extended attributes or has the feature disabled.
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014-2016, Jon Schlinkert
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,107 @@
1
+ # is-extglob [![NPM version](https://img.shields.io/npm/v/is-extglob.svg?style=flat)](https://www.npmjs.com/package/is-extglob) [![NPM downloads](https://img.shields.io/npm/dm/is-extglob.svg?style=flat)](https://npmjs.org/package/is-extglob) [![Build Status](https://img.shields.io/travis/jonschlinkert/is-extglob.svg?style=flat)](https://travis-ci.org/jonschlinkert/is-extglob)
2
+
3
+ > Returns true if a string has an extglob.
4
+
5
+ ## Install
6
+
7
+ Install with [npm](https://www.npmjs.com/):
8
+
9
+ ```sh
10
+ $ npm install --save is-extglob
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```js
16
+ var isExtglob = require('is-extglob');
17
+ ```
18
+
19
+ **True**
20
+
21
+ ```js
22
+ isExtglob('?(abc)');
23
+ isExtglob('@(abc)');
24
+ isExtglob('!(abc)');
25
+ isExtglob('*(abc)');
26
+ isExtglob('+(abc)');
27
+ ```
28
+
29
+ **False**
30
+
31
+ Escaped extglobs:
32
+
33
+ ```js
34
+ isExtglob('\\?(abc)');
35
+ isExtglob('\\@(abc)');
36
+ isExtglob('\\!(abc)');
37
+ isExtglob('\\*(abc)');
38
+ isExtglob('\\+(abc)');
39
+ ```
40
+
41
+ Everything else...
42
+
43
+ ```js
44
+ isExtglob('foo.js');
45
+ isExtglob('!foo.js');
46
+ isExtglob('*.js');
47
+ isExtglob('**/abc.js');
48
+ isExtglob('abc/*.js');
49
+ isExtglob('abc/(aaa|bbb).js');
50
+ isExtglob('abc/[a-z].js');
51
+ isExtglob('abc/{a,b}.js');
52
+ isExtglob('abc/?.js');
53
+ isExtglob('abc.js');
54
+ isExtglob('abc/def/ghi.js');
55
+ ```
56
+
57
+ ## History
58
+
59
+ **v2.0**
60
+
61
+ Adds support for escaping. Escaped exglobs no longer return true.
62
+
63
+ ## About
64
+
65
+ ### Related projects
66
+
67
+ * [has-glob](https://www.npmjs.com/package/has-glob): Returns `true` if an array has a glob pattern. | [homepage](https://github.com/jonschlinkert/has-glob "Returns `true` if an array has a glob pattern.")
68
+ * [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet")
69
+ * [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/jonschlinkert/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.")
70
+
71
+ ### Contributing
72
+
73
+ Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
74
+
75
+ ### Building docs
76
+
77
+ _(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_
78
+
79
+ To generate the readme and API documentation with [verb](https://github.com/verbose/verb):
80
+
81
+ ```sh
82
+ $ npm install -g verb verb-generate-readme && verb
83
+ ```
84
+
85
+ ### Running tests
86
+
87
+ Install dev dependencies:
88
+
89
+ ```sh
90
+ $ npm install -d && npm test
91
+ ```
92
+
93
+ ### Author
94
+
95
+ **Jon Schlinkert**
96
+
97
+ * [github/jonschlinkert](https://github.com/jonschlinkert)
98
+ * [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
99
+
100
+ ### License
101
+
102
+ Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
103
+ Released under the [MIT license](https://github.com/jonschlinkert/is-extglob/blob/master/LICENSE).
104
+
105
+ ***
106
+
107
+ _This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.1.31, on October 12, 2016._
@@ -0,0 +1,20 @@
1
+ /*!
2
+ * is-extglob <https://github.com/jonschlinkert/is-extglob>
3
+ *
4
+ * Copyright (c) 2014-2016, Jon Schlinkert.
5
+ * Licensed under the MIT License.
6
+ */
7
+
8
+ module.exports = function isExtglob(str) {
9
+ if (typeof str !== 'string' || str === '') {
10
+ return false;
11
+ }
12
+
13
+ var match;
14
+ while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) {
15
+ if (match[2]) return true;
16
+ str = str.slice(match.index + match[0].length);
17
+ }
18
+
19
+ return false;
20
+ };
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "is-extglob",
3
+ "description": "Returns true if a string has an extglob.",
4
+ "version": "2.1.1",
5
+ "homepage": "https://github.com/jonschlinkert/is-extglob",
6
+ "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
7
+ "repository": "jonschlinkert/is-extglob",
8
+ "bugs": {
9
+ "url": "https://github.com/jonschlinkert/is-extglob/issues"
10
+ },
11
+ "license": "MIT",
12
+ "files": [
13
+ "index.js"
14
+ ],
15
+ "main": "index.js",
16
+ "engines": {
17
+ "node": ">=0.10.0"
18
+ },
19
+ "scripts": {
20
+ "test": "mocha"
21
+ },
22
+ "devDependencies": {
23
+ "gulp-format-md": "^0.1.10",
24
+ "mocha": "^3.0.2"
25
+ },
26
+ "keywords": [
27
+ "bash",
28
+ "braces",
29
+ "check",
30
+ "exec",
31
+ "expression",
32
+ "extglob",
33
+ "glob",
34
+ "globbing",
35
+ "globstar",
36
+ "is",
37
+ "match",
38
+ "matches",
39
+ "pattern",
40
+ "regex",
41
+ "regular",
42
+ "string",
43
+ "test"
44
+ ],
45
+ "verb": {
46
+ "toc": false,
47
+ "layout": "default",
48
+ "tasks": [
49
+ "readme"
50
+ ],
51
+ "plugins": [
52
+ "gulp-format-md"
53
+ ],
54
+ "related": {
55
+ "list": [
56
+ "has-glob",
57
+ "is-glob",
58
+ "micromatch"
59
+ ]
60
+ },
61
+ "reflinks": [
62
+ "verb",
63
+ "verb-generate-readme"
64
+ ],
65
+ "lint": {
66
+ "reflinks": true
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014-2017, Jon Schlinkert.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.