firebase-functions 6.5.0 → 7.0.0-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.
Files changed (157) hide show
  1. package/lib/_virtual/rolldown_runtime.js +34 -0
  2. package/lib/bin/firebase-functions.js +78 -103
  3. package/lib/common/app.js +35 -55
  4. package/lib/common/change.js +54 -75
  5. package/lib/common/config.js +41 -41
  6. package/lib/common/debug.js +23 -47
  7. package/lib/common/encoding.js +59 -82
  8. package/lib/common/onInit.js +26 -28
  9. package/lib/common/options.js +22 -42
  10. package/lib/common/params.d.ts +6 -6
  11. package/lib/common/params.js +0 -23
  12. package/lib/common/providers/database.js +270 -300
  13. package/lib/common/providers/firestore.js +66 -92
  14. package/lib/common/providers/https.d.ts +0 -1
  15. package/lib/common/providers/https.js +537 -539
  16. package/lib/common/providers/identity.js +393 -444
  17. package/lib/common/providers/tasks.js +64 -98
  18. package/lib/common/timezone.js +544 -542
  19. package/lib/common/trace.d.ts +0 -1
  20. package/lib/common/trace.js +63 -55
  21. package/lib/common/utilities/assertions.d.ts +11 -0
  22. package/lib/common/utilities/assertions.js +18 -0
  23. package/lib/common/utilities/encoder.js +20 -37
  24. package/lib/common/utilities/path-pattern.js +106 -132
  25. package/lib/common/utilities/path.js +28 -27
  26. package/lib/common/utilities/utils.js +23 -45
  27. package/lib/esm/_virtual/rolldown_runtime.mjs +16 -0
  28. package/lib/esm/bin/firebase-functions.mjs +91 -0
  29. package/lib/esm/common/app.mjs +39 -0
  30. package/lib/esm/common/change.mjs +57 -0
  31. package/lib/esm/common/config.mjs +45 -0
  32. package/lib/esm/common/debug.mjs +28 -0
  33. package/lib/esm/common/encoding.mjs +69 -0
  34. package/lib/esm/common/onInit.mjs +33 -0
  35. package/lib/esm/common/options.mjs +22 -0
  36. package/lib/esm/common/params.mjs +1 -0
  37. package/lib/esm/common/providers/database.mjs +269 -0
  38. package/lib/esm/common/providers/firestore.mjs +78 -0
  39. package/lib/esm/common/providers/https.mjs +573 -0
  40. package/lib/esm/common/providers/identity.mjs +428 -0
  41. package/lib/esm/common/providers/tasks.mjs +67 -0
  42. package/lib/esm/common/timezone.mjs +544 -0
  43. package/lib/esm/common/trace.mjs +73 -0
  44. package/lib/esm/common/utilities/assertions.mjs +17 -0
  45. package/lib/esm/common/utilities/encoder.mjs +21 -0
  46. package/lib/esm/common/utilities/path-pattern.mjs +116 -0
  47. package/lib/esm/common/utilities/path.mjs +35 -0
  48. package/lib/esm/common/utilities/utils.mjs +29 -0
  49. package/lib/esm/function-configuration.mjs +1 -0
  50. package/lib/esm/logger/common.mjs +23 -0
  51. package/lib/esm/logger/compat.mjs +25 -0
  52. package/lib/esm/logger/index.mjs +131 -0
  53. package/lib/esm/params/index.mjs +160 -0
  54. package/lib/esm/params/types.mjs +400 -0
  55. package/lib/esm/runtime/loader.mjs +132 -0
  56. package/lib/esm/runtime/manifest.mjs +134 -0
  57. package/lib/esm/types/global.d.mjs +1 -0
  58. package/lib/esm/v1/cloud-functions.mjs +206 -0
  59. package/lib/esm/v1/config.mjs +14 -0
  60. package/lib/esm/v1/function-builder.mjs +252 -0
  61. package/lib/esm/v1/function-configuration.mjs +72 -0
  62. package/lib/esm/v1/index.mjs +27 -0
  63. package/lib/esm/v1/providers/analytics.mjs +212 -0
  64. package/lib/esm/v1/providers/auth.mjs +156 -0
  65. package/lib/esm/v1/providers/database.mjs +243 -0
  66. package/lib/esm/v1/providers/firestore.mjs +131 -0
  67. package/lib/esm/v1/providers/https.mjs +82 -0
  68. package/lib/esm/v1/providers/pubsub.mjs +175 -0
  69. package/lib/esm/v1/providers/remoteConfig.mjs +64 -0
  70. package/lib/esm/v1/providers/storage.mjs +163 -0
  71. package/lib/esm/v1/providers/tasks.mjs +63 -0
  72. package/lib/esm/v1/providers/testLab.mjs +94 -0
  73. package/lib/esm/v2/core.mjs +4 -0
  74. package/lib/esm/v2/index.mjs +28 -0
  75. package/lib/esm/v2/options.mjs +102 -0
  76. package/lib/esm/v2/providers/alerts/alerts.mjs +85 -0
  77. package/lib/esm/v2/providers/alerts/appDistribution.mjs +75 -0
  78. package/lib/esm/v2/providers/alerts/billing.mjs +51 -0
  79. package/lib/esm/v2/providers/alerts/crashlytics.mjs +122 -0
  80. package/lib/esm/v2/providers/alerts/index.mjs +22 -0
  81. package/lib/esm/v2/providers/alerts/performance.mjs +66 -0
  82. package/lib/esm/v2/providers/database.mjs +197 -0
  83. package/lib/esm/v2/providers/dataconnect.mjs +130 -0
  84. package/lib/esm/v2/providers/eventarc.mjs +51 -0
  85. package/lib/esm/v2/providers/firestore.mjs +294 -0
  86. package/lib/esm/v2/providers/https.mjs +210 -0
  87. package/lib/esm/v2/providers/identity.mjs +103 -0
  88. package/lib/esm/v2/providers/pubsub.mjs +148 -0
  89. package/lib/esm/v2/providers/remoteConfig.mjs +52 -0
  90. package/lib/esm/v2/providers/scheduler.mjs +84 -0
  91. package/lib/esm/v2/providers/storage.mjs +155 -0
  92. package/lib/esm/v2/providers/tasks.mjs +65 -0
  93. package/lib/esm/v2/providers/testLab.mjs +53 -0
  94. package/lib/esm/v2/trace.mjs +20 -0
  95. package/lib/function-configuration.d.ts +0 -0
  96. package/lib/function-configuration.js +0 -0
  97. package/lib/logger/common.js +21 -41
  98. package/lib/logger/compat.js +18 -33
  99. package/lib/logger/index.js +119 -130
  100. package/lib/params/index.d.ts +19 -4
  101. package/lib/params/index.js +153 -129
  102. package/lib/params/types.d.ts +17 -0
  103. package/lib/params/types.js +390 -382
  104. package/lib/runtime/loader.js +114 -148
  105. package/lib/runtime/manifest.js +106 -126
  106. package/lib/types/global.d.js +0 -0
  107. package/lib/v1/cloud-functions.d.ts +2 -2
  108. package/lib/v1/cloud-functions.js +193 -241
  109. package/lib/v1/config.d.ts +4 -7
  110. package/lib/v1/config.js +13 -75
  111. package/lib/v1/function-builder.js +239 -368
  112. package/lib/v1/function-configuration.js +70 -63
  113. package/lib/v1/index.js +118 -73
  114. package/lib/v1/providers/analytics.js +189 -210
  115. package/lib/v1/providers/auth.d.ts +2 -1
  116. package/lib/v1/providers/auth.js +159 -164
  117. package/lib/v1/providers/database.js +237 -242
  118. package/lib/v1/providers/firestore.js +131 -130
  119. package/lib/v1/providers/https.d.ts +2 -1
  120. package/lib/v1/providers/https.js +79 -86
  121. package/lib/v1/providers/pubsub.js +175 -172
  122. package/lib/v1/providers/remoteConfig.js +64 -68
  123. package/lib/v1/providers/storage.js +161 -163
  124. package/lib/v1/providers/tasks.d.ts +1 -1
  125. package/lib/v1/providers/tasks.js +65 -80
  126. package/lib/v1/providers/testLab.js +94 -94
  127. package/lib/v2/core.d.ts +1 -1
  128. package/lib/v2/core.js +5 -32
  129. package/lib/v2/index.d.ts +6 -3
  130. package/lib/v2/index.js +123 -75
  131. package/lib/v2/options.js +88 -114
  132. package/lib/v2/providers/alerts/alerts.js +76 -95
  133. package/lib/v2/providers/alerts/appDistribution.js +73 -78
  134. package/lib/v2/providers/alerts/billing.js +49 -53
  135. package/lib/v2/providers/alerts/crashlytics.js +110 -102
  136. package/lib/v2/providers/alerts/index.js +56 -53
  137. package/lib/v2/providers/alerts/performance.js +64 -74
  138. package/lib/v2/providers/database.js +177 -180
  139. package/lib/v2/providers/dataconnect.d.ts +95 -0
  140. package/lib/v2/providers/dataconnect.js +137 -0
  141. package/lib/v2/providers/eventarc.js +55 -77
  142. package/lib/v2/providers/firestore.js +262 -260
  143. package/lib/v2/providers/https.d.ts +3 -2
  144. package/lib/v2/providers/https.js +210 -247
  145. package/lib/v2/providers/identity.d.ts +2 -1
  146. package/lib/v2/providers/identity.js +96 -105
  147. package/lib/v2/providers/pubsub.js +149 -167
  148. package/lib/v2/providers/remoteConfig.js +54 -63
  149. package/lib/v2/providers/scheduler.js +84 -96
  150. package/lib/v2/providers/storage.js +147 -162
  151. package/lib/v2/providers/tasks.d.ts +1 -1
  152. package/lib/v2/providers/tasks.js +68 -95
  153. package/lib/v2/providers/testLab.js +55 -64
  154. package/lib/v2/trace.js +18 -19
  155. package/package.json +290 -226
  156. package/protos/compiledFirestore.mjs +3512 -0
  157. package/protos/update.sh +28 -7
