@webda/gcp 4.0.0-beta.1 → 4.0.0-beta.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.
Files changed (57) hide show
  1. package/README.md +54 -4
  2. package/lib/index.d.ts +5 -4
  3. package/lib/index.d.ts.map +1 -0
  4. package/lib/index.js +4 -4
  5. package/lib/index.js.map +1 -1
  6. package/lib/services/firestore.service.d.ts +236 -0
  7. package/lib/services/firestore.service.d.ts.map +1 -0
  8. package/lib/services/firestore.service.js +692 -0
  9. package/lib/services/firestore.service.js.map +1 -0
  10. package/lib/services/index.d.ts +2 -1
  11. package/lib/services/index.d.ts.map +1 -0
  12. package/lib/services/index.js +1 -1
  13. package/lib/services/index.js.map +1 -1
  14. package/lib/services/{kms.d.ts → kms.service.d.ts} +14 -14
  15. package/lib/services/kms.service.d.ts.map +1 -0
  16. package/lib/services/{kms.js → kms.service.js} +18 -16
  17. package/lib/services/kms.service.js.map +1 -0
  18. package/lib/services/{pubsub.d.ts → pubsub.service.d.ts} +23 -3
  19. package/lib/services/pubsub.service.d.ts.map +1 -0
  20. package/lib/services/{pubsub.js → pubsub.service.js} +36 -10
  21. package/lib/services/pubsub.service.js.map +1 -0
  22. package/lib/services/{queue.d.ts → queue.service.d.ts} +32 -14
  23. package/lib/services/queue.service.d.ts.map +1 -0
  24. package/lib/services/{queue.js → queue.service.js} +65 -38
  25. package/lib/services/queue.service.js.map +1 -0
  26. package/lib/services/storage.service.d.ts +268 -0
  27. package/lib/services/storage.service.d.ts.map +1 -0
  28. package/lib/services/{storage.js → storage.service.js} +125 -78
  29. package/lib/services/storage.service.js.map +1 -0
  30. package/package.json +34 -40
  31. package/webda.module.json +1120 -1462
  32. package/lib/index.spec.d.ts +0 -4
  33. package/lib/index.spec.js +0 -7
  34. package/lib/index.spec.js.map +0 -1
  35. package/lib/services/firestore.d.ts +0 -134
  36. package/lib/services/firestore.js +0 -424
  37. package/lib/services/firestore.js.map +0 -1
  38. package/lib/services/firestore.spec.d.ts +0 -1
  39. package/lib/services/firestore.spec.js +0 -194
  40. package/lib/services/firestore.spec.js.map +0 -1
  41. package/lib/services/kms.js.map +0 -1
  42. package/lib/services/kms.spec.d.ts +0 -1
  43. package/lib/services/kms.spec.js +0 -53
  44. package/lib/services/kms.spec.js.map +0 -1
  45. package/lib/services/pubsub.js.map +0 -1
  46. package/lib/services/pubsub.spec.d.ts +0 -1
  47. package/lib/services/pubsub.spec.js +0 -95
  48. package/lib/services/pubsub.spec.js.map +0 -1
  49. package/lib/services/queue.js.map +0 -1
  50. package/lib/services/queue.spec.d.ts +0 -1
  51. package/lib/services/queue.spec.js +0 -104
  52. package/lib/services/queue.spec.js.map +0 -1
  53. package/lib/services/storage.d.ts +0 -214
  54. package/lib/services/storage.js.map +0 -1
  55. package/lib/services/storage.spec.d.ts +0 -1
  56. package/lib/services/storage.spec.js +0 -220
  57. package/lib/services/storage.spec.js.map +0 -1
