Skip to content

Commit 9c89065

Browse files
authored
feat: Exposed Rules APIs from firebase-admin/security-rules entry point (#1156)
1 parent 4e019f1 commit 9c89065

11 files changed

+263
-243
lines changed

etc/firebase-admin.api.md

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -736,43 +736,30 @@ export namespace remoteConfig {
736736
export const SDK_VERSION: string;
737737

738738
// @public
739-
export function securityRules(app?: app.App): securityRules.SecurityRules;
739+
export function securityRules(app?: App): securityRules.SecurityRules;
740740

741741
// @public (undocumented)
742742
export namespace securityRules {
743-
export interface Ruleset extends RulesetMetadata {
744-
// (undocumented)
745-
readonly source: RulesFile[];
746-
}
747-
export interface RulesetMetadata {
748-
readonly createTime: string;
749-
readonly name: string;
750-
}
751-
export interface RulesetMetadataList {
752-
readonly nextPageToken?: string;
753-
readonly rulesets: RulesetMetadata[];
754-
}
755-
export interface RulesFile {
756-
// (undocumented)
757-
readonly content: string;
758-
// (undocumented)
759-
readonly name: string;
760-
}
761-
export interface SecurityRules {
762-
// (undocumented)
763-
app: app.App;
764-
createRuleset(file: RulesFile): Promise<Ruleset>;
765-
createRulesFileFromSource(name: string, source: string | Buffer): RulesFile;
766-
deleteRuleset(name: string): Promise<void>;
767-
getFirestoreRuleset(): Promise<Ruleset>;
768-
getRuleset(name: string): Promise<Ruleset>;
769-
getStorageRuleset(bucket?: string): Promise<Ruleset>;
770-
listRulesetMetadata(pageSize?: number, nextPageToken?: string): Promise<RulesetMetadataList>;
771-
releaseFirestoreRuleset(ruleset: string | RulesetMetadata): Promise<void>;
772-
releaseFirestoreRulesetFromSource(source: string | Buffer): Promise<Ruleset>;
773-
releaseStorageRuleset(ruleset: string | RulesetMetadata, bucket?: string): Promise<void>;
774-
releaseStorageRulesetFromSource(source: string | Buffer, bucket?: string): Promise<Ruleset>;
775-
}
743+
// Warning: (ae-forgotten-export) The symbol "Ruleset" needs to be exported by the entry point default-namespace.d.ts
744+
//
745+
// (undocumented)
746+
export type Ruleset = Ruleset;
747+
// Warning: (ae-forgotten-export) The symbol "RulesetMetadata" needs to be exported by the entry point default-namespace.d.ts
748+
//
749+
// (undocumented)
750+
export type RulesetMetadata = RulesetMetadata;
751+
// Warning: (ae-forgotten-export) The symbol "RulesetMetadataList" needs to be exported by the entry point default-namespace.d.ts
752+
//
753+
// (undocumented)
754+
export type RulesetMetadataList = RulesetMetadataList;
755+
// Warning: (ae-forgotten-export) The symbol "RulesFile" needs to be exported by the entry point default-namespace.d.ts
756+
//
757+
// (undocumented)
758+
export type RulesFile = RulesFile;
759+
// Warning: (ae-forgotten-export) The symbol "SecurityRules" needs to be exported by the entry point default-namespace.d.ts
760+
//
761+
// (undocumented)
762+
export type SecurityRules = SecurityRules;
776763
}
777764

778765
// @public (undocumented)
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
## API Report File for "firebase-admin.security-rules"
2+
3+
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4+
5+
```ts
6+
7+
import { Agent } from 'http';
8+
9+
// Warning: (ae-forgotten-export) The symbol "App" needs to be exported by the entry point index.d.ts
10+
//
11+
// @public (undocumented)
12+
export function getSecurityRules(app?: App): SecurityRules;
13+
14+
// @public
15+
export class Ruleset {
16+
// (undocumented)
17+
readonly createTime: string;
18+
// (undocumented)
19+
readonly name: string;
20+
// (undocumented)
21+
readonly source: RulesFile[];
22+
}
23+
24+
// @public
25+
export interface RulesetMetadata {
26+
readonly createTime: string;
27+
readonly name: string;
28+
}
29+
30+
// @public (undocumented)
31+
export class RulesetMetadataList {
32+
// (undocumented)
33+
readonly nextPageToken?: string;
34+
// (undocumented)
35+
readonly rulesets: RulesetMetadata[];
36+
}
37+
38+
// @public
39+
export interface RulesFile {
40+
// (undocumented)
41+
readonly content: string;
42+
// (undocumented)
43+
readonly name: string;
44+
}
45+
46+
// @public
47+
export class SecurityRules {
48+
// (undocumented)
49+
readonly app: App;
50+
createRuleset(file: RulesFile): Promise<Ruleset>;
51+
createRulesFileFromSource(name: string, source: string | Buffer): RulesFile;
52+
deleteRuleset(name: string): Promise<void>;
53+
getFirestoreRuleset(): Promise<Ruleset>;
54+
getRuleset(name: string): Promise<Ruleset>;
55+
getStorageRuleset(bucket?: string): Promise<Ruleset>;
56+
listRulesetMetadata(pageSize?: number, nextPageToken?: string): Promise<RulesetMetadataList>;
57+
releaseFirestoreRuleset(ruleset: string | RulesetMetadata): Promise<void>;
58+
releaseFirestoreRulesetFromSource(source: string | Buffer): Promise<Ruleset>;
59+
releaseStorageRuleset(ruleset: string | RulesetMetadata, bucket?: string): Promise<void>;
60+
releaseStorageRulesetFromSource(source: string | Buffer, bucket?: string): Promise<Ruleset>;
61+
}
62+
63+
// @public
64+
export function securityRules(app?: App): securityRules.SecurityRules;
65+
66+
// @public (undocumented)
67+
export namespace securityRules {
68+
// (undocumented)
69+
export type Ruleset = Ruleset;
70+
// (undocumented)
71+
export type RulesetMetadata = RulesetMetadata;
72+
// (undocumented)
73+
export type RulesetMetadataList = RulesetMetadataList;
74+
// (undocumented)
75+
export type RulesFile = RulesFile;
76+
// (undocumented)
77+
export type SecurityRules = SecurityRules;
78+
}
79+
80+
81+
// (No @packageDocumentation comment for this package)
82+
83+
```

generate-reports.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ const entryPoints = {
4040
'firebase-admin/firestore': './lib/firestore/index.d.ts',
4141
'firebase-admin/instance-id': './lib/instance-id/index.d.ts',
4242
'firebase-admin/messaging': './lib/messaging/index.d.ts',
43+
'firebase-admin/security-rules': './lib/security-rules/index.d.ts',
4344
'firebase-admin/remote-config': './lib/remote-config/index.d.ts',
4445
};
4546

gulpfile.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ gulp.task('compile', function() {
9393
'lib/firestore/*.d.ts',
9494
'lib/instance-id/*.d.ts',
9595
'lib/messaging/*.d.ts',
96+
'lib/security-rules/*.d.ts',
9697
'lib/remote-config/*.d.ts',
9798
'!lib/utils/index.d.ts',
9899
];

src/app/firebase-app.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import { Database } from '../database/index';
3131
import { Firestore } from '../firestore/index';
3232
import { InstanceId } from '../instance-id/index';
3333
import { ProjectManagement } from '../project-management/project-management';
34-
import { SecurityRules } from '../security-rules/security-rules';
34+
import { SecurityRules } from '../security-rules/index';
3535
import { RemoteConfig } from '../remote-config/index';
3636

3737
/**
@@ -356,11 +356,8 @@ export class FirebaseApp implements app.App {
356356
* @return The SecurityRules service instance of this app.
357357
*/
358358
public securityRules(): SecurityRules {
359-
return this.ensureService_('security-rules', () => {
360-
const securityRulesService: typeof SecurityRules =
361-
require('../security-rules/security-rules').SecurityRules;
362-
return new securityRulesService(this);
363-
});
359+
const fn = require('../security-rules/index').getSecurityRules;
360+
return fn(this);
364361
}
365362

366363
/**

0 commit comments

Comments
 (0)