@firebase-function-kits/bigquery-firestore-export 0.0.1 → 0.0.2-rc.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/CHANGELOG.md +1 -0
- package/README.md +188 -0
- package/lib/config.d.ts +5 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +75 -0
- package/lib/config.js.map +1 -0
- package/lib/dts.d.ts +14 -0
- package/lib/dts.d.ts.map +1 -0
- package/lib/dts.js +189 -0
- package/lib/dts.js.map +1 -0
- package/lib/export-config.d.ts +58 -0
- package/lib/export-config.d.ts.map +1 -0
- package/lib/export-config.js +56 -0
- package/lib/export-config.js.map +1 -0
- package/lib/handlers.d.ts +22 -0
- package/lib/handlers.d.ts.map +1 -0
- package/lib/handlers.js +125 -0
- package/lib/handlers.js.map +1 -0
- package/lib/helper.d.ts +37 -0
- package/lib/helper.d.ts.map +1 -0
- package/lib/helper.js +219 -0
- package/lib/helper.js.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +137 -0
- package/lib/index.js.map +1 -0
- package/lib/lib.d.ts +11 -0
- package/lib/lib.d.ts.map +1 -0
- package/lib/lib.js +47 -0
- package/lib/lib.js.map +1 -0
- package/lib/logs.d.ts +21 -0
- package/lib/logs.d.ts.map +1 -0
- package/lib/logs.js +122 -0
- package/lib/logs.js.map +1 -0
- package/lib/metadata.d.ts +6 -0
- package/lib/metadata.d.ts.map +1 -0
- package/lib/metadata.js +34 -0
- package/lib/metadata.js.map +1 -0
- package/lib/types.d.ts +44 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +18 -0
- package/lib/types.js.map +1 -0
- package/package.json +40 -4
- package/src/config.ts +88 -0
- package/src/dts.ts +214 -0
- package/src/export-config.ts +123 -0
- package/src/handlers.ts +141 -0
- package/src/helper.ts +320 -0
- package/src/index.ts +126 -0
- package/src/lib.ts +69 -0
- package/src/logs.ts +145 -0
- package/src/metadata.ts +31 -0
- package/src/types.ts +100 -0
- package/tests/config.test.ts +61 -0
- package/tests/dts.test.ts +124 -0
- package/tests/export-config.test.ts +78 -0
- package/tests/handlers.test.ts +170 -0
- package/tests/helper.test.ts +74 -0
- package/tests/lib.test.ts +43 -0
- package/tsconfig.json +18 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/index.js +0 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { beforeEach, describe, expect, test, vi } from "vitest";
|
|
18
|
+
import type { HandlerContext } from "../src/handlers";
|
|
19
|
+
import { resolveConfig } from "../src/export-config";
|
|
20
|
+
|
|
21
|
+
const mocks = vi.hoisted(() => ({
|
|
22
|
+
createTransferConfig: vi.fn(),
|
|
23
|
+
getTransferConfig: vi.fn(),
|
|
24
|
+
updateTransferConfig: vi.fn(),
|
|
25
|
+
handleTransferRunMessage: vi.fn(),
|
|
26
|
+
}));
|
|
27
|
+
|
|
28
|
+
vi.mock("../src/dts", () => ({
|
|
29
|
+
createTransferConfig: mocks.createTransferConfig,
|
|
30
|
+
getTransferConfig: mocks.getTransferConfig,
|
|
31
|
+
updateTransferConfig: mocks.updateTransferConfig,
|
|
32
|
+
}));
|
|
33
|
+
|
|
34
|
+
vi.mock("../src/helper", () => ({
|
|
35
|
+
handleTransferRunMessage: mocks.handleTransferRunMessage,
|
|
36
|
+
parseTransferConfigName: (name: string) => ({
|
|
37
|
+
transferConfigId: name.split("/").at(-1),
|
|
38
|
+
}),
|
|
39
|
+
}));
|
|
40
|
+
|
|
41
|
+
vi.mock("../src/logs", () => ({
|
|
42
|
+
complete: vi.fn(),
|
|
43
|
+
error: vi.fn(),
|
|
44
|
+
start: vi.fn(),
|
|
45
|
+
topicCreated: vi.fn(),
|
|
46
|
+
}));
|
|
47
|
+
|
|
48
|
+
import { handleUpsertTransferConfig } from "../src/handlers";
|
|
49
|
+
|
|
50
|
+
const config = resolveConfig({
|
|
51
|
+
bigqueryDatasetLocation: "US",
|
|
52
|
+
projectId: "test-project",
|
|
53
|
+
instanceId: "users-export",
|
|
54
|
+
datasetId: "analytics",
|
|
55
|
+
tableName: "users",
|
|
56
|
+
queryString: "SELECT * FROM source.users",
|
|
57
|
+
displayName: "Users export",
|
|
58
|
+
schedule: "every 24 hours",
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
function makeContext(options: {
|
|
62
|
+
existing?: { empty: boolean; docs: Array<{ data(): object }> };
|
|
63
|
+
transferConfigName?: string;
|
|
64
|
+
}) {
|
|
65
|
+
const set = vi.fn();
|
|
66
|
+
const get = vi.fn().mockResolvedValue(
|
|
67
|
+
options.existing ?? {
|
|
68
|
+
empty: true,
|
|
69
|
+
docs: [],
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
const collection = vi.fn(() => ({
|
|
73
|
+
doc: vi.fn(() => ({ set })),
|
|
74
|
+
where: vi.fn(() => ({
|
|
75
|
+
limit: vi.fn(() => ({ get })),
|
|
76
|
+
})),
|
|
77
|
+
}));
|
|
78
|
+
const topic = vi.fn(() => ({
|
|
79
|
+
exists: vi.fn().mockResolvedValue([true]),
|
|
80
|
+
}));
|
|
81
|
+
const createTopic = vi.fn();
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
ctx: {
|
|
85
|
+
db: { collection },
|
|
86
|
+
bigquery: {},
|
|
87
|
+
dataTransfer: {},
|
|
88
|
+
pubsub: { topic, createTopic },
|
|
89
|
+
config: { ...config, transferConfigName: options.transferConfigName },
|
|
90
|
+
} as unknown as HandlerContext,
|
|
91
|
+
set,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
beforeEach(() => {
|
|
96
|
+
vi.clearAllMocks();
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
describe("handleUpsertTransferConfig", () => {
|
|
100
|
+
test("creates and stores a transfer config for a new instance", async () => {
|
|
101
|
+
const created = {
|
|
102
|
+
name: "projects/p/locations/us/transferConfigs/config-1",
|
|
103
|
+
displayName: "Users export",
|
|
104
|
+
};
|
|
105
|
+
mocks.createTransferConfig.mockResolvedValue(created);
|
|
106
|
+
const { ctx, set } = makeContext({});
|
|
107
|
+
|
|
108
|
+
await handleUpsertTransferConfig(ctx);
|
|
109
|
+
|
|
110
|
+
expect(mocks.createTransferConfig).toHaveBeenCalledWith(
|
|
111
|
+
ctx.dataTransfer,
|
|
112
|
+
ctx.config
|
|
113
|
+
);
|
|
114
|
+
expect(set).toHaveBeenCalledWith({
|
|
115
|
+
extInstanceId: "users-export",
|
|
116
|
+
...created,
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
test("stores the object returned by an update without reading it twice", async () => {
|
|
121
|
+
const updated = {
|
|
122
|
+
name: "projects/p/locations/us/transferConfigs/config-1",
|
|
123
|
+
displayName: "Updated users export",
|
|
124
|
+
};
|
|
125
|
+
mocks.updateTransferConfig.mockResolvedValue(updated);
|
|
126
|
+
const { ctx, set } = makeContext({
|
|
127
|
+
existing: {
|
|
128
|
+
empty: false,
|
|
129
|
+
docs: [
|
|
130
|
+
{
|
|
131
|
+
data: () => ({
|
|
132
|
+
name: "projects/p/locations/us/transferConfigs/config-1",
|
|
133
|
+
}),
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
await handleUpsertTransferConfig(ctx);
|
|
140
|
+
|
|
141
|
+
expect(mocks.updateTransferConfig).toHaveBeenCalledOnce();
|
|
142
|
+
expect(mocks.getTransferConfig).not.toHaveBeenCalled();
|
|
143
|
+
expect(set).toHaveBeenCalledWith({
|
|
144
|
+
extInstanceId: "users-export",
|
|
145
|
+
...updated,
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
test("links an explicitly named transfer config without updating it", async () => {
|
|
150
|
+
const linked = {
|
|
151
|
+
name: "projects/p/locations/us/transferConfigs/config-2",
|
|
152
|
+
};
|
|
153
|
+
mocks.getTransferConfig.mockResolvedValue(linked);
|
|
154
|
+
const { ctx, set } = makeContext({
|
|
155
|
+
transferConfigName: linked.name,
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
await handleUpsertTransferConfig(ctx);
|
|
159
|
+
|
|
160
|
+
expect(mocks.getTransferConfig).toHaveBeenCalledWith(
|
|
161
|
+
ctx.dataTransfer,
|
|
162
|
+
linked.name
|
|
163
|
+
);
|
|
164
|
+
expect(mocks.updateTransferConfig).not.toHaveBeenCalled();
|
|
165
|
+
expect(set).toHaveBeenCalledWith({
|
|
166
|
+
extInstanceId: "users-export",
|
|
167
|
+
...linked,
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { Geography } from "@google-cloud/bigquery";
|
|
18
|
+
import { Timestamp } from "firebase-admin/firestore";
|
|
19
|
+
import { describe, expect, test } from "vitest";
|
|
20
|
+
import {
|
|
21
|
+
convertUnsupportedDataTypes,
|
|
22
|
+
parseTransferConfigName,
|
|
23
|
+
parseTransferRunName,
|
|
24
|
+
} from "../src/helper";
|
|
25
|
+
|
|
26
|
+
describe("transfer resource parsing", () => {
|
|
27
|
+
test("parses config and run resource names", () => {
|
|
28
|
+
expect(
|
|
29
|
+
parseTransferConfigName(
|
|
30
|
+
"projects/test-project/locations/us/transferConfigs/config-1"
|
|
31
|
+
)
|
|
32
|
+
).toEqual({
|
|
33
|
+
projectId: "test-project",
|
|
34
|
+
location: "us",
|
|
35
|
+
transferConfigId: "config-1",
|
|
36
|
+
});
|
|
37
|
+
expect(
|
|
38
|
+
parseTransferRunName(
|
|
39
|
+
"projects/test-project/locations/us/transferConfigs/config-1/runs/run-2"
|
|
40
|
+
)
|
|
41
|
+
).toEqual({
|
|
42
|
+
projectId: "test-project",
|
|
43
|
+
location: "us",
|
|
44
|
+
transferConfigId: "config-1",
|
|
45
|
+
runId: "run-2",
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test("rejects malformed resource names", () => {
|
|
50
|
+
expect(() => parseTransferConfigName("transferConfigs/config-1")).toThrow(
|
|
51
|
+
"Invalid transfer config name format"
|
|
52
|
+
);
|
|
53
|
+
expect(() => parseTransferRunName("runs/run-2")).toThrow(
|
|
54
|
+
"Invalid transfer run name format"
|
|
55
|
+
);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
describe("convertUnsupportedDataTypes", () => {
|
|
60
|
+
test("recursively converts BigQuery-only values", () => {
|
|
61
|
+
const date = new Date("2026-08-11T12:00:00.000Z");
|
|
62
|
+
const converted = convertUnsupportedDataTypes({
|
|
63
|
+
date,
|
|
64
|
+
bytes: Buffer.from([1, 2, 3]),
|
|
65
|
+
geography: new Geography("POINT(1 2)"),
|
|
66
|
+
nested: [{ value: true }],
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
expect(converted.date).toBeInstanceOf(Timestamp);
|
|
70
|
+
expect(converted.bytes).toBeInstanceOf(Uint8Array);
|
|
71
|
+
expect(converted.geography).toBe("POINT(1 2)");
|
|
72
|
+
expect(converted.nested).toEqual([{ value: true }]);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { describe, expect, test, vi } from "vitest";
|
|
18
|
+
|
|
19
|
+
vi.mock("firebase-functions", () => ({
|
|
20
|
+
logger: {
|
|
21
|
+
debug: vi.fn(),
|
|
22
|
+
error: vi.fn(),
|
|
23
|
+
info: vi.fn(),
|
|
24
|
+
log: vi.fn(),
|
|
25
|
+
warn: vi.fn(),
|
|
26
|
+
},
|
|
27
|
+
}));
|
|
28
|
+
|
|
29
|
+
vi.mock("firebase-functions/params", () => {
|
|
30
|
+
throw new Error("./lib must not import firebase-functions/params");
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
describe("./lib", () => {
|
|
34
|
+
test("imports without declaring Firebase params", async () => {
|
|
35
|
+
const lib = await import("../src/lib");
|
|
36
|
+
|
|
37
|
+
expect(lib.handleMessagePublished).toBeTypeOf("function");
|
|
38
|
+
expect(lib.handleUpsertTransferConfig).toBeTypeOf("function");
|
|
39
|
+
expect(lib.resolveConfig).toBeTypeOf("function");
|
|
40
|
+
expect(lib.createTransferConfigRequest).toBeTypeOf("function");
|
|
41
|
+
expect(lib.convertUnsupportedDataTypes).toBeTypeOf("function");
|
|
42
|
+
}, 15000);
|
|
43
|
+
});
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"outDir": "lib",
|
|
4
|
+
"rootDir": "src",
|
|
5
|
+
"target": "ES2022",
|
|
6
|
+
"module": "nodenext",
|
|
7
|
+
"moduleResolution": "nodenext",
|
|
8
|
+
"declaration": true,
|
|
9
|
+
"declarationMap": true,
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"strict": false,
|
|
12
|
+
"esModuleInterop": true,
|
|
13
|
+
"skipLibCheck": true,
|
|
14
|
+
"types": ["node"]
|
|
15
|
+
},
|
|
16
|
+
"include": ["src"],
|
|
17
|
+
"exclude": ["node_modules", "lib", "**/*.test.ts"]
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"7.0.2","root":["./src/config.ts","./src/dts.ts","./src/export-config.ts","./src/handlers.ts","./src/helper.ts","./src/index.ts","./src/lib.ts","./src/logs.ts","./src/metadata.ts","./src/types.ts"],"packageJsons":["./node_modules/@firebase/app-types/package.json","./node_modules/@firebase/component/package.json","./node_modules/@firebase/database-types/package.json","./node_modules/@firebase/logger/package.json","./node_modules/@firebase/util/package.json","./node_modules/@google-cloud/bigquery-data-transfer/package.json","./node_modules/@google-cloud/bigquery/package.json","./node_modules/@google-cloud/common/package.json","./node_modules/@google-cloud/firestore/package.json","./node_modules/@google-cloud/paginator/package.json","./node_modules/@google-cloud/precise-date/package.json","./node_modules/@google-cloud/pubsub/node_modules/@google-cloud/precise-date/package.json","./node_modules/@google-cloud/pubsub/node_modules/@grpc/proto-loader/package.json","./node_modules/@google-cloud/pubsub/node_modules/gcp-metadata/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-auth-library/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-gax/package.json","./node_modules/@google-cloud/pubsub/node_modules/proto3-json-serializer/package.json","./node_modules/@google-cloud/pubsub/package.json","./node_modules/@grpc/grpc-js/package.json","./node_modules/@grpc/proto-loader/package.json","./node_modules/@js-sdsl/ordered-map/package.json","./node_modules/@opentelemetry/api/package.json","./node_modules/@types/body-parser/package.json","./node_modules/@types/connect/package.json","./node_modules/@types/cors/package.json","./node_modules/@types/express-serve-static-core/package.json","./node_modules/@types/express/package.json","./node_modules/@types/http-errors/package.json","./node_modules/@types/node/package.json","./node_modules/@types/qs/package.json","./node_modules/@types/range-parser/package.json","./node_modules/@types/send/package.json","./node_modules/@types/serve-static/package.json","./node_modules/abort-controller/package.json","./node_modules/body-parser/package.json","./node_modules/cors/package.json","./node_modules/event-target-shim/package.json","./node_modules/express/package.json","./node_modules/firebase-admin/package.json","./node_modules/firebase-functions/package.json","./node_modules/gaxios/package.json","./node_modules/gcp-metadata/package.json","./node_modules/google-auth-library/node_modules/gaxios/package.json","./node_modules/google-auth-library/package.json","./node_modules/google-gax/node_modules/gaxios/build/esm/package.json","./node_modules/google-gax/node_modules/gaxios/package.json","./node_modules/google-gax/node_modules/google-auth-library/package.json","./node_modules/google-gax/node_modules/gtoken/package.json","./node_modules/google-gax/package.json","./node_modules/google-logging-utils/package.json","./node_modules/gtoken/package.json","./node_modules/http-errors/package.json","./node_modules/long/package.json","./node_modules/long/umd/package.json","./node_modules/p-defer/package.json","./node_modules/proto3-json-serializer/package.json","./node_modules/protobufjs/package.json","./node_modules/qs/package.json","./node_modules/range-parser/package.json","./node_modules/send/package.json","./node_modules/serve-static/package.json","./node_modules/string_decoder/package.json","./node_modules/teeny-request/package.json","./node_modules/undici-types/package.json","./package.json"],"missingPackageJsons":["./node_modules/@apollo/server/package.json","./node_modules/@as-integrations/express4/package.json","./node_modules/@firebase/logger/dist/package.json","./node_modules/@firebase/logger/dist/src/package.json","./node_modules/@firebase/util/dist/package.json","./node_modules/@google-cloud/bigquery-data-transfer/build/package.json","./node_modules/@google-cloud/bigquery-data-transfer/build/protos/package.json","./node_modules/@google-cloud/bigquery-data-transfer/build/src/package.json","./node_modules/@google-cloud/bigquery-data-transfer/build/src/v1/package.json","./node_modules/@google-cloud/bigquery/build/package.json","./node_modules/@google-cloud/bigquery/build/src/package.json","./node_modules/@google-cloud/common/build/package.json","./node_modules/@google-cloud/common/build/src/package.json","./node_modules/@google-cloud/common/build/src/util/package.json","./node_modules/@google-cloud/common/node_modules/events/package.json","./node_modules/@google-cloud/common/node_modules/google-auth-library/package.json","./node_modules/@google-cloud/common/node_modules/stream/package.json","./node_modules/@google-cloud/common/node_modules/teeny-request/package.json","./node_modules/@google-cloud/firestore/types/package.json","./node_modules/@google-cloud/firestore/types/protos/package.json","./node_modules/@google-cloud/firestore/types/v1/package.json","./node_modules/@google-cloud/firestore/types/v1beta1/package.json","./node_modules/@google-cloud/paginator/build/package.json","./node_modules/@google-cloud/paginator/build/src/package.json","./node_modules/@google-cloud/precise-date/build/package.json","./node_modules/@google-cloud/precise-date/build/src/package.json","./node_modules/@google-cloud/pubsub/build/package.json","./node_modules/@google-cloud/pubsub/build/protos/package.json","./node_modules/@google-cloud/pubsub/build/src/package.json","./node_modules/@google-cloud/pubsub/build/src/publisher/package.json","./node_modules/@google-cloud/pubsub/build/src/v1/package.json","./node_modules/@google-cloud/pubsub/node_modules/@google-cloud/precise-date/build/package.json","./node_modules/@google-cloud/pubsub/node_modules/@google-cloud/precise-date/build/src/package.json","./node_modules/@google-cloud/pubsub/node_modules/@grpc/grpc-js/build/src/client/package.json","./node_modules/@google-cloud/pubsub/node_modules/@grpc/grpc-js/package.json","./node_modules/@google-cloud/pubsub/node_modules/@grpc/proto-loader/build/package.json","./node_modules/@google-cloud/pubsub/node_modules/@grpc/proto-loader/build/src/package.json","./node_modules/@google-cloud/pubsub/node_modules/@opentelemetry/api/package.json","./node_modules/@google-cloud/pubsub/node_modules/abort-controller/package.json","./node_modules/@google-cloud/pubsub/node_modules/events/package.json","./node_modules/@google-cloud/pubsub/node_modules/gaxios/package.json","./node_modules/@google-cloud/pubsub/node_modules/gcp-metadata/build/package.json","./node_modules/@google-cloud/pubsub/node_modules/gcp-metadata/build/src/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-auth-library/build/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-auth-library/build/src/auth/googleauth/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-auth-library/build/src/auth/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-auth-library/build/src/crypto/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-auth-library/build/src/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-gax/build/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-gax/build/protos/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-gax/build/src/bundlingCalls/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-gax/build/src/longRunningCalls/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-gax/build/src/normalCalls/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-gax/build/src/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-gax/build/src/paginationCalls/package.json","./node_modules/@google-cloud/pubsub/node_modules/google-gax/build/src/streamingCalls/package.json","./node_modules/@google-cloud/pubsub/node_modules/gtoken/package.json","./node_modules/@google-cloud/pubsub/node_modules/http/package.json","./node_modules/@google-cloud/pubsub/node_modules/long/package.json","./node_modules/@google-cloud/pubsub/node_modules/p-defer/package.json","./node_modules/@google-cloud/pubsub/node_modules/proto3-json-serializer/build/package.json","./node_modules/@google-cloud/pubsub/node_modules/proto3-json-serializer/build/src/package.json","./node_modules/@google-cloud/pubsub/node_modules/protobufjs/ext/descriptor/package.json","./node_modules/@google-cloud/pubsub/node_modules/protobufjs/minimal/package.json","./node_modules/@google-cloud/pubsub/node_modules/protobufjs/package.json","./node_modules/@google-cloud/pubsub/node_modules/querystring/package.json","./node_modules/@google-cloud/pubsub/node_modules/stream/package.json","./node_modules/@grpc/grpc-js/build/package.json","./node_modules/@grpc/grpc-js/build/src/client/package.json","./node_modules/@grpc/grpc-js/build/src/generated/google/package.json","./node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/package.json","./node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/package.json","./node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/package.json","./node_modules/@grpc/grpc-js/build/src/generated/grpc/package.json","./node_modules/@grpc/grpc-js/build/src/generated/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/data/orca/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/data/orca/v3/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/data/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/service/orca/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/service/orca/v3/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/service/package.json","./node_modules/@grpc/grpc-js/build/src/package.json","./node_modules/@grpc/proto-loader/build/package.json","./node_modules/@grpc/proto-loader/build/src/package.json","./node_modules/@js-sdsl/ordered-map/dist/esm/package.json","./node_modules/@js-sdsl/ordered-map/dist/package.json","./node_modules/@opentelemetry/api/build/package.json","./node_modules/@opentelemetry/api/build/src/api/package.json","./node_modules/@opentelemetry/api/build/src/baggage/internal/package.json","./node_modules/@opentelemetry/api/build/src/baggage/package.json","./node_modules/@opentelemetry/api/build/src/common/package.json","./node_modules/@opentelemetry/api/build/src/context/package.json","./node_modules/@opentelemetry/api/build/src/diag/package.json","./node_modules/@opentelemetry/api/build/src/metrics/package.json","./node_modules/@opentelemetry/api/build/src/package.json","./node_modules/@opentelemetry/api/build/src/propagation/package.json","./node_modules/@opentelemetry/api/build/src/trace/internal/package.json","./node_modules/@opentelemetry/api/build/src/trace/package.json","./node_modules/@types/assert/package.json","./node_modules/@types/assert/strict/package.json","./node_modules/@types/async_hooks/package.json","./node_modules/@types/buffer/package.json","./node_modules/@types/child_process/package.json","./node_modules/@types/cluster/package.json","./node_modules/@types/console/package.json","./node_modules/@types/constants/package.json","./node_modules/@types/crypto/package.json","./node_modules/@types/dgram/package.json","./node_modules/@types/diagnostics_channel/package.json","./node_modules/@types/dns/package.json","./node_modules/@types/dns/promises/package.json","./node_modules/@types/domain/package.json","./node_modules/@types/events/package.json","./node_modules/@types/fs/package.json","./node_modules/@types/fs/promises/package.json","./node_modules/@types/http/package.json","./node_modules/@types/http2/package.json","./node_modules/@types/https/package.json","./node_modules/@types/inspector/package.json","./node_modules/@types/inspector/promises/package.json","./node_modules/@types/module/package.json","./node_modules/@types/net/package.json","./node_modules/@types/node/assert/package.json","./node_modules/@types/node/dns/package.json","./node_modules/@types/node/fs/package.json","./node_modules/@types/node/inspector/package.json","./node_modules/@types/node/path/package.json","./node_modules/@types/node/readline/package.json","./node_modules/@types/node/stream/package.json","./node_modules/@types/node/test/package.json","./node_modules/@types/node/timers/package.json","./node_modules/@types/node/util/package.json","./node_modules/@types/node/web-globals/package.json","./node_modules/@types/node/zlib/package.json","./node_modules/@types/os/package.json","./node_modules/@types/path/package.json","./node_modules/@types/path/posix/package.json","./node_modules/@types/path/win32/package.json","./node_modules/@types/perf_hooks/package.json","./node_modules/@types/process/package.json","./node_modules/@types/punycode/package.json","./node_modules/@types/querystring/package.json","./node_modules/@types/readline/package.json","./node_modules/@types/readline/promises/package.json","./node_modules/@types/repl/package.json","./node_modules/@types/stream/consumers/package.json","./node_modules/@types/stream/iter/package.json","./node_modules/@types/stream/package.json","./node_modules/@types/stream/promises/package.json","./node_modules/@types/stream/web/package.json","./node_modules/@types/string_decoder/package.json","./node_modules/@types/timers/package.json","./node_modules/@types/timers/promises/package.json","./node_modules/@types/tls/package.json","./node_modules/@types/trace_events/package.json","./node_modules/@types/tty/package.json","./node_modules/@types/url/package.json","./node_modules/@types/util/package.json","./node_modules/@types/util/types/package.json","./node_modules/@types/v8/package.json","./node_modules/@types/vm/package.json","./node_modules/@types/wasi/package.json","./node_modules/@types/worker_threads/package.json","./node_modules/@types/zlib/package.json","./node_modules/abort-controller/dist/package.json","./node_modules/assert/package.json","./node_modules/assert/strict/package.json","./node_modules/async_hooks/package.json","./node_modules/buffer/package.json","./node_modules/child_process/package.json","./node_modules/cluster/package.json","./node_modules/connect/package.json","./node_modules/console/package.json","./node_modules/constants/package.json","./node_modules/crypto/package.json","./node_modules/dgram/package.json","./node_modules/diagnostics_channel/package.json","./node_modules/dns/package.json","./node_modules/dns/promises/package.json","./node_modules/domain/package.json","./node_modules/events/package.json","./node_modules/express-serve-static-core/package.json","./node_modules/firebase-admin/app-check/package.json","./node_modules/firebase-admin/app/package.json","./node_modules/firebase-admin/auth/package.json","./node_modules/firebase-admin/database/package.json","./node_modules/firebase-admin/firestore/package.json","./node_modules/firebase-admin/lib/app-check/package.json","./node_modules/firebase-admin/lib/app/package.json","./node_modules/firebase-admin/lib/auth/package.json","./node_modules/firebase-admin/lib/database/package.json","./node_modules/firebase-admin/lib/firestore/package.json","./node_modules/firebase-admin/lib/package.json","./node_modules/firebase-admin/lib/utils/package.json","./node_modules/firebase-functions/lib/common/package.json","./node_modules/firebase-functions/lib/common/providers/package.json","./node_modules/firebase-functions/lib/lifecycle/package.json","./node_modules/firebase-functions/lib/logger/package.json","./node_modules/firebase-functions/lib/package.json","./node_modules/firebase-functions/lib/params/package.json","./node_modules/firebase-functions/lib/runtime/package.json","./node_modules/firebase-functions/lib/v1/package.json","./node_modules/firebase-functions/lib/v1/providers/package.json","./node_modules/firebase-functions/lib/v2/package.json","./node_modules/firebase-functions/lib/v2/providers/alerts/package.json","./node_modules/firebase-functions/lib/v2/providers/dataconnect/package.json","./node_modules/firebase-functions/lib/v2/providers/package.json","./node_modules/firebase-functions/params/package.json","./node_modules/firebase-functions/v2/lifecycle/package.json","./node_modules/firebase-functions/v2/package.json","./node_modules/firebase-functions/v2/pubsub/package.json","./node_modules/firebase-functions/v2/tasks/package.json","./node_modules/fs/package.json","./node_modules/fs/promises/package.json","./node_modules/gaxios/build/package.json","./node_modules/gaxios/build/src/package.json","./node_modules/gcp-metadata/build/package.json","./node_modules/gcp-metadata/build/src/package.json","./node_modules/google-auth-library/build/package.json","./node_modules/google-auth-library/build/src/auth/package.json","./node_modules/google-auth-library/build/src/crypto/package.json","./node_modules/google-auth-library/build/src/gtoken/package.json","./node_modules/google-auth-library/build/src/package.json","./node_modules/google-auth-library/node_modules/events/package.json","./node_modules/google-auth-library/node_modules/gaxios/build/cjs/package.json","./node_modules/google-auth-library/node_modules/gaxios/build/cjs/src/package.json","./node_modules/google-auth-library/node_modules/gaxios/build/package.json","./node_modules/google-auth-library/node_modules/gcp-metadata/package.json","./node_modules/google-auth-library/node_modules/google-logging-utils/package.json","./node_modules/google-auth-library/node_modules/http/package.json","./node_modules/google-auth-library/node_modules/querystring/package.json","./node_modules/google-auth-library/node_modules/stream/package.json","./node_modules/google-auth-library/node_modules/undici-types/package.json","./node_modules/google-gax/build/package.json","./node_modules/google-gax/build/protos/package.json","./node_modules/google-gax/build/src/bundlingCalls/package.json","./node_modules/google-gax/build/src/longRunningCalls/package.json","./node_modules/google-gax/build/src/normalCalls/package.json","./node_modules/google-gax/build/src/package.json","./node_modules/google-gax/build/src/paginationCalls/package.json","./node_modules/google-gax/build/src/streamingCalls/package.json","./node_modules/google-gax/node_modules/@grpc/grpc-js/build/src/client/package.json","./node_modules/google-gax/node_modules/@grpc/grpc-js/package.json","./node_modules/google-gax/node_modules/@grpc/proto-loader/package.json","./node_modules/google-gax/node_modules/events/package.json","./node_modules/google-gax/node_modules/gaxios/build/cjs/package.json","./node_modules/google-gax/node_modules/gaxios/build/cjs/src/package.json","./node_modules/google-gax/node_modules/gaxios/build/esm/src/package.json","./node_modules/google-gax/node_modules/gaxios/build/package.json","./node_modules/google-gax/node_modules/gcp-metadata/package.json","./node_modules/google-gax/node_modules/google-auth-library/build/package.json","./node_modules/google-gax/node_modules/google-auth-library/build/src/auth/googleauth/package.json","./node_modules/google-gax/node_modules/google-auth-library/build/src/auth/package.json","./node_modules/google-gax/node_modules/google-auth-library/build/src/crypto/package.json","./node_modules/google-gax/node_modules/google-auth-library/build/src/package.json","./node_modules/google-gax/node_modules/google-logging-utils/package.json","./node_modules/google-gax/node_modules/gtoken/build/cjs/package.json","./node_modules/google-gax/node_modules/gtoken/build/cjs/src/package.json","./node_modules/google-gax/node_modules/gtoken/build/package.json","./node_modules/google-gax/node_modules/http/package.json","./node_modules/google-gax/node_modules/long/package.json","./node_modules/google-gax/node_modules/proto3-json-serializer/package.json","./node_modules/google-gax/node_modules/protobufjs/minimal/package.json","./node_modules/google-gax/node_modules/protobufjs/package.json","./node_modules/google-gax/node_modules/querystring/package.json","./node_modules/google-gax/node_modules/stream/package.json","./node_modules/google-gax/node_modules/undici-types/package.json","./node_modules/google-logging-utils/build/package.json","./node_modules/google-logging-utils/build/src/package.json","./node_modules/graphql/package.json","./node_modules/gtoken/build/package.json","./node_modules/gtoken/build/src/package.json","./node_modules/http/package.json","./node_modules/http2/package.json","./node_modules/https/package.json","./node_modules/inspector/package.json","./node_modules/inspector/promises/package.json","./node_modules/module/package.json","./node_modules/net/package.json","./node_modules/os/package.json","./node_modules/path/package.json","./node_modules/path/posix/package.json","./node_modules/path/win32/package.json","./node_modules/perf_hooks/package.json","./node_modules/process/package.json","./node_modules/proto3-json-serializer/build/package.json","./node_modules/proto3-json-serializer/build/src/package.json","./node_modules/protobufjs/ext/descriptor/package.json","./node_modules/protobufjs/ext/package.json","./node_modules/protobufjs/minimal/package.json","./node_modules/punycode/package.json","./node_modules/querystring/package.json","./node_modules/readline/package.json","./node_modules/readline/promises/package.json","./node_modules/repl/package.json","./node_modules/stream/consumers/package.json","./node_modules/stream/iter/package.json","./node_modules/stream/package.json","./node_modules/stream/promises/package.json","./node_modules/stream/web/package.json","./node_modules/teeny-request/build/package.json","./node_modules/teeny-request/build/src/package.json","./node_modules/teeny-request/node_modules/http/package.json","./node_modules/teeny-request/node_modules/https/package.json","./node_modules/teeny-request/node_modules/stream/package.json","./node_modules/timers/package.json","./node_modules/timers/promises/package.json","./node_modules/tls/package.json","./node_modules/trace_events/package.json","./node_modules/tty/package.json","./node_modules/url/package.json","./node_modules/util/package.json","./node_modules/util/types/package.json","./node_modules/v8/package.json","./node_modules/vm/package.json","./node_modules/wasi/package.json","./node_modules/worker_threads/package.json","./node_modules/zlib/package.json"]}
|
package/index.js
DELETED
|
File without changes
|