@@ -1,214 +0,0 @@
1
- import { Bucket, StorageOptions } from "@google-cloud/storage";
2
- import { BinaryFile, BinaryMap, BinaryParameters, CloudBinary, CoreModel, DeepPartial, OperationContext, StorageFinder, WebContext } from "@webda/core";
3
- import { Readable, Writable } from "stream";
4
- export type StorageObject = {
5
- key: string;
6
- /**
7
- * bucket is an option,
8
- * if not provided: it will get the DEFAULT_BUCKET set from environment variable
9
- */
10
- bucket?: string;
11
- };
12
- export type DownloadParams = StorageObject & {
13
- localPath: string;
14
- };
15
- export type PutObjectParams = StorageObject & {
16
- localPath?: string;
17
- content?: string | Buffer;
18
- };
19
- export type SignedUrlParams = StorageObject & {
20
- expires?: number;
21
- action: "read" | "write" | "delete";
22
- contentMd5?: string;
23
- contentType?: string;
24
- extensionHeaders?: {
25
- [key: string]: string;
26
- };
27
- responseDisposition?: string;
28
- queryParams?: {
29
- [key: string]: string;
30
- };
31
- };
32
- export type StorageObjectMeta = {
33
- size: number;
34
- contentType: string;
35
- };
36
- export declare class StorageParameters extends BinaryParameters {
37
- prefix?: string;
38
- bucket: string;
39
- /**
40
- * Specify endpoint for GCS
41
- */
42
- endpoint?: string;
43
- constructor(params: any, service: Storage);
44
- }
45
- /**
46
- * Google Storage Finder implementation
47
- */
48
- export declare class GCSFinder implements StorageFinder {
49
- private _storage;
50
- constructor(options?: StorageOptions);
51
- /**
52
- * Get info from url
53
- * @param path
54
- * @returns
55
- */
56
- getInfo(path: string): {
57
- bucket: string;
58
- key: string;
59
- };
60
- /**
61
- * Depth or options is ignored
62
- * @override
63
- */
64
- walk(path: string, processor: (filepath: string) => void, options?: {
65
- followSymlinks?: boolean;
66
- resolveSymlink?: boolean;
67
- includeDir?: boolean;
68
- maxDepth?: number;
69
- }, depth?: number): Promise<void>;
70
- /**
71
- *
72
- * @param currentPath
73
- * @param options is ignored
74
- * @returns
75
- */
76
- find(currentPath: string, options?: {
77
- includeDir?: boolean;
78
- maxDepth?: number;
79
- } & {
80
- filterPattern?: RegExp;
81
- processor?: (filepath: string) => void;
82
- }): Promise<string[]>;
83
- /**
84
- * Get a write stream
85
- * @param path
86
- * @returns
87
- */
88
- getWriteStream(path: string): Promise<Writable>;
89
- /**
90
- * Get a read stream
91
- * @param path
92
- * @returns
93
- */
94
- getReadStream(path: string): Promise<Readable>;
95
- }
96
- /**
97
- * Storage handles the storage of binary on a Google Cloud Storage bucket
98
- *
99
- * See Binary the general interface
100
- * @WebdaModda GoogleCloudStorage
101
- */
102
- export default class Storage<T extends StorageParameters = StorageParameters> extends CloudBinary<T> {
103
- private _storage?;
104
- private get storage();
105
- /**
106
- * Load the parameters
107
- *
108
- * @param params
109
- */
110
- loadParameters(params: DeepPartial<T>): StorageParameters;
111
- /**
112
- * @override
113
- */
114
- _get(info: BinaryMap): Promise<Readable>;
115
- /**
116
- * @override
117
- */
118
- getSignedUrlFromMap(map: BinaryMap, expires: number, _context: OperationContext): Promise<string>;
119
- /**
120
- * Get object content in Buffer
121
- * @param {StorageObject} params
122
- */
123
- getContent({ bucket, key }: StorageObject): Promise<Readable>;
124
- /**
125
- * Upload a local file to GCS bucket destination
126
- *
127
- * @param key to add to
128
- * @param body content of the object
129
- * @param metadatas to put along the object
130
- * @param bucket to use
131
- */
132
- putObject(key: string, body: Readable | Buffer | string, metadata?: {}, bucket?: string): Promise<void>;
133
- /**
134
- * Return the Google Bucket directly
135
- *
136
- * @param bucket name of the bucket default to the one predefined
137
- * @returns
138
- */
139
- getStorageBucket(bucket?: string): Bucket;
140
- /**
141
- * @inheritdoc
142
- */
143
- _cleanUsage(hash: string, uuid: string, property?: string): Promise<void>;
144
- /**
145
- * @inheritdoc
146
- */
147
- getUsageCount(hash: string): Promise<number>;
148
- /**
149
- * @inheritdoc
150
- */
151
- store(object: CoreModel, property: string, file: BinaryFile): Promise<void>;
152
- /**
153
- * Delete a file inside an existing bucket
154
- * @param {DeleteObjectParams} params
155
- */
156
- deleteObject({ bucket, key }: StorageObject): Promise<void>;
157
- /**
158
- * Move a file from one bucket to an other
159
- * @param {StorageObject} source
160
- * @param {StorageObject} destination
161
- */
162
- moveObject(source: StorageObject, destination: StorageObject): Promise<void>;
163
- /**
164
- * @inheritdoc
165
- */
166
- putRedirectUrl(ctx: WebContext): Promise<{
167
- url: string;
168
- method: string;
169
- headers: {
170
- [key: string]: string;
171
- };
172
- }>;
173
- /**
174
- * Retrieve one signed URL to download the file in parameter
175
- * @param {SignedUrlParams} params
176
- * @returns {string} URL in order to download the file
177
- */
178
- getSignedUrl({ bucket, key, expires, action, ...params }: SignedUrlParams): Promise<string>;
179
- /**
180
- * Retrieve mandatory headers if needed by the cloud provider (ie. Azure)
181
- * Returns empty object if no headers are mandatory
182
- * @returns {[key:string]: string} mandatory headers
183
- */
184
- getSignedUrlHeaders(): {
185
- [key: string]: string;
186
- };
187
- /**
188
- * Retrieve public URL of this object
189
- * @param {StorageModel} store
190
- * @returns {string} Public URL in order to download the file
191
- */
192
- getPublicUrl({ bucket, key }: StorageObject): Promise<string>;
193
- /**
194
- * Fetch an object's metadata
195
- * @param {StorageModel} store
196
- * @returns {any} Metadata
197
- */
198
- getMeta({ bucket, key }: StorageObject): Promise<StorageObjectMeta>;
199
- /**
200
- * Get a bucket size with a prefix
201
- * @param bucket
202
- * @param prefix on the bucket
203
- * @param regex to filter files
204
- */
205
- getBucketSize(bucket?: string, prefix?: string, regex?: RegExp): Promise<{
206
- size: number;
207
- count: number;
208
- }>;
209
- /**
210
- * @inheritdoc
211
- */
212
- putMarker(hash: string, uuid: string, storeName: string): Promise<void>;
213
- }
214
- export { Storage };
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/services/storage.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,220 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { Storage as GCS } from "@google-cloud/storage";
8
- import { suite, test } from "@testdeck/mocha";
9
- import { BinaryService, getCommonJS } from "@webda/core";
10
- import { BinaryTest } from "@webda/core/lib/services/binary.spec.js";
11
- import * as assert from "assert";
12
- import * as path from "path";
13
- import * as sinon from "sinon";
14
- import { GCSFinder } from "./storage.js";
15
- const { __dirname } = getCommonJS(import.meta.url);
16
- const BUCKET = "webda-dev";
17
- let StorageTest = class StorageTest extends BinaryTest {
18
- async before() {
19
- this.apiEndpoint = process.env["GCS_API_ENDPOINT"] || "";
20
- this.buildWebda();
21
- await this.install();
22
- await super.before();
23
- this.prefix = this.getBinary().getWebda().getUuid();
24
- this.getBinary().getParameters().prefix = this.prefix;
25
- this.getBinary().getParameters().endpoint = this.apiEndpoint;
26
- }
27
- async after() {
28
- await this.cleanData();
29
- }
30
- async install() {
31
- var storage = new GCS({ apiEndpoint: this.apiEndpoint });
32
- try {
33
- let [exists] = await storage.bucket(BUCKET).exists();
34
- if (!exists) {
35
- console.log("INFO", `Google cloud storage creating bucket '${BUCKET}'`);
36
- await storage.createBucket(BUCKET, {
37
- location: "US-WEST2",
38
- storageClass: "COLDLINE"
39
- });
40
- }
41
- }
42
- catch (e) {
43
- console.log("ERROR", `Google Cloud Storage error (${e.message})`);
44
- }
45
- }
46
- async cleanData() {
47
- var storage = new GCS({ apiEndpoint: this.apiEndpoint });
48
- try {
49
- const [files] = await storage.bucket(BUCKET).getFiles({
50
- prefix: this.prefix
51
- });
52
- for (let file of files) {
53
- await file.delete();
54
- }
55
- }
56
- catch (err) {
57
- console.error("Error cleaning up", err);
58
- }
59
- }
60
- // Override getNotFound as exception is raised after
61
- // @test
62
- // async getNotFound() {}
63
- async putObject() {
64
- const body = `RAW Body: ${new Date()}`;
65
- const name = `${this.prefix}/plop/test`;
66
- await this.getBinary().putObject(name, Buffer.from(body), { meta1: "meta1" }, BUCKET);
67
- let getFile = this.getBinary().getStorageBucket().file(name);
68
- assert.deepStrictEqual((await getFile.getMetadata())[0].metadata, {
69
- meta1: "meta1"
70
- });
71
- }
72
- // Override getNotFound as exception is raised after
73
- async getNotFound() { }
74
- async httpGetError() {
75
- // GET is not through classic binary
76
- // Skip it
77
- }
78
- async redirectUrl() {
79
- let { user1, ctx } = await this.setupDefault();
80
- // Making sure we are redirected on GET
81
- let executor = this.getExecutor(ctx, "test.webda.io", "GET", `/binary/users/${user1.getUuid()}/images/0`, {});
82
- await executor.execute(ctx);
83
- assert.ok(ctx.getResponseHeaders().Location !== undefined);
84
- }
85
- async challenge() {
86
- await this.testChallenge(false);
87
- }
88
- async redirectUrlInfo() {
89
- let { user1, ctx } = await this.setupDefault();
90
- // Making sure we are redirected on GET
91
- let executor = this.getExecutor(ctx, "test.webda.io", "GET", `/binary/users/${user1.getUuid()}/images/0/url`, {});
92
- await executor.execute(ctx);
93
- assert.ok(ctx.getResponseHeaders().Location === undefined);
94
- assert.notStrictEqual(JSON.parse(ctx.getResponseBody()).Location, undefined);
95
- }
96
- async cascadeDelete() {
97
- let stubDelete = sinon.stub(this.getBinary(), "_cleanUsage").callsFake(() => {
98
- throw new Error();
99
- });
100
- try {
101
- // @ts-ignore
102
- await this.getBinary().cascadeDelete({ hash: "pp" }, "pp");
103
- }
104
- finally {
105
- stubDelete.restore();
106
- }
107
- }
108
- async defaultGCS() {
109
- let { user1, ctx } = await this.setupDefault();
110
- // COV for double
111
- const binary = this.getBinary();
112
- const from = `${this.prefix}/rawAccess`;
113
- const to = `${this.prefix}/movedAccess`;
114
- await binary.putObject(from, path.join(__dirname, "..", "..", "test", "Dockerfile.txt"));
115
- // Test GCS
116
- const finder = new GCSFinder({ apiEndpoint: this.apiEndpoint });
117
- const stub = sinon.stub();
118
- let files = await finder.find("gs://webda-dev/", { processor: stub });
119
- assert.strictEqual(stub.callCount, files.length);
120
- assert.notStrictEqual(files.length, 0);
121
- files = await finder.find(`gs://webda-dev/${this.prefix}`, { filterPattern: /rawAccess$/, processor: stub });
122
- assert.strictEqual(files.length, 1);
123
- const writer = await finder.getWriteStream(`gs://webda-dev/${this.prefix}/test.txt`);
124
- writer.write("test");
125
- let p = new Promise(resolve => {
126
- writer.on("finish", resolve);
127
- });
128
- writer.end();
129
- await p;
130
- assert.strictEqual((await BinaryService.streamToBuffer(await finder.getReadStream(`gs://webda-dev/${this.prefix}/test.txt`))).toString(), "test");
131
- assert.throws(() => finder.getInfo("s3://test/plop.txt"), /Invalid protocol path should be gs:/);
132
- //
133
- await binary.moveObject({ key: from }, { key: to });
134
- assert.deepStrictEqual(binary.getSignedUrlHeaders(), {});
135
- const meta = await binary.getMeta({ bucket: "webda-dev", key: to });
136
- assert.deepStrictEqual(meta, { size: 311, contentType: "text/plain" });
137
- let url = await binary.getPublicUrl({ key: "webda-dev" });
138
- assert.ok(/\/webda-dev\/webda-dev/.exec(url));
139
- if (this.apiEndpoint) {
140
- assert.ok(url.startsWith(this.apiEndpoint));
141
- }
142
- else {
143
- assert.ok(url.startsWith("https://storage.googleapis.com"));
144
- }
145
- await binary.deleteObject({ key: to });
146
- }
147
- /**
148
- * Overwrite the send challenge data to use GCS
149
- * @param info
150
- * @param data
151
- */
152
- async sendChallengeData(info, data) {
153
- const url = new URL(info.url);
154
- let metadata = {};
155
- Object.keys(info.headers)
156
- .filter(k => k.startsWith("x-goog-meta-"))
157
- .forEach(k => {
158
- metadata[k.substring(12)] = info.headers[k];
159
- });
160
- let file = new GCS({ apiEndpoint: this.apiEndpoint })
161
- .bucket(BUCKET)
162
- .file(url.pathname.substring(2 + BUCKET.length));
163
- await file.save(data);
164
- await file.setMetadata({ metadata: metadata });
165
- }
166
- async bucketSize() {
167
- const binary = this.getBinary();
168
- sinon.stub(binary["storage"], "bucket").callsFake(() => {
169
- return {
170
- getFiles: ({ pageToken }) => {
171
- let res = [];
172
- let offset = pageToken ? parseInt(pageToken) : 1;
173
- for (let i = offset; i < 100 + offset; i++) {
174
- res.push({ name: `a${i}`, getMetadata: async () => [{ size: pageToken ? "20" : "100" }] });
175
- }
176
- return [res, pageToken ? { pageToken: "" } : { pageToken: "666" }];
177
- }
178
- };
179
- });
180
- assert.deepStrictEqual(await binary.getBucketSize(), {
181
- size: 12000,
182
- count: 200
183
- });
184
- assert.deepStrictEqual(await binary.getBucketSize("plop", undefined, /a1/), {
185
- size: 1200,
186
- count: 12
187
- });
188
- }
189
- };
190
- __decorate([
191
- test
192
- ], StorageTest.prototype, "putObject", null);
193
- __decorate([
194
- test
195
- ], StorageTest.prototype, "getNotFound", null);
196
- __decorate([
197
- test
198
- ], StorageTest.prototype, "httpGetError", null);
199
- __decorate([
200
- test
201
- ], StorageTest.prototype, "redirectUrl", null);
202
- __decorate([
203
- test
204
- ], StorageTest.prototype, "challenge", null);
205
- __decorate([
206
- test
207
- ], StorageTest.prototype, "redirectUrlInfo", null);
208
- __decorate([
209
- test
210
- ], StorageTest.prototype, "cascadeDelete", null);
211
- __decorate([
212
- test
213
- ], StorageTest.prototype, "defaultGCS", null);
214
- __decorate([
215
- test
216
- ], StorageTest.prototype, "bucketSize", null);
217
- StorageTest = __decorate([
218
- suite
219
- ], StorageTest);
220
- //# sourceMappingURL=storage.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.spec.js","sourceRoot":"","sources":["../../src/services/storage.spec.ts"],"names":[],"mappings":"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"}