firebase-admin-edge 3.0.1 → 3.1.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 (68) hide show
  1. package/README.md +17 -14
  2. package/THIRD_PARTY_NOTICES.md +62 -0
  3. package/dist/auth/auth-endpoint-errors.d.ts.map +1 -1
  4. package/dist/auth/auth-endpoint-errors.js +25 -6
  5. package/dist/auth/auth-endpoint-errors.js.map +1 -1
  6. package/dist/auth/auth-error-codes.d.ts +4 -0
  7. package/dist/auth/auth-error-codes.d.ts.map +1 -1
  8. package/dist/auth/auth-error-codes.js +4 -0
  9. package/dist/auth/auth-error-codes.js.map +1 -1
  10. package/dist/auth/firebase-admin-auth.d.ts +8 -0
  11. package/dist/auth/firebase-admin-auth.d.ts.map +1 -1
  12. package/dist/auth/firebase-admin-auth.js +20 -1
  13. package/dist/auth/firebase-admin-auth.js.map +1 -1
  14. package/dist/auth/firebase-auth-endpoints.d.ts +9 -0
  15. package/dist/auth/firebase-auth-endpoints.d.ts.map +1 -1
  16. package/dist/auth/firebase-auth-endpoints.js +43 -0
  17. package/dist/auth/firebase-auth-endpoints.js.map +1 -1
  18. package/dist/auth/identity-providers.d.ts +24 -0
  19. package/dist/auth/identity-providers.d.ts.map +1 -0
  20. package/dist/auth/identity-providers.js +51 -0
  21. package/dist/auth/identity-providers.js.map +1 -0
  22. package/dist/auth/identity.d.ts +20 -0
  23. package/dist/auth/identity.d.ts.map +1 -1
  24. package/dist/auth/identity.js +65 -0
  25. package/dist/auth/identity.js.map +1 -1
  26. package/dist/firebase-edge-server.d.ts +2 -0
  27. package/dist/firebase-edge-server.d.ts.map +1 -1
  28. package/dist/firebase-edge-server.js +7 -0
  29. package/dist/firebase-edge-server.js.map +1 -1
  30. package/dist/index.d.ts +1 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +1 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/remote-config/condition-evaluator.d.ts +6 -0
  35. package/dist/remote-config/condition-evaluator.d.ts.map +1 -0
  36. package/dist/remote-config/condition-evaluator.js +122 -0
  37. package/dist/remote-config/condition-evaluator.js.map +1 -0
  38. package/dist/remote-config/remote-config-endpoints.d.ts +22 -0
  39. package/dist/remote-config/remote-config-endpoints.d.ts.map +1 -0
  40. package/dist/remote-config/remote-config-endpoints.js +161 -0
  41. package/dist/remote-config/remote-config-endpoints.js.map +1 -0
  42. package/dist/remote-config/remote-config-fetch-response.d.ts +8 -0
  43. package/dist/remote-config/remote-config-fetch-response.d.ts.map +1 -0
  44. package/dist/remote-config/remote-config-fetch-response.js +26 -0
  45. package/dist/remote-config/remote-config-fetch-response.js.map +1 -0
  46. package/dist/remote-config/remote-config-results.d.ts +15 -0
  47. package/dist/remote-config/remote-config-results.d.ts.map +1 -0
  48. package/dist/remote-config/remote-config-results.js +26 -0
  49. package/dist/remote-config/remote-config-results.js.map +1 -0
  50. package/dist/remote-config/remote-config-template.d.ts +20 -0
  51. package/dist/remote-config/remote-config-template.d.ts.map +1 -0
  52. package/dist/remote-config/remote-config-template.js +129 -0
  53. package/dist/remote-config/remote-config-template.js.map +1 -0
  54. package/dist/remote-config/remote-config-types.d.ts +807 -0
  55. package/dist/remote-config/remote-config-types.d.ts.map +1 -0
  56. package/dist/remote-config/remote-config-types.js +119 -0
  57. package/dist/remote-config/remote-config-types.js.map +1 -0
  58. package/dist/remote-config/remote-config.d.ts +34 -0
  59. package/dist/remote-config/remote-config.d.ts.map +1 -0
  60. package/dist/remote-config/remote-config.js +112 -0
  61. package/dist/remote-config/remote-config.js.map +1 -0
  62. package/dist/remote-config/server-template.d.ts +33 -0
  63. package/dist/remote-config/server-template.d.ts.map +1 -0
  64. package/dist/remote-config/server-template.js +145 -0
  65. package/dist/remote-config/server-template.js.map +1 -0
  66. package/dist/rest-fetch.d.ts +1 -1
  67. package/dist/rest-fetch.d.ts.map +1 -1
  68. package/package.json +3 -2
