@certik/skynet 0.22.1 → 0.22.3
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/CHANGELOG.md +8 -0
- package/build.ts +23 -0
- package/dist/abi.d.ts +1 -2
- package/dist/abi.js +569 -563
- package/dist/address.d.ts +0 -1
- package/dist/address.js +22 -21
- package/dist/api.d.ts +0 -1
- package/dist/api.js +235 -120
- package/dist/app.d.ts +1 -2
- package/dist/app.js +2030 -276
- package/dist/availability.d.ts +0 -1
- package/dist/availability.js +126 -56
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +28 -24
- package/dist/const.d.ts +0 -1
- package/dist/const.js +153 -132
- package/dist/databricks.d.ts +0 -1
- package/dist/databricks.js +198 -58
- package/dist/date.d.ts +0 -1
- package/dist/date.js +48 -21
- package/dist/deploy.d.ts +0 -1
- package/dist/deploy.js +427 -292
- package/dist/dynamodb.d.ts +3 -4
- package/dist/dynamodb.js +432 -281
- package/dist/env.d.ts +2 -3
- package/dist/env.js +16 -9
- package/dist/graphql.d.ts +0 -1
- package/dist/graphql.js +26 -23
- package/dist/indexer.d.ts +0 -1
- package/dist/indexer.js +1050 -441
- package/dist/log.d.ts +0 -1
- package/dist/log.js +53 -52
- package/dist/object-hash.d.ts +0 -1
- package/dist/object-hash.js +49 -59
- package/dist/opsgenie.d.ts +97 -19
- package/dist/opsgenie.js +35 -30
- package/dist/por.d.ts +0 -1
- package/dist/por.js +113 -123
- package/dist/s3.d.ts +7 -8
- package/dist/s3.js +103 -91
- package/dist/search.d.ts +0 -1
- package/dist/search.js +100 -25
- package/dist/selector.d.ts +0 -1
- package/dist/selector.js +34 -38
- package/dist/slack.d.ts +0 -1
- package/dist/slack.js +27 -21
- package/dist/util.d.ts +0 -1
- package/dist/util.js +21 -20
- package/examples/api.ts +1 -1
- package/examples/indexer.ts +1 -1
- package/examples/mode-indexer.ts +1 -1
- package/package.json +4 -3
- package/{graphql.ts → src/graphql.ts} +1 -1
- package/src/opsgenie.ts +176 -0
- package/tsconfig.build.json +2 -5
- package/tsconfig.json +11 -20
- package/dist/abi.d.ts.map +0 -1
- package/dist/address.d.ts.map +0 -1
- package/dist/api.d.ts.map +0 -1
- package/dist/app.d.ts.map +0 -1
- package/dist/availability.d.ts.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/const.d.ts.map +0 -1
- package/dist/databricks.d.ts.map +0 -1
- package/dist/date.d.ts.map +0 -1
- package/dist/deploy.d.ts.map +0 -1
- package/dist/dynamodb.d.ts.map +0 -1
- package/dist/env.d.ts.map +0 -1
- package/dist/graphql.d.ts.map +0 -1
- package/dist/indexer.d.ts.map +0 -1
- package/dist/log.d.ts.map +0 -1
- package/dist/object-hash.d.ts.map +0 -1
- package/dist/opsgenie.d.ts.map +0 -1
- package/dist/por.d.ts.map +0 -1
- package/dist/s3.d.ts.map +0 -1
- package/dist/search.d.ts.map +0 -1
- package/dist/selector.d.ts.map +0 -1
- package/dist/slack.d.ts.map +0 -1
- package/dist/util.d.ts.map +0 -1
- package/opsgenie.ts +0 -69
- /package/{abi.ts → src/abi.ts} +0 -0
- /package/{address.ts → src/address.ts} +0 -0
- /package/{api.ts → src/api.ts} +0 -0
- /package/{app.ts → src/app.ts} +0 -0
- /package/{availability.ts → src/availability.ts} +0 -0
- /package/{cli.ts → src/cli.ts} +0 -0
- /package/{const.ts → src/const.ts} +0 -0
- /package/{databricks.ts → src/databricks.ts} +0 -0
- /package/{date.ts → src/date.ts} +0 -0
- /package/{deploy.ts → src/deploy.ts} +0 -0
- /package/{dynamodb.ts → src/dynamodb.ts} +0 -0
- /package/{env.ts → src/env.ts} +0 -0
- /package/{indexer.ts → src/indexer.ts} +0 -0
- /package/{log.ts → src/log.ts} +0 -0
- /package/{object-hash.ts → src/object-hash.ts} +0 -0
- /package/{por.ts → src/por.ts} +0 -0
- /package/{s3.ts → src/s3.ts} +0 -0
- /package/{search.ts → src/search.ts} +0 -0
- /package/{selector.ts → src/selector.ts} +0 -0
- /package/{slack.ts → src/slack.ts} +0 -0
- /package/{util.ts → src/util.ts} +0 -0
package/dist/address.d.ts
CHANGED
package/dist/address.js
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
addressPart = addressPart.toLowerCase();
|
|
18
|
-
}
|
|
19
|
-
return [protocolPart, addressPart];
|
|
1
|
+
// src/address.ts
|
|
2
|
+
function parseAddress(address) {
|
|
3
|
+
const separatorIndex = address.indexOf(":");
|
|
4
|
+
let protocolPart;
|
|
5
|
+
let addressPart;
|
|
6
|
+
if (separatorIndex === -1) {
|
|
7
|
+
protocolPart = "eth";
|
|
8
|
+
addressPart = address;
|
|
9
|
+
} else {
|
|
10
|
+
protocolPart = address.slice(0, separatorIndex);
|
|
11
|
+
addressPart = address.slice(separatorIndex + 1);
|
|
12
|
+
}
|
|
13
|
+
if (addressPart.startsWith("0x")) {
|
|
14
|
+
addressPart = addressPart.toLowerCase();
|
|
15
|
+
}
|
|
16
|
+
return [protocolPart, addressPart];
|
|
20
17
|
}
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
function composeAddress(protocol, addr) {
|
|
19
|
+
return `${protocol}:${addr}`;
|
|
23
20
|
}
|
|
21
|
+
export {
|
|
22
|
+
parseAddress,
|
|
23
|
+
composeAddress
|
|
24
|
+
};
|
package/dist/api.d.ts
CHANGED
package/dist/api.js
CHANGED
|
@@ -1,81 +1,197 @@
|
|
|
1
|
+
// src/env.ts
|
|
2
|
+
function ensureAndGet(envName, defaultValue) {
|
|
3
|
+
return process.env[envName] || defaultValue;
|
|
4
|
+
}
|
|
5
|
+
function getEnvironment() {
|
|
6
|
+
return ensureAndGet("SKYNET_ENVIRONMENT", "dev");
|
|
7
|
+
}
|
|
8
|
+
function getEnvOrThrow(envName) {
|
|
9
|
+
if (!process.env[envName]) {
|
|
10
|
+
throw new Error(`Must set environment variable ${envName}`);
|
|
11
|
+
}
|
|
12
|
+
return process.env[envName];
|
|
13
|
+
}
|
|
14
|
+
function isProduction() {
|
|
15
|
+
return getEnvironment() === "prd";
|
|
16
|
+
}
|
|
17
|
+
function isDev() {
|
|
18
|
+
return getEnvironment() === "dev";
|
|
19
|
+
}
|
|
20
|
+
// src/log.ts
|
|
21
|
+
function isObject(a) {
|
|
22
|
+
return !!a && a.constructor === Object;
|
|
23
|
+
}
|
|
24
|
+
function print(o) {
|
|
25
|
+
if (Array.isArray(o)) {
|
|
26
|
+
return `[${o.map(print).join(", ")}]`;
|
|
27
|
+
}
|
|
28
|
+
if (isObject(o)) {
|
|
29
|
+
return `{${Object.keys(o).map((k) => `${k}: ${o[k]}`).join(", ")}}`;
|
|
30
|
+
}
|
|
31
|
+
return `${o}`;
|
|
32
|
+
}
|
|
33
|
+
function getLine(params) {
|
|
34
|
+
let line = "";
|
|
35
|
+
for (let i = 0, l = params.length;i < l; i++) {
|
|
36
|
+
line += `${print(params[i])} `.replace(/\n/gm, "\t");
|
|
37
|
+
}
|
|
38
|
+
return line.trim();
|
|
39
|
+
}
|
|
40
|
+
function timestamp() {
|
|
41
|
+
return new Date().toISOString();
|
|
42
|
+
}
|
|
43
|
+
var inline = {
|
|
44
|
+
debug: function(...args) {
|
|
45
|
+
if (true) {
|
|
46
|
+
console.log(`${timestamp()} ${getLine(args)}`);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
log: function(...args) {
|
|
50
|
+
if (true) {
|
|
51
|
+
console.log(`${timestamp()} ${getLine(args)}`);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
error: function(...args) {
|
|
55
|
+
if (true) {
|
|
56
|
+
console.error(`${timestamp()} ${getLine(args)}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var logger = {
|
|
61
|
+
debug: function(...args) {
|
|
62
|
+
if (true) {
|
|
63
|
+
console.log(`[${timestamp()}]`, ...args);
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
log: function(...args) {
|
|
67
|
+
if (true) {
|
|
68
|
+
console.log(`[${timestamp()}]`, ...args);
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
error: function(...args) {
|
|
72
|
+
if (true) {
|
|
73
|
+
console.error(`[${timestamp()}]`, ...args);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
// src/selector.ts
|
|
78
|
+
function getSelectorDesc(selector) {
|
|
79
|
+
return Object.keys(selector).map((name) => {
|
|
80
|
+
return ` --${name.padEnd(14)}${selector[name].desc || selector[name].description || ""}`;
|
|
81
|
+
}).join(`
|
|
82
|
+
`);
|
|
83
|
+
}
|
|
84
|
+
function getSelectorFlags(selector) {
|
|
85
|
+
return Object.keys(selector).reduce((acc, name) => {
|
|
86
|
+
const flag = {
|
|
87
|
+
type: selector[name].type || "string",
|
|
88
|
+
...selector[name]
|
|
89
|
+
};
|
|
90
|
+
if (!selector[name].optional && selector[name].isRequired !== false) {
|
|
91
|
+
flag.isRequired = true;
|
|
92
|
+
}
|
|
93
|
+
return { ...acc, [name]: flag };
|
|
94
|
+
}, {});
|
|
95
|
+
}
|
|
96
|
+
function toSelectorString(selectorFlags, delim = ",") {
|
|
97
|
+
return Object.keys(selectorFlags).sort().map((flag) => {
|
|
98
|
+
return `${flag}=${selectorFlags[flag]}`;
|
|
99
|
+
}).join(delim);
|
|
100
|
+
}
|
|
101
|
+
function normalizeSelectorValue(v) {
|
|
102
|
+
return v.replace(/[^A-Za-z0-9]+/g, "-");
|
|
103
|
+
}
|
|
104
|
+
function getJobName(name, selectorFlags, mode) {
|
|
105
|
+
const selectorNamePart = Object.keys(selectorFlags).sort().map((name2) => selectorFlags[name2]).join("-");
|
|
106
|
+
let jobName = name;
|
|
107
|
+
if (mode) {
|
|
108
|
+
jobName += `-${mode}`;
|
|
109
|
+
}
|
|
110
|
+
if (selectorNamePart.length > 0) {
|
|
111
|
+
jobName += `-${normalizeSelectorValue(selectorNamePart)}`;
|
|
112
|
+
}
|
|
113
|
+
return jobName;
|
|
114
|
+
}
|
|
115
|
+
// src/api.ts
|
|
1
116
|
import osModule from "os";
|
|
2
117
|
import express from "express";
|
|
3
118
|
import meow from "meow";
|
|
4
|
-
import { getSelectorDesc, getSelectorFlags } from "./selector";
|
|
5
|
-
import { isProduction } from "./env";
|
|
6
|
-
import { inline } from "./log";
|
|
7
119
|
async function logStartMiddleware(_, res, next) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
120
|
+
const start = new Date;
|
|
121
|
+
res.set("x-requested-at", start.toISOString());
|
|
122
|
+
next();
|
|
11
123
|
}
|
|
12
124
|
async function contextMiddleware(_, res, next) {
|
|
13
|
-
|
|
14
|
-
|
|
125
|
+
res.set("x-instance-id", osModule.hostname());
|
|
126
|
+
next();
|
|
15
127
|
}
|
|
16
128
|
async function logEndMiddleware(req, res, next) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
next();
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
const start = new Date(requestedAt).getTime();
|
|
24
|
-
const end = new Date().getTime();
|
|
25
|
-
const logInfo = {
|
|
26
|
-
start,
|
|
27
|
-
end,
|
|
28
|
-
elapsed: `${end - start}ms`,
|
|
29
|
-
endpoint: req.path,
|
|
30
|
-
host: req.hostname,
|
|
31
|
-
status: res.statusCode,
|
|
32
|
-
};
|
|
33
|
-
if (res.statusMessage) {
|
|
34
|
-
logInfo.errorMessage = res.statusMessage;
|
|
35
|
-
}
|
|
36
|
-
inline.log(JSON.stringify(logInfo));
|
|
129
|
+
const requestedAt = res.get("x-requested-at");
|
|
130
|
+
if (!requestedAt) {
|
|
131
|
+
inline.log("missing x-requested-at header");
|
|
37
132
|
next();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const start = new Date(requestedAt).getTime();
|
|
136
|
+
const end = new Date().getTime();
|
|
137
|
+
const logInfo = {
|
|
138
|
+
start,
|
|
139
|
+
end,
|
|
140
|
+
elapsed: `${end - start}ms`,
|
|
141
|
+
endpoint: req.path,
|
|
142
|
+
host: req.hostname,
|
|
143
|
+
status: res.statusCode
|
|
144
|
+
};
|
|
145
|
+
if (res.statusMessage) {
|
|
146
|
+
logInfo.errorMessage = res.statusMessage;
|
|
147
|
+
}
|
|
148
|
+
inline.log(JSON.stringify(logInfo));
|
|
149
|
+
next();
|
|
38
150
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
inline.log(`requested by valid key ${key.slice(0, 6)}`);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
const name = key[apiKey];
|
|
59
|
-
if (!name) {
|
|
60
|
-
inline.log("request has an invalid api key");
|
|
61
|
-
res.status(400).send("invalid api key");
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
inline.log(`requested by authorized user ${name}`);
|
|
65
|
-
}
|
|
66
|
-
next();
|
|
151
|
+
var apiKeyMiddleware = (key) => {
|
|
152
|
+
async function requireAPIKey(req, res, next) {
|
|
153
|
+
try {
|
|
154
|
+
const apiKey = req.get("x-api-key") || req.query["api-key"];
|
|
155
|
+
if (!apiKey) {
|
|
156
|
+
inline.log("request without api key");
|
|
157
|
+
res.status(400).send("require x-api-key header");
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (typeof key === "string") {
|
|
161
|
+
if (apiKey !== key) {
|
|
162
|
+
inline.log("request has an invalid api key");
|
|
163
|
+
res.status(400).send("invalid api key");
|
|
164
|
+
return;
|
|
67
165
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
166
|
+
inline.log(`requested by valid key ${key.slice(0, 6)}`);
|
|
167
|
+
} else {
|
|
168
|
+
const name = key[apiKey];
|
|
169
|
+
if (!name) {
|
|
170
|
+
inline.log("request has an invalid api key");
|
|
171
|
+
res.status(400).send("invalid api key");
|
|
172
|
+
return;
|
|
71
173
|
}
|
|
174
|
+
inline.log(`requested by authorized user ${name}`);
|
|
175
|
+
}
|
|
176
|
+
next();
|
|
177
|
+
} catch (err) {
|
|
178
|
+
inline.log("check api key error", err);
|
|
179
|
+
res.status(500).send("internal error");
|
|
72
180
|
}
|
|
73
|
-
|
|
181
|
+
}
|
|
182
|
+
return requireAPIKey;
|
|
74
183
|
};
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
184
|
+
async function startApiApp({
|
|
185
|
+
binaryName,
|
|
186
|
+
name,
|
|
187
|
+
selector = {},
|
|
188
|
+
routes,
|
|
189
|
+
serve,
|
|
190
|
+
beforeListen
|
|
191
|
+
}) {
|
|
192
|
+
const app = express();
|
|
193
|
+
app.use(express.json({ limit: "20mb" }));
|
|
194
|
+
const cli = meow(`
|
|
79
195
|
Usage
|
|
80
196
|
$ ${binaryName} <options>
|
|
81
197
|
|
|
@@ -83,64 +199,63 @@ export async function startApiApp({ binaryName, name, selector = {}, routes, ser
|
|
|
83
199
|
${getSelectorDesc(selector)}
|
|
84
200
|
--verbose Output debug messages
|
|
85
201
|
`, {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
},
|
|
96
|
-
});
|
|
97
|
-
const { verbose, ...selectorFlags } = cli.flags;
|
|
98
|
-
for (const route of routes) {
|
|
99
|
-
const method = route.method ? route.method.toLowerCase() : "get";
|
|
100
|
-
const middlewares = route.middlewares || [];
|
|
101
|
-
if (route.protected) {
|
|
102
|
-
if (!serve.apiKey) {
|
|
103
|
-
throw new Error("serve.apiKey is required for protected route");
|
|
104
|
-
}
|
|
105
|
-
middlewares.unshift(apiKeyMiddleware(serve.apiKey));
|
|
106
|
-
}
|
|
107
|
-
if (app[method]) {
|
|
108
|
-
if (verbose) {
|
|
109
|
-
inline.log(`registering ${method} ${route.path}`);
|
|
110
|
-
}
|
|
111
|
-
app[method](route.path, contextMiddleware, logStartMiddleware, ...middlewares, async (req, res, next) => {
|
|
112
|
-
try {
|
|
113
|
-
await route.handler({ req, res, ...selectorFlags });
|
|
114
|
-
}
|
|
115
|
-
catch (routeErr) {
|
|
116
|
-
if (routeErr instanceof Error) {
|
|
117
|
-
inline.log("caught route err", routeErr, routeErr.stack);
|
|
118
|
-
res.status(500).send(`internal server error: ${routeErr.message}`);
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
inline.log("caught route err", routeErr);
|
|
122
|
-
res.status(500).send("internal server error");
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
next();
|
|
126
|
-
}, logEndMiddleware);
|
|
127
|
-
}
|
|
202
|
+
importMeta: import.meta,
|
|
203
|
+
description: false,
|
|
204
|
+
version: false,
|
|
205
|
+
flags: {
|
|
206
|
+
...getSelectorFlags(selector),
|
|
207
|
+
verbose: {
|
|
208
|
+
type: "boolean",
|
|
209
|
+
default: false
|
|
210
|
+
}
|
|
128
211
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
212
|
+
});
|
|
213
|
+
const { verbose, ...selectorFlags } = cli.flags;
|
|
214
|
+
for (const route of routes) {
|
|
215
|
+
const method = route.method ? route.method.toLowerCase() : "get";
|
|
216
|
+
const middlewares = route.middlewares || [];
|
|
217
|
+
if (route.protected) {
|
|
218
|
+
if (!serve.apiKey) {
|
|
219
|
+
throw new Error("serve.apiKey is required for protected route");
|
|
220
|
+
}
|
|
221
|
+
middlewares.unshift(apiKeyMiddleware(serve.apiKey));
|
|
134
222
|
}
|
|
135
|
-
if (
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
223
|
+
if (app[method]) {
|
|
224
|
+
if (verbose) {
|
|
225
|
+
inline.log(`registering ${method} ${route.path}`);
|
|
226
|
+
}
|
|
227
|
+
app[method](route.path, contextMiddleware, logStartMiddleware, ...middlewares, async (req, res, next) => {
|
|
228
|
+
try {
|
|
229
|
+
await route.handler({ req, res, ...selectorFlags });
|
|
230
|
+
} catch (routeErr) {
|
|
231
|
+
if (routeErr instanceof Error) {
|
|
232
|
+
inline.log("caught route err", routeErr, routeErr.stack);
|
|
233
|
+
res.status(500).send(`internal server error: ${routeErr.message}`);
|
|
234
|
+
} else {
|
|
235
|
+
inline.log("caught route err", routeErr);
|
|
236
|
+
res.status(500).send("internal server error");
|
|
237
|
+
}
|
|
144
238
|
}
|
|
239
|
+
next();
|
|
240
|
+
}, logEndMiddleware);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
if (!routes.some((r) => r.path === "/" && r.method?.toUpperCase() === "GET")) {
|
|
244
|
+
app.get("/", (_, res) => {
|
|
245
|
+
res.send("ok");
|
|
145
246
|
});
|
|
247
|
+
}
|
|
248
|
+
if (beforeListen) {
|
|
249
|
+
await beforeListen({ app });
|
|
250
|
+
}
|
|
251
|
+
app.listen(serve.port, () => {
|
|
252
|
+
if (isProduction()) {
|
|
253
|
+
inline.log(`${name} listening at https://api.wf.corp.certik.com${serve.prefix}`);
|
|
254
|
+
} else {
|
|
255
|
+
inline.log(`${name} listening at http://localhost:${serve.port}`);
|
|
256
|
+
}
|
|
257
|
+
});
|
|
146
258
|
}
|
|
259
|
+
export {
|
|
260
|
+
startApiApp
|
|
261
|
+
};
|
package/dist/app.d.ts
CHANGED
|
@@ -74,7 +74,7 @@ declare function api({ name, routes, serve, beforeListen, env, region, }: {
|
|
|
74
74
|
env?: Env;
|
|
75
75
|
region?: string;
|
|
76
76
|
}): () => Promise<void>;
|
|
77
|
-
declare const SENSITIVE_VALUE:
|
|
77
|
+
declare const SENSITIVE_VALUE: null;
|
|
78
78
|
declare const every: (n?: number) => {
|
|
79
79
|
second: string;
|
|
80
80
|
seconds: string;
|
|
@@ -99,4 +99,3 @@ declare const every: (n?: number) => {
|
|
|
99
99
|
weeks?: undefined;
|
|
100
100
|
};
|
|
101
101
|
export { indexer, modeIndexer, api, every, SENSITIVE_VALUE };
|
|
102
|
-
//# sourceMappingURL=app.d.ts.map
|