Skip to content

Commit 2000a86

Browse files
Merge pull request #1 from StevanFreeborn/fix/import-issue
Fix: ESM Import Issue
2 parents 377469a + b989adc commit 2000a86

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+398
-369
lines changed

.eslintignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
coverage/
44
dist/
55
node_modules/
6-
.github/
6+
.github/
7+
scripts/

.eslintrc.json

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"browser": true,
44
"es2021": true
55
},
6-
"plugins": ["@typescript-eslint", "mocha"],
6+
"plugins": ["@typescript-eslint", "mocha", "import"],
77
"extends": [
88
"standard-with-typescript",
99
"eslint:recommended",
@@ -13,11 +13,16 @@
1313
],
1414
"overrides": [
1515
{
16-
"files": ["tests/**/*.spec.ts", "integrationTests/**/*.spec.ts"],
16+
"files": [
17+
"tests/**/*.spec.ts",
18+
"integrationTests/**/*.spec.ts",
19+
"integrationTests/utils/**"
20+
],
1721
"rules": {
1822
"@typescript-eslint/no-unused-expressions": "off",
1923
"@typescript-eslint/consistent-type-assertions": "off",
20-
"no-new": "off"
24+
"no-new": "off",
25+
"import/extensions": "off"
2126
}
2227
}
2328
],
@@ -30,6 +35,7 @@
3035
"@typescript-eslint/no-explicit-any": "off",
3136
"@typescript-eslint/no-unnecessary-boolean-literal-compare": "off",
3237
"@typescript-eslint/no-useless-constructor": "off",
33-
"@typescript-eslint/no-extraneous-class": "off"
38+
"@typescript-eslint/no-extraneous-class": "off",
39+
"import/extensions": ["error", "always", { "ignorePackages": true }]
3440
}
3541
}

