alicezetion 1.7.0 → 1.7.2
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.
- package/.cache/replit/__replit_disk_meta.json +1 -1
- package/.cache/replit/nix/env.json +1 -1
- package/Extra/Database/index.js +399 -0
- package/Extra/Database/methods.js +286 -0
- package/Extra/ExtraAddons.js +213 -0
- package/Extra/ExtraGetThread.js +1 -0
- package/Extra/ExtraUptimeRobot.js +59 -0
- package/Extra/PM2/ecosystem.config.js +23 -0
- package/Extra/Src/Last-Run.js +48 -0
- package/Language/index.json +151 -0
- package/StateCrypt.js +22 -0
- package/broadcast.js +42 -0
- package/index.js +755 -533
- package/logger.js +21 -0
- package/package.json +35 -21
- package/replit.nix +0 -3
- package/src/addExternalModule.js +23 -0
- package/{leiamnash → src}/addUserToGroup.js +11 -23
- package/{leiamnash → src}/changeAdminStatus.js +32 -16
- package/{leiamnash → src}/changeArchivedStatus.js +9 -17
- package/src/changeAvt.js +91 -0
- package/{leiamnash → src}/changeBio.js +16 -24
- package/{leiamnash → src}/changeBlockedStatus.js +13 -18
- package/{leiamnash → src}/changeGroupImage.js +14 -23
- package/{leiamnash → src}/changeNickname.js +9 -14
- package/{leiamnash → src}/changeThreadColor.js +6 -10
- package/{leiamnash → src}/changeThreadEmoji.js +6 -11
- package/{leiamnash → src}/chat.js +116 -127
- package/{leiamnash → src}/createNewGroup.js +19 -27
- package/{leiamnash → src}/createPoll.js +6 -12
- package/{leiamnash → src}/deleteMessage.js +8 -13
- package/{leiamnash → src}/deleteThread.js +7 -14
- package/{leiamnash → src}/forwardAttachment.js +9 -16
- package/src/getAccessToken.js +32 -0
- package/{leiamnash → src}/getCurrentUserID.js +0 -0
- package/{leiamnash → src}/getEmojiUrl.js +1 -2
- package/{leiamnash → src}/getFriendsList.js +11 -14
- package/src/getMessage.js +84 -0
- package/{leiamnash → src}/getThreadHistory.js +27 -38
- package/{leiamnash → src}/getThreadHistoryDeprecated.js +14 -25
- package/src/getThreadInfo.js +197 -0
- package/{leiamnash → src}/getThreadInfoDeprecated.js +12 -24
- package/{leiamnash → src}/getThreadList.js +122 -88
- package/{leiamnash → src}/getThreadListDeprecated.js +9 -20
- package/{leiamnash → src}/getThreadPictures.js +9 -17
- package/{leiamnash → src}/getUserID.js +8 -11
- package/{leiamnash → src}/getUserInfo.js +12 -16
- package/src/getUserInfoV2.js +35 -0
- package/src/handleFriendRequest.js +47 -0
- package/{leiamnash → src}/handleMessageRequest.js +12 -22
- package/{leiamnash → src}/httpGet.js +15 -13
- package/{leiamnash → src}/httpPost.js +14 -13
- package/src/httpPostFormData.js +46 -0
- package/src/listenMqtt.js +1280 -0
- package/{leiamnash → src}/logout.js +7 -9
- package/{leiamnash → src}/markAsDelivered.js +14 -18
- package/{leiamnash → src}/markAsRead.js +30 -28
- package/{leiamnash → src}/markAsSeen.js +18 -19
- package/{leiamnash → src}/muteThread.js +7 -8
- package/{leiamnash/setMessageReaction.js → src/react.js} +15 -18
- package/{leiamnash → src}/removeUserFromGroup.js +13 -20
- package/{leiamnash → src}/resolvePhotoUrl.js +7 -13
- package/{leiamnash → src}/searchForThread.js +8 -13
- package/{leiamnash/markAsReadAll.js → src/seen.js} +10 -13
- package/{leiamnash → src}/sendTypingIndicator.js +23 -31
- package/src/setPostReaction.js +104 -0
- package/{leiamnash → src}/setTitle.js +15 -21
- package/src/threadColors.js +39 -0
- package/{leiamnash → src}/unfriend.js +9 -13
- package/{leiamnash/unsendMessage.js → src/unsend.js} +7 -16
- package/utils.js +1112 -1236
- package/leiamnash/addExternalModule.js +0 -19
- package/leiamnash/changeApprovalMode.js +0 -80
- package/leiamnash/getThreadInfo.js +0 -212
- package/leiamnash/handleFriendRequest.js +0 -61
- package/leiamnash/listenMqtt.js +0 -1129
- package/leiamnash/setPostReaction.js +0 -76
- package/leiamnash/threadColors.js +0 -57
@@ -1 +1 @@
|
|
1
|
-
{"nonce":
|
1
|
+
{"nonce":4894040214845465557,"last_updated":{"seconds":1696041975,"nanos":93011000}}
|
@@ -1 +1 @@
|
|
1
|
-
{"entries":{"replit.nix":{"env":{"AR":"ar","AS":"as","CC":"gcc","CONFIG_SHELL":"/nix/store/dpjnjrqbgbm8a5wvi1hya01vd8wyvsq4-bash-4.4-p23/bin/bash","CXX":"g++","HOST_PATH":"/nix/store/bwxril521b35zlf4x2g32hll64rzfhck-nodejs-16.7.0/bin:/nix/store/
|
1
|
+
{"entries":{"replit.nix":{"env":{"AR":"ar","AS":"as","CC":"gcc","CONFIG_SHELL":"/nix/store/dpjnjrqbgbm8a5wvi1hya01vd8wyvsq4-bash-4.4-p23/bin/bash","CXX":"g++","HOST_PATH":"/nix/store/bwxril521b35zlf4x2g32hll64rzfhck-nodejs-16.7.0/bin:/nix/store/1570w56jrkvr90w9x158vyb5vahnk18v-coreutils-8.32/bin:/nix/store/ihxk2vlm0vi7c4j3gpm084kbxvz6v585-findutils-4.8.0/bin:/nix/store/kjx1mv85c5cgsrr4bwar22j7hbwj834m-diffutils-3.7/bin:/nix/store/gm2w08wwsa3vd500d8vq879s2lv65ldh-gnused-4.8/bin:/nix/store/v0slhpb2y3xa7gmv4q6gblkdk7n0f09j-gnugrep-3.6/bin:/nix/store/2wn093wbc6ps4brcsppxjd14vxvaa8a2-gawk-5.1.0/bin:/nix/store/5bxrjkyvqmzn1p897652y3lwa9fxagpw-gnutar-1.34/bin:/nix/store/liva1jnjdskrn57s42kfawr2zz66szzm-gzip-1.10/bin:/nix/store/ih2zkh2mbrx2c766ryk2i9hhlkly7snr-bzip2-1.0.6.0.2-bin/bin:/nix/store/pvkiiw0mp1yx0b21b7k105yywccychgh-gnumake-4.3/bin:/nix/store/dpjnjrqbgbm8a5wvi1hya01vd8wyvsq4-bash-4.4-p23/bin:/nix/store/aicl3kwfnaizk45aygm8bviqv7lk0a16-patch-2.7.6/bin:/nix/store/7jk6k46f56rszzc1bxi8mdrvcw53pym4-xz-5.2.5-bin/bin","LD":"ld","LOCALE_ARCHIVE":"/usr/lib/locale/locale-archive","NIX_BINTOOLS":"/nix/store/29bjq5hw1qglybp1a5f3ij9gxc2fyf94-binutils-wrapper-2.35.1","NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu":"1","NIX_BUILD_CORES":"4","NIX_BUILD_TOP":"/tmp","NIX_CC":"/nix/store/4xs1xyj8728yvh9y5v6ji819kwgfy2fv-gcc-wrapper-10.3.0","NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu":"1","NIX_CFLAGS_COMPILE":" -frandom-seed=wn4q3px71j -isystem /nix/store/bwxril521b35zlf4x2g32hll64rzfhck-nodejs-16.7.0/include -isystem /nix/store/bwxril521b35zlf4x2g32hll64rzfhck-nodejs-16.7.0/include","NIX_ENFORCE_NO_NATIVE":"1","NIX_HARDENING_ENABLE":"fortify stackprotector pic strictoverflow format relro bindnow","NIX_INDENT_MAKE":"1","NIX_LDFLAGS":"-rpath /nix/store/wn4q3px71j98mf9lcy14i6xlgmfhk75m-nix-shell/lib64 -rpath /nix/store/wn4q3px71j98mf9lcy14i6xlgmfhk75m-nix-shell/lib ","NIX_STORE":"/nix/store","NM":"nm","NODE_PATH":"/nix/store/bwxril521b35zlf4x2g32hll64rzfhck-nodejs-16.7.0/lib/node_modules","OBJCOPY":"objcopy","OBJDUMP":"objdump","PATH":"/nix/store/w07a7k61dw5gnsyxj3kgcq3shr76jax8-bash-interactive-4.4-p23/bin:/nix/store/435paza0j48aa9vgvf6r2l12nrg4ld11-patchelf-0.12/bin:/nix/store/4xs1xyj8728yvh9y5v6ji819kwgfy2fv-gcc-wrapper-10.3.0/bin:/nix/store/dlni53myj53kx20pi4yhm7p68lw17b07-gcc-10.3.0/bin:/nix/store/6z35qvn00xrjvaznv9kfy8xddbbdz4gl-glibc-2.33-47-bin/bin:/nix/store/1570w56jrkvr90w9x158vyb5vahnk18v-coreutils-8.32/bin:/nix/store/29bjq5hw1qglybp1a5f3ij9gxc2fyf94-binutils-wrapper-2.35.1/bin:/nix/store/v8imx1nvyz0hgvx9cbcmh6gp4ngw3ffj-binutils-2.35.1/bin:/nix/store/bwxril521b35zlf4x2g32hll64rzfhck-nodejs-16.7.0/bin:/nix/store/1570w56jrkvr90w9x158vyb5vahnk18v-coreutils-8.32/bin:/nix/store/ihxk2vlm0vi7c4j3gpm084kbxvz6v585-findutils-4.8.0/bin:/nix/store/kjx1mv85c5cgsrr4bwar22j7hbwj834m-diffutils-3.7/bin:/nix/store/gm2w08wwsa3vd500d8vq879s2lv65ldh-gnused-4.8/bin:/nix/store/v0slhpb2y3xa7gmv4q6gblkdk7n0f09j-gnugrep-3.6/bin:/nix/store/2wn093wbc6ps4brcsppxjd14vxvaa8a2-gawk-5.1.0/bin:/nix/store/5bxrjkyvqmzn1p897652y3lwa9fxagpw-gnutar-1.34/bin:/nix/store/liva1jnjdskrn57s42kfawr2zz66szzm-gzip-1.10/bin:/nix/store/ih2zkh2mbrx2c766ryk2i9hhlkly7snr-bzip2-1.0.6.0.2-bin/bin:/nix/store/pvkiiw0mp1yx0b21b7k105yywccychgh-gnumake-4.3/bin:/nix/store/dpjnjrqbgbm8a5wvi1hya01vd8wyvsq4-bash-4.4-p23/bin:/nix/store/aicl3kwfnaizk45aygm8bviqv7lk0a16-patch-2.7.6/bin:/nix/store/7jk6k46f56rszzc1bxi8mdrvcw53pym4-xz-5.2.5-bin/bin","RANLIB":"ranlib","READELF":"readelf","SIZE":"size","SOURCE_DATE_EPOCH":"315532800","STRINGS":"strings","STRIP":"strip","XDG_DATA_DIRS":"/nix/store/435paza0j48aa9vgvf6r2l12nrg4ld11-patchelf-0.12/share","_":"/nix/store/1570w56jrkvr90w9x158vyb5vahnk18v-coreutils-8.32/bin/env","__ETC_PROFILE_SOURCED":"1","buildInputs":"/nix/store/bwxril521b35zlf4x2g32hll64rzfhck-nodejs-16.7.0","builder":"/nix/store/dpjnjrqbgbm8a5wvi1hya01vd8wyvsq4-bash-4.4-p23/bin/bash","configureFlags":"","depsBuildBuild":"","depsBuildBuildPropagated":"","depsBuildTarget":"","depsBuildTargetPropagated":"","depsHostHost":"","depsHostHostPropagated":"","depsTargetTarget":"","depsTargetTargetPropagated":"","doCheck":"","doInstallCheck":"","name":"nix-shell","nativeBuildInputs":"","nobuildPhase":"echo\necho \"This derivation is not meant to be built, aborting\";\necho\nexit 1\n","out":"/nix/store/wn4q3px71j98mf9lcy14i6xlgmfhk75m-nix-shell","outputs":"out","patches":"","phases":"nobuildPhase","propagatedBuildInputs":"","propagatedNativeBuildInputs":"","shell":"/nix/store/dpjnjrqbgbm8a5wvi1hya01vd8wyvsq4-bash-4.4-p23/bin/bash","shellHook":"","stdenv":"/nix/store/r4bl79l2bdjawmr2rhhqvci56qh0fkvv-stdenv-linux","strictDeps":"","system":"x86_64-linux"},"dependencies":[{"path":"replit.nix","mod_time":"2023-09-30T02:46:03.650607133Z"}],"channel":"","channel_nix_path":"","production":null}}}
|
@@ -0,0 +1,399 @@
|
|
1
|
+
/* eslint-disable linebreak-style */
|
2
|
+
/* eslint-disable no-global-assign */
|
3
|
+
|
4
|
+
/**
|
5
|
+
*
|
6
|
+
*/
|
7
|
+
|
8
|
+
// Require Database
|
9
|
+
var Database = require("better-sqlite3");
|
10
|
+
const { join } = require("path");
|
11
|
+
var db;
|
12
|
+
// Create Database Under Conditions
|
13
|
+
if (!db) db = new Database(join(__dirname, "../Databasethread.sqlite"));
|
14
|
+
|
15
|
+
|
16
|
+
var { fetch,set,add,subtract,push,deleteDB,has,all,type,clear } = require("./methods");
|
17
|
+
|
18
|
+
// Declare Methods
|
19
|
+
var methods = {
|
20
|
+
fetch: fetch,
|
21
|
+
set: set,
|
22
|
+
add: add,
|
23
|
+
subtract: subtract,
|
24
|
+
push: push,
|
25
|
+
delete: deleteDB,
|
26
|
+
has: has,
|
27
|
+
all: all,
|
28
|
+
type: type,
|
29
|
+
clear: clear
|
30
|
+
};
|
31
|
+
|
32
|
+
module.exports = {
|
33
|
+
/**
|
34
|
+
* Package version. Community requested feature.
|
35
|
+
* console.log(require('quick.db').version);
|
36
|
+
*/
|
37
|
+
version: "1.1.1",
|
38
|
+
|
39
|
+
/**
|
40
|
+
* This function fetches data from a key in the database. (alias: .get())
|
41
|
+
* @param {key} input any string as a key. Also allows for dot notation following the key.
|
42
|
+
* @param {options} [input={ target: null }] Any options to be added to the request.
|
43
|
+
* @returns {data} the data requested.
|
44
|
+
*/
|
45
|
+
|
46
|
+
fetch: function (key, ops) {
|
47
|
+
if (!key)
|
48
|
+
throw new TypeError(
|
49
|
+
"No key specified."
|
50
|
+
);
|
51
|
+
return arbitrate("fetch", { id: key, ops: ops || {} });
|
52
|
+
},
|
53
|
+
get: function (key, ops) {
|
54
|
+
if (!key)
|
55
|
+
throw new TypeError(
|
56
|
+
"No key specified."
|
57
|
+
);
|
58
|
+
return arbitrate("fetch", { id: key, ops: ops || {} });
|
59
|
+
},
|
60
|
+
|
61
|
+
/**
|
62
|
+
* This function sets new data based on a key in the database.
|
63
|
+
* @param {key} input any string as a key. Also allows for dot notation following the key.
|
64
|
+
* @param {options} [input={ target: null }] Any options to be added to the request.
|
65
|
+
* @returns {data} the updated data.
|
66
|
+
*/
|
67
|
+
|
68
|
+
set: function (key, value, ops) {
|
69
|
+
if (!key)
|
70
|
+
throw new TypeError(
|
71
|
+
"No key specified."
|
72
|
+
);
|
73
|
+
if (value === undefined)
|
74
|
+
throw new TypeError(
|
75
|
+
"No value specified."
|
76
|
+
);
|
77
|
+
return arbitrate("set", {
|
78
|
+
stringify: false,
|
79
|
+
id: key,
|
80
|
+
data: value,
|
81
|
+
ops: ops || {},
|
82
|
+
});
|
83
|
+
},
|
84
|
+
|
85
|
+
/**
|
86
|
+
* This function adds a number to a key in the database. (If no existing number, it will add to 0)
|
87
|
+
* @param {key} input any string as a key. Also allows for dot notation following the key.
|
88
|
+
* @param {options} [input={ target: null }] Any options to be added to the request.
|
89
|
+
* @returns {data} the updated data.
|
90
|
+
*/
|
91
|
+
|
92
|
+
add: function (key, value, ops) {
|
93
|
+
if (!key)
|
94
|
+
throw new TypeError(
|
95
|
+
"No key specified."
|
96
|
+
);
|
97
|
+
if (isNaN(value))
|
98
|
+
throw new TypeError(
|
99
|
+
"Must specify value to add."
|
100
|
+
);
|
101
|
+
return arbitrate("add", { id: key, data: value, ops: ops || {} });
|
102
|
+
},
|
103
|
+
|
104
|
+
/**
|
105
|
+
* This function subtracts a number to a key in the database. (If no existing number, it will subtract from 0)
|
106
|
+
* @param {key} input any string as a key. Also allows for dot notation following the key.
|
107
|
+
* @param {options} [input={ target: null }] Any options to be added to the request.
|
108
|
+
* @returns {data} the updated data.
|
109
|
+
*/
|
110
|
+
|
111
|
+
subtract: function (key, value, ops) {
|
112
|
+
if (!key)
|
113
|
+
throw new TypeError(
|
114
|
+
"No key specified."
|
115
|
+
);
|
116
|
+
if (isNaN(value))
|
117
|
+
throw new TypeError(
|
118
|
+
"Must specify value to add."
|
119
|
+
);
|
120
|
+
return arbitrate("subtract", { id: key, data: value, ops: ops || {} });
|
121
|
+
},
|
122
|
+
|
123
|
+
/**
|
124
|
+
* This function will push into an array in the database based on the key. (If no existing array, it will create one)
|
125
|
+
* @param {key} input any string as a key. Also allows for dot notation following the key.
|
126
|
+
* @param {options} [input={ target: null }] Any options to be added to the request.
|
127
|
+
* @returns {data} the updated data.
|
128
|
+
*/
|
129
|
+
|
130
|
+
push: function (key, value, ops) {
|
131
|
+
if (!key)
|
132
|
+
throw new TypeError(
|
133
|
+
"No key specified."
|
134
|
+
);
|
135
|
+
if (!value && value != 0)
|
136
|
+
throw new TypeError(
|
137
|
+
"Must specify value to push."
|
138
|
+
);
|
139
|
+
return arbitrate("push", {
|
140
|
+
stringify: true,
|
141
|
+
id: key,
|
142
|
+
data: value,
|
143
|
+
ops: ops || {},
|
144
|
+
});
|
145
|
+
},
|
146
|
+
|
147
|
+
/**
|
148
|
+
|
149
|
+
*/
|
150
|
+
|
151
|
+
/**
|
152
|
+
* This function will delete an object (or property) in the database.
|
153
|
+
* @param {key} input any string as a key. Also allows for dot notation following the key, this will delete the prop in the object.
|
154
|
+
* @param {options} [input={ target: null }] Any options to be added to the request.
|
155
|
+
* @returns {boolean} if it was a success or not.
|
156
|
+
*/
|
157
|
+
|
158
|
+
delete: function (key, ops) {
|
159
|
+
if (!key)
|
160
|
+
throw new TypeError(
|
161
|
+
"No key specified."
|
162
|
+
);
|
163
|
+
return arbitrate("delete", { id: key, ops: ops || {} });
|
164
|
+
},
|
165
|
+
|
166
|
+
/**
|
167
|
+
* This function returns a boolean indicating whether an element with the specified key exists or not.
|
168
|
+
* @param {key} input any string as a key. Also allows for dot notation following the key, this will return if the prop exists or not.
|
169
|
+
* @param {options} [input={ target: null }] Any options to be added to the request.
|
170
|
+
* @returns {boolean} if it exists.
|
171
|
+
*/
|
172
|
+
|
173
|
+
has: function (key, ops) {
|
174
|
+
if (!key)
|
175
|
+
throw new TypeError(
|
176
|
+
"No key specified."
|
177
|
+
);
|
178
|
+
return arbitrate("has", { id: key, ops: ops || {} });
|
179
|
+
},
|
180
|
+
|
181
|
+
includes: function (key, ops) {
|
182
|
+
if (!key)
|
183
|
+
throw new TypeError(
|
184
|
+
"No key specified."
|
185
|
+
);
|
186
|
+
return arbitrate("has", { id: key, ops: ops || {} });
|
187
|
+
},
|
188
|
+
|
189
|
+
/**
|
190
|
+
* This function fetches the entire active table
|
191
|
+
* @param {options} [input={ target: null }] Any options to be added to the request.
|
192
|
+
* @returns {boolean} if it exists.
|
193
|
+
*/
|
194
|
+
|
195
|
+
all: function (ops) {
|
196
|
+
return arbitrate("all", { ops: ops || {} });
|
197
|
+
},
|
198
|
+
|
199
|
+
fetchAll: function (ops) {
|
200
|
+
return arbitrate("all", { ops: ops || {} });
|
201
|
+
},
|
202
|
+
|
203
|
+
/*
|
204
|
+
* Used to get the type of the value.
|
205
|
+
*/
|
206
|
+
|
207
|
+
type: function (key, ops) {
|
208
|
+
if (!key)
|
209
|
+
throw new TypeError(
|
210
|
+
"No key specified."
|
211
|
+
);
|
212
|
+
return arbitrate("type", { id: key, ops: ops || {} });
|
213
|
+
},
|
214
|
+
|
215
|
+
/**
|
216
|
+
* Using 'new' on this function creates a new instance of a table.
|
217
|
+
* @param {name} input any string as the name of the table.
|
218
|
+
* @param {options} options.
|
219
|
+
*/
|
220
|
+
|
221
|
+
table: function (tableName, options = {}) {
|
222
|
+
// Set Name
|
223
|
+
if (typeof tableName !== "string")
|
224
|
+
throw new TypeError(
|
225
|
+
"Table name has to be a string."
|
226
|
+
);
|
227
|
+
else if (tableName.includes(" "))
|
228
|
+
throw new TypeError(
|
229
|
+
"Table name cannot include spaces."
|
230
|
+
);
|
231
|
+
this.tableName = tableName;
|
232
|
+
|
233
|
+
// Methods
|
234
|
+
this.fetch = function (key, ops) {
|
235
|
+
if (!key)
|
236
|
+
throw new TypeError(
|
237
|
+
"No key specified."
|
238
|
+
);
|
239
|
+
return arbitrate(
|
240
|
+
"fetch",
|
241
|
+
{ id: key, ops: ops || {} },
|
242
|
+
this.tableName
|
243
|
+
);
|
244
|
+
};
|
245
|
+
|
246
|
+
this.get = function (key, ops) {
|
247
|
+
if (!key)
|
248
|
+
throw new TypeError(
|
249
|
+
"No key specified."
|
250
|
+
);
|
251
|
+
return arbitrate(
|
252
|
+
"fetch",
|
253
|
+
{ id: key, ops: ops || {} },
|
254
|
+
this.tableName
|
255
|
+
);
|
256
|
+
};
|
257
|
+
|
258
|
+
this.set = function (key, value, ops) {
|
259
|
+
if (!key)
|
260
|
+
throw new TypeError(
|
261
|
+
"No key specified."
|
262
|
+
);
|
263
|
+
if (!value && value != 0)
|
264
|
+
throw new TypeError(
|
265
|
+
"No value specified."
|
266
|
+
);
|
267
|
+
return arbitrate(
|
268
|
+
"set",
|
269
|
+
{ stringify: true, id: key, data: value, ops: ops || {} },
|
270
|
+
this.tableName
|
271
|
+
);
|
272
|
+
};
|
273
|
+
|
274
|
+
this.add = function (key, value, ops) {
|
275
|
+
if (!key)
|
276
|
+
throw new TypeError(
|
277
|
+
"No key specified."
|
278
|
+
);
|
279
|
+
if (isNaN(value))
|
280
|
+
throw new TypeError(
|
281
|
+
"Must specify value to add."
|
282
|
+
);
|
283
|
+
return arbitrate(
|
284
|
+
"add",
|
285
|
+
{ id: key, data: value, ops: ops || {} },
|
286
|
+
this.tableName
|
287
|
+
);
|
288
|
+
};
|
289
|
+
|
290
|
+
this.subtract = function (key, value, ops) {
|
291
|
+
if (!key)
|
292
|
+
throw new TypeError(
|
293
|
+
"No key specified."
|
294
|
+
);
|
295
|
+
if (isNaN(value))
|
296
|
+
throw new TypeError(
|
297
|
+
"Must specify value to add."
|
298
|
+
);
|
299
|
+
return arbitrate(
|
300
|
+
"subtract",
|
301
|
+
{ id: key, data: value, ops: ops || {} },
|
302
|
+
this.tableName
|
303
|
+
);
|
304
|
+
};
|
305
|
+
|
306
|
+
this.push = function (key, value, ops) {
|
307
|
+
if (!key)
|
308
|
+
throw new TypeError(
|
309
|
+
"No key specified."
|
310
|
+
);
|
311
|
+
if (!value && value != 0)
|
312
|
+
throw new TypeError(
|
313
|
+
"Must specify value to push."
|
314
|
+
);
|
315
|
+
return arbitrate(
|
316
|
+
"push",
|
317
|
+
{ stringify: true, id: key, data: value, ops: ops || {} },
|
318
|
+
this.tableName
|
319
|
+
);
|
320
|
+
};
|
321
|
+
|
322
|
+
this.delete = function (key, ops) {
|
323
|
+
if (!key)
|
324
|
+
throw new TypeError(
|
325
|
+
"No key specified."
|
326
|
+
);
|
327
|
+
return arbitrate(
|
328
|
+
"delete",
|
329
|
+
{ id: key, ops: ops || {} },
|
330
|
+
this.tableName
|
331
|
+
);
|
332
|
+
};
|
333
|
+
|
334
|
+
this.has = function (key, ops) {
|
335
|
+
if (!key)
|
336
|
+
throw new TypeError(
|
337
|
+
"No key specified."
|
338
|
+
);
|
339
|
+
return arbitrate(
|
340
|
+
"has",
|
341
|
+
{ id: key, ops: ops || {} },
|
342
|
+
this.tableName
|
343
|
+
);
|
344
|
+
};
|
345
|
+
|
346
|
+
this.includes = function (key, ops) {
|
347
|
+
if (!key)
|
348
|
+
throw new TypeError(
|
349
|
+
"No key specified."
|
350
|
+
);
|
351
|
+
return arbitrate(
|
352
|
+
"has",
|
353
|
+
{ id: key, ops: ops || {} },
|
354
|
+
this.tableName
|
355
|
+
);
|
356
|
+
};
|
357
|
+
|
358
|
+
this.fetchAll = function (ops) {
|
359
|
+
return arbitrate("all", { ops: ops || {} }, this.tableName);
|
360
|
+
};
|
361
|
+
|
362
|
+
this.all = function (ops) {
|
363
|
+
return arbitrate("all", { ops: ops || {} }, this.tableName);
|
364
|
+
};
|
365
|
+
},
|
366
|
+
};
|
367
|
+
|
368
|
+
function arbitrate(method, params, tableName) {
|
369
|
+
// Configure Options
|
370
|
+
let options = {table: tableName || params.ops.table || "json",};
|
371
|
+
|
372
|
+
// Access Database
|
373
|
+
db.prepare(`CREATE TABLE IF NOT EXISTS ${options.table} (ID TEXT, json TEXT)`).run();
|
374
|
+
|
375
|
+
// Verify Options
|
376
|
+
if (params.ops.target && params.ops.target[0] === ".") params.ops.target = params.ops.target.slice(1); // Remove prefix if necessary
|
377
|
+
if (params.data && params.data === Infinity) throw new TypeError(`You cannot set Infinity into the database @ ID: ${params.id}`);
|
378
|
+
|
379
|
+
// Stringify
|
380
|
+
// if (params.stringify) {
|
381
|
+
// try {
|
382
|
+
// params.data = JSON.stringify(params.data);
|
383
|
+
// } catch (e) {
|
384
|
+
// throw new TypeError(
|
385
|
+
// `Please supply a valid input @ ID: ${params.id}\nError: ${e.message}`
|
386
|
+
// );
|
387
|
+
// }
|
388
|
+
// }
|
389
|
+
|
390
|
+
// Translate dot notation from keys
|
391
|
+
if (params.id && typeof params.id == "string" && params.id.includes(".")) {
|
392
|
+
let unparsed = params.id.split(".");
|
393
|
+
params.id = unparsed.shift();
|
394
|
+
params.ops.target = unparsed.join(".");
|
395
|
+
}
|
396
|
+
|
397
|
+
// Run & Return Method
|
398
|
+
return methods[method](db, params, options);
|
399
|
+
}
|