Skip to content

Commit f48dcd2

Browse files
ddelgrosso1d-googrenovate-botgcf-owl-bot[bot]
authored
feat!: Make node 14 the minimum supported version (#2244)
* refactor!: Remove `extend` and Treat Provided Options as Mutable (#2204) * refactor: Remove `extend` This is the prelimary, `src`-only commit. * fix: object merging * chore: remove log * chore: minor clean-up * chore: more clean-up * refactor: remove `extend` * perf!: treat provided options as mutable * feat!: stronger typing for lifecycle rules (#2215) * fix!: Do not return responsebody in delete, only raw response (#2236) * fix!: Remove extraneous validation in favor of server errors (#2237) * fix!: Remove extraneous validation in favor of server errors * remove test * refactor!: mark bucket.setLabels and associated interfaces as deprecated (#2214) * refactor!: mark bucket.setLabels and associated interfaces as deprecated * update addBucketLabel to use setMetadata * mark getLabels / deleteLabels deprecated, update samples * feat!: disable source maps for smaller bundle size (#2240) * feat!: better typing for metadata (#2234) * test: cleanup kms tests to avoid setting incorrect keys (#2213) * chore(deps): update dependency c8 to v8 (#2221) * feat!: better typing for metadata * more metadata typing * fix merge problems * remove extend * fix merge conflicts --------- Co-authored-by: Mend Renovate <[email protected]> * chore!: make node 14 the minimum version (#2230) * chore!: make node 14 the minimum version * move conformance test to node 14 * package upgrades, fix unit test compilation * update google owned deps * fix tests * remove node 12 kokoro folders * merge and fix issues * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * export new metadata types from index * fix samples tests * fix system test --------- Co-authored-by: Daniel Bankhead <[email protected]> Co-authored-by: Mend Renovate <[email protected]> Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent 1756827 commit f48dcd2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1138
-1198
lines changed

.github/sync-repo-settings.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ branchProtectionRules:
1414
- "ci/kokoro: System test"
1515
- docs
1616
- lint
17-
- test (12)
1817
- test (14)
1918
- test (16)
19+
- test (18)
2020
- cla/google
2121
- windows
2222
- OwlBot Post Processor

.github/workflows/ci.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
runs-on: ubuntu-latest
1010
strategy:
1111
matrix:
12-
node: [12, 14, 16, 18]
12+
node: [14, 16, 18, 20]
1313
steps:
1414
- uses: actions/checkout@v3
1515
- uses: actions/setup-node@v3

.github/workflows/conformance-test.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
- uses: actions/checkout@v3
1212
- uses: actions/setup-node@v3
1313
with:
14-
node-version: 12
14+
node-version: 14
1515
- run: node --version
1616
- run: npm install
1717
- run: npm run conformance-test

.kokoro/continuous/node12/common.cfg

-24
This file was deleted.

.kokoro/continuous/node12/lint.cfg

-4
This file was deleted.

.kokoro/continuous/node12/samples-test.cfg

-12
This file was deleted.

.kokoro/continuous/node12/system-test.cfg

-12
This file was deleted.

.kokoro/continuous/node12/test.cfg

Whitespace-only changes.

.kokoro/presubmit/node12/common.cfg

-24
This file was deleted.

.kokoro/presubmit/node12/conformance-test.cfg

-4
This file was deleted.

.kokoro/presubmit/node12/samples-test.cfg

-12
This file was deleted.

.kokoro/presubmit/node12/system-test.cfg

-12
This file was deleted.

.kokoro/presubmit/node12/test.cfg

Whitespace-only changes.

conformance-test/libraryMethods.ts

+13-5
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ export async function addLifecycleRuleInstancePrecondition(
4242
options: ConformanceTestOptions
4343
) {
4444
await options.bucket!.addLifecycleRule({
45-
action: 'delete',
45+
action: {
46+
type: 'Delete',
47+
},
4648
condition: {
4749
age: 365 * 3, // Specified in days.
4850
},
@@ -53,7 +55,9 @@ export async function addLifecycleRule(options: ConformanceTestOptions) {
5355
if (options.preconditionRequired) {
5456
await options.bucket!.addLifecycleRule(
5557
{
56-
action: 'delete',
58+
action: {
59+
type: 'Delete',
60+
},
5761
condition: {
5862
age: 365 * 3, // Specified in days.
5963
},
@@ -64,7 +68,9 @@ export async function addLifecycleRule(options: ConformanceTestOptions) {
6468
);
6569
} else {
6670
await options.bucket!.addLifecycleRule({
67-
action: 'delete',
71+
action: {
72+
type: 'Delete',
73+
},
6874
condition: {
6975
age: 365 * 3, // Specified in days.
7076
},
@@ -104,7 +110,7 @@ export async function combine(options: ConformanceTestOptions) {
104110
await allFiles.save('allfiles contents');
105111
if (options.preconditionRequired) {
106112
await options.bucket!.combine(sources, allFiles, {
107-
ifGenerationMatch: allFiles.metadata.generation,
113+
ifGenerationMatch: allFiles.metadata.generation!,
108114
});
109115
} else {
110116
await options.bucket!.combine(sources, allFiles);
@@ -468,7 +474,9 @@ export async function copy(options: ConformanceTestOptions) {
468474

469475
if (options.preconditionRequired) {
470476
await options.file!.copy('a-different-file.png', {
471-
preconditionOpts: {ifGenerationMatch: newFile.metadata.generation},
477+
preconditionOpts: {
478+
ifGenerationMatch: newFile.metadata.generation!,
479+
},
472480
});
473481
} else {
474482
await options.file!.copy('a-different-file.png');

package.json

+10-12
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"license": "Apache-2.0",
66
"author": "Google Inc.",
77
"engines": {
8-
"node": ">=12"
8+
"node": ">=14"
99
},
1010
"repository": "googleapis/nodejs-storage",
1111
"main": "./build/src/index.js",
@@ -58,15 +58,14 @@
5858
"compressible": "^2.0.12",
5959
"duplexify": "^4.0.0",
6060
"ent": "^2.2.0",
61-
"extend": "^3.0.2",
6261
"fast-xml-parser": "^4.2.2",
63-
"gaxios": "^5.0.0",
64-
"google-auth-library": "^8.0.1",
62+
"gaxios": "^6.0.2",
63+
"google-auth-library": "^9.0.0",
6564
"mime": "^3.0.0",
6665
"mime-types": "^2.0.8",
6766
"p-limit": "^3.0.1",
68-
"retry-request": "^5.0.0",
69-
"teeny-request": "^8.0.0",
67+
"retry-request": "^6.0.0",
68+
"teeny-request": "^9.0.0",
7069
"uuid": "^8.0.0"
7170
},
7271
"devDependencies": {
@@ -76,22 +75,21 @@
7675
"@types/async-retry": "^1.4.3",
7776
"@types/compressible": "^2.0.0",
7877
"@types/ent": "^2.2.1",
79-
"@types/extend": "^3.0.0",
8078
"@types/mime": "^3.0.0",
8179
"@types/mime-types": "^2.1.0",
8280
"@types/mocha": "^9.1.1",
8381
"@types/mockery": "^1.4.29",
84-
"@types/node": "^18.0.0",
82+
"@types/node": "^20.4.4",
8583
"@types/node-fetch": "^2.1.3",
8684
"@types/proxyquire": "^1.3.28",
8785
"@types/request": "^2.48.4",
88-
"@types/sinon": "^10.0.0",
86+
"@types/sinon": "^10.0.15",
8987
"@types/tmp": "0.2.3",
9088
"@types/uuid": "^8.0.0",
9189
"@types/yargs": "^17.0.10",
9290
"c8": "^8.0.0",
9391
"form-data": "^4.0.0",
94-
"gts": "^3.1.0",
92+
"gts": "^3.1.1",
9593
"jsdoc": "^4.0.0",
9694
"jsdoc-fresh": "^2.0.0",
9795
"jsdoc-region-tag": "^2.0.0",
@@ -101,9 +99,9 @@
10199
"nock": "~13.3.0",
102100
"node-fetch": "^2.6.7",
103101
"proxyquire": "^2.1.3",
104-
"sinon": "^15.0.0",
102+
"sinon": "^15.2.0",
105103
"tmp": "^0.2.0",
106-
"typescript": "^4.6.4",
104+
"typescript": "^5.1.6",
107105
"yargs": "^17.3.1"
108106
}
109107
}

samples/addBucketLabel.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ function main(
4848
};
4949

5050
async function addBucketLabel() {
51-
await storage.bucket(bucketName).setLabels(labels);
51+
await storage.bucket(bucketName).setMetadata({labels});
5252
console.log(`Added label to bucket ${bucketName}`);
5353
}
5454

samples/enableBucketLifecycleManagement.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ function main(bucketName = 'my-bucket') {
3535

3636
async function enableBucketLifecycleManagement() {
3737
const [metadata] = await storage.bucket(bucketName).addLifecycleRule({
38-
action: 'delete',
38+
action: {
39+
type: 'Delete',
40+
},
3941
condition: {age: 100},
4042
});
4143

samples/removeBucketLabel.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
// description: Removes bucket label.
2020
// usage: node removeBucketLabel.js <BUCKET_NAME> labelone)
2121

22-
function main(bucketName = 'my-bucket', labelKey = ['label1', 'label2']) {
22+
function main(bucketName = 'my-bucket', labelKey = 'labelone') {
2323
// [START storage_remove_bucket_label]
2424
/**
2525
* TODO(developer): Uncomment the following lines before running the sample.
@@ -37,7 +37,10 @@ function main(bucketName = 'my-bucket', labelKey = ['label1', 'label2']) {
3737
const storage = new Storage();
3838

3939
async function removeBucketLabel() {
40-
await storage.bucket(bucketName).deleteLabels(labelKey);
40+
const labels = {};
41+
// To remove a label set the value of the key to null.
42+
labels[labelKey] = null;
43+
await storage.bucket(bucketName).setMetadata({labels});
4144
console.log(`Removed labels from bucket ${bucketName}`);
4245
}
4346

samples/system-test/bucketLifecycle.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ describe('Bucket lifecycle management', () => {
5757
it('should disable all lifecycle rules', async () => {
5858
// Add a lifecycle rule in order for the sample to delete.
5959
await bucket.addLifecycleRule({
60-
action: 'delete',
60+
action: {type: 'Delete'},
6161
condition: {age: 100},
6262
});
6363

src/acl.ts

+24-9
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import {
1616
BodyResponseCallback,
1717
DecorateRequestOptions,
18-
Metadata,
18+
BaseMetadata,
1919
} from './nodejs-common';
2020
import {promisifyAll} from '@google-cloud/promisify';
2121

@@ -29,13 +29,13 @@ export interface AclOptions {
2929

3030
export type GetAclResponse = [
3131
AccessControlObject | AccessControlObject[],
32-
Metadata
32+
AclMetadata
3333
];
3434
export interface GetAclCallback {
3535
(
3636
err: Error | null,
3737
acl?: AccessControlObject | AccessControlObject[] | null,
38-
apiResponse?: Metadata
38+
apiResponse?: AclMetadata
3939
): void;
4040
}
4141
export interface GetAclOptions {
@@ -50,12 +50,12 @@ export interface UpdateAclOptions {
5050
generation?: number;
5151
userProject?: string;
5252
}
53-
export type UpdateAclResponse = [AccessControlObject, Metadata];
53+
export type UpdateAclResponse = [AccessControlObject, AclMetadata];
5454
export interface UpdateAclCallback {
5555
(
5656
err: Error | null,
5757
acl?: AccessControlObject | null,
58-
apiResponse?: Metadata
58+
apiResponse?: AclMetadata
5959
): void;
6060
}
6161

@@ -65,17 +65,17 @@ export interface AddAclOptions {
6565
generation?: number;
6666
userProject?: string;
6767
}
68-
export type AddAclResponse = [AccessControlObject, Metadata];
68+
export type AddAclResponse = [AccessControlObject, AclMetadata];
6969
export interface AddAclCallback {
7070
(
7171
err: Error | null,
7272
acl?: AccessControlObject | null,
73-
apiResponse?: Metadata
73+
apiResponse?: AclMetadata
7474
): void;
7575
}
76-
export type RemoveAclResponse = [Metadata];
76+
export type RemoveAclResponse = [AclMetadata];
7777
export interface RemoveAclCallback {
78-
(err: Error | null, apiResponse?: Metadata): void;
78+
(err: Error | null, apiResponse?: AclMetadata): void;
7979
}
8080
export interface RemoveAclOptions {
8181
entity: string;
@@ -94,6 +94,21 @@ export interface AccessControlObject {
9494
projectTeam: string;
9595
}
9696

97+
export interface AclMetadata extends BaseMetadata {
98+
bucket?: string;
99+
domain?: string;
100+
entity?: string;
101+
entityId?: string;
102+
generation?: string;
103+
object?: string;
104+
projectTeam?: {
105+
projectNumber?: string;
106+
team?: 'editors' | 'owners' | 'viewers';
107+
};
108+
role?: 'OWNER' | 'READER' | 'WRITER' | 'FULL_CONTROL';
109+
[key: string]: unknown;
110+
}
111+
97112
/**
98113
* Attach functionality to a {@link Storage.acl} instance. This will add an
99114
* object for each role group (owners, readers, and writers), with each object

0 commit comments

Comments
 (0)