@dereekb/firebase 13.12.0 → 13.12.1

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.
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "name": "@dereekb/firebase/eslint",
3
- "version": "13.12.0",
3
+ "version": "13.12.1",
4
4
  "peerDependencies": {
5
- "@marcbachmann/cel-js": "^7.6.1",
6
5
  "@typescript-eslint/utils": "8.59.3"
7
6
  },
8
7
  "devDependencies": {
9
- "@dereekb/util": "13.12.0",
8
+ "@dereekb/util": "13.12.1",
10
9
  "@marcbachmann/cel-js": "^7.6.1",
11
10
  "@typescript-eslint/parser": "8.59.3",
12
11
  "eslint": "10.4.0"
@@ -4,7 +4,8 @@ export { FIREBASE_REQUIRE_DBX_MODEL_FIREBASE_INDEX_COMPANION_TAGS_RULE, type Fir
4
4
  export { FIREBASE_REQUIRE_DBX_MODEL_FIREBASE_INDEX_VALID_DISPATCHER_RULE, type FirebaseRequireDbxModelFirebaseIndexValidDispatcherRuleOptions, type FirebaseRequireDbxModelFirebaseIndexValidDispatcherRuleDefinition } from './require-dbx-model-firebase-index-valid-dispatcher.rule';
5
5
  export { FIREBASE_REQUIRE_FIRESTORE_CONSTRAINT_TYPE_PARAMETER_RULE, type FirebaseRequireFirestoreConstraintTypeParameterRuleOptions, type FirebaseRequireFirestoreConstraintTypeParameterRuleDefinition } from './require-firestore-constraint-type-parameter.rule';
6
6
  export { FIREBASE_REQUIRE_COMPLETE_CRUD_FUNCTION_CONFIG_MAP_RULE, DEFAULT_CRUD_VERB_NAMES, MODEL_FIREBASE_CRUD_FUNCTION_CONFIG_MAP_TYPE_NAME, type FirebaseRequireCompleteCrudFunctionConfigMapRuleOptions, type FirebaseRequireCompleteCrudFunctionConfigMapRuleDefinition } from './require-complete-crud-function-config-map.rule';
7
- export { FIREBASE_REQUIRE_API_DETAILS_FOR_CRUD_FUNCTION_RULE, DEFAULT_CRUD_FUNCTION_TYPE_VERBS, DEFAULT_API_DETAILS_FACTORY_NAME, type FirebaseRequireApiDetailsForCrudFunctionRuleOptions, type FirebaseRequireApiDetailsForCrudFunctionRuleDefinition } from './require-api-details-for-crud-function.rule';
7
+ export { FIREBASE_REQUIRE_API_DETAILS_FOR_CRUD_FUNCTION_RULE, type FirebaseRequireApiDetailsForCrudFunctionRuleOptions, type FirebaseRequireApiDetailsForCrudFunctionRuleDefinition } from './require-api-details-for-crud-function.rule';
8
+ export { FIREBASE_REQUIRE_INPUT_TYPE_FOR_API_DETAILS_RULE, type FirebaseRequireInputTypeForApiDetailsRuleOptions, type FirebaseRequireInputTypeForApiDetailsRuleDefinition } from './require-input-type-for-api-details.rule';
8
9
  export { FIREBASE_REQUIRE_STORAGEFILE_POLICY_MATCHES_RULES_RULE, DEFAULT_STORAGE_FILE_UPLOAD_POLICY_TYPE_NAME, DEFAULT_STORAGE_RULES_FILENAME, type FirebaseRequireStorageFilePolicyMatchesRulesRuleOptions, type FirebaseRequireStorageFilePolicyMatchesRulesRuleDefinition } from './require-storagefile-policy-matches-rules.rule';
9
10
  export { FIREBASE_REQUIRE_FIRESTORE_RULE_FOR_SERVICE_MODEL_RULE, DEFAULT_FIRESTORE_RULES_FILENAME, DEFAULT_REGISTRY_FACTORY_CALL_NAME, DEFAULT_IDENTITY_FACTORY_NAME, DEFAULT_MODEL_SEARCH_ROOTS, type FirebaseRequireFirestoreRuleForServiceModelRuleOptions, type FirebaseRequireFirestoreRuleForServiceModelRuleDefinition, type VirtualModelIdentity } from './require-firestore-rule-for-service-model.rule';
10
11
  export { FIREBASE_REQUIRE_DBX_MODEL_SERVICE_FACTORY_TAG_RULE, FIREBASE_MODEL_SERVICE_FACTORY_NAME, FIREBASE_MODEL_SERVICE_FACTORY_MODULE, DBX_MODEL_SERVICE_FACTORY_TAG, type FirebaseRequireDbxModelServiceFactoryTagRuleOptions, type FirebaseRequireDbxModelServiceFactoryTagRuleDefinition } from './require-dbx-model-service-factory-tag.rule';
@@ -13,4 +14,4 @@ export { FIREBASE_REQUIRE_DBX_MODEL_COMPANION_TAGS_RULE, type FirebaseRequireDbx
13
14
  export { parseStorageRules, MIRRORS_POLICY_KEY_MARKER_REGEX, type ParsedRuleBranch, type ParsedStorageRulesBlock } from './storage-rules-parser';
14
15
  export { parseFirestoreRules, type ParsedFirestoreMatchBlock } from './firestore-rules-parser';
15
16
  export { FIREBASE_ESLINT_PLUGIN, firebaseESLintPlugin, type FirebaseEslintPlugin } from './plugin';
16
- export { DBX_MODEL_FIREBASE_INDEX_MARKER, DEFAULT_CONSTRAINT_FACTORY_NAMES, DEFAULT_INDEX_AFFECTING_CONSTRAINT_NAMES, DEFAULT_PAGINATION_CONSTRAINT_NAMES, FIREBASE_MODULE, QUERY_SUFFIX } from './util';
17
+ export { DBX_MODEL_FIREBASE_INDEX_MARKER, DEFAULT_CONSTRAINT_FACTORY_NAMES, DEFAULT_INDEX_AFFECTING_CONSTRAINT_NAMES, DEFAULT_PAGINATION_CONSTRAINT_NAMES, FIREBASE_MODULE, QUERY_SUFFIX, DEFAULT_CRUD_FUNCTION_TYPE_VERBS, DEFAULT_API_DETAILS_FACTORY_NAME, INPUT_TYPE_PROPERTY_NAME, API_DETAILS_IMPORT_MODULE } from './util';
@@ -5,6 +5,7 @@ import { FIREBASE_REQUIRE_DBX_MODEL_FIREBASE_INDEX_VALID_DISPATCHER_RULE } from
5
5
  import { FIREBASE_REQUIRE_FIRESTORE_CONSTRAINT_TYPE_PARAMETER_RULE } from './require-firestore-constraint-type-parameter.rule';
6
6
  import { FIREBASE_REQUIRE_COMPLETE_CRUD_FUNCTION_CONFIG_MAP_RULE } from './require-complete-crud-function-config-map.rule';
7
7
  import { FIREBASE_REQUIRE_API_DETAILS_FOR_CRUD_FUNCTION_RULE } from './require-api-details-for-crud-function.rule';
8
+ import { FIREBASE_REQUIRE_INPUT_TYPE_FOR_API_DETAILS_RULE } from './require-input-type-for-api-details.rule';
8
9
  import { FIREBASE_REQUIRE_STORAGEFILE_POLICY_MATCHES_RULES_RULE } from './require-storagefile-policy-matches-rules.rule';
9
10
  import { FIREBASE_REQUIRE_FIRESTORE_RULE_FOR_SERVICE_MODEL_RULE } from './require-firestore-rule-for-service-model.rule';
10
11
  import { FIREBASE_REQUIRE_DBX_MODEL_SERVICE_FACTORY_TAG_RULE } from './require-dbx-model-service-factory-tag.rule';
@@ -22,6 +23,7 @@ export interface FirebaseEslintPlugin {
22
23
  readonly 'require-firestore-constraint-type-parameter': typeof FIREBASE_REQUIRE_FIRESTORE_CONSTRAINT_TYPE_PARAMETER_RULE;
23
24
  readonly 'require-complete-crud-function-config-map': typeof FIREBASE_REQUIRE_COMPLETE_CRUD_FUNCTION_CONFIG_MAP_RULE;
24
25
  readonly 'require-api-details-for-crud-function': typeof FIREBASE_REQUIRE_API_DETAILS_FOR_CRUD_FUNCTION_RULE;
26
+ readonly 'require-input-type-for-api-details': typeof FIREBASE_REQUIRE_INPUT_TYPE_FOR_API_DETAILS_RULE;
25
27
  readonly 'require-storagefile-policy-matches-rules': typeof FIREBASE_REQUIRE_STORAGEFILE_POLICY_MATCHES_RULES_RULE;
26
28
  readonly 'require-firestore-rule-for-service-model': typeof FIREBASE_REQUIRE_FIRESTORE_RULE_FOR_SERVICE_MODEL_RULE;
27
29
  readonly 'require-dbx-model-service-factory-tag': typeof FIREBASE_REQUIRE_DBX_MODEL_SERVICE_FACTORY_TAG_RULE;
@@ -1,19 +1,4 @@
1
1
  import { type AstNode } from './util';
2
- /**
3
- * Default CRUD verb names that combine with the `ModelFunction` suffix to form a type-name
4
- * pattern this rule treats as a CRUD function declaration (e.g. `OnCallCreateModelFunction`,
5
- * `DemoUpdateModelFunction`).
6
- *
7
- * Mirrors the verbs supported by `ModelFirebaseCrudFunctionConfigMap` — see
8
- * `packages/firebase/src/lib/client/function/model.function.factory.ts`.
9
- */
10
- export declare const DEFAULT_CRUD_FUNCTION_TYPE_VERBS: readonly string[];
11
- /**
12
- * Default factory function name that wraps CRUD function declarations and attaches the
13
- * `_apiDetails` metadata (`inputType`, `outputType`, `mcp.visibility`, `analytics`) consumed
14
- * by the MCP manifest builder. Defined in `packages/firebase-server/src/lib/nest/model/api.details.ts`.
15
- */
16
- export declare const DEFAULT_API_DETAILS_FACTORY_NAME: string;
17
2
  /**
18
3
  * Options for the require-api-details-for-crud-function rule.
19
4
  */
@@ -38,7 +23,7 @@ export interface FirebaseRequireApiDetailsForCrudFunctionRuleOptions {
38
23
  export interface FirebaseRequireApiDetailsForCrudFunctionRuleDefinition {
39
24
  readonly meta: {
40
25
  readonly type: 'problem';
41
- readonly fixable: undefined;
26
+ readonly fixable: 'code';
42
27
  readonly docs: {
43
28
  readonly description: string;
44
29
  readonly recommended: boolean;
@@ -48,10 +33,12 @@ export interface FirebaseRequireApiDetailsForCrudFunctionRuleDefinition {
48
33
  };
49
34
  create(context: {
50
35
  options: FirebaseRequireApiDetailsForCrudFunctionRuleOptions[];
36
+ sourceCode: AstNode;
51
37
  report: (descriptor: {
52
38
  node: AstNode;
53
39
  messageId: string;
54
40
  data?: Record<string, string>;
41
+ fix?: (fixer: AstNode) => AstNode | AstNode[];
55
42
  }) => void;
56
43
  }): Record<string, (node: AstNode) => void>;
57
44
  }
@@ -69,6 +56,12 @@ export interface FirebaseRequireApiDetailsForCrudFunctionRuleDefinition {
69
56
  * initializer's `CallExpression` callee name. Type assertions (`as`, `<T>`) on the initializer
70
57
  * are unwrapped before the check.
71
58
  *
59
+ * Auto-fix: wraps the existing initializer as `withApiDetails({ fn: <initializer> })` (`inputType`
60
+ * is optional on the config, so the minimal wrap compiles) and — when the default factory is used
61
+ * and not already in scope — inserts `import { withApiDetails } from '@dereekb/firebase-server';`.
62
+ * The developer is still expected to add `inputType`; the companion `require-input-type-for-api-details`
63
+ * rule flags that follow-up where it matters.
64
+ *
72
65
  * @example
73
66
  * ```ts
74
67
  * // OK — wrapped, surfaces to MCP
@@ -76,7 +69,7 @@ export interface FirebaseRequireApiDetailsForCrudFunctionRuleDefinition {
76
69
  * inputType, fn: async (req) => ({})
77
70
  * });
78
71
  *
79
- * // WARN — missingApiDetails, never reaches MCP
72
+ * // WARN — missingApiDetails, never reaches MCP (auto-fix wraps it)
80
73
  * export const fooDelete: FooDeleteModelFunction<X> = async (req) => {};
81
74
  * ```
82
75
  */
@@ -0,0 +1,72 @@
1
+ import { type AstNode } from './util';
2
+ /**
3
+ * Options for the require-input-type-for-api-details rule.
4
+ */
5
+ export interface FirebaseRequireInputTypeForApiDetailsRuleOptions {
6
+ /**
7
+ * Verb fragments that pair with the `ModelFunction` suffix to identify a CRUD function
8
+ * type annotation. Defaults to {@link DEFAULT_CRUD_FUNCTION_TYPE_VERBS}.
9
+ */
10
+ readonly typeVerbs?: readonly string[];
11
+ /**
12
+ * Factory function name whose config object must declare `inputType`. Defaults to {@link DEFAULT_API_DETAILS_FACTORY_NAME}.
13
+ */
14
+ readonly factoryName?: string;
15
+ }
16
+ /**
17
+ * ESLint rule definition for require-input-type-for-api-details.
18
+ */
19
+ export interface FirebaseRequireInputTypeForApiDetailsRuleDefinition {
20
+ readonly meta: {
21
+ readonly type: 'problem';
22
+ readonly fixable: undefined;
23
+ readonly docs: {
24
+ readonly description: string;
25
+ readonly recommended: boolean;
26
+ };
27
+ readonly messages: Readonly<Record<string, string>>;
28
+ readonly schema: readonly object[];
29
+ };
30
+ create(context: {
31
+ options: FirebaseRequireInputTypeForApiDetailsRuleOptions[];
32
+ report: (descriptor: {
33
+ node: AstNode;
34
+ messageId: string;
35
+ data?: Record<string, string>;
36
+ }) => void;
37
+ }): Record<string, (node: AstNode) => void>;
38
+ }
39
+ /**
40
+ * ESLint rule that requires a CRUD function wrapped in `withApiDetails({ ... })` to declare an
41
+ * `inputType` on the config object. `inputType` drives the MCP tool input schema; without it the
42
+ * tool surfaces with no (or an auto-guessed) schema.
43
+ *
44
+ * The rule is purely syntactic and deliberately narrow to avoid false positives:
45
+ * - It only fires on declarators typed as a CRUD function (`On(?:Call)?<Verb>ModelFunction` or an
46
+ * app-side `<Verb>ModelFunction` alias) whose initializer is already a `withApiDetails(...)` call.
47
+ * The missing-wrapper case is owned by `require-api-details-for-crud-function`.
48
+ * - **Query** handlers are exempt — they consume standardized query/pagination params, not a
49
+ * per-handler input type.
50
+ * - Handlers whose input generic is empty (`{}`) or absent are exempt — there is no meaningful input
51
+ * schema to declare. (The input generic sits at index 1 for canonical `On...ModelFunction` names
52
+ * and index 0 for app-side aliases — a syntactic heuristic keyed on the `On` prefix.)
53
+ * - Configs built with a spread (`{ ...base, fn }`) are skipped because the spread's contents cannot
54
+ * be verified statically.
55
+ *
56
+ * There is no auto-fix (the rule cannot synthesize an `inputType` value). To intentionally omit
57
+ * `inputType`, use an inline `// eslint-disable-next-line` comment.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * // OK — declares inputType
62
+ * export const fooCreate: FooCreateModelFunction<CreateFooParams> = withApiDetails({
63
+ * inputType: createFooParamsType, fn: async (req) => ({})
64
+ * });
65
+ *
66
+ * // WARN — missingInputType (non-empty input generic, not a Query)
67
+ * export const fooUpdate: FooUpdateModelFunction<UpdateFooParams> = withApiDetails({
68
+ * fn: async (req) => {}
69
+ * });
70
+ * ```
71
+ */
72
+ export declare const FIREBASE_REQUIRE_INPUT_TYPE_FOR_API_DETAILS_RULE: FirebaseRequireInputTypeForApiDetailsRuleDefinition;
@@ -105,3 +105,143 @@ export declare function getFunctionName(node: AstNode): Maybe<string>;
105
105
  * @returns The node to attach a `context.report` location to.
106
106
  */
107
107
  export declare function getFunctionNameNode(node: AstNode): AstNode;
108
+ /**
109
+ * Default CRUD verb names that combine with the `ModelFunction` suffix to form a type-name
110
+ * pattern the api-details rules treat as a CRUD function declaration (e.g. `OnCallCreateModelFunction`,
111
+ * `DemoUpdateModelFunction`).
112
+ *
113
+ * Mirrors the verbs supported by `ModelFirebaseCrudFunctionConfigMap` — see
114
+ * `packages/firebase/src/lib/client/function/model.function.factory.ts`.
115
+ */
116
+ export declare const DEFAULT_CRUD_FUNCTION_TYPE_VERBS: readonly string[];
117
+ /**
118
+ * Default factory function name that wraps CRUD function declarations and attaches the
119
+ * `_apiDetails` metadata (`inputType`, `outputType`, `mcp.visibility`, `analytics`) consumed
120
+ * by the MCP manifest builder. Defined in `packages/firebase-server/src/lib/nest/model/api.details.ts`.
121
+ */
122
+ export declare const DEFAULT_API_DETAILS_FACTORY_NAME: string;
123
+ /**
124
+ * Property name on the `withApiDetails(...)` config object that declares the handler's input
125
+ * parameter type (consumed by the MCP manifest builder to generate the tool input schema).
126
+ */
127
+ export declare const INPUT_TYPE_PROPERTY_NAME: string;
128
+ /**
129
+ * Module the default api-details factory ({@link DEFAULT_API_DETAILS_FACTORY_NAME}) is exported
130
+ * from. Used by the require-api-details auto-fix to insert a missing import.
131
+ */
132
+ export declare const API_DETAILS_IMPORT_MODULE: string;
133
+ /**
134
+ * Unwraps `TSAsExpression` and `TSTypeAssertion` wrappers around an initializer so callers see the
135
+ * underlying expression (matches the helper in `require-complete-crud-function-config-map.rule.ts`).
136
+ *
137
+ * @param node - The AST node to unwrap.
138
+ * @returns The innermost wrapped expression, or `node` when no cast is present.
139
+ */
140
+ export declare function unwrapTypeAssertion(node: AstNode): AstNode;
141
+ /**
142
+ * Resolves the identifier name from a `TSTypeReference` annotation, when present.
143
+ *
144
+ * @param node - A `TSTypeReference` node (or anything else).
145
+ * @returns The identifier name when `node` is a TSTypeReference whose typeName is an Identifier; otherwise null.
146
+ */
147
+ export declare function typeReferenceTypeName(node: AstNode): Maybe<string>;
148
+ /**
149
+ * Resolves the type-argument nodes of a `TSTypeReference`, normalizing across `@typescript-eslint`
150
+ * versions (`typeArguments` in v6+, `typeParameters` in older releases).
151
+ *
152
+ * @param node - A `TSTypeReference` node (or anything else).
153
+ * @returns The generic argument nodes, or null when the reference has no type arguments.
154
+ */
155
+ export declare function typeReferenceTypeArguments(node: AstNode): Maybe<AstNode[]>;
156
+ /**
157
+ * Resolves the callee identifier name from a `CallExpression`, looking through both bare identifier
158
+ * callees (`withApiDetails(...)`) and member-expression callees (`api.withApiDetails(...)`).
159
+ *
160
+ * @param callee - The `CallExpression.callee` node.
161
+ * @returns The callee name when resolvable; otherwise null.
162
+ */
163
+ export declare function callExpressionCalleeName(callee: AstNode): Maybe<string>;
164
+ /**
165
+ * Determines whether the (already-unwrapped) initializer is a call to the configured api-details factory.
166
+ *
167
+ * @param initializer - The unwrapped initializer node.
168
+ * @param factoryName - The expected factory identifier name.
169
+ * @returns True when the initializer is a `CallExpression` whose callee resolves to `factoryName`.
170
+ */
171
+ export declare function isApiDetailsCall(initializer: AstNode, factoryName: string): boolean;
172
+ /**
173
+ * Returns the declarator's identifier name, when present.
174
+ *
175
+ * @param declaratorId - The `VariableDeclarator.id` node.
176
+ * @returns The identifier name, or null when the declarator binds a destructuring pattern.
177
+ */
178
+ export declare function declaratorName(declaratorId: AstNode): Maybe<string>;
179
+ /**
180
+ * Returns the CRUD verb fragment that `typeName` ends with — i.e. the `<Verb>` in a
181
+ * `<Verb>ModelFunction` suffix for one of the configured verbs (e.g. `OnCallCreateModelFunction` →
182
+ * `Create`, `DemoUpdateModelFunction` → `Update`).
183
+ *
184
+ * @param typeName - The type-reference identifier name.
185
+ * @param verbs - The allowed verb fragments.
186
+ * @returns The matched verb, or null when the suffix matches no recognized CRUD verb.
187
+ */
188
+ export declare function matchedCrudFunctionVerb(typeName: string, verbs: Iterable<string>): Maybe<string>;
189
+ /**
190
+ * Returns true when `typeName` ends with `<Verb>ModelFunction` for one of the configured verbs.
191
+ *
192
+ * @param typeName - The type-reference identifier name.
193
+ * @param verbs - The allowed verb fragments.
194
+ * @returns True when the suffix matches a recognized CRUD verb.
195
+ */
196
+ export declare function isCrudFunctionTypeName(typeName: string, verbs: Iterable<string>): boolean;
197
+ /**
198
+ * Resolves the input-parameter type-argument node from a CRUD function type reference.
199
+ *
200
+ * @param typeRef - The `TSTypeReference` annotation node.
201
+ * @param typeName - The resolved type-reference name (selects the generic position).
202
+ * @returns The input type-argument node, or null when absent.
203
+ */
204
+ export declare function crudFunctionInputTypeArgNode(typeRef: AstNode, typeName: string): Maybe<AstNode>;
205
+ /**
206
+ * Returns true when a CRUD function declares no meaningful input — either the input generic argument
207
+ * is absent or it is an empty object type literal (`{}`). Such handlers need no MCP input schema, so
208
+ * the require-input-type rule exempts them.
209
+ *
210
+ * @param typeRef - The `TSTypeReference` annotation node.
211
+ * @param typeName - The resolved type-reference name.
212
+ * @returns True when the input generic is empty or absent.
213
+ */
214
+ export declare function isEmptyOrAbsentInputGeneric(typeRef: AstNode, typeName: string): boolean;
215
+ /**
216
+ * Returns true when an `ObjectExpression` has an own (non-computed) property with the given name.
217
+ *
218
+ * @param objExpr - The `ObjectExpression` node.
219
+ * @param propName - The property name to look for.
220
+ * @returns True when a matching property is present.
221
+ */
222
+ export declare function objectExpressionHasProperty(objExpr: AstNode, propName: string): boolean;
223
+ /**
224
+ * Returns true when an `ObjectExpression` contains a spread element (`{ ...base }`), whose contents
225
+ * cannot be introspected statically.
226
+ *
227
+ * @param objExpr - The `ObjectExpression` node.
228
+ * @returns True when any property is a spread element.
229
+ */
230
+ export declare function objectExpressionHasSpread(objExpr: AstNode): boolean;
231
+ /**
232
+ * Returns the character offset at which an auto-fixer should insert a new import — the start of the
233
+ * first existing `ImportDeclaration`, or offset 0 when the file has no imports yet.
234
+ *
235
+ * @param program - The `Program` AST node.
236
+ * @returns The character offset for the import-insertion point.
237
+ */
238
+ export declare function findImportInsertionOffset(program: AstNode): number;
239
+ /**
240
+ * Returns true when the given identifier name is already in the module's top-level scope (imported
241
+ * or declared). Used by the require-api-details auto-fix to avoid inserting a duplicate import.
242
+ *
243
+ * @param program - The `Program` AST node.
244
+ * @param name - The identifier name to check.
245
+ * @returns True when an existing import or declaration brings `name` into scope.
246
+ */
247
+ export declare function isFactoryNameInScope(program: AstNode, name: string): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/firebase",
3
- "version": "13.12.0",
3
+ "version": "13.12.1",
4
4
  "sideEffects": false,
5
5
  "exports": {
6
6
  "./test": {
@@ -24,10 +24,10 @@
24
24
  }
25
25
  },
26
26
  "peerDependencies": {
27
- "@dereekb/util": "13.12.0",
28
- "@dereekb/date": "13.12.0",
29
- "@dereekb/model": "13.12.0",
30
- "@dereekb/rxjs": "13.12.0",
27
+ "@dereekb/util": "13.12.1",
28
+ "@dereekb/date": "13.12.1",
29
+ "@dereekb/model": "13.12.1",
30
+ "@dereekb/rxjs": "13.12.1",
31
31
  "@firebase/rules-unit-testing": "5.0.0",
32
32
  "arktype": "^2.2.0",
33
33
  "date-fns": "^4.1.0",
package/test/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dereekb/firebase/test",
3
- "version": "13.12.0",
3
+ "version": "13.12.1",
4
4
  "peerDependencies": {
5
- "@dereekb/date": "13.12.0",
6
- "@dereekb/firebase": "13.12.0",
7
- "@dereekb/model": "13.12.0",
8
- "@dereekb/rxjs": "13.12.0",
9
- "@dereekb/util": "13.12.0",
5
+ "@dereekb/date": "13.12.1",
6
+ "@dereekb/firebase": "13.12.1",
7
+ "@dereekb/model": "13.12.1",
8
+ "@dereekb/rxjs": "13.12.1",
9
+ "@dereekb/util": "13.12.1",
10
10
  "@firebase/rules-unit-testing": "5.0.0",
11
11
  "date-fns": "^4.1.0",
12
12
  "firebase": "^12.12.1",