@@ -0,0 +1,129 @@
1
+ import { invalidRemoteConfig, isRemoteConfigObject } from './remote-config-results.js';
2
+ /** @internal Validate and normalize version metadata without losing int64 precision. */
3
+ export function normalizeVersion(input) {
4
+ if (!isRemoteConfigObject(input)) {
5
+ invalidRemoteConfig('Version must be an object.');
6
+ }
7
+ const version = { ...input };
8
+ for (const key of ['versionNumber', 'rollbackSource']) {
9
+ if (version[key] !== undefined) {
10
+ version[key] = validateVersionNumber(version[key]);
11
+ }
12
+ }
13
+ if (version.updateTime !== undefined) {
14
+ if (typeof version.updateTime !== 'string' ||
15
+ !version.updateTime.trim()) {
16
+ invalidRemoteConfig('Invalid version update time.');
17
+ }
18
+ const date = new Date(version.updateTime);
19
+ if (!Number.isFinite(date.getTime())) {
20
+ invalidRemoteConfig('Invalid version update time.');
21
+ }
22
+ version.updateTime = date.toUTCString();
23
+ }
24
+ if (version.updateUser !== undefined &&
25
+ !isRemoteConfigObject(version.updateUser)) {
26
+ invalidRemoteConfig('Version updateUser must be an object.');
27
+ }
28
+ if (version.isLegacy !== undefined &&
29
+ typeof version.isLegacy !== 'boolean') {
30
+ invalidRemoteConfig('Version isLegacy must be a boolean.');
31
+ }
32
+ for (const key of ['description', 'updateOrigin', 'updateType']) {
33
+ if (version[key] !== undefined && typeof version[key] !== 'string') {
34
+ invalidRemoteConfig(`Version ${key} must be a string.`);
35
+ }
36
+ }
37
+ return Object.assign(version, {
38
+ toJSON() {
39
+ const { toJSON, ...data } = this;
40
+ return data;
41
+ }
42
+ });
43
+ }
44
+ /** @internal */
45
+ export function validateVersionNumber(value) {
46
+ if ((typeof value !== 'string' && typeof value !== 'number') ||
47
+ (typeof value === 'number' && !Number.isSafeInteger(value)) ||
48
+ !/^[1-9]\d*$/.test(String(value))) {
49
+ invalidRemoteConfig('Version number must be a positive integer or int64 string.');
50
+ }
51
+ if (BigInt(value) > 9223372036854775807n) {
52
+ invalidRemoteConfig('Version number exceeds int64 range.');
53
+ }
54
+ return String(value);
55
+ }
56
+ /** @internal */
57
+ export function normalizeTemplate(input) {
58
+ if (!isRemoteConfigObject(input) ||
59
+ typeof input.etag !== 'string' ||
60
+ !input.etag.trim()) {
61
+ invalidRemoteConfig('Template must have a non-empty ETag.');
62
+ }
63
+ for (const key of ['parameters', 'parameterGroups']) {
64
+ if (input[key] !== undefined && !isRemoteConfigObject(input[key])) {
65
+ invalidRemoteConfig(`${key} must be an object.`);
66
+ }
67
+ }
68
+ if (input.conditions !== undefined && !Array.isArray(input.conditions)) {
69
+ invalidRemoteConfig('conditions must be an array.');
70
+ }
71
+ const template = JSON.parse(JSON.stringify(input));
72
+ template.parameters ??= {};
73
+ template.conditions ??= [];
74
+ for (const parameter of [
75
+ ...Object.values(template.parameters),
76
+ ...Object.values(input.parameterGroups ?? {}).flatMap((group) => Object.values(group.parameters ?? {}))
77
+ ]) {
78
+ if (!isRemoteConfigObject(parameter)) {
79
+ invalidRemoteConfig('Each parameter must be an object.');
80
+ }
81
+ for (const value of Object.values(parameter.conditionalValues ?? {})) {
82
+ if (!('experimentValue' in value)) {
83
+ continue;
84
+ }
85
+ const { exposurePercent } = value.experimentValue;
86
+ if (exposurePercent === undefined) {
87
+ continue;
88
+ }
89
+ if (typeof exposurePercent !== 'number' ||
90
+ !Number.isFinite(exposurePercent) ||
91
+ exposurePercent < 0 ||
92
+ exposurePercent > 100) {
93
+ invalidRemoteConfig('Experiment exposure percent must be between 0 and 100.');
94
+ }
95
+ }
96
+ }
97
+ if (input.version !== undefined) {
98
+ template.version = normalizeVersion(input.version);
99
+ }
100
+ return template;
101
+ }
102
+ /** A mutable client template with a read-only ETag and JSON serialization. */
103
+ export class RemoteConfigTemplate {
104
+ parameters;
105
+ parameterGroups;
106
+ conditions;
107
+ version;
108
+ etag;
109
+ constructor(input) {
110
+ const template = normalizeTemplate(input);
111
+ this.etag = template.etag;
112
+ this.parameters = template.parameters;
113
+ this.parameterGroups = template.parameterGroups ?? {};
114
+ this.conditions = template.conditions;
115
+ this.version = template.version;
116
+ }
117
+ toJSON() {
118
+ return {
119
+ parameters: this.parameters,
120
+ parameterGroups: this.parameterGroups,
121
+ conditions: this.conditions,
122
+ etag: this.etag,
123
+ version: this.version
124
+ ? normalizeVersion(this.version).toJSON()
125
+ : undefined
126
+ };
127
+ }
128
+ }
129
+ //# sourceMappingURL=remote-config-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-config-template.js","sourceRoot":"","sources":["../../src/remote-config/remote-config-template.ts"],"names":[],"mappings":"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"}