Skip to content

Commit 2b0bc62

Browse files
committed
Merge branch 'master' into 9.0
2 parents 2a97abc + 24f8fb9 commit 2b0bc62

14 files changed

Lines changed: 89 additions & 24 deletions

.github/workflows/benchmark.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
runs-on: ubuntu-22.04
2323
name: Benchmark TypeScript Types
2424
steps:
25-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
25+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2626
with:
2727
fetch-depth: 0
2828
- name: Setup node

.github/workflows/codeql.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121

2222
steps:
2323
- name: Checkout repository
24-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
24+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2525

2626
# Initializes the CodeQL tools for scanning.
2727
- name: Initialize CodeQL

.github/workflows/documentation.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
runs-on: ubuntu-latest
2929
name: Lint Markdown files
3030
steps:
31-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
31+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
3232

3333
- name: Setup node
3434
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
@@ -48,7 +48,7 @@ jobs:
4848
runs-on: ubuntu-22.04
4949
name: Test Generating Docs
5050
steps:
51-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
51+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
5252
- run: git fetch --depth=1 --tags # download all tags for documentation
5353

5454
- name: Setup node

.github/workflows/encryption-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
env:
3737
FORCE_COLOR: true
3838
steps:
39-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
39+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
4040
- name: Setup node
4141
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
4242
with:

.github/workflows/test.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
runs-on: ubuntu-latest
2323
name: Lint JS-Files
2424
steps:
25-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
25+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2626

2727
- name: Setup node
2828
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
@@ -53,7 +53,7 @@ jobs:
5353
MONGOMS_PREFER_GLOBAL_PATH: 1
5454
FORCE_COLOR: true
5555
steps:
56-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
56+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
5757

5858
- name: Setup node
5959
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
@@ -85,7 +85,7 @@ jobs:
8585
MONGOMS_PREFER_GLOBAL_PATH: 1
8686
FORCE_COLOR: true
8787
steps:
88-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
88+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
8989
- name: Setup node
9090
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
9191
with:
@@ -113,7 +113,7 @@ jobs:
113113
env:
114114
FORCE_COLOR: true
115115
steps:
116-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
116+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
117117
- name: Setup node
118118
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
119119
with:
@@ -130,6 +130,6 @@ jobs:
130130
contents: read
131131
steps:
132132
- name: Check out repo
133-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
133+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
134134
- name: Dependency review
135135
uses: actions/dependency-review-action@v4

.github/workflows/tidelift-alignment.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
if: github.repository == 'Automattic/mongoose'
1616
steps:
1717
- name: Checkout
18-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
18+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
1919
- name: Setup node
2020
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
2121
with:

.github/workflows/tsd.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
runs-on: ubuntu-latest
2121
name: Lint TS-Files
2222
steps:
23-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
23+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2424

2525
- name: Setup node
2626
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
@@ -38,7 +38,7 @@ jobs:
3838
runs-on: ubuntu-latest
3939
name: Test Typescript Types
4040
steps:
41-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
41+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
4242

4343
- name: Setup node
4444
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,16 @@
4747
"markdownlint-cli2": "^0.18.1",
4848
"marked": "15.0.12",
4949
"mkdirp": "^3.0.1",
50-
"mocha": "11.7.1",
50+
"mocha": "11.7.2",
5151
"moment": "2.30.1",
52-
"mongodb-memory-server": "10.1.4",
52+
"mongodb-memory-server": "10.2.0",
5353
"mongodb-runner": "^5.8.2",
5454
"ncp": "^2.0.0",
5555
"nyc": "15.1.0",
5656
"pug": "3.0.3",
5757
"sinon": "21.0.0",
58-
"tsd": "0.32.0",
59-
"typescript": "5.8.3",
58+
"tsd": "0.33.0",
59+
"typescript": "5.9.2",
6060
"typescript-eslint": "^8.31.1",
6161
"uuid": "11.1.0"
6262
},

test/types/discriminator.test.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,28 @@ function gh15535() {
116116
expectType<string | null | undefined>(doc.field3);
117117
expectType<string | null | undefined>(doc.getField3());
118118
}
119+
120+
async function gh15600() {
121+
// Base model with custom static method
122+
const baseSchema = new Schema(
123+
{ name: String },
124+
{
125+
statics: {
126+
findByName(name: string) {
127+
return this.findOne({ name });
128+
}
129+
}
130+
}
131+
);
132+
const BaseModel = model('Base', baseSchema);
133+
134+
const baseRes = await BaseModel.findByName('test');
135+
expectType<string | null | undefined>(baseRes!.name);
136+
137+
// Discriminator model inheriting base static methods
138+
const discriminatorSchema = new Schema({ extra: String });
139+
const DiscriminatorModel = BaseModel.discriminator('Discriminator', discriminatorSchema);
140+
141+
const res = await DiscriminatorModel.findByName('test');
142+
expectType<string | null | undefined>(res!.name);
143+
}

test/types/schema.test.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,30 @@ function stringEnumInfer() {
10631063
type StringEnumRequiredExample = InferSchemaType<typeof stringEnumSchemaRequired>;
10641064
expectAssignable<StringEnum>({} as StringEnumRequiredExample['active']);
10651065
}
1066+
function stringEnumArrayInfer() {
1067+
enum StringEnum {
1068+
Foo = 'foo',
1069+
Bar = 'bar'
1070+
}
1071+
1072+
const stringEnumSchema = new Schema(
1073+
{
1074+
active: { type: [String], enum: StringEnum, required: false }
1075+
}
1076+
);
1077+
1078+
type StringEnumExample = InferSchemaType<typeof stringEnumSchema>;
1079+
expectAssignable<StringEnum[] | null | undefined>({} as StringEnumExample['active']);
1080+
1081+
const stringEnumSchemaRequired = new Schema(
1082+
{
1083+
active: { type: [String], enum: StringEnum, required: true }
1084+
}
1085+
);
1086+
1087+
type StringEnumRequiredExample = InferSchemaType<typeof stringEnumSchemaRequired>;
1088+
expectAssignable<StringEnum[]>({} as StringEnumRequiredExample['active']);
1089+
}
10661090

10671091
function gh12882() {
10681092
// Array of strings
@@ -1976,3 +2000,19 @@ function gh10894() {
19762000
expectType<string | number | null | undefined>({} as RawDocType['testProp']);
19772001
}
19782002
}
2003+
2004+
function autoInferredNestedMaps() {
2005+
const schema = new Schema({
2006+
nestedMap: {
2007+
type: Map,
2008+
required: true,
2009+
of: {
2010+
type: Map,
2011+
of: String
2012+
}
2013+
}
2014+
});
2015+
const TestModel = model('Test', schema);
2016+
const doc = new TestModel({ nestedMap: new Map([['1', new Map([['2', 'value']])]]) });
2017+
expectType<Map<string, Map<string, string>>>(doc.nestedMap);
2018+
}

0 commit comments

Comments
 (0)