package.json

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,23 @@
3232
"License.txt",
3333
"package.json"
3434
],
35-
"main": "dist/cjs/index.js",
3635
"types": "dist/types/index.d.ts",
36+
"main": "dist/cjs/index.js",
37+
"module": "dist/esm/index.js",
3738
"exports": {
38-
"import": "./dist/esm/index.js",
39-
"require": "./dist/cjs/index.js",
40-
"default": "./dist/cjs/index.js"
39+
".": {
40+
"types": "./dist/types/index.d.ts",
41+
"import": "./dist/esm/index.js",
42+
"require": "./dist/cjs/index.js"
43+
}
4144
},
4245
"scripts": {
4346
"clean": "rimraf dist",
4447
"lint": "eslint --ignore-path .eslintignore --ext .js,.ts .",
4548
"lint-fix": "eslint --fix --ignore-path .eslintignore --ext .js,.ts . --max-warnings=0",
4649
"format-staged": "pretty-quick --staged",
4750
"format": "pretty-quick",
48-
"build": "npm run tests && npm run clean && tsc --project tsconfig.cjs.json && tsc --project tsconfig.esm.json",
51+
"build": "npm run tests && npm run clean && tsc --project tsconfig.cjs.json && tsc --project tsconfig.esm.json && node ./scripts/create_dist_package_json.js",
4952
"test:unit": "mocha -r ts-node/register",
5053
"test:integration": "mocha -r ts-node/register -r integrationTests/mochaRootHooks.ts",
5154
"tests:unit": "mocha -R progress -r ts-node/register ./tests/**/*.spec.ts",
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
const fs = require('fs');
2+
const path = require('path');
3+
4+
const esmPackageJson = `{
5+
"type": "module"
6+
}`;
7+
8+
const cjsPackageJson = `{
9+
"type": "commonjs"
10+
}`;
11+
12+
const parentDir = path.resolve(__dirname, '..');
13+
14+
fs.writeFileSync(path.join(parentDir, 'dist/esm/package.json'), esmPackageJson);
15+
fs.writeFileSync(path.join(parentDir, 'dist/cjs/package.json'), cjsPackageJson);

src/index.ts

Lines changed: 64 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,72 @@
11
// Models
2-
import { ApiResponse } from './models/ApiResponse';
3-
import { App } from './models/App';
4-
import { Attachment } from './models/Attachment';
5-
import { AttachmentListRecordValue } from './models/AttachmentListRecordValue';
6-
import { CollectionResponse } from './models/CollectionResponse';
7-
import { CreatedWithIdResponse } from './models/CreatedWithIdResponse';
8-
import { DateRecordValue } from './models/DateRecordValue';
9-
import { DecimalRecordValue } from './models/DecimalRecordValue';
10-
import { Delegate } from './models/Delegate';
11-
import { DelegateListRecordValue } from './models/DelegateListRecordValue';
12-
import { EndpointFactory } from './models/EndpointFactory';
13-
import { Field } from './models/Field';
14-
import { File } from './models/File';
15-
import { FileInfo } from './models/FileInfo';
16-
import { FileListRecordValue } from './models/FileListRecordValue';
17-
import { FormulaField } from './models/FormulaField';
18-
import { GetPagedAppsResponse } from './models/GetPagedAppsResponse';
19-
import { GetPagedFieldsResponse } from './models/GetPagedFieldsResponse';
20-
import { GetPagedRecordsResponse } from './models/GetPagedRecordsResponse';
21-
import { GetPagedReportsResponse } from './models/GetPagedReportsResponse';
22-
import { GetRecordRequest } from './models/GetRecordRequest';
23-
import { GetRecordsByAppIdRequest } from './models/GetRecordsByAppIdRequest';
24-
import { GetRecordsRequest } from './models/GetRecordsRequest';
25-
import { GuidListRecordValue } from './models/GuidListRecordValue';
26-
import { GuidRecordValue } from './models/GuidRecordValue';
27-
import { IntegerListRecordValue } from './models/IntegerListRecordValue';
28-
import { IntegerRecordValue } from './models/IntegerRecordValue';
29-
import { ListField } from './models/ListField';
30-
import { ListItemRequest } from './models/ListItemRequest';
31-
import { ListItemResponse } from './models/ListItemResponse';
32-
import { ListValue } from './models/ListValue';
33-
import { OnspringClient } from './models/OnspringClient';
34-
import { PagedResponse } from './models/PagedResponse';
35-
import { PagingRequest } from './models/PagingRequest';
36-
import { QueryFilter } from './models/QueryFilter';
37-
import { QueryRecordsRequest } from './models/QueryRecordsRequest';
38-
import { Record } from './models/Record';
39-
import { RecordValue } from './models/RecordValue';
40-
import { ReferenceField } from './models/ReferenceField';
41-
import { Report } from './models/Report';
42-
import { ReportData } from './models/ReportData';
43-
import { Row } from './models/Row';
44-
import { SaveFileRequest } from './models/SaveFileRequest';
45-
import { SaveRecordRequest } from './models/SaveRecordRequest';
46-
import { SaveRecordResponse } from './models/SaveRecordResponse';
47-
import { ScoringGroup } from './models/ScoringGroup';
48-
import { ScoringGroupListRecordValue } from './models/ScoringGroupListRecordValue';
49-
import { StringListRecordValue } from './models/StringListRecordValue';
50-
import { StringRecordValue } from './models/StringRecordValue';
51-
import { TimeSpanData } from './models/TimeSpanData';
52-
import { TimeSpanRecordValue } from './models/TimeSpanRecordValue';
2+
import { ApiResponse } from './models/ApiResponse.js';
3+
import { App } from './models/App.js';
4+
import { Attachment } from './models/Attachment.js';
5+
import { AttachmentListRecordValue } from './models/AttachmentListRecordValue.js';
6+
import { CollectionResponse } from './models/CollectionResponse.js';
7+
import { CreatedWithIdResponse } from './models/CreatedWithIdResponse.js';
8+
import { DateRecordValue } from './models/DateRecordValue.js';
9+
import { DecimalRecordValue } from './models/DecimalRecordValue.js';
10+
import { Delegate } from './models/Delegate.js';
11+
import { DelegateListRecordValue } from './models/DelegateListRecordValue.js';
12+
import { EndpointFactory } from './models/EndpointFactory.js';
13+
import { Field } from './models/Field.js';
14+
import { File } from './models/File.js';
15+
import { FileInfo } from './models/FileInfo.js';
16+
import { FileListRecordValue } from './models/FileListRecordValue.js';
17+
import { FormulaField } from './models/FormulaField.js';
18+
import { GetPagedAppsResponse } from './models/GetPagedAppsResponse.js';
19+
import { GetPagedFieldsResponse } from './models/GetPagedFieldsResponse.js';
20+
import { GetPagedRecordsResponse } from './models/GetPagedRecordsResponse.js';
21+
import { GetPagedReportsResponse } from './models/GetPagedReportsResponse.js';
22+
import { GetRecordRequest } from './models/GetRecordRequest.js';
23+
import { GetRecordsByAppIdRequest } from './models/GetRecordsByAppIdRequest.js';
24+
import { GetRecordsRequest } from './models/GetRecordsRequest.js';
25+
import { GuidListRecordValue } from './models/GuidListRecordValue.js';
26+
import { GuidRecordValue } from './models/GuidRecordValue.js';
27+
import { IntegerListRecordValue } from './models/IntegerListRecordValue.js';
28+
import { IntegerRecordValue } from './models/IntegerRecordValue.js';
29+
import { ListField } from './models/ListField.js';
30+
import { ListItemRequest } from './models/ListItemRequest.js';
31+
import { ListItemResponse } from './models/ListItemResponse.js';
32+
import { ListValue } from './models/ListValue.js';
33+
import { OnspringClient } from './models/OnspringClient.js';
34+
import { PagedResponse } from './models/PagedResponse.js';
35+
import { PagingRequest } from './models/PagingRequest.js';
36+
import { QueryFilter } from './models/QueryFilter.js';
37+
import { QueryRecordsRequest } from './models/QueryRecordsRequest.js';
38+
import { Record } from './models/Record.js';
39+
import { RecordValue } from './models/RecordValue.js';
40+
import { ReferenceField } from './models/ReferenceField.js';
41+
import { Report } from './models/Report.js';
42+
import { ReportData } from './models/ReportData.js';
43+
import { Row } from './models/Row.js';
44+
import { SaveFileRequest } from './models/SaveFileRequest.js';
45+
import { SaveRecordRequest } from './models/SaveRecordRequest.js';
46+
import { SaveRecordResponse } from './models/SaveRecordResponse.js';
47+
import { ScoringGroup } from './models/ScoringGroup.js';
48+
import { ScoringGroupListRecordValue } from './models/ScoringGroupListRecordValue.js';
49+
import { StringListRecordValue } from './models/StringListRecordValue.js';
50+
import { StringRecordValue } from './models/StringRecordValue.js';
51+
import { TimeSpanData } from './models/TimeSpanData.js';
52+
import { TimeSpanRecordValue } from './models/TimeSpanRecordValue.js';
5353

5454
// Enums
55-
import { DataFormat } from './enums/DataFormat';
56-
import { DelegateType } from './enums/DelegateType';
57-
import { FieldStatus } from './enums/FieldStatus';
58-
import { FieldType } from './enums/FieldType';
59-
import { FileStorageSite } from './enums/FileStorageSite';
60-
import { FilterOperators } from './enums/FilterOperators';
61-
import { FormulaOutputType } from './enums/FormulaOutputType';
62-
import { HttpStatusCode } from './enums/HttpStatusCode';
63-
import { Multiplicity } from './enums/Multiplicity';
64-
import { RecordValueType } from './enums/RecordValueType';
65-
import { ReportDataType } from './enums/ReportDataType';
66-
import { TimeSpanIncrement } from './enums/TimeSpanIncrement';
67-
import { TimeSpanRecurrenceType } from './enums/TimeSpanRecurrenceType';
55+
import { DataFormat } from './enums/DataFormat.js';
56+
import { DelegateType } from './enums/DelegateType.js';
57+
import { FieldStatus } from './enums/FieldStatus.js';
58+
import { FieldType } from './enums/FieldType.js';
59+
import { FileStorageSite } from './enums/FileStorageSite.js';
60+
import { FilterOperators } from './enums/FilterOperators.js';
61+
import { FormulaOutputType } from './enums/FormulaOutputType.js';
62+
import { HttpStatusCode } from './enums/HttpStatusCode.js';
63+
import { Multiplicity } from './enums/Multiplicity.js';
64+
import { RecordValueType } from './enums/RecordValueType.js';
65+
import { ReportDataType } from './enums/ReportDataType.js';
66+
import { TimeSpanIncrement } from './enums/TimeSpanIncrement.js';
67+
import { TimeSpanRecurrenceType } from './enums/TimeSpanRecurrenceType.js';
6868

6969
export {
70-
// Models
7170
ApiResponse,
7271
App,
7372
Attachment,

src/models/ApiResponse.ts

Lines changed: 58 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,51 @@
11
import { type AxiosResponse } from 'axios';
2-
import { DelegateType } from '../enums/DelegateType';
3-
import { FieldStatus } from '../enums/FieldStatus';
4-
import { FieldType } from '../enums/FieldType';
5-
import { FileStorageSite } from '../enums/FileStorageSite';
6-
import { FormulaOutputType } from '../enums/FormulaOutputType';
7-
import { Multiplicity } from '../enums/Multiplicity';
8-
import { RecordValueType } from '../enums/RecordValueType';
9-
import { TimeSpanIncrement } from '../enums/TimeSpanIncrement';
10-
import { TimeSpanRecurrenceType } from '../enums/TimeSpanRecurrenceType';
11-
import { App } from './App';
12-
import { Attachment } from './Attachment';
13-
import { AttachmentListRecordValue } from './AttachmentListRecordValue';
14-
import { CollectionResponse } from './CollectionResponse';
15-
import { CreatedWithIdResponse } from './CreatedWithIdResponse';
16-
import { DateRecordValue } from './DateRecordValue';
17-
import { DecimalRecordValue } from './DecimalRecordValue';
18-
import { Delegate } from './Delegate';
19-
import { DelegateListRecordValue } from './DelegateListRecordValue';
20-
import { Field } from './Field';
21-
import { File } from './File';
22-
import { FileInfo } from './FileInfo';
23-
import { FileListRecordValue } from './FileListRecordValue';
24-
import { FormulaField } from './FormulaField';
25-
import { GetPagedAppsResponse } from './GetPagedAppsResponse';
26-
import { GetPagedFieldsResponse } from './GetPagedFieldsResponse';
27-
import { GetPagedRecordsResponse } from './GetPagedRecordsResponse';
28-
import { GetPagedReportsResponse } from './GetPagedReportsResponse';
29-
import { GuidListRecordValue } from './GuidListRecordValue';
30-
import { GuidRecordValue } from './GuidRecordValue';
31-
import { IntegerListRecordValue } from './IntegerListRecordValue';
32-
import { IntegerRecordValue } from './IntegerRecordValue';
33-
import { ListField } from './ListField';
34-
import { ListItemResponse } from './ListItemResponse';
35-
import { ListValue } from './ListValue';
36-
import { Record } from './Record';
37-
import { ReferenceField } from './ReferenceField';
38-
import { Report } from './Report';
39-
import { ReportData } from './ReportData';
40-
import { Row } from './Row';
41-
import { ScoringGroup } from './ScoringGroup';
42-
import { ScoringGroupListRecordValue } from './ScoringGroupListRecordValue';
43-
import { StringListRecordValue } from './StringListRecordValue';
44-
import { StringRecordValue } from './StringRecordValue';
45-
import { TimeSpanData } from './TimeSpanData';
46-
import { TimeSpanRecordValue } from './TimeSpanRecordValue';
47-
import { type RecordValue } from './RecordValue';
48-
import { SaveRecordResponse } from './SaveRecordResponse';
2+
import { DelegateType } from '../enums/DelegateType.js';
3+
import { FieldStatus } from '../enums/FieldStatus.js';
4+
import { FieldType } from '../enums/FieldType.js';
5+
import { FileStorageSite } from '../enums/FileStorageSite.js';
6+
import { FormulaOutputType } from '../enums/FormulaOutputType.js';
7+
import { Multiplicity } from '../enums/Multiplicity.js';
8+
import { RecordValueType } from '../enums/RecordValueType.js';
9+
import { TimeSpanIncrement } from '../enums/TimeSpanIncrement.js';
10+
import { TimeSpanRecurrenceType } from '../enums/TimeSpanRecurrenceType.js';
11+
import { App } from './App.js';
12+
import { Attachment } from './Attachment.js';
13+
import { AttachmentListRecordValue } from './AttachmentListRecordValue.js';
14+
import { CollectionResponse } from './CollectionResponse.js';
15+
import { CreatedWithIdResponse } from './CreatedWithIdResponse.js';
16+
import { DateRecordValue } from './DateRecordValue.js';
17+
import { DecimalRecordValue } from './DecimalRecordValue.js';
18+
import { Delegate } from './Delegate.js';
19+
import { DelegateListRecordValue } from './DelegateListRecordValue.js';
20+
import { Field } from './Field.js';
21+
import { File } from './File.js';
22+
import { FileInfo } from './FileInfo.js';
23+
import { FileListRecordValue } from './FileListRecordValue.js';
24+
import { FormulaField } from './FormulaField.js';
25+
import { GetPagedAppsResponse } from './GetPagedAppsResponse.js';
26+
import { GetPagedFieldsResponse } from './GetPagedFieldsResponse.js';
27+
import { GetPagedRecordsResponse } from './GetPagedRecordsResponse.js';
28+
import { GetPagedReportsResponse } from './GetPagedReportsResponse.js';
29+
import { GuidListRecordValue } from './GuidListRecordValue.js';
30+
import { GuidRecordValue } from './GuidRecordValue.js';
31+
import { IntegerListRecordValue } from './IntegerListRecordValue.js';
32+
import { IntegerRecordValue } from './IntegerRecordValue.js';
33+
import { ListField } from './ListField.js';
34+
import { ListItemResponse } from './ListItemResponse.js';
35+
import { ListValue } from './ListValue.js';
36+
import { Record } from './Record.js';
37+
import { type RecordValue } from './RecordValue.js';
38+
import { ReferenceField } from './ReferenceField.js';
39+
import { Report } from './Report.js';
40+
import { ReportData } from './ReportData.js';
41+
import { Row } from './Row.js';
42+
import { SaveRecordResponse } from './SaveRecordResponse.js';
43+
import { ScoringGroup } from './ScoringGroup.js';
44+
import { ScoringGroupListRecordValue } from './ScoringGroupListRecordValue.js';
45+
import { StringListRecordValue } from './StringListRecordValue.js';
46+
import { StringRecordValue } from './StringRecordValue.js';
47+
import { TimeSpanData } from './TimeSpanData.js';
48+
import { TimeSpanRecordValue } from './TimeSpanRecordValue.js';
4949

5050
/**
5151
* @class ApiResponse - A generic response object for API requests.
@@ -92,17 +92,17 @@ export class ApiResponse<T> {
9292
public asGetPagedAppsResponseType(): ApiResponse<GetPagedAppsResponse> {
9393
const apiResponse = this as ApiResponse<any>;
9494

95-
const apps = apiResponse.data.items.map((item: any) => {
96-
return new App(item.href, item.id, item.name);
97-
});
98-
99-
const getAppsPagedResponse = new GetPagedAppsResponse(
100-
apps,
101-
apiResponse.data.pageNumber,
102-
apiResponse.data.pageSize,
103-
apiResponse.data.totalPages,
104-
apiResponse.data.totalRecords
105-
);
95+
const apps = apiResponse.data.items.map((item: any) => {
96+
return new App(item.href, item.id, item.name);
97+
});
98+
99+
const getAppsPagedResponse = new GetPagedAppsResponse(
100+
apps,
101+
apiResponse.data.pageNumber,
102+
apiResponse.data.pageSize,
103+
apiResponse.data.totalPages,
104+
apiResponse.data.totalRecords
105+
);
106106

107107
return new ApiResponse<GetPagedAppsResponse>(
108108
apiResponse.statusCode,

src/models/ApiResponseFactory.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { type AxiosResponse } from 'axios';
2-
import { HttpStatusCode } from '../enums/HttpStatusCode';
3-
import { ApiResponse } from './ApiResponse';
42
import { type Readable } from 'stream';
3+
import { HttpStatusCode } from '../enums/HttpStatusCode.js';
4+
import { ApiResponse } from './ApiResponse.js';
55

66
/**
77
* @class ApiResponseFactory - Factory class for creating ApiResponse objects

src/models/Attachment.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { type FileStorageSite } from '../enums/FileStorageSite';
1+
import { type FileStorageSite } from '../enums/FileStorageSite.js';
22

33
/**
44
* @class Attachment - Represents an attachment.

src/models/AttachmentListRecordValue.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { RecordValueType } from '../enums/RecordValueType';
2-
import { type Attachment } from './Attachment';
3-
import { RecordValue } from './RecordValue';
1+
import { RecordValueType } from '../enums/RecordValueType.js';
2+
import { type Attachment } from './Attachment.js';
3+
import { RecordValue } from './RecordValue.js';
44

55
/**
66
* @class AttachmentListRecordValue - A record value represented by a list of attachments.

src/models/DateRecordValue.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { RecordValueType } from '../enums/RecordValueType';
2-
import { RecordValue } from './RecordValue';
1+
import { RecordValueType } from '../enums/RecordValueType.js';
2+
import { RecordValue } from './RecordValue.js';
33

44
/**
55
* @class DateRecordValue - A value for a date field in a record.

0 commit comments

Comments
 (0)