@@ -0,0 +1,197 @@
1
+ import { __export } from "../../_virtual/rolldown_runtime.mjs";
2
+ import { initV2Endpoint } from "../../runtime/manifest.mjs";
3
+ import { getApp } from "../../common/app.mjs";
4
+ import { withInit } from "../../common/onInit.mjs";
5
+ import { normalizePath } from "../../common/utilities/path.mjs";
6
+ import { DataSnapshot } from "../../common/providers/database.mjs";
7
+ import { applyChange } from "../../common/utilities/utils.mjs";
8
+ import { wrapTraceContext } from "../trace.mjs";
9
+ import { getGlobalOptions, optionsToEndpoint } from "../options.mjs";
10
+ import { PathPattern } from "../../common/utilities/path-pattern.mjs";
11
+
12
+ //#region src/v2/providers/database.ts
13
+ var database_exports = /* @__PURE__ */ __export({
14
+ DataSnapshot: () => DataSnapshot,
15
+ createdEventType: () => createdEventType,
16
+ deletedEventType: () => deletedEventType,
17
+ getOpts: () => getOpts,
18
+ makeEndpoint: () => makeEndpoint,
19
+ makeParams: () => makeParams,
20
+ onChangedOperation: () => onChangedOperation,
21
+ onOperation: () => onOperation,
22
+ onValueCreated: () => onValueCreated,
23
+ onValueDeleted: () => onValueDeleted,
24
+ onValueUpdated: () => onValueUpdated,
25
+ onValueWritten: () => onValueWritten,
26
+ updatedEventType: () => updatedEventType,
27
+ writtenEventType: () => writtenEventType
28
+ });
29
+ /** @internal */
30
+ const writtenEventType = "google.firebase.database.ref.v1.written";
31
+ /** @internal */
32
+ const createdEventType = "google.firebase.database.ref.v1.created";
33
+ /** @internal */
34
+ const updatedEventType = "google.firebase.database.ref.v1.updated";
35
+ /** @internal */
36
+ const deletedEventType = "google.firebase.database.ref.v1.deleted";
37
+ /**
38
+ * Event handler which triggers when data is created, updated, or deleted in Realtime Database.
39
+ *
40
+ * @param referenceOrOpts - Options or a string reference.
41
+ * @param handler - Event handler which is run every time a Realtime Database create, update, or delete occurs.
42
+ */
43
+ function onValueWritten(referenceOrOpts, handler) {
44
+ return onChangedOperation(writtenEventType, referenceOrOpts, handler);
45
+ }
46
+ /**
47
+ * Event handler which triggers when data is created in Realtime Database.
48
+ *
49
+ * @param referenceOrOpts - Options or a string reference.
50
+ * @param handler - Event handler which is run every time a Realtime Database create occurs.
51
+ */
52
+ function onValueCreated(referenceOrOpts, handler) {
53
+ return onOperation(createdEventType, referenceOrOpts, handler);
54
+ }
55
+ /**
56
+ * Event handler which triggers when data is updated in Realtime Database.
57
+ *
58
+ * @param referenceOrOpts - Options or a string reference.
59
+ * @param handler - Event handler which is run every time a Realtime Database update occurs.
60
+ */
61
+ function onValueUpdated(referenceOrOpts, handler) {
62
+ return onChangedOperation(updatedEventType, referenceOrOpts, handler);
63
+ }
64
+ /**
65
+ * Event handler which triggers when data is deleted in Realtime Database.
66
+ *
67
+ * @param referenceOrOpts - Options or a string reference.
68
+ * @param handler - Event handler which is run every time a Realtime Database deletion occurs.
69
+ */
70
+ function onValueDeleted(referenceOrOpts, handler) {
71
+ return onOperation(deletedEventType, referenceOrOpts, handler);
72
+ }
73
+ /** @internal */
74
+ function getOpts(referenceOrOpts) {
75
+ let path;
76
+ let instance;
77
+ let opts;
78
+ if (typeof referenceOrOpts === "string") {
79
+ path = normalizePath(referenceOrOpts);
80
+ instance = "*";
81
+ opts = {};
82
+ } else {
83
+ path = normalizePath(referenceOrOpts.ref);
84
+ instance = referenceOrOpts.instance || "*";
85
+ opts = { ...referenceOrOpts };
86
+ delete opts.ref;
87
+ delete opts.instance;
88
+ }
89
+ return {
90
+ path,
91
+ instance,
92
+ opts
93
+ };
94
+ }
95
+ /** @internal */
96
+ function makeParams(event, path, instance) {
97
+ return {
98
+ ...path.extractMatches(event.ref),
99
+ ...instance.extractMatches(event.instance)
100
+ };
101
+ }
102
+ /** @hidden */
103
+ function makeDatabaseEvent(event, data, instance, params) {
104
+ const snapshot = new DataSnapshot(data, event.ref, getApp(), instance);
105
+ const databaseEvent = {
106
+ ...event,
107
+ firebaseDatabaseHost: event.firebasedatabasehost,
108
+ data: snapshot,
109
+ params
110
+ };
111
+ delete databaseEvent.firebasedatabasehost;
112
+ return databaseEvent;
113
+ }
114
+ /** @hidden */
115
+ function makeChangedDatabaseEvent(event, instance, params) {
116
+ const before = new DataSnapshot(event.data.data, event.ref, getApp(), instance);
117
+ const after = new DataSnapshot(applyChange(event.data.data, event.data.delta), event.ref, getApp(), instance);
118
+ const databaseEvent = {
119
+ ...event,
120
+ firebaseDatabaseHost: event.firebasedatabasehost,
121
+ data: {
122
+ before,
123
+ after
124
+ },
125
+ params
126
+ };
127
+ delete databaseEvent.firebasedatabasehost;
128
+ return databaseEvent;
129
+ }
130
+ /** @internal */
131
+ function makeEndpoint(eventType, opts, path, instance) {
132
+ const baseOpts = optionsToEndpoint(getGlobalOptions());
133
+ const specificOpts = optionsToEndpoint(opts);
134
+ const eventFilters = {};
135
+ const eventFilterPathPatterns = { ref: path.getValue() };
136
+ if (instance.hasWildcards()) {
137
+ eventFilterPathPatterns.instance = instance.getValue();
138
+ } else {
139
+ eventFilters.instance = instance.getValue();
140
+ }
141
+ return {
142
+ ...initV2Endpoint(getGlobalOptions(), opts),
143
+ platform: "gcfv2",
144
+ ...baseOpts,
145
+ ...specificOpts,
146
+ labels: {
147
+ ...baseOpts?.labels,
148
+ ...specificOpts?.labels
149
+ },
150
+ eventTrigger: {
151
+ eventType,
152
+ eventFilters,
153
+ eventFilterPathPatterns,
154
+ retry: opts.retry ?? false
155
+ }
156
+ };
157
+ }
158
+ /** @internal */
159
+ function onChangedOperation(eventType, referenceOrOpts, handler) {
160
+ const { path, instance, opts } = getOpts(referenceOrOpts);
161
+ const pathPattern = new PathPattern(path);
162
+ const instancePattern = new PathPattern(instance);
163
+ const func = (raw) => {
164
+ const event = raw;
165
+ const instanceUrl = getInstance(event);
166
+ const params = makeParams(event, pathPattern, instancePattern);
167
+ const databaseEvent = makeChangedDatabaseEvent(event, instanceUrl, params);
168
+ return wrapTraceContext(withInit(handler))(databaseEvent);
169
+ };
170
+ func.run = handler;
171
+ func.__endpoint = makeEndpoint(eventType, opts, pathPattern, instancePattern);
172
+ return func;
173
+ }
174
+ /** @internal */
175
+ function onOperation(eventType, referenceOrOpts, handler) {
176
+ const { path, instance, opts } = getOpts(referenceOrOpts);
177
+ const pathPattern = new PathPattern(path);
178
+ const instancePattern = new PathPattern(instance);
179
+ const func = (raw) => {
180
+ const event = raw;
181
+ const instanceUrl = getInstance(event);
182
+ const params = makeParams(event, pathPattern, instancePattern);
183
+ const data = eventType === deletedEventType ? event.data.data : event.data.delta;
184
+ const databaseEvent = makeDatabaseEvent(event, data, instanceUrl, params);
185
+ return wrapTraceContext(withInit(handler))(databaseEvent);
186
+ };
187
+ func.run = handler;
188
+ func.__endpoint = makeEndpoint(eventType, opts, pathPattern, instancePattern);
189
+ return func;
190
+ }
191
+ function getInstance(event) {
192
+ const emuHost = process.env.FIREBASE_DATABASE_EMULATOR_HOST;
193
+ return emuHost ? `http://${emuHost}/?ns=${event.instance}` : `https://${event.instance}.${event.firebasedatabasehost}`;
194
+ }
195
+
196
+ //#endregion
197
+ export { DataSnapshot, createdEventType, database_exports, deletedEventType, getOpts, makeEndpoint, makeParams, onChangedOperation, onOperation, onValueCreated, onValueDeleted, onValueUpdated, onValueWritten, updatedEventType, writtenEventType };
@@ -0,0 +1,130 @@
1
+ import { __export } from "../../_virtual/rolldown_runtime.mjs";
2
+ import { initV2Endpoint } from "../../runtime/manifest.mjs";
3
+ import { withInit } from "../../common/onInit.mjs";
4
+ import { normalizePath } from "../../common/utilities/path.mjs";
5
+ import { wrapTraceContext } from "../trace.mjs";
6
+ import { getGlobalOptions, optionsToEndpoint } from "../options.mjs";
7
+ import { PathPattern } from "../../common/utilities/path-pattern.mjs";
8
+
9
+ //#region src/v2/providers/dataconnect.ts
10
+ var dataconnect_exports = /* @__PURE__ */ __export({
11
+ mutationExecutedEventType: () => mutationExecutedEventType,
12
+ onMutationExecuted: () => onMutationExecuted
13
+ });
14
+ /** @internal */
15
+ const mutationExecutedEventType = "google.firebase.dataconnect.connector.v1.mutationExecuted";
16
+ /**
17
+ * Event handler that triggers when a mutation is executed in Firebase Data Connect.
18
+ *
19
+ * @param mutationOrOpts - Options or string mutation path.
20
+ * @param handler - Event handler which is run every time a mutation is executed.
21
+ */
22
+ function onMutationExecuted(mutationOrOpts, handler) {
23
+ return onOperation(mutationExecutedEventType, mutationOrOpts, handler);
24
+ }
25
+ function getOpts(mutationOrOpts) {
26
+ const operationRegex = new RegExp("services/([^/]+)/connectors/([^/]*)/operations/([^/]+)");
27
+ let service;
28
+ let connector;
29
+ let operation;
30
+ let opts;
31
+ if (typeof mutationOrOpts === "string") {
32
+ const path = normalizePath(mutationOrOpts);
33
+ const match = path.match(operationRegex);
34
+ if (!match) {
35
+ throw new Error(`Invalid operation path: ${path}`);
36
+ }
37
+ service = match[1];
38
+ connector = match[2];
39
+ operation = match[3];
40
+ opts = {};
41
+ } else {
42
+ service = mutationOrOpts.service;
43
+ connector = mutationOrOpts.connector;
44
+ operation = mutationOrOpts.operation;
45
+ opts = { ...mutationOrOpts };
46
+ delete opts.service;
47
+ delete opts.connector;
48
+ delete opts.operation;
49
+ }
50
+ return {
51
+ service,
52
+ connector,
53
+ operation,
54
+ opts
55
+ };
56
+ }
57
+ function makeEndpoint(eventType, opts, service, connector, operation) {
58
+ const baseOpts = optionsToEndpoint(getGlobalOptions());
59
+ const specificOpts = optionsToEndpoint(opts);
60
+ const eventFilters = {};
61
+ const eventFilterPathPatterns = {};
62
+ if (service) {
63
+ if (service.hasWildcards()) {
64
+ eventFilterPathPatterns.service = service.getValue();
65
+ } else {
66
+ eventFilters.service = service.getValue();
67
+ }
68
+ }
69
+ if (connector) {
70
+ if (connector.hasWildcards()) {
71
+ eventFilterPathPatterns.connector = connector.getValue();
72
+ } else {
73
+ eventFilters.connector = connector.getValue();
74
+ }
75
+ }
76
+ if (operation) {
77
+ if (operation.hasWildcards()) {
78
+ eventFilterPathPatterns.operation = operation.getValue();
79
+ } else {
80
+ eventFilters.operation = operation.getValue();
81
+ }
82
+ }
83
+ return {
84
+ ...initV2Endpoint(getGlobalOptions(), opts),
85
+ platform: "gcfv2",
86
+ ...baseOpts,
87
+ ...specificOpts,
88
+ labels: {
89
+ ...baseOpts?.labels,
90
+ ...specificOpts?.labels
91
+ },
92
+ eventTrigger: {
93
+ eventType,
94
+ eventFilters,
95
+ eventFilterPathPatterns,
96
+ retry: opts.retry ?? false
97
+ }
98
+ };
99
+ }
100
+ function makeParams(event, service, connector, operation) {
101
+ return {
102
+ ...service?.extractMatches(event.service),
103
+ ...connector?.extractMatches(event.connector),
104
+ ...operation?.extractMatches(event.operation)
105
+ };
106
+ }
107
+ function onOperation(eventType, mutationOrOpts, handler) {
108
+ const { service, connector, operation, opts } = getOpts(mutationOrOpts);
109
+ const servicePattern = service ? new PathPattern(service) : undefined;
110
+ const connectorPattern = connector ? new PathPattern(connector) : undefined;
111
+ const operationPattern = operation ? new PathPattern(operation) : undefined;
112
+ const func = (raw) => {
113
+ const event = raw;
114
+ const params = makeParams(event, servicePattern, connectorPattern, operationPattern);
115
+ const { authtype, authid, service: service$1, connector: connector$1, operation: operation$1,...rest } = event;
116
+ const dataConnectEvent = {
117
+ ...rest,
118
+ authType: authtype,
119
+ authId: authid,
120
+ params
121
+ };
122
+ return wrapTraceContext(withInit(handler))(dataConnectEvent);
123
+ };
124
+ func.run = handler;
125
+ func.__endpoint = makeEndpoint(eventType, opts, servicePattern, connectorPattern, operationPattern);
126
+ return func;
127
+ }
128
+
129
+ //#endregion
130
+ export { dataconnect_exports, mutationExecutedEventType, onMutationExecuted };
@@ -0,0 +1,51 @@
1
+ import { __export } from "../../_virtual/rolldown_runtime.mjs";
2
+ import { initV2Endpoint } from "../../runtime/manifest.mjs";
3
+ import { convertIfPresent, copyIfPresent } from "../../common/encoding.mjs";
4
+ import { withInit } from "../../common/onInit.mjs";
5
+ import { wrapTraceContext } from "../trace.mjs";
6
+ import { getGlobalOptions, optionsToEndpoint } from "../options.mjs";
7
+
8
+ //#region src/v2/providers/eventarc.ts
9
+ var eventarc_exports = /* @__PURE__ */ __export({ onCustomEventPublished: () => onCustomEventPublished });
10
+ function onCustomEventPublished(eventTypeOrOpts, handler) {
11
+ let opts;
12
+ if (typeof eventTypeOrOpts === "string") {
13
+ opts = { eventType: eventTypeOrOpts };
14
+ } else if (typeof eventTypeOrOpts === "object") {
15
+ opts = eventTypeOrOpts;
16
+ }
17
+ const func = (raw) => {
18
+ return wrapTraceContext(withInit(handler))(raw);
19
+ };
20
+ func.run = handler;
21
+ const channel = opts.channel ?? "locations/us-central1/channels/firebase";
22
+ const baseOpts = optionsToEndpoint(getGlobalOptions());
23
+ const specificOpts = optionsToEndpoint(opts);
24
+ const endpoint = {
25
+ ...initV2Endpoint(getGlobalOptions(), opts),
26
+ platform: "gcfv2",
27
+ ...baseOpts,
28
+ ...specificOpts,
29
+ labels: {
30
+ ...baseOpts?.labels,
31
+ ...specificOpts?.labels
32
+ },
33
+ eventTrigger: {
34
+ eventType: opts.eventType,
35
+ eventFilters: {},
36
+ retry: opts.retry ?? false,
37
+ channel
38
+ }
39
+ };
40
+ convertIfPresent(endpoint.eventTrigger, opts, "eventFilters", "filters");
41
+ copyIfPresent(endpoint.eventTrigger, opts, "retry");
42
+ func.__endpoint = endpoint;
43
+ func.__requiredAPIs = [{
44
+ api: "eventarcpublishing.googleapis.com",
45
+ reason: "Needed for custom event functions"
46
+ }];
47
+ return func;
48
+ }
49
+
50
+ //#endregion
51
+ export { eventarc_exports, onCustomEventPublished };
@@ -0,0 +1,294 @@
1
+ import { __export } from "../../_virtual/rolldown_runtime.mjs";
2
+ import { error } from "../../logger/index.mjs";
3
+ import { initV2Endpoint } from "../../runtime/manifest.mjs";
4
+ import { Change } from "../../common/change.mjs";
5
+ import { withInit } from "../../common/onInit.mjs";
6
+ import { normalizePath } from "../../common/utilities/path.mjs";
7
+ import { createBeforeSnapshotFromJson, createBeforeSnapshotFromProtobuf, createSnapshotFromJson, createSnapshotFromProtobuf } from "../../common/providers/firestore.mjs";
8
+ import { wrapTraceContext } from "../trace.mjs";
9
+ import "../core.mjs";
10
+ import { getGlobalOptions, optionsToEndpoint } from "../options.mjs";
11
+ import { PathPattern } from "../../common/utilities/path-pattern.mjs";
12
+
13
+ //#region src/v2/providers/firestore.ts
14
+ var firestore_exports = /* @__PURE__ */ __export({
15
+ Change: () => Change,
16
+ createBeforeSnapshot: () => createBeforeSnapshot,
17
+ createSnapshot: () => createSnapshot,
18
+ createdEventType: () => createdEventType,
19
+ createdEventWithAuthContextType: () => createdEventWithAuthContextType,
20
+ deletedEventType: () => deletedEventType,
21
+ deletedEventWithAuthContextType: () => deletedEventWithAuthContextType,
22
+ getOpts: () => getOpts,
23
+ makeChangedFirestoreEvent: () => makeChangedFirestoreEvent,
24
+ makeEndpoint: () => makeEndpoint,
25
+ makeFirestoreEvent: () => makeFirestoreEvent,
26
+ makeParams: () => makeParams,
27
+ onChangedOperation: () => onChangedOperation,
28
+ onDocumentCreated: () => onDocumentCreated,
29
+ onDocumentCreatedWithAuthContext: () => onDocumentCreatedWithAuthContext,
30
+ onDocumentDeleted: () => onDocumentDeleted,
31
+ onDocumentDeletedWithAuthContext: () => onDocumentDeletedWithAuthContext,
32
+ onDocumentUpdated: () => onDocumentUpdated,
33
+ onDocumentUpdatedWithAuthContext: () => onDocumentUpdatedWithAuthContext,
34
+ onDocumentWritten: () => onDocumentWritten,
35
+ onDocumentWrittenWithAuthContext: () => onDocumentWrittenWithAuthContext,
36
+ onOperation: () => onOperation,
37
+ updatedEventType: () => updatedEventType,
38
+ updatedEventWithAuthContextType: () => updatedEventWithAuthContextType,
39
+ writtenEventType: () => writtenEventType,
40
+ writtenEventWithAuthContextType: () => writtenEventWithAuthContextType
41
+ });
42
+ /** @internal */
43
+ const writtenEventType = "google.cloud.firestore.document.v1.written";
44
+ /** @internal */
45
+ const createdEventType = "google.cloud.firestore.document.v1.created";
46
+ /** @internal */
47
+ const updatedEventType = "google.cloud.firestore.document.v1.updated";
48
+ /** @internal */
49
+ const deletedEventType = "google.cloud.firestore.document.v1.deleted";
50
+ /** @internal */
51
+ const writtenEventWithAuthContextType = "google.cloud.firestore.document.v1.written.withAuthContext";
52
+ /** @internal */
53
+ const createdEventWithAuthContextType = "google.cloud.firestore.document.v1.created.withAuthContext";
54
+ /** @internal */
55
+ const updatedEventWithAuthContextType = "google.cloud.firestore.document.v1.updated.withAuthContext";
56
+ /** @internal */
57
+ const deletedEventWithAuthContextType = "google.cloud.firestore.document.v1.deleted.withAuthContext";
58
+ /**
59
+ * Event handler that triggers when a document is created, updated, or deleted in Firestore.
60
+ *
61
+ * @param documentOrOpts - Options or a string document path.
62
+ * @param handler - Event handler which is run every time a Firestore create, update, or delete occurs.
63
+ */
64
+ function onDocumentWritten(documentOrOpts, handler) {
65
+ return onChangedOperation(writtenEventType, documentOrOpts, handler);
66
+ }
67
+ /**
68
+ * Event handler that triggers when a document is created, updated, or deleted in Firestore.
69
+ * This trigger also provides the authentication context of the principal who triggered the event.
70
+ *
71
+ * @param opts - Options or a string document path.
72
+ * @param handler - Event handler which is run every time a Firestore create, update, or delete occurs.
73
+ */
74
+ function onDocumentWrittenWithAuthContext(documentOrOpts, handler) {
75
+ return onChangedOperation(writtenEventWithAuthContextType, documentOrOpts, handler);
76
+ }
77
+ /**
78
+ * Event handler that triggers when a document is created in Firestore.
79
+ *
80
+ * @param documentOrOpts - Options or a string document path.
81
+ * @param handler - Event handler which is run every time a Firestore create occurs.
82
+ */
83
+ function onDocumentCreated(documentOrOpts, handler) {
84
+ return onOperation(createdEventType, documentOrOpts, handler);
85
+ }
86
+ /**
87
+ * Event handler that triggers when a document is created in Firestore.
88
+ *
89
+ * @param documentOrOpts - Options or a string document path.
90
+ * @param handler - Event handler which is run every time a Firestore create occurs.
91
+ */
92
+ function onDocumentCreatedWithAuthContext(documentOrOpts, handler) {
93
+ return onOperation(createdEventWithAuthContextType, documentOrOpts, handler);
94
+ }
95
+ /**
96
+ * Event handler that triggers when a document is updated in Firestore.
97
+ *
98
+ * @param documentOrOpts - Options or a string document path.
99
+ * @param handler - Event handler which is run every time a Firestore update occurs.
100
+ */
101
+ function onDocumentUpdated(documentOrOpts, handler) {
102
+ return onChangedOperation(updatedEventType, documentOrOpts, handler);
103
+ }
104
+ /**
105
+ * Event handler that triggers when a document is updated in Firestore.
106
+ *
107
+ * @param documentOrOpts - Options or a string document path.
108
+ * @param handler - Event handler which is run every time a Firestore update occurs.
109
+ */
110
+ function onDocumentUpdatedWithAuthContext(documentOrOpts, handler) {
111
+ return onChangedOperation(updatedEventWithAuthContextType, documentOrOpts, handler);
112
+ }
113
+ /**
114
+ * Event handler that triggers when a document is deleted in Firestore.
115
+ *
116
+ * @param documentOrOpts - Options or a string document path.
117
+ * @param handler - Event handler which is run every time a Firestore delete occurs.
118
+ */
119
+ function onDocumentDeleted(documentOrOpts, handler) {
120
+ return onOperation(deletedEventType, documentOrOpts, handler);
121
+ }
122
+ /**
123
+ * Event handler that triggers when a document is deleted in Firestore.
124
+ *
125
+ * @param documentOrOpts - Options or a string document path.
126
+ * @param handler - Event handler which is run every time a Firestore delete occurs.
127
+ */
128
+ function onDocumentDeletedWithAuthContext(documentOrOpts, handler) {
129
+ return onOperation(deletedEventWithAuthContextType, documentOrOpts, handler);
130
+ }
131
+ /** @internal */
132
+ function getOpts(documentOrOpts) {
133
+ let document;
134
+ let database;
135
+ let namespace;
136
+ let opts;
137
+ if (typeof documentOrOpts === "string") {
138
+ document = normalizePath(documentOrOpts);
139
+ database = "(default)";
140
+ namespace = "(default)";
141
+ opts = {};
142
+ } else {
143
+ document = typeof documentOrOpts.document === "string" ? normalizePath(documentOrOpts.document) : documentOrOpts.document;
144
+ database = documentOrOpts.database || "(default)";
145
+ namespace = documentOrOpts.namespace || "(default)";
146
+ opts = { ...documentOrOpts };
147
+ delete opts.document;
148
+ delete opts.database;
149
+ delete opts.namespace;
150
+ }
151
+ return {
152
+ document,
153
+ database,
154
+ namespace,
155
+ opts
156
+ };
157
+ }
158
+ /** @hidden */
159
+ function getPath(event) {
160
+ return `projects/${event.project}/databases/${event.database}/documents/${event.document}`;
161
+ }
162
+ /** @internal */
163
+ function createSnapshot(event) {
164
+ if (event.datacontenttype?.includes("application/protobuf") || Buffer.isBuffer(event.data)) {
165
+ return createSnapshotFromProtobuf(event.data, getPath(event), event.database);
166
+ } else if (event.datacontenttype?.includes("application/json")) {
167
+ return createSnapshotFromJson(event.data, event.source, event.data.value?.createTime, event.data.value?.updateTime, event.database);
168
+ } else {
169
+ error(`Cannot determine payload type, datacontenttype is ${event.datacontenttype}, failing out.`);
170
+ throw Error("Error: Cannot parse event payload.");
171
+ }
172
+ }
173
+ /** @internal */
174
+ function createBeforeSnapshot(event) {
175
+ if (event.datacontenttype?.includes("application/protobuf") || Buffer.isBuffer(event.data)) {
176
+ return createBeforeSnapshotFromProtobuf(event.data, getPath(event), event.database);
177
+ } else if (event.datacontenttype?.includes("application/json")) {
178
+ return createBeforeSnapshotFromJson(event.data, event.source, event.data.oldValue?.createTime, event.data.oldValue?.updateTime, event.database);
179
+ } else {
180
+ error(`Cannot determine payload type, datacontenttype is ${event.datacontenttype}, failing out.`);
181
+ throw Error("Error: Cannot parse event payload.");
182
+ }
183
+ }
184
+ /** @internal */
185
+ function makeParams(document, documentPattern) {
186
+ return { ...documentPattern.extractMatches(document) };
187
+ }
188
+ /** @internal */
189
+ function makeFirestoreEvent(eventType, event, params) {
190
+ const data = event.data ? eventType === createdEventType || eventType === createdEventWithAuthContextType ? createSnapshot(event) : createBeforeSnapshot(event) : undefined;
191
+ const firestoreEvent = {
192
+ ...event,
193
+ params,
194
+ data
195
+ };
196
+ delete firestoreEvent.datacontenttype;
197
+ delete firestoreEvent.dataschema;
198
+ if ("authtype" in event) {
199
+ const eventWithAuth = {
200
+ ...firestoreEvent,
201
+ authType: event.authtype,
202
+ authId: event.authid
203
+ };
204
+ delete eventWithAuth.authtype;
205
+ delete eventWithAuth.authid;
206
+ return eventWithAuth;
207
+ }
208
+ return firestoreEvent;
209
+ }
210
+ /** @internal */
211
+ function makeChangedFirestoreEvent(event, params) {
212
+ const data = event.data ? Change.fromObjects(createBeforeSnapshot(event), createSnapshot(event)) : undefined;
213
+ const firestoreEvent = {
214
+ ...event,
215
+ params,
216
+ data
217
+ };
218
+ delete firestoreEvent.datacontenttype;
219
+ delete firestoreEvent.dataschema;
220
+ if ("authtype" in event) {
221
+ const eventWithAuth = {
222
+ ...firestoreEvent,
223
+ authType: event.authtype,
224
+ authId: event.authid
225
+ };
226
+ delete eventWithAuth.authtype;
227
+ delete eventWithAuth.authid;
228
+ return eventWithAuth;
229
+ }
230
+ return firestoreEvent;
231
+ }
232
+ /** @internal */
233
+ function makeEndpoint(eventType, opts, document, database, namespace) {
234
+ const baseOpts = optionsToEndpoint(getGlobalOptions());
235
+ const specificOpts = optionsToEndpoint(opts);
236
+ const eventFilters = {
237
+ database,
238
+ namespace
239
+ };
240
+ const eventFilterPathPatterns = {};
241
+ const maybePattern = typeof document === "string" ? new PathPattern(document).hasWildcards() : true;
242
+ if (maybePattern) {
243
+ eventFilterPathPatterns.document = document;
244
+ } else {
245
+ eventFilters.document = document;
246
+ }
247
+ return {
248
+ ...initV2Endpoint(getGlobalOptions(), opts),
249
+ platform: "gcfv2",
250
+ ...baseOpts,
251
+ ...specificOpts,
252
+ labels: {
253
+ ...baseOpts?.labels,
254
+ ...specificOpts?.labels
255
+ },
256
+ eventTrigger: {
257
+ eventType,
258
+ eventFilters,
259
+ eventFilterPathPatterns,
260
+ retry: opts.retry ?? false
261
+ }
262
+ };
263
+ }
264
+ /** @internal */
265
+ function onOperation(eventType, documentOrOpts, handler) {
266
+ const { document, database, namespace, opts } = getOpts(documentOrOpts);
267
+ const func = (raw) => {
268
+ const event = raw;
269
+ const documentPattern = new PathPattern(typeof document === "string" ? document : document.value());
270
+ const params = makeParams(event.document, documentPattern);
271
+ const firestoreEvent = makeFirestoreEvent(eventType, event, params);
272
+ return wrapTraceContext(withInit(handler))(firestoreEvent);
273
+ };
274
+ func.run = handler;
275
+ func.__endpoint = makeEndpoint(eventType, opts, document, database, namespace);
276
+ return func;
277
+ }
278
+ /** @internal */
279
+ function onChangedOperation(eventType, documentOrOpts, handler) {
280
+ const { document, database, namespace, opts } = getOpts(documentOrOpts);
281
+ const func = (raw) => {
282
+ const event = raw;
283
+ const documentPattern = new PathPattern(typeof document === "string" ? document : document.value());
284
+ const params = makeParams(event.document, documentPattern);
285
+ const firestoreEvent = makeChangedFirestoreEvent(event, params);
286
+ return wrapTraceContext(withInit(handler))(firestoreEvent);
287
+ };
288
+ func.run = handler;
289
+ func.__endpoint = makeEndpoint(eventType, opts, document, database, namespace);
290
+ return func;
291
+ }
292
+
293
+ //#endregion
294
+ export { Change, createBeforeSnapshot, createSnapshot, createdEventType, createdEventWithAuthContextType, deletedEventType, deletedEventWithAuthContextType, firestore_exports, getOpts, makeChangedFirestoreEvent, makeEndpoint, makeFirestoreEvent, makeParams, onChangedOperation, onDocumentCreated, onDocumentCreatedWithAuthContext, onDocumentDeleted, onDocumentDeletedWithAuthContext, onDocumentUpdated, onDocumentUpdatedWithAuthContext, onDocumentWritten, onDocumentWrittenWithAuthContext, onOperation, updatedEventType, updatedEventWithAuthContextType, writtenEventType, writtenEventWithAuthContextType };