@intuitionrobotics/google-services 0.47.59 → 1.0.1
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 +3 -0
- package/{app-backend → dist/app-backend}/modules/AuthModule.d.ts +5 -4
- package/dist/app-backend/modules/AuthModule.d.ts.map +1 -0
- package/dist/app-backend/modules/AuthModule.js +34 -0
- package/dist/app-backend/modules/AuthModule.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/DialogFlowApi.d.ts +3 -1
- package/dist/app-backend/modules/DialogFlowApi.d.ts.map +1 -0
- package/dist/app-backend/modules/DialogFlowApi.js +108 -0
- package/dist/app-backend/modules/DialogFlowApi.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/GoogleCloudModule.d.ts +4 -3
- package/dist/app-backend/modules/GoogleCloudModule.d.ts.map +1 -0
- package/dist/app-backend/modules/GoogleCloudModule.js +153 -0
- package/dist/app-backend/modules/GoogleCloudModule.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/PubSubModule.d.ts +2 -1
- package/dist/app-backend/modules/PubSubModule.d.ts.map +1 -0
- package/dist/app-backend/modules/PubSubModule.js +29 -0
- package/dist/app-backend/modules/PubSubModule.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/consts.d.ts +1 -0
- package/dist/app-backend/modules/consts.d.ts.map +1 -0
- package/dist/app-backend/modules/consts.js +9 -0
- package/dist/app-backend/modules/consts.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/package.json +25 -11
- package/app-backend/modules/AuthModule.js +0 -49
- package/app-backend/modules/AuthModule.js.map +0 -1
- package/app-backend/modules/DialogFlowApi.js +0 -122
- package/app-backend/modules/DialogFlowApi.js.map +0 -1
- package/app-backend/modules/GoogleCloudModule.js +0 -191
- package/app-backend/modules/GoogleCloudModule.js.map +0 -1
- package/app-backend/modules/PubSubModule.js +0 -41
- package/app-backend/modules/PubSubModule.js.map +0 -1
- package/app-backend/modules/consts.js +0 -12
- package/app-backend/modules/consts.js.map +0 -1
- package/index.d.ts +0 -4
- package/index.js +0 -39
- package/index.js.map +0 -1
- package/types.d.ts +0 -3
- package/types.js +0 -3
- /package/{types.js.map → dist/types.js.map} +0 -0
package/LICENSE
ADDED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Module } from "@intuitionrobotics/ts-common";
|
|
2
|
-
import { GoogleAuth, JWTInput } from "google-auth-library";
|
|
3
|
-
import { JWTOptions } from "google-auth-library/build/src/auth/jwtclient";
|
|
4
|
-
import { OAuth2ClientOptions } from "google-auth-library/build/src/auth/oauth2client";
|
|
5
|
-
import { UserRefreshClientOptions } from "google-auth-library/build/src/auth/refreshclient";
|
|
2
|
+
import { GoogleAuth, type JWTInput } from "google-auth-library";
|
|
3
|
+
import type { JWTOptions } from "google-auth-library/build/src/auth/jwtclient.js";
|
|
4
|
+
import type { OAuth2ClientOptions } from "google-auth-library/build/src/auth/oauth2client.js";
|
|
5
|
+
import type { UserRefreshClientOptions } from "google-auth-library/build/src/auth/refreshclient.js";
|
|
6
6
|
type AuthModuleConfig = {
|
|
7
7
|
auth: {
|
|
8
8
|
[k: string]: JWTInput | string;
|
|
@@ -20,3 +20,4 @@ export declare class AuthModule_Class extends Module<AuthModuleConfig> {
|
|
|
20
20
|
}
|
|
21
21
|
export declare const AuthModule: AuthModule_Class;
|
|
22
22
|
export {};
|
|
23
|
+
//# sourceMappingURL=AuthModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthModule.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/AuthModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,MAAM,EAEN,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEN,UAAU,EACV,KAAK,QAAQ,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iDAAiD,CAAC;AAChF,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,oDAAoD,CAAC;AAC5F,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,qDAAqD,CAAC;AAElG,KAAK,gBAAgB,GAAG;IACvB,IAAI,EAAE;QACL,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;KAC9B,CAAA;CACD,CAAA;AACD,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CAAA;AAE1B,qBAAa,gBACZ,SAAQ,MAAM,CAAC,gBAAgB,CAAC;;IAMhC,OAAO,CAAC,CAAC,SAAS,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,CAAa,EAAE,aAAa,CAAC,EAAE,UAAU,GAAG,mBAAmB,GAAG,wBAAwB,GAAG;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAC;IAa9M,aAAa,CAAC,OAAO,EAAE,MAAM;IASvB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CAQ9C;AAED,eAAO,MAAM,UAAU,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ImplementationMissingException, Module, NotImplementedYetException } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { JWT, GoogleAuth, } from "google-auth-library";
|
|
3
|
+
export class AuthModule_Class extends Module {
|
|
4
|
+
constructor() {
|
|
5
|
+
super("AuthModule");
|
|
6
|
+
}
|
|
7
|
+
getAuth(authKey, scopes, version = 'v2', clientOptions) {
|
|
8
|
+
const authConfig = this.getAuthConfig(authKey);
|
|
9
|
+
let opts;
|
|
10
|
+
if (typeof authConfig === 'string') {
|
|
11
|
+
opts = { keyFile: authConfig, scopes, clientOptions };
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
opts = { credentials: authConfig, scopes, clientOptions };
|
|
15
|
+
}
|
|
16
|
+
return { version, auth: new GoogleAuth(opts) };
|
|
17
|
+
}
|
|
18
|
+
getAuthConfig(authKey) {
|
|
19
|
+
const projectAuth = this.config.auth[authKey];
|
|
20
|
+
if (!projectAuth)
|
|
21
|
+
throw new ImplementationMissingException(`Config of AuthModule_Class for authKey: ${authKey} was not found`);
|
|
22
|
+
return projectAuth;
|
|
23
|
+
}
|
|
24
|
+
async getJWT(authKey, scopes) {
|
|
25
|
+
const authConfig = this.getAuthConfig(authKey);
|
|
26
|
+
if (typeof authConfig === 'string') {
|
|
27
|
+
return new JWT({ keyFile: authConfig, scopes }).authorize();
|
|
28
|
+
}
|
|
29
|
+
throw new NotImplementedYetException("cannot create a JWT from a raw credentials.. need path to file");
|
|
30
|
+
}
|
|
31
|
+
;
|
|
32
|
+
}
|
|
33
|
+
export const AuthModule = new AuthModule_Class();
|
|
34
|
+
//# sourceMappingURL=AuthModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/AuthModule.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,8BAA8B,EAC9B,MAAM,EACN,0BAA0B,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,GAAG,EACH,UAAU,GAEV,MAAM,qBAAqB,CAAC;AAY7B,MAAM,OAAO,gBACZ,SAAQ,MAAwB;IAEhC;QACC,KAAK,CAAC,YAAY,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,CAA2B,OAAe,EAAE,MAAgB,EAAE,UAAa,IAAS,EAAE,aAA2E;QACvK,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAE9C,IAAI,IAAI,CAAC;QACT,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACpC,IAAI,GAAG,EAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACP,IAAI,GAAG,EAAC,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAC,CAAC;QACzD,CAAC;QAED,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,EAAC,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,OAAe;QAC5B,MAAM,WAAW,GAAkC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7E,IAAI,CAAC,WAAW;YACf,MAAM,IAAI,8BAA8B,CAAC,2CAA2C,OAAO,gBAAgB,CAAC,CAAC;QAE9G,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,MAAgB;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO,IAAI,GAAG,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC3D,CAAC;QAED,MAAM,IAAI,0BAA0B,CAAC,gEAAgE,CAAC,CAAA;IACvG,CAAC;IAAA,CAAC;CACF;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Logger } from "@intuitionrobotics/ts-common";
|
|
2
2
|
import { dialogflow_v2 } from "googleapis";
|
|
3
|
-
|
|
3
|
+
type Schema$GoogleCloudDialogflowV2EntityTypeEntity = dialogflow_v2.Schema$GoogleCloudDialogflowV2EntityTypeEntity;
|
|
4
4
|
export declare class DialogFlowApi extends Logger {
|
|
5
5
|
private dialogFlowApi;
|
|
6
6
|
constructor(authKey: string);
|
|
@@ -21,3 +21,5 @@ export declare class DialogFlowApi extends Logger {
|
|
|
21
21
|
createEntityType: (agentProjectId: string, entityName: string) => Promise<string | null | undefined>;
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=DialogFlowApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DialogFlowApi.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/DialogFlowApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,EAEN,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAIzC,KAAK,8CAA8C,GAAG,aAAa,CAAC,8CAA8C,CAAC;AAGnH,qBAAa,aACZ,SAAQ,MAAM;IAEd,OAAO,CAAC,aAAa,CAA2B;gBAEpC,OAAO,EAAE,MAAM;IAK3B,KAAK;iCAC2B,MAAM,QAAQ,MAAM;gCAiBrB,MAAM;iCAIL,MAAM;kCAIL,MAAM,gBAAgB,MAAM;iCAI7B,MAAM,gBAAgB,MAAM;0BAInC,MAAM,WAAW,MAAM;8BAMnB,MAAM,WAAW,MAAM;MAMnD;IAED,MAAM;+BACwB,MAAM;MA0BnC;IAED,MAAM;yCACkC,MAAM,YAAY,MAAM,cAAc,8CAA8C,EAAE;2CAUpF,MAAM,cAAc,MAAM;MAmBnE;CACD"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Logger, ThisShouldNotHappenException } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { dialogflow_v2 } from "googleapis";
|
|
3
|
+
import { AuthModule } from "./AuthModule.js";
|
|
4
|
+
import { GCPScope } from "./consts.js";
|
|
5
|
+
export class DialogFlowApi extends Logger {
|
|
6
|
+
dialogFlowApi;
|
|
7
|
+
constructor(authKey) {
|
|
8
|
+
super();
|
|
9
|
+
this.dialogFlowApi = new dialogflow_v2.Dialogflow(AuthModule.getAuth(authKey, [GCPScope.CloudPlatform]));
|
|
10
|
+
}
|
|
11
|
+
agent = {
|
|
12
|
+
create: async (agentProjectId, name) => {
|
|
13
|
+
this.logInfo(`Creating agent for project ${agentProjectId}`);
|
|
14
|
+
const newTestAgent = {
|
|
15
|
+
"parent": `projects/${agentProjectId}`,
|
|
16
|
+
"displayName": name,
|
|
17
|
+
"defaultLanguageCode": "en",
|
|
18
|
+
"timeZone": "America/New_York",
|
|
19
|
+
"enableLogging": true,
|
|
20
|
+
"matchMode": "MATCH_MODE_HYBRID",
|
|
21
|
+
"classificationThreshold": 0.7,
|
|
22
|
+
"apiVersion": "API_VERSION_V2",
|
|
23
|
+
"tier": "TIER_STANDARD"
|
|
24
|
+
};
|
|
25
|
+
await this.dialogFlowApi.projects.setAgent({ parent: `projects/${agentProjectId}`, requestBody: newTestAgent });
|
|
26
|
+
this.logInfo(`Created agent for project ${agentProjectId} with name: ${name}`);
|
|
27
|
+
},
|
|
28
|
+
train: async (agentProjectId) => {
|
|
29
|
+
this.logInfo(`Train ${agentProjectId}`);
|
|
30
|
+
return (await this.dialogFlowApi.projects.agent.train({ parent: `projects/${agentProjectId}` })).data;
|
|
31
|
+
},
|
|
32
|
+
export: async (agentProjectId) => {
|
|
33
|
+
this.logInfo(`Exporting ${agentProjectId}`);
|
|
34
|
+
return (await this.dialogFlowApi.projects.agent.export({ parent: `projects/${agentProjectId}` })).data.response?.agentContent;
|
|
35
|
+
},
|
|
36
|
+
restore: async (agentProjectId, agentContent) => {
|
|
37
|
+
this.logInfo(`Restoring ${agentProjectId}`);
|
|
38
|
+
return (await this.dialogFlowApi.projects.agent.restore({ parent: `projects/${agentProjectId}`, requestBody: { agentContent } })).data;
|
|
39
|
+
},
|
|
40
|
+
import: async (agentProjectId, agentContent) => {
|
|
41
|
+
this.logInfo(`Importing ${agentProjectId}`);
|
|
42
|
+
return (await this.dialogFlowApi.projects.agent.import({ parent: `projects/${agentProjectId}`, requestBody: { agentContent } })).data;
|
|
43
|
+
},
|
|
44
|
+
copy: async (fromAgent, toAgent) => {
|
|
45
|
+
this.logInfo(`Merging agent ${fromAgent} => ${toAgent}`);
|
|
46
|
+
const content = await this.agent.export(fromAgent);
|
|
47
|
+
if (content)
|
|
48
|
+
await this.agent.import(toAgent, content);
|
|
49
|
+
},
|
|
50
|
+
override: async (fromAgent, toAgent) => {
|
|
51
|
+
this.logInfo(`Overriding agent ${fromAgent} => ${toAgent}`);
|
|
52
|
+
const content = await this.agent.export(fromAgent);
|
|
53
|
+
if (content)
|
|
54
|
+
await this.agent.restore(toAgent, content);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
intent = {
|
|
58
|
+
list: async (agentProjectId) => {
|
|
59
|
+
this.logInfo(`List intents of ${agentProjectId}`);
|
|
60
|
+
const intentList = [];
|
|
61
|
+
let counter = 1;
|
|
62
|
+
let pageToken = undefined;
|
|
63
|
+
do {
|
|
64
|
+
const response = await this.dialogFlowApi.projects.agent.intents.list({
|
|
65
|
+
parent: `projects/${agentProjectId}/agent`,
|
|
66
|
+
pageToken,
|
|
67
|
+
pageSize: 1000
|
|
68
|
+
});
|
|
69
|
+
if (!response.data.intents)
|
|
70
|
+
break;
|
|
71
|
+
pageToken = response.data.nextPageToken || undefined;
|
|
72
|
+
intentList.push(...response.data.intents);
|
|
73
|
+
counter++;
|
|
74
|
+
if (counter > 10)
|
|
75
|
+
throw new ThisShouldNotHappenException('Too many calls to DialogFlow API');
|
|
76
|
+
} while (pageToken);
|
|
77
|
+
return intentList;
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
entity = {
|
|
81
|
+
createEntities: async (agentProjectId, entityId, entityList) => {
|
|
82
|
+
const request = {
|
|
83
|
+
parent: entityId,
|
|
84
|
+
requestBody: {
|
|
85
|
+
entities: entityList
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
return (await this.dialogFlowApi.projects.agent.entityTypes.entities.batchCreate(request)).data;
|
|
89
|
+
},
|
|
90
|
+
createEntityType: async (agentProjectId, entityName) => {
|
|
91
|
+
const pathString = `projects/${agentProjectId}/agent`;
|
|
92
|
+
const entityTypeList = await this.dialogFlowApi.projects.agent.entityTypes.list({ parent: pathString });
|
|
93
|
+
const foundType = entityTypeList.data?.entityTypes?.find(entityType => entityType.displayName === entityName);
|
|
94
|
+
if (foundType)
|
|
95
|
+
return foundType.name;
|
|
96
|
+
const request = {
|
|
97
|
+
parent: pathString,
|
|
98
|
+
requestBody: {
|
|
99
|
+
"displayName": `${entityName}`,
|
|
100
|
+
"enableFuzzyExtraction": false,
|
|
101
|
+
"kind": "KIND_MAP",
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
return (await this.dialogFlowApi.projects.agent.entityTypes.create(request)).data.name;
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=DialogFlowApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DialogFlowApi.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/DialogFlowApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Module } from "@intuitionrobotics/ts-common";
|
|
2
2
|
import { cloudresourcemanager_v1, cloudresourcemanager_v2, serviceusage_v1 } from "googleapis";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { ServiceKey } from "./consts";
|
|
3
|
+
type Schema$Folder = cloudresourcemanager_v2.Schema$Folder;
|
|
4
|
+
type Schema$Project = cloudresourcemanager_v1.Schema$Project;
|
|
5
|
+
import { ServiceKey } from "./consts.js";
|
|
6
6
|
type CreateFolder = {
|
|
7
7
|
parentId: string;
|
|
8
8
|
folderName: string;
|
|
@@ -50,3 +50,4 @@ export declare class GoogleCloudManager_Class extends Module<GoogleCloudManagerC
|
|
|
50
50
|
}
|
|
51
51
|
export declare const GoogleCloudManager: GoogleCloudManager_Class;
|
|
52
52
|
export {};
|
|
53
|
+
//# sourceMappingURL=GoogleCloudModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GoogleCloudModule.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/GoogleCloudModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,MAAM,EAIN,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,MAAM,YAAY,CAAC;AAMpB,KAAK,aAAa,GAAG,uBAAuB,CAAC,aAAa,CAAC;AAC3D,KAAK,cAAc,GAAG,uBAAuB,CAAC,cAAc,CAAC;AAC7D,OAAO,EAEN,UAAU,EACV,MAAM,aAAa,CAAC;AAErB,KAAK,YAAY,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7D,KAAK,WAAW,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAG5D,KAAK,wBAAwB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,qBAAa,wBACZ,SAAQ,MAAM,CAAC,wBAAwB,CAAC;IACxC,OAAO,CAAC,uBAAuB,CAAgC;IAC/D,OAAO,CAAC,wBAAwB,CAAgD;IAChF,OAAO,CAAC,0BAA0B,CAAgD;;IAOlF,SAAS,CAAC,IAAI;IAOR,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAsB5D,YAAY,CAAC,QAAQ,EAAE,YAAY;;;IAanC,YAAY,CAAC,MAAM,EAAE,WAAW;IAOtC,WAAW,CAAC,MAAM,EAAE,aAAa;YAInB,uBAAuB;IAe/B,YAAY,CAAC,MAAM,GAAE,CAAC,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAc;IAOxE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE;;;IAWxF,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,SAAY;;;IAenE,wBAAwB,CAAC,IAAI,EAAE,MAAM;;;IAerC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM;IAKpD,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE;YAKtE,cAAc;YAsBd,wBAAwB;IAchC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM;IAKzD,OAAO,CAAC,UAAU;CAIlB;AAED,eAAO,MAAM,kBAAkB,0BAAiC,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { __stringify, BadImplementationException, ImplementationMissingException, Module, ThisShouldNotHappenException, timeout, filterInstances } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { cloudresourcemanager_v1, cloudresourcemanager_v2, serviceusage_v1 } from "googleapis";
|
|
3
|
+
import { AuthModule } from "./AuthModule.js";
|
|
4
|
+
const Serviceusage = serviceusage_v1.Serviceusage;
|
|
5
|
+
const Cloudresourcemanager = cloudresourcemanager_v2.Cloudresourcemanager;
|
|
6
|
+
const CloudresourcemanagerV1 = cloudresourcemanager_v1.Cloudresourcemanager;
|
|
7
|
+
import { GCPScope, ServiceKey } from "./consts.js";
|
|
8
|
+
export class GoogleCloudManager_Class extends Module {
|
|
9
|
+
cloudServicesManagerAPI;
|
|
10
|
+
cloudResourcesManagerAPI;
|
|
11
|
+
cloudResourcesManagerAPIv1;
|
|
12
|
+
constructor() {
|
|
13
|
+
super("GoogleCloudManager");
|
|
14
|
+
this.setDefaultConfig({ scopes: [GCPScope.CloudPlatform] });
|
|
15
|
+
}
|
|
16
|
+
init() {
|
|
17
|
+
this.cloudServicesManagerAPI = new Serviceusage(AuthModule.getAuth(this.config.authKey, this.config.scopes, 'v1'));
|
|
18
|
+
this.cloudResourcesManagerAPI = new Cloudresourcemanager(AuthModule.getAuth(this.config.authKey, this.config.scopes));
|
|
19
|
+
this.cloudResourcesManagerAPIv1 = new CloudresourcemanagerV1(AuthModule.getAuth(this.config.authKey, this.config.scopes, 'v1'));
|
|
20
|
+
}
|
|
21
|
+
// FOLDERS
|
|
22
|
+
async getOrCreateFolder(parentFolderId, folderName) {
|
|
23
|
+
if (parentFolderId === undefined)
|
|
24
|
+
throw new BadImplementationException("MUST provide a parentFolderId");
|
|
25
|
+
if (folderName === undefined)
|
|
26
|
+
throw new BadImplementationException("MUST provide a folderName");
|
|
27
|
+
const folders = await this.queryFolders({ parentId: parentFolderId, folderName });
|
|
28
|
+
let parentFolder;
|
|
29
|
+
if (folders.length > 1)
|
|
30
|
+
throw new ThisShouldNotHappenException("too many folders for query...");
|
|
31
|
+
else if (folders.length === 1)
|
|
32
|
+
parentFolder = folders[0];
|
|
33
|
+
else
|
|
34
|
+
parentFolder = await this.createFolder({ parentId: parentFolderId, folderName });
|
|
35
|
+
if (!parentFolder)
|
|
36
|
+
throw new BadImplementationException("MUST be parentFolder");
|
|
37
|
+
return this.getFolderId(parentFolder);
|
|
38
|
+
}
|
|
39
|
+
async createFolder(_request) {
|
|
40
|
+
const request = {
|
|
41
|
+
parent: `folders/${_request.parentId}`,
|
|
42
|
+
requestBody: {
|
|
43
|
+
displayName: _request.folderName
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
this.logInfo(`Creating GCP folder "${_request.parentId}/${_request.folderName}"`);
|
|
47
|
+
const res = await this.cloudResourcesManagerAPI.folders.create(request);
|
|
48
|
+
return await this._waitForFolderOperation(res.data.name);
|
|
49
|
+
}
|
|
50
|
+
async queryFolders(_query) {
|
|
51
|
+
const query = { query: `parent=folders/${_query.parentId} AND displayName=${_query.folderName}` };
|
|
52
|
+
const res = await this.cloudResourcesManagerAPI.folders.search({ requestBody: query });
|
|
53
|
+
return res.data.folders || [];
|
|
54
|
+
}
|
|
55
|
+
getFolderId(folder) {
|
|
56
|
+
return folder.name.replace("folders/", "");
|
|
57
|
+
}
|
|
58
|
+
async _waitForFolderOperation(name) {
|
|
59
|
+
let retry = 5;
|
|
60
|
+
while (retry >= 0) {
|
|
61
|
+
await timeout(2000);
|
|
62
|
+
const res = await this.cloudResourcesManagerAPI.operations.get({ name });
|
|
63
|
+
if (res.data.done)
|
|
64
|
+
return res.data.response;
|
|
65
|
+
retry--;
|
|
66
|
+
}
|
|
67
|
+
throw new ImplementationMissingException("need better handling here..");
|
|
68
|
+
}
|
|
69
|
+
// PROJECTS
|
|
70
|
+
async listProjects(filter = () => true) {
|
|
71
|
+
const results = await this.cloudResourcesManagerAPIv1.projects.list();
|
|
72
|
+
const projects = results.data.projects || [];
|
|
73
|
+
return projects.filter(filter);
|
|
74
|
+
}
|
|
75
|
+
async getOrCreateProjects(parentId, ...projects) {
|
|
76
|
+
const existingProjects = await this.listProjects(gcproject => !!projects.find(project => project.name === gcproject.name));
|
|
77
|
+
const projectsToCreate = projects
|
|
78
|
+
.filter((project) => !existingProjects.find((gcproject) => gcproject.name === project.name));
|
|
79
|
+
const newProjects = await Promise.all(projectsToCreate.map(project => this.createProject(parentId, project.projectId, project.name)));
|
|
80
|
+
const allProjects = filterInstances([...existingProjects, ...newProjects]);
|
|
81
|
+
return projects.map(project => allProjects.find(gcpProject => gcpProject.name === project.name));
|
|
82
|
+
}
|
|
83
|
+
async createProject(parentId, projectId, name = projectId) {
|
|
84
|
+
const options = {
|
|
85
|
+
projectId,
|
|
86
|
+
name,
|
|
87
|
+
parent: {
|
|
88
|
+
type: "folder",
|
|
89
|
+
id: parentId
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
this.logInfo(`Creating GCP Project "${parentId}/${projectId}/${name}"`);
|
|
93
|
+
const response = await this.cloudResourcesManagerAPIv1.projects.create({ requestBody: options });
|
|
94
|
+
return this._waitForProjectOperation(response.data.name);
|
|
95
|
+
}
|
|
96
|
+
async _waitForProjectOperation(name) {
|
|
97
|
+
let retry = 5;
|
|
98
|
+
while (retry >= 0) {
|
|
99
|
+
await timeout(2000);
|
|
100
|
+
const res = await this.cloudResourcesManagerAPIv1.operations.get({ name });
|
|
101
|
+
if (res.data.done)
|
|
102
|
+
return res.data.response;
|
|
103
|
+
retry--;
|
|
104
|
+
}
|
|
105
|
+
throw new ImplementationMissingException("need better handling here..");
|
|
106
|
+
}
|
|
107
|
+
// SERVICES
|
|
108
|
+
async getService(serviceKey, projectId) {
|
|
109
|
+
const res = await this.cloudServicesManagerAPI.services.get({ name: `projects/${projectId}/services/${serviceKey}` });
|
|
110
|
+
return res.data;
|
|
111
|
+
}
|
|
112
|
+
async enableService(serviceKey, enable, ...projectIds) {
|
|
113
|
+
this.logInfo(`Enabling Service "${serviceKey}" for projects: ${__stringify(projectIds)}`);
|
|
114
|
+
return Promise.all(projectIds.map(projectId => this._enableService(serviceKey, projectId, enable)));
|
|
115
|
+
}
|
|
116
|
+
async _enableService(serviceKey, projectId, enable = true) {
|
|
117
|
+
let service = await this.getService(serviceKey, projectId);
|
|
118
|
+
if (this._isEnabled(service) === enable)
|
|
119
|
+
return this.logVerbose(`Service "${serviceKey}" was already enabled for project: ${projectId}`);
|
|
120
|
+
const name = service.name;
|
|
121
|
+
let res;
|
|
122
|
+
if (enable)
|
|
123
|
+
res = await this.cloudServicesManagerAPI.services.enable({ name });
|
|
124
|
+
else
|
|
125
|
+
res = await this.cloudServicesManagerAPI.services.disable({ name });
|
|
126
|
+
service = await this._waitForServiceOperation(res.data.name);
|
|
127
|
+
if (this._isEnabled(service))
|
|
128
|
+
this.logVerbose(`Service "${serviceKey}" is now enabled for project: ${projectId}`);
|
|
129
|
+
else
|
|
130
|
+
this.logError(`Service "${serviceKey}" is now disabled for project: ${projectId}`);
|
|
131
|
+
return service;
|
|
132
|
+
}
|
|
133
|
+
async _waitForServiceOperation(name) {
|
|
134
|
+
let retry = 5;
|
|
135
|
+
while (retry >= 0) {
|
|
136
|
+
await timeout(2000);
|
|
137
|
+
const res = await this.cloudServicesManagerAPI.operations.get({ name });
|
|
138
|
+
if (res.data.done)
|
|
139
|
+
return res.data.response?.service;
|
|
140
|
+
retry--;
|
|
141
|
+
}
|
|
142
|
+
throw new ImplementationMissingException("need better handling here..");
|
|
143
|
+
}
|
|
144
|
+
async isEnabled(serviceKey, projectId) {
|
|
145
|
+
const service = await this.getService(serviceKey, projectId);
|
|
146
|
+
return this._isEnabled(service);
|
|
147
|
+
}
|
|
148
|
+
_isEnabled(service) {
|
|
149
|
+
return service.state === "ENABLED";
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
export const GoogleCloudManager = new GoogleCloudManager_Class();
|
|
153
|
+
//# sourceMappingURL=GoogleCloudModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GoogleCloudModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/GoogleCloudModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Module } from "@intuitionrobotics/ts-common";
|
|
2
|
-
import { PublishOptions } from "@google-cloud/pubsub/build/src/topic";
|
|
2
|
+
import type { PublishOptions } from "@google-cloud/pubsub/build/src/topic.js";
|
|
3
3
|
declare class PubSubModule_Class extends Module {
|
|
4
4
|
constructor();
|
|
5
5
|
project(projectId: string, authKey?: string): {
|
|
@@ -12,3 +12,4 @@ declare class PubSubModule_Class extends Module {
|
|
|
12
12
|
}
|
|
13
13
|
export declare const PubSubModule: PubSubModule_Class;
|
|
14
14
|
export {};
|
|
15
|
+
//# sourceMappingURL=PubSubModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PubSubModule.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/PubSubModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,8BAA8B,CAAC;AAEpD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,yCAAyC,CAAC;AAI5E,cAAM,kBACF,SAAQ,MAAM;;IAMd,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,SAAY;iCAMP,MAAM;2BAIlB,MAAM,YAAY,cAAc;gCAGjB,MAAM;8BACR,MAAM;;;CAKjD;AAED,eAAO,MAAM,YAAY,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Module } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { PubSub } from "@google-cloud/pubsub";
|
|
3
|
+
import { AuthModule } from "./AuthModule.js";
|
|
4
|
+
import { GoogleAuth } from "google-auth-library";
|
|
5
|
+
class PubSubModule_Class extends Module {
|
|
6
|
+
constructor() {
|
|
7
|
+
super("PubSubModule");
|
|
8
|
+
}
|
|
9
|
+
project(projectId, authKey = projectId) {
|
|
10
|
+
const authObject = AuthModule.getAuth(authKey, []);
|
|
11
|
+
const auth = authObject.auth;
|
|
12
|
+
const pubSub = new PubSub({ projectId, auth });
|
|
13
|
+
return {
|
|
14
|
+
createTopic: async (topicName) => {
|
|
15
|
+
const [topic] = await pubSub.createTopic(topicName);
|
|
16
|
+
return topic;
|
|
17
|
+
},
|
|
18
|
+
topic: (topicName, options) => {
|
|
19
|
+
const topic = pubSub.topic(topicName, options);
|
|
20
|
+
return {
|
|
21
|
+
publishJson: async (json) => topic.publishMessage(json),
|
|
22
|
+
publish: async (buffer) => topic.publishMessage({ data: buffer })
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export const PubSubModule = new PubSubModule_Class();
|
|
29
|
+
//# sourceMappingURL=PubSubModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PubSubModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/PubSubModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAE/C,MAAM,kBACF,SAAQ,MAAM;IAEd;QACI,KAAK,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,SAAiB,EAAE,OAAO,GAAG,SAAS;QAC1C,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,GAAe,UAAU,CAAC,IAAI,CAAC;QAEzC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;QAC7C,OAAO;YACH,WAAW,EAAE,KAAK,EAAE,SAAiB,EAAE,EAAE;gBACrC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBACpD,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,KAAK,EAAE,CAAC,SAAiB,EAAE,OAAwB,EAAE,EAAE;gBACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC/C,OAAO;oBACH,WAAW,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;oBAC/D,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;iBAC1E,CAAC;YACN,CAAC;SACJ,CAAC;IACN,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/consts.ts"],"names":[],"mappings":"AACA,oBAAY,UAAU;IACrB,UAAU,8BAA8B;CACxC;AAED,oBAAY,QAAQ;IACnB,aAAa,mDAAmD;CAChE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export var ServiceKey;
|
|
2
|
+
(function (ServiceKey) {
|
|
3
|
+
ServiceKey["DialogFlow"] = "dialogflow.googleapis.com";
|
|
4
|
+
})(ServiceKey || (ServiceKey = {}));
|
|
5
|
+
export var GCPScope;
|
|
6
|
+
(function (GCPScope) {
|
|
7
|
+
GCPScope["CloudPlatform"] = "https://www.googleapis.com/auth/cloud-platform";
|
|
8
|
+
})(GCPScope || (GCPScope = {}));
|
|
9
|
+
//# sourceMappingURL=consts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/consts.ts"],"names":[],"mappings":"AACA,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACrB,sDAAwC,CAAA;AACzC,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB;AAED,MAAM,CAAN,IAAY,QAEX;AAFD,WAAY,QAAQ;IACnB,4EAAgE,CAAA;AACjE,CAAC,EAFW,QAAQ,KAAR,QAAQ,QAEnB"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/main/index.ts"],"names":[],"mappings":"AAmBA,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Permissions management system, define access level for each of
|
|
3
|
+
* your server apis, and restrict users by giving them access levels
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2020 Yair bcm
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*/
|
|
19
|
+
export * from './app-backend/modules/DialogFlowApi.js';
|
|
20
|
+
export * from './app-backend/modules/GoogleCloudModule.js';
|
|
21
|
+
export * from './app-backend/modules/AuthModule.js';
|
|
22
|
+
export * from './app-backend/modules/PubSubModule.js';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/main/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC"}
|