@fonoster/apiserver 0.5.5 → 0.6.1-alpha.0
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/LICENSE +2 -2
- package/README.md +3 -0
- package/dist/applications/buildService.d.ts +29 -0
- package/dist/applications/buildService.js +44 -0
- package/dist/applications/createApplication.d.ts +6 -0
- package/dist/applications/createApplication.js +57 -0
- package/dist/applications/createGetFnUtil.d.ts +33 -0
- package/dist/applications/createGetFnUtil.js +32 -0
- package/dist/applications/deleteApplication.d.ts +6 -0
- package/dist/applications/deleteApplication.js +26 -0
- package/dist/applications/getApplication.d.ts +6 -0
- package/dist/applications/getApplication.js +47 -0
- package/dist/applications/hostOrHostPortSchema.d.ts +3 -0
- package/dist/applications/hostOrHostPortSchema.js +34 -0
- package/dist/applications/index.d.ts +1 -0
- package/dist/applications/index.js +23 -0
- package/dist/applications/listApplications.d.ts +6 -0
- package/dist/applications/listApplications.js +69 -0
- package/dist/applications/types.d.ts +27 -0
- package/dist/applications/types.js +2 -0
- package/dist/applications/updateApplication.d.ts +8 -0
- package/dist/applications/updateApplication.js +57 -0
- package/dist/applications/utils/applicationWithEncodedStruct.d.ts +3 -0
- package/dist/applications/utils/applicationWithEncodedStruct.js +23 -0
- package/dist/applications/utils/convertToApplicationData.d.ts +4 -0
- package/dist/applications/utils/convertToApplicationData.js +38 -0
- package/dist/applications/utils/getApplicationValidationSchema.d.ts +64 -0
- package/dist/applications/utils/getApplicationValidationSchema.js +64 -0
- package/dist/applications/utils/prepareForValidation.d.ts +3 -0
- package/dist/applications/utils/prepareForValidation.js +36 -0
- package/dist/applications/utils/validOrThrow.d.ts +3 -0
- package/dist/applications/utils/validOrThrow.js +15 -0
- package/dist/calls/ListCallsRequestSchema.d.ts +28 -0
- package/dist/calls/ListCallsRequestSchema.js +58 -0
- package/dist/calls/buildService.d.ts +26 -0
- package/dist/calls/buildService.js +58 -0
- package/dist/calls/createCall.d.ts +6 -0
- package/dist/calls/createCall.js +64 -0
- package/dist/calls/createCallPublisher.d.ts +7 -0
- package/dist/calls/createCallPublisher.js +47 -0
- package/dist/calls/createFetchCalls.d.ts +3 -0
- package/dist/calls/createFetchCalls.js +87 -0
- package/dist/calls/createFetchSingleCall.d.ts +3 -0
- package/dist/calls/createFetchSingleCall.js +48 -0
- package/dist/calls/createTrackCallSubscriber.d.ts +6 -0
- package/dist/calls/createTrackCallSubscriber.js +53 -0
- package/dist/calls/getCall.d.ts +6 -0
- package/dist/calls/getCall.js +60 -0
- package/dist/calls/index.d.ts +1 -0
- package/dist/calls/index.js +23 -0
- package/dist/calls/influxdb.d.ts +2 -0
- package/dist/calls/influxdb.js +29 -0
- package/dist/calls/listCalls.d.ts +6 -0
- package/dist/calls/listCalls.js +52 -0
- package/dist/calls/runCallManager.d.ts +8 -0
- package/dist/calls/runCallManager.js +82 -0
- package/dist/calls/trackCall.d.ts +14 -0
- package/dist/calls/trackCall.js +64 -0
- package/dist/calls/types.d.ts +96 -0
- package/dist/calls/types.js +42 -0
- package/dist/core/allowList.d.ts +2 -0
- package/dist/core/allowList.js +31 -0
- package/dist/core/db.d.ts +13 -0
- package/dist/core/db.js +29 -0
- package/dist/core/filesServer.d.ts +5 -0
- package/dist/{ari_proxy.js → core/filesServer.js} +24 -20
- package/dist/core/identityConfig.d.ts +21 -0
- package/dist/core/identityConfig.js +43 -0
- package/dist/core/loadServices.d.ts +8 -0
- package/dist/core/loadServices.js +43 -0
- package/dist/core/notFoundError.d.ts +6 -0
- package/dist/core/notFoundError.js +27 -0
- package/dist/core/removeSwaggerNotice.d.ts +2 -0
- package/dist/core/removeSwaggerNotice.js +34 -0
- package/dist/core/routrConfig.d.ts +5 -0
- package/dist/core/routrConfig.js +27 -0
- package/dist/core/runServices.d.ts +2 -0
- package/dist/core/runServices.js +97 -0
- package/dist/core/seed.js +76 -0
- package/dist/core/services.d.ts +438 -0
- package/dist/core/services.js +53 -0
- package/dist/core/upsertDefaultPeer.d.ts +3 -0
- package/dist/core/upsertDefaultPeer.js +92 -0
- package/dist/envs.d.ts +46 -6
- package/dist/envs.js +95 -8
- package/dist/events/createInfluxDbPub.d.ts +13 -0
- package/dist/events/createInfluxDbPub.js +54 -0
- package/dist/events/nats.d.ts +10 -0
- package/dist/events/nats.js +85 -0
- package/dist/events/types.d.ts +8 -0
- package/dist/events/types.js +20 -0
- package/dist/index.js +53 -122
- package/dist/secrets/buildService.d.ts +37 -0
- package/dist/secrets/buildService.js +44 -0
- package/dist/secrets/createGetFnUtil.d.ts +16 -0
- package/dist/secrets/createGetFnUtil.js +46 -0
- package/dist/secrets/createSecret.d.ts +7 -0
- package/dist/secrets/createSecret.js +57 -0
- package/dist/secrets/deleteSecret.d.ts +8 -0
- package/dist/secrets/deleteSecret.js +44 -0
- package/dist/secrets/getSecret.d.ts +6 -0
- package/dist/secrets/getSecret.js +43 -0
- package/dist/secrets/index.d.ts +1 -0
- package/dist/secrets/index.js +23 -0
- package/dist/secrets/listSecrets.d.ts +7 -0
- package/dist/secrets/listSecrets.js +62 -0
- package/dist/secrets/types.d.ts +32 -0
- package/dist/secrets/types.js +2 -0
- package/dist/secrets/updateSecret.d.ts +8 -0
- package/dist/secrets/updateSecret.js +53 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +35 -0
- package/dist/utils/makeCheckNumberPreconditions.d.ts +6 -0
- package/dist/utils/makeCheckNumberPreconditions.js +49 -0
- package/dist/voice/ChannelVarNotFoundError.d.ts +5 -0
- package/dist/voice/ChannelVarNotFoundError.js +10 -0
- package/dist/voice/MethodNotImplementedError.d.ts +4 -0
- package/dist/voice/MethodNotImplementedError.js +27 -0
- package/dist/voice/VoiceClientImpl.d.ts +42 -0
- package/dist/voice/VoiceClientImpl.js +192 -0
- package/dist/voice/VoiceDispatcher.d.ts +17 -0
- package/dist/voice/VoiceDispatcher.js +99 -0
- package/dist/voice/VoiceServiceClientConst.d.ts +3 -0
- package/dist/voice/VoiceServiceClientConst.js +53 -0
- package/dist/voice/connectToAri.d.ts +2 -0
- package/dist/voice/connectToAri.js +80 -0
- package/dist/voice/createExternalMediaConfig.d.ts +9 -0
- package/dist/voice/createExternalMediaConfig.js +35 -0
- package/dist/voice/handlers/Answer.d.ts +5 -0
- package/dist/voice/handlers/Answer.js +25 -0
- package/dist/voice/handlers/Hangup.d.ts +5 -0
- package/dist/voice/handlers/Hangup.js +26 -0
- package/dist/voice/handlers/Mute.d.ts +4 -0
- package/dist/voice/handlers/Mute.js +28 -0
- package/dist/voice/handlers/Play.d.ts +4 -0
- package/dist/voice/handlers/Play.js +34 -0
- package/dist/voice/handlers/PlayDtmf.d.ts +4 -0
- package/dist/voice/handlers/PlayDtmf.js +28 -0
- package/dist/voice/handlers/PlaybackControl.d.ts +4 -0
- package/dist/voice/handlers/PlaybackControl.js +28 -0
- package/dist/voice/handlers/Record.d.ts +4 -0
- package/dist/voice/handlers/Record.js +59 -0
- package/dist/voice/handlers/Say.d.ts +4 -0
- package/dist/voice/handlers/Say.js +46 -0
- package/dist/voice/handlers/StasisEnd.d.ts +4 -0
- package/dist/voice/handlers/StasisEnd.js +28 -0
- package/dist/voice/handlers/Unmute.d.ts +4 -0
- package/dist/voice/handlers/Unmute.js +28 -0
- package/dist/voice/handlers/awaitForPlaybackFinished.d.ts +3 -0
- package/dist/voice/handlers/awaitForPlaybackFinished.js +25 -0
- package/dist/voice/handlers/awaitForRecordingFinished.d.ts +5 -0
- package/dist/voice/handlers/awaitForRecordingFinished.js +54 -0
- package/dist/voice/handlers/dial/Dial.d.ts +5 -0
- package/dist/voice/handlers/dial/Dial.js +72 -0
- package/dist/voice/handlers/dial/handleChannelLeftBridge.d.ts +6 -0
- package/dist/voice/handlers/dial/handleChannelLeftBridge.js +30 -0
- package/dist/voice/handlers/dial/handleDialEvents.d.ts +5 -0
- package/dist/voice/handlers/dial/handleDialEvents.js +55 -0
- package/dist/voice/handlers/dial/handleStasisEnd.d.ts +3 -0
- package/dist/voice/handlers/dial/handleStasisEnd.js +20 -0
- package/dist/voice/handlers/dial/handleStasisStart.d.ts +9 -0
- package/dist/voice/handlers/dial/handleStasisStart.js +54 -0
- package/dist/voice/handlers/dial/recordChannel.d.ts +4 -0
- package/dist/voice/handlers/dial/recordChannel.js +46 -0
- package/dist/voice/handlers/gather/Gather.d.ts +3 -0
- package/dist/voice/handlers/gather/Gather.js +73 -0
- package/dist/voice/handlers/gather/getTimeoutPromise.d.ts +8 -0
- package/dist/voice/handlers/gather/getTimeoutPromise.js +19 -0
- package/dist/voice/handlers/withErrorHandling.d.ts +4 -0
- package/dist/voice/handlers/withErrorHandling.js +36 -0
- package/dist/voice/integrations/ApplicationNotFoundError.d.ts +4 -0
- package/dist/voice/integrations/ApplicationNotFoundError.js +28 -0
- package/dist/voice/integrations/findIntegrationsCredentials.d.ts +3 -0
- package/dist/voice/integrations/findIntegrationsCredentials.js +7 -0
- package/dist/voice/integrations/getSttConfig.d.ts +7 -0
- package/dist/voice/integrations/getSttConfig.js +10 -0
- package/dist/voice/integrations/getTtsConfig.d.ts +7 -0
- package/dist/voice/integrations/getTtsConfig.js +11 -0
- package/dist/voice/integrations/index.d.ts +1 -0
- package/dist/voice/integrations/index.js +35 -0
- package/dist/voice/integrations/makeCreateContainer.d.ts +4 -0
- package/dist/voice/integrations/makeCreateContainer.js +89 -0
- package/dist/voice/integrations/types.d.ts +15 -0
- package/dist/voice/integrations/types.js +2 -0
- package/dist/voice/makeCreateVoiceClient.d.ts +9 -0
- package/dist/voice/makeCreateVoiceClient.js +78 -0
- package/dist/voice/makeGetChannelVar.d.ts +4 -0
- package/dist/voice/makeGetChannelVar.js +26 -0
- package/dist/voice/stt/AbstractSpeechToText.d.ts +15 -0
- package/dist/voice/stt/AbstractSpeechToText.js +19 -0
- package/dist/voice/stt/Google.d.ts +20 -0
- package/dist/voice/stt/Google.js +99 -0
- package/dist/voice/stt/SpeechToTextFactory.d.ts +9 -0
- package/dist/voice/stt/SpeechToTextFactory.js +41 -0
- package/dist/voice/stt/types.d.ts +25 -0
- package/dist/voice/stt/types.js +2 -0
- package/dist/voice/transcribeOnConnection.d.ts +5 -0
- package/dist/voice/transcribeOnConnection.js +27 -0
- package/dist/voice/tts/AbstractTextToSpeech.d.ts +18 -0
- package/dist/voice/tts/AbstractTextToSpeech.js +82 -0
- package/dist/voice/tts/Azure.d.ts +30 -0
- package/dist/voice/tts/Azure.js +128 -0
- package/dist/voice/tts/Google.d.ts +25 -0
- package/dist/voice/tts/Google.js +116 -0
- package/dist/voice/tts/TextToSpeechFactory.d.ts +9 -0
- package/dist/voice/tts/TextToSpeechFactory.js +43 -0
- package/dist/voice/tts/computeFilename.d.ts +7 -0
- package/dist/voice/tts/computeFilename.js +39 -0
- package/dist/voice/tts/flattenObject.d.ts +2 -0
- package/dist/voice/tts/flattenObject.js +39 -0
- package/dist/voice/tts/isSsml.d.ts +2 -0
- package/dist/voice/tts/isSsml.js +26 -0
- package/dist/voice/tts/types.d.ts +7 -0
- package/dist/voice/tts/types.js +2 -0
- package/dist/voice/types/ari.d.ts +21 -0
- package/dist/voice/types/ari.js +43 -0
- package/dist/voice/types/index.d.ts +2 -0
- package/dist/voice/types/index.js +36 -0
- package/dist/voice/types/voice.d.ts +34 -0
- package/dist/voice/types/voice.js +2 -0
- package/package.json +45 -36
- package/dist/upsert_peer.d.ts +0 -1
- package/dist/upsert_peer.js +0 -63
- /package/dist/{ari_proxy.d.ts → core/seed.d.ts} +0 -0
package/dist/envs.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
var _a;
|
|
2
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
7
|
+
exports.INTEGRATIONS_FILE = exports.FILES_SERVER_PORT = exports.TTS_PATH_TO_FILES = exports.ASTERISK_SYSTEM_DOMAIN = exports.ASTERISK_ARI_SECRET = exports.ASTERISK_ARI_USERNAME = exports.ASTERISK_ARI_PROXY_URL = exports.ASTERISK_TRUNK = exports.ASTERISK_EXTENSION = exports.ASTERISK_CONTEXT = exports.CALLS_TRACK_CALL_SUBJECT = exports.CALLS_CREATE_SUBJECT = exports.DEFAULT_NATS_QUEUE_GROUP = exports.NATS_URL = exports.APISERVER_HOST = exports.APISERVER_BIND_ADDR = exports.ROUTR_DEFAULT_PEER_PASSWORD = exports.ROUTR_DEFAULT_PEER_AOR = exports.ROUTR_DEFAULT_PEER_USERNAME = exports.ROUTR_DEFAULT_PEER_NAME = exports.ROUTR_API_ENDPOINT = exports.CLOAK_ENCRYPTION_KEY = exports.INFLUXDB_TOKEN = exports.INFLUXDB_BUCKET = exports.INFLUXDB_ORG = exports.INFLUXDB_PASSWORD = exports.INFLUXDB_USERNAME = exports.INFLUXDB_URL = exports.OWNER_PASSWORD = exports.OWNER_EMAIL = exports.OWNER_NAME = exports.EMAIL_TEMPLATES_DIR = exports.SMTP_SENDER = exports.SMTP_AUTH_PASS = exports.SMTP_AUTH_USER = exports.SMTP_SECURE = exports.SMTP_PORT = exports.SMTP_HOST = exports.IDENTITY_REFRESH_TOKEN_EXPIRES_IN = exports.IDENTITY_ACCESS_TOKEN_EXPIRES_IN = exports.IDENTITY_ID_TOKEN_EXPIRES_IN = exports.IDENTITY_PUBLIC_KEY = exports.IDENTITY_PRIVATE_KEY = exports.IDENTITY_AUDIENCE = exports.IDENTITY_ISSUER = exports.APP_URL = void 0;
|
|
4
8
|
/*
|
|
5
|
-
* Copyright (C)
|
|
9
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
6
10
|
* http://github.com/fonoster/fonoster
|
|
7
11
|
*
|
|
8
12
|
* This file is part of Fonoster
|
|
@@ -19,9 +23,92 @@ exports.APISERVER_ASTERISK_ARI_SECRET = exports.APISERVER_ASTERISK_ARI_USERNAME
|
|
|
19
23
|
* See the License for the specific language governing permissions and
|
|
20
24
|
* limitations under the License.
|
|
21
25
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
const fs_1 = __importDefault(require("fs"));
|
|
27
|
+
const os_1 = __importDefault(require("os"));
|
|
28
|
+
const path_1 = require("path");
|
|
29
|
+
const common_1 = require("@fonoster/common");
|
|
30
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
31
|
+
if (process.env.NODE_ENV === "dev") {
|
|
32
|
+
dotenv_1.default.config({ path: (0, path_1.join)(__dirname, "..", "..", "..", ".env") });
|
|
33
|
+
}
|
|
34
|
+
const e = process.env;
|
|
35
|
+
(0, common_1.assertEnvsAreSet)([
|
|
36
|
+
"INTEGRATIONS_FILE",
|
|
37
|
+
"TTS_PATH_TO_FILES",
|
|
38
|
+
"APP_URL",
|
|
39
|
+
"CLOAK_ENCRYPTION_KEY",
|
|
40
|
+
"SMTP_HOST",
|
|
41
|
+
"SMTP_SENDER",
|
|
42
|
+
"SMTP_AUTH_USER",
|
|
43
|
+
"SMTP_AUTH_PASS",
|
|
44
|
+
"IDENTITY_ISSUER",
|
|
45
|
+
"IDENTITY_PRIVATE_KEY_PATH",
|
|
46
|
+
"IDENTITY_PUBLIC_KEY_PATH",
|
|
47
|
+
"INFLUXDB_URL",
|
|
48
|
+
"INFLUXDB_INIT_USERNAME",
|
|
49
|
+
"INFLUXDB_INIT_PASSWORD",
|
|
50
|
+
"INFLUXDB_INIT_ORG",
|
|
51
|
+
"INFLUXDB_INIT_BUCKET",
|
|
52
|
+
"INFLUXDB_INIT_TOKEN",
|
|
53
|
+
"ASTERISK_ARI_PROXY_URL",
|
|
54
|
+
"ASTERISK_ARI_USERNAME",
|
|
55
|
+
"ASTERISK_ARI_SECRET",
|
|
56
|
+
"NATS_URL"
|
|
57
|
+
]);
|
|
58
|
+
(0, common_1.assertFileExists)(e.IDENTITY_PRIVATE_KEY_PATH);
|
|
59
|
+
(0, common_1.assertFileExists)(e.IDENTITY_PUBLIC_KEY_PATH);
|
|
60
|
+
// Frontend configurations
|
|
61
|
+
exports.APP_URL = e.APP_URL;
|
|
62
|
+
// Identity configurations
|
|
63
|
+
exports.IDENTITY_ISSUER = e.IDENTITY_ISSUER;
|
|
64
|
+
exports.IDENTITY_AUDIENCE = e.IDENTITY_AUDIENCE || "api";
|
|
65
|
+
exports.IDENTITY_PRIVATE_KEY = fs_1.default.readFileSync(e.IDENTITY_PRIVATE_KEY_PATH, "utf8");
|
|
66
|
+
exports.IDENTITY_PUBLIC_KEY = fs_1.default.readFileSync(e.IDENTITY_PUBLIC_KEY_PATH, "utf8");
|
|
67
|
+
exports.IDENTITY_ID_TOKEN_EXPIRES_IN = e.IDENTITY_ID_TOKEN_EXPIRES_IN || "15m";
|
|
68
|
+
exports.IDENTITY_ACCESS_TOKEN_EXPIRES_IN = e.IDENTITY_ACCESS_TOKEN_EXPIRES_IN || "15m";
|
|
69
|
+
exports.IDENTITY_REFRESH_TOKEN_EXPIRES_IN = e.IDENTITY_REFRESH_TOKEN_EXPIRES_IN || "24h";
|
|
70
|
+
// SMTP configurations
|
|
71
|
+
exports.SMTP_HOST = e.SMTP_HOST;
|
|
72
|
+
exports.SMTP_PORT = e.SMTP_PORT ? parseInt(e.SMTP_PORT) : 587;
|
|
73
|
+
exports.SMTP_SECURE = ((_a = e.SMTP_SECURE) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === "true";
|
|
74
|
+
exports.SMTP_AUTH_USER = e.SMTP_AUTH_USER;
|
|
75
|
+
exports.SMTP_AUTH_PASS = e.SMTP_AUTH_PASS;
|
|
76
|
+
exports.SMTP_SENDER = e.SMTP_SENDER;
|
|
77
|
+
// Custom email templates
|
|
78
|
+
exports.EMAIL_TEMPLATES_DIR = e.EMAIL_TEMPLATES_DIR;
|
|
79
|
+
// Default owner configurations (If OWNER_EMAIL is set, the system will create a default user and a workspace)
|
|
80
|
+
exports.OWNER_NAME = e.OWNER_NAME || "Admin";
|
|
81
|
+
exports.OWNER_EMAIL = e.OWNER_EMAIL;
|
|
82
|
+
exports.OWNER_PASSWORD = e.OWNER_PASSWORD || "changeme";
|
|
83
|
+
// InfluxDB configurations
|
|
84
|
+
exports.INFLUXDB_URL = e.INFLUXDB_URL;
|
|
85
|
+
exports.INFLUXDB_USERNAME = e.INFLUXDB_INIT_USERNAME;
|
|
86
|
+
exports.INFLUXDB_PASSWORD = e.INFLUXDB_INIT_PASSWORD;
|
|
87
|
+
exports.INFLUXDB_ORG = e.INFLUXDB_INIT_ORG;
|
|
88
|
+
exports.INFLUXDB_BUCKET = e.INFLUXDB_INIT_BUCKET;
|
|
89
|
+
exports.INFLUXDB_TOKEN = e.INFLUXDB_INIT_TOKEN;
|
|
90
|
+
// Other configurations
|
|
91
|
+
exports.CLOAK_ENCRYPTION_KEY = e.CLOAK_ENCRYPTION_KEY;
|
|
92
|
+
exports.ROUTR_API_ENDPOINT = e.ROUTR_API_ENDPOINT || "localhost:51908";
|
|
93
|
+
exports.ROUTR_DEFAULT_PEER_NAME = e.ROUTR_DEFAULT_PEER_NAME || "Voice Server";
|
|
94
|
+
exports.ROUTR_DEFAULT_PEER_USERNAME = e.ROUTR_DEFAULT_PEER_USERNAME || "voice";
|
|
95
|
+
exports.ROUTR_DEFAULT_PEER_AOR = e.ROUTR_DEFAULT_PEER_AOR || "sip:voice@default";
|
|
96
|
+
exports.ROUTR_DEFAULT_PEER_PASSWORD = e.ROUTR_DEFAULT_PEER_PASSWORD || "changeme";
|
|
97
|
+
exports.APISERVER_BIND_ADDR = e.APISERVER_BIND_ADDR || "0.0.0.0:50051";
|
|
98
|
+
exports.APISERVER_HOST = e.APISERVER_HOST || "apiserver";
|
|
99
|
+
exports.NATS_URL = e.NATS_URL;
|
|
100
|
+
exports.DEFAULT_NATS_QUEUE_GROUP = "apiserver";
|
|
101
|
+
exports.CALLS_CREATE_SUBJECT = "calls.create";
|
|
102
|
+
exports.CALLS_TRACK_CALL_SUBJECT = "calls.track";
|
|
103
|
+
exports.ASTERISK_CONTEXT = "local-ctx";
|
|
104
|
+
exports.ASTERISK_EXTENSION = "voice";
|
|
105
|
+
exports.ASTERISK_TRUNK = "routr";
|
|
106
|
+
exports.ASTERISK_ARI_PROXY_URL = e.ASTERISK_ARI_PROXY_URL;
|
|
107
|
+
exports.ASTERISK_ARI_USERNAME = e.ASTERISK_ARI_USERNAME;
|
|
108
|
+
exports.ASTERISK_ARI_SECRET = e.ASTERISK_ARI_SECRET;
|
|
109
|
+
exports.ASTERISK_SYSTEM_DOMAIN = e.ASTERISK_SYSTEM_DOMAIN || "sip.invalid";
|
|
110
|
+
exports.TTS_PATH_TO_FILES = e.TTS_PATH_TO_FILES || os_1.default.tmpdir();
|
|
111
|
+
exports.FILES_SERVER_PORT = e.FILES_SERVER_PORT
|
|
112
|
+
? parseInt(e.FILES_SERVER_PORT)
|
|
113
|
+
: 9876;
|
|
114
|
+
exports.INTEGRATIONS_FILE = e.INTEGRATIONS_FILE;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type InfluxDbPub = {
|
|
2
|
+
url: string;
|
|
3
|
+
token: string;
|
|
4
|
+
org: string;
|
|
5
|
+
bucket: string;
|
|
6
|
+
};
|
|
7
|
+
type FonosterEvent = {
|
|
8
|
+
name: "cdr" | "error";
|
|
9
|
+
tag: string;
|
|
10
|
+
data: Record<string, string>;
|
|
11
|
+
};
|
|
12
|
+
declare function createInfluxDbPub(config: any): (event: any) => void;
|
|
13
|
+
export { createInfluxDbPub, FonosterEvent, InfluxDbPub };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createInfluxDbPub = void 0;
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
6
|
+
* http://github.com/fonoster/fonoster
|
|
7
|
+
*
|
|
8
|
+
* This file is part of Fonoster
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the MIT License (the "License");
|
|
11
|
+
* you may not use this file except in compliance with
|
|
12
|
+
* the License. You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* https://opensource.org/licenses/MIT
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
const logger_1 = require("@fonoster/logger");
|
|
23
|
+
const influxdb_client_1 = require("@influxdata/influxdb-client");
|
|
24
|
+
const logger = (0, logger_1.getLogger)({ service: "apiserver", filePath: __filename });
|
|
25
|
+
function createInfluxDbPub(config) {
|
|
26
|
+
const { url, token, org, bucket } = config;
|
|
27
|
+
const client = new influxdb_client_1.InfluxDB({ url, token });
|
|
28
|
+
const writeClient = client.getWriteApi(org, bucket, "ns");
|
|
29
|
+
return (event) => {
|
|
30
|
+
const point = new influxdb_client_1.Point(event.name).tag("ref", event.tag);
|
|
31
|
+
Object.entries(event.data).forEach(([key, value]) => {
|
|
32
|
+
if (typeof value === "number") {
|
|
33
|
+
point.intField(key, value); // Or floatField for floating-point numbers
|
|
34
|
+
}
|
|
35
|
+
else if (typeof value === "boolean") {
|
|
36
|
+
point.booleanField(key, value);
|
|
37
|
+
}
|
|
38
|
+
else if (key === "startedAt" || key === "endedAt") {
|
|
39
|
+
point.stringField(key, new Date(value.toString()).getTime());
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
point.stringField(key, value);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
try {
|
|
46
|
+
writeClient.writePoint(point);
|
|
47
|
+
writeClient.flush();
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
logger.error("error writing to InfluxDB:", error);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
exports.createInfluxDbPub = createInfluxDbPub;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { NatsEventCallback } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* This method listens for registration events from Routr.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} natsUrl - The NATS server URL
|
|
6
|
+
* @param {RegisterEventCallback} callback - The callback function
|
|
7
|
+
* @return {void}
|
|
8
|
+
*/
|
|
9
|
+
declare function watchNats(natsUrl: string, callback: NatsEventCallback): void;
|
|
10
|
+
export { watchNats };
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
12
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
13
|
+
var m = o[Symbol.asyncIterator], i;
|
|
14
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
15
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
16
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.watchNats = void 0;
|
|
20
|
+
/*
|
|
21
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
22
|
+
* http://github.com/fonoster/fonoster
|
|
23
|
+
*
|
|
24
|
+
* This file is part of Fonoster
|
|
25
|
+
*
|
|
26
|
+
* Licensed under the MIT License (the "License");
|
|
27
|
+
* you may not use this file except in compliance with
|
|
28
|
+
* the License. You may obtain a copy of the License at
|
|
29
|
+
*
|
|
30
|
+
* https://opensource.org/licenses/MIT
|
|
31
|
+
*
|
|
32
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
33
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
34
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
35
|
+
* See the License for the specific language governing permissions and
|
|
36
|
+
* limitations under the License.
|
|
37
|
+
*/
|
|
38
|
+
const logger_1 = require("@fonoster/logger");
|
|
39
|
+
const nats_1 = require("nats");
|
|
40
|
+
const logger = (0, logger_1.getLogger)({ service: "apiserver", filePath: __filename });
|
|
41
|
+
const ROUTR_SUBJECT = "routr.endpoint.registered";
|
|
42
|
+
const FONOSTER_SUBJECT = "fonoster.events";
|
|
43
|
+
function streamEvents(subscription, callback) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
var _a, subscription_1, subscription_1_1;
|
|
46
|
+
var _b, e_1, _c, _d;
|
|
47
|
+
try {
|
|
48
|
+
// eslint-disable-next-line no-loops/no-loops
|
|
49
|
+
for (_a = true, subscription_1 = __asyncValues(subscription); subscription_1_1 = yield subscription_1.next(), _b = subscription_1_1.done, !_b; _a = true) {
|
|
50
|
+
_d = subscription_1_1.value;
|
|
51
|
+
_a = false;
|
|
52
|
+
const m = _d;
|
|
53
|
+
const messageStr = m.data.toString();
|
|
54
|
+
callback(Object.assign({}, JSON.parse(messageStr)));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
58
|
+
finally {
|
|
59
|
+
try {
|
|
60
|
+
if (!_a && !_b && (_c = subscription_1.return)) yield _c.call(subscription_1);
|
|
61
|
+
}
|
|
62
|
+
finally { if (e_1) throw e_1.error; }
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* This method listens for registration events from Routr.
|
|
68
|
+
*
|
|
69
|
+
* @param {string} natsUrl - The NATS server URL
|
|
70
|
+
* @param {RegisterEventCallback} callback - The callback function
|
|
71
|
+
* @return {void}
|
|
72
|
+
*/
|
|
73
|
+
function watchNats(natsUrl, callback) {
|
|
74
|
+
(() => __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
const nc = yield (0, nats_1.connect)({ servers: natsUrl });
|
|
76
|
+
const r = nc.subscribe(ROUTR_SUBJECT);
|
|
77
|
+
const f = nc.subscribe("foo");
|
|
78
|
+
logger.verbose("connected to nats", { natsUrl });
|
|
79
|
+
logger.verbose("subscribed to subjects", {
|
|
80
|
+
subjects: [ROUTR_SUBJECT, FONOSTER_SUBJECT]
|
|
81
|
+
});
|
|
82
|
+
yield Promise.all([streamEvents(r, callback), streamEvents(f, callback)]);
|
|
83
|
+
}))();
|
|
84
|
+
}
|
|
85
|
+
exports.watchNats = watchNats;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
4
|
+
* http://github.com/fonoster/fonoster
|
|
5
|
+
*
|
|
6
|
+
* This file is part of Fonoster
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the MIT License (the "License");
|
|
9
|
+
* you may not use this file except in compliance with
|
|
10
|
+
* the License. You may obtain a copy of the License at
|
|
11
|
+
*
|
|
12
|
+
* https://opensource.org/licenses/MIT
|
|
13
|
+
*
|
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
* See the License for the specific language governing permissions and
|
|
18
|
+
* limitations under the License.
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/index.js
CHANGED
|
@@ -23,12 +23,21 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
__setModuleDefault(result, mod);
|
|
24
24
|
return result;
|
|
25
25
|
};
|
|
26
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
27
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
28
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
29
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
30
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
31
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
32
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
33
|
+
});
|
|
34
|
+
};
|
|
26
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
27
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
37
|
};
|
|
29
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
39
|
/*
|
|
31
|
-
* Copyright (C)
|
|
40
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
32
41
|
* http://github.com/fonoster/fonoster
|
|
33
42
|
*
|
|
34
43
|
* This file is part of Fonoster
|
|
@@ -45,125 +54,47 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
45
54
|
* See the License for the specific language governing permissions and
|
|
46
55
|
* limitations under the License.
|
|
47
56
|
*/
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const apps_1 = require("@fonoster/apps");
|
|
54
|
-
const domains_1 = require("@fonoster/domains");
|
|
55
|
-
const numbers_1 = require("@fonoster/numbers");
|
|
56
|
-
const providers_1 = require("@fonoster/providers");
|
|
57
|
-
const callmanager_1 = require("@fonoster/callmanager");
|
|
58
|
-
const storage_1 = require("@fonoster/storage");
|
|
59
|
-
const secrets_1 = require("@fonoster/secrets");
|
|
60
|
-
const limiter_1 = require("@fonoster/limiter");
|
|
61
|
-
const monitor_1 = require("@fonoster/monitor");
|
|
62
|
-
const users_1 = require("@fonoster/users");
|
|
63
|
-
const projects_1 = require("@fonoster/projects");
|
|
64
|
-
const auth_1 = require("@fonoster/auth");
|
|
65
|
-
const agents_1 = require("@fonoster/agents");
|
|
66
|
-
const common_1 = require("@fonoster/common");
|
|
57
|
+
const identity_1 = require("@fonoster/identity");
|
|
58
|
+
const logger_1 = require("@fonoster/logger");
|
|
59
|
+
const types_1 = require("./calls/types");
|
|
60
|
+
const runServices_1 = __importDefault(require("./core/runServices"));
|
|
61
|
+
const upsertDefaultPeer_1 = require("./core/upsertDefaultPeer");
|
|
67
62
|
const envs_1 = require("./envs");
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
Promise.resolve().then(() => __importStar(require("./
|
|
71
|
-
|
|
72
|
-
{
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
server: new agents_1.AgentsServer()
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
name: "domains",
|
|
110
|
-
version: "v1beta1",
|
|
111
|
-
service: domains_1.DomainsService,
|
|
112
|
-
server: new domains_1.DomainsServer()
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
name: "numbers",
|
|
116
|
-
version: "v1beta1",
|
|
117
|
-
service: numbers_1.NumbersService,
|
|
118
|
-
server: new numbers_1.NumbersServer()
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
name: "providers",
|
|
122
|
-
version: "v1beta1",
|
|
123
|
-
service: providers_1.ProvidersService,
|
|
124
|
-
server: new providers_1.ProvidersServer()
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
name: "callmanager",
|
|
128
|
-
version: "v1beta1",
|
|
129
|
-
service: callmanager_1.CallManagerService,
|
|
130
|
-
server: new callmanager_1.CallManagerServer()
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
name: "storage",
|
|
134
|
-
version: "v1beta1",
|
|
135
|
-
service: storage_1.StorageService,
|
|
136
|
-
server: new storage_1.StorageServer()
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
name: "secrets",
|
|
140
|
-
version: "v1beta1",
|
|
141
|
-
service: secrets_1.SecretsService,
|
|
142
|
-
server: new secrets_1.SecretsServer()
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
name: "limiter",
|
|
146
|
-
version: "v1beta1",
|
|
147
|
-
service: limiter_1.LimiterService,
|
|
148
|
-
server: new limiter_1.LimiterServer()
|
|
149
|
-
}
|
|
150
|
-
];
|
|
151
|
-
const middlewares = [
|
|
152
|
-
{
|
|
153
|
-
name: "authenticator",
|
|
154
|
-
middlewareObj: new auth_1.AuthMiddleware(envs_1.APISERVER_JWT_PRIVATE_KEY, [
|
|
155
|
-
"/fonoster.auth.v1beta1.Auth/GetRole",
|
|
156
|
-
"/fonoster.users.v1beta1.Users/CreateUser",
|
|
157
|
-
"/fonoster.auth.v1beta1.Users/CreateUserCredentials",
|
|
158
|
-
"/fonoster.auth.v1beta1.Limiter/CheckAuthorized"
|
|
159
|
-
]).middleware
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
name: "limiter",
|
|
163
|
-
middlewareObj: (0, auth_1.createLimiterMiddleware)([
|
|
164
|
-
"/fonoster.auth.v1beta1.Auth/GetRole",
|
|
165
|
-
"/fonoster.auth.v1beta1.Limiter/CheckAuthorized"
|
|
166
|
-
])
|
|
167
|
-
}
|
|
168
|
-
];
|
|
169
|
-
(0, common_1.runServices)(services, middlewares);
|
|
63
|
+
const createInfluxDbPub_1 = require("./events/createInfluxDbPub");
|
|
64
|
+
const nats_1 = require("./events/nats");
|
|
65
|
+
Promise.resolve().then(() => __importStar(require("./core/removeSwaggerNotice")));
|
|
66
|
+
function main() {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
if (envs_1.OWNER_EMAIL) {
|
|
69
|
+
const user = {
|
|
70
|
+
name: envs_1.OWNER_NAME,
|
|
71
|
+
email: envs_1.OWNER_EMAIL,
|
|
72
|
+
password: envs_1.OWNER_PASSWORD
|
|
73
|
+
};
|
|
74
|
+
yield (0, identity_1.upsertDefaultUser)(user);
|
|
75
|
+
}
|
|
76
|
+
// Upsert a Peer for the default region, if it doesn't already exist
|
|
77
|
+
yield (0, upsertDefaultPeer_1.upsertDefaultPeer)();
|
|
78
|
+
// Start the gRPC server
|
|
79
|
+
(0, runServices_1.default)().catch(logger.error);
|
|
80
|
+
const pubToInfluxDb = (0, createInfluxDbPub_1.createInfluxDbPub)({
|
|
81
|
+
url: envs_1.INFLUXDB_URL,
|
|
82
|
+
token: envs_1.INFLUXDB_TOKEN,
|
|
83
|
+
org: envs_1.INFLUXDB_ORG,
|
|
84
|
+
bucket: envs_1.INFLUXDB_BUCKET
|
|
85
|
+
});
|
|
86
|
+
// Subscribe to NATs events
|
|
87
|
+
(0, nats_1.watchNats)(envs_1.NATS_URL, (event) => {
|
|
88
|
+
logger.info("Received event", { event });
|
|
89
|
+
// FIXME: Remember to re-map callRef from callId
|
|
90
|
+
const callRecord = event;
|
|
91
|
+
pubToInfluxDb({
|
|
92
|
+
name: types_1.CALL_DETAIL_RECORD_MEASUREMENT,
|
|
93
|
+
tag: callRecord.callRef,
|
|
94
|
+
data: event
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
const logger = (0, logger_1.getLogger)({ service: "apiserver", filePath: __filename });
|
|
100
|
+
main().catch(logger.error);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Prisma } from "../core/db";
|
|
2
|
+
declare function buildService(prisma: Prisma): {
|
|
3
|
+
definition: {
|
|
4
|
+
serviceName: string;
|
|
5
|
+
pckg: string;
|
|
6
|
+
version: string;
|
|
7
|
+
proto: string;
|
|
8
|
+
};
|
|
9
|
+
handlers: {
|
|
10
|
+
createSecret: (call: {
|
|
11
|
+
request: import("./types").CreateSecretRequest;
|
|
12
|
+
}, callback: (error: import("@fonoster/common").GrpcErrorMessage, response?: {
|
|
13
|
+
ref: string;
|
|
14
|
+
}) => void) => Promise<void>;
|
|
15
|
+
getSecret: (call: {
|
|
16
|
+
request: {
|
|
17
|
+
ref: string;
|
|
18
|
+
};
|
|
19
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: import("./types").Secret) => void) => Promise<void>;
|
|
20
|
+
listSecrets: (call: {
|
|
21
|
+
request: import("./types").ListSecretsRequest;
|
|
22
|
+
}, callback: (error: import("@fonoster/common").GrpcErrorMessage, response?: import("./types").ListSecretsResponse) => void) => Promise<void>;
|
|
23
|
+
deleteSecret: (call: {
|
|
24
|
+
request: {
|
|
25
|
+
ref: string;
|
|
26
|
+
};
|
|
27
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: {
|
|
28
|
+
ref: string;
|
|
29
|
+
}) => void) => Promise<void>;
|
|
30
|
+
updateSecret: (call: {
|
|
31
|
+
request: import("./types").UpdateSecretRequest;
|
|
32
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: {
|
|
33
|
+
ref: string;
|
|
34
|
+
}) => void) => Promise<void>;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export { buildService };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildService = void 0;
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
6
|
+
* http://github.com/fonoster/fonoster
|
|
7
|
+
*
|
|
8
|
+
* This file is part of Fonoster
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the MIT License (the "License");
|
|
11
|
+
* you may not use this file except in compliance with
|
|
12
|
+
* the License. You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* https://opensource.org/licenses/MIT
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
const createSecret_1 = require("./createSecret");
|
|
23
|
+
const deleteSecret_1 = require("./deleteSecret");
|
|
24
|
+
const getSecret_1 = require("./getSecret");
|
|
25
|
+
const listSecrets_1 = require("./listSecrets");
|
|
26
|
+
const updateSecret_1 = require("./updateSecret");
|
|
27
|
+
function buildService(prisma) {
|
|
28
|
+
return {
|
|
29
|
+
definition: {
|
|
30
|
+
serviceName: "Secrets",
|
|
31
|
+
pckg: "secrets",
|
|
32
|
+
version: "v1beta2",
|
|
33
|
+
proto: "secrets.proto"
|
|
34
|
+
},
|
|
35
|
+
handlers: {
|
|
36
|
+
createSecret: (0, createSecret_1.createSecret)(prisma),
|
|
37
|
+
getSecret: (0, getSecret_1.getSecret)(prisma),
|
|
38
|
+
listSecrets: (0, listSecrets_1.listSecrets)(prisma),
|
|
39
|
+
deleteSecret: (0, deleteSecret_1.deleteSecret)(prisma),
|
|
40
|
+
updateSecret: (0, updateSecret_1.updateSecret)(prisma)
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
exports.buildService = buildService;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Prisma } from "../core/db";
|
|
2
|
+
declare function createGetFnUtil(prisma: Prisma): (ref: string) => Promise<{
|
|
3
|
+
extended: {
|
|
4
|
+
accessKeyId: string;
|
|
5
|
+
};
|
|
6
|
+
name: string;
|
|
7
|
+
secret: string;
|
|
8
|
+
ref: string;
|
|
9
|
+
accessKeyId: string;
|
|
10
|
+
createdAt: Date;
|
|
11
|
+
updatedAt: Date;
|
|
12
|
+
} & {
|
|
13
|
+
createdAt: number;
|
|
14
|
+
updatedAt: number;
|
|
15
|
+
}>;
|
|
16
|
+
export { createGetFnUtil };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createGetFnUtil = void 0;
|
|
13
|
+
/*
|
|
14
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
15
|
+
* http://github.com/fonoster/fonoster
|
|
16
|
+
*
|
|
17
|
+
* This file is part of Fonoster
|
|
18
|
+
*
|
|
19
|
+
* Licensed under the MIT License (the "License");
|
|
20
|
+
* you may not use this file except in compliance with
|
|
21
|
+
* the License. You may obtain a copy of the License at
|
|
22
|
+
*
|
|
23
|
+
* https://opensource.org/licenses/MIT
|
|
24
|
+
*
|
|
25
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
26
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
27
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
28
|
+
* See the License for the specific language governing permissions and
|
|
29
|
+
* limitations under the License.
|
|
30
|
+
*/
|
|
31
|
+
const common_1 = require("@fonoster/common");
|
|
32
|
+
const notFoundError_1 = require("../core/notFoundError");
|
|
33
|
+
function createGetFnUtil(prisma) {
|
|
34
|
+
return (ref) => __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
const response = yield prisma.secret.findUnique({
|
|
36
|
+
where: { ref }
|
|
37
|
+
});
|
|
38
|
+
if (!response) {
|
|
39
|
+
throw (0, notFoundError_1.notFoundError)(`Secret not found: ${ref}`);
|
|
40
|
+
}
|
|
41
|
+
return (0, common_1.datesMapper)(Object.assign(Object.assign({}, response), { extended: {
|
|
42
|
+
accessKeyId: response.accessKeyId
|
|
43
|
+
} }));
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
exports.createGetFnUtil = createGetFnUtil;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { GrpcErrorMessage } from "@fonoster/common";
|
|
2
|
+
import { CreateSecretRequest, CreateSecretResponse } from "./types";
|
|
3
|
+
import { Prisma } from "../core/db";
|
|
4
|
+
declare function createSecret(prisma: Prisma): (call: {
|
|
5
|
+
request: CreateSecretRequest;
|
|
6
|
+
}, callback: (error: GrpcErrorMessage, response?: CreateSecretResponse) => void) => Promise<void>;
|
|
7
|
+
export { createSecret };
|