Procházet zdrojové kódy

Merge pull request #20520 from overleaf/em-ts-import

Use new import JSDoc syntax for Typescript annotations

GitOrigin-RevId: 782456d637fc8f2de6163b5d70fabf06c1d74964
Eric Mc Sween před 1 rokem
rodič
revize
250acbf33c
69 změnil soubory, kde provedl 150 přidání a 225 odebrání
  1. 4 2
      libraries/fetch-utils/index.js
  2. 2 2
      libraries/overleaf-editor-core/lib/change.js
  3. 1 1
      libraries/overleaf-editor-core/lib/change_request.js
  4. 3 3
      libraries/overleaf-editor-core/lib/chunk.js
  5. 2 2
      libraries/overleaf-editor-core/lib/comment.js
  6. 7 10
      libraries/overleaf-editor-core/lib/file.js
  7. 1 1
      libraries/overleaf-editor-core/lib/file_data/binary_file_data.js
  8. 1 1
      libraries/overleaf-editor-core/lib/file_data/clear_tracking_props.js
  9. 2 2
      libraries/overleaf-editor-core/lib/file_data/comment_list.js
  10. 4 5
      libraries/overleaf-editor-core/lib/file_data/hash_file_data.js
  11. 1 1
      libraries/overleaf-editor-core/lib/file_data/hollow_binary_file_data.js
  12. 2 4
      libraries/overleaf-editor-core/lib/file_data/hollow_string_file_data.js
  13. 4 7
      libraries/overleaf-editor-core/lib/file_data/index.js
  14. 1 5
      libraries/overleaf-editor-core/lib/file_data/lazy_string_file_data.js
  15. 3 7
      libraries/overleaf-editor-core/lib/file_data/string_file_data.js
  16. 1 1
      libraries/overleaf-editor-core/lib/file_data/tracked_change.js
  17. 1 2
      libraries/overleaf-editor-core/lib/file_data/tracked_change_list.js
  18. 1 2
      libraries/overleaf-editor-core/lib/file_data/tracking_props.js
  19. 2 2
      libraries/overleaf-editor-core/lib/file_map.js
  20. 1 1
      libraries/overleaf-editor-core/lib/history.js
  21. 1 1
      libraries/overleaf-editor-core/lib/label.js
  22. 3 4
      libraries/overleaf-editor-core/lib/operation/add_comment_operation.js
  23. 3 3
      libraries/overleaf-editor-core/lib/operation/delete_comment_operation.js
  24. 3 3
      libraries/overleaf-editor-core/lib/operation/edit_file_operation.js
  25. 1 1
      libraries/overleaf-editor-core/lib/operation/edit_no_operation.js
  26. 2 2
      libraries/overleaf-editor-core/lib/operation/edit_operation.js
  27. 5 6
      libraries/overleaf-editor-core/lib/operation/edit_operation_builder.js
  28. 4 1
      libraries/overleaf-editor-core/lib/operation/edit_operation_transformer.js
  29. 2 2
      libraries/overleaf-editor-core/lib/operation/index.js
  30. 2 5
      libraries/overleaf-editor-core/lib/operation/scan_op.js
  31. 4 4
      libraries/overleaf-editor-core/lib/operation/set_comment_state_operation.js
  32. 5 5
      libraries/overleaf-editor-core/lib/operation/text_operation.js
  33. 1 1
      libraries/overleaf-editor-core/lib/range.js
  34. 4 6
      libraries/overleaf-editor-core/lib/snapshot.js
  35. 3 3
      libraries/overleaf-editor-core/lib/v2_doc_versions.js
  36. 1 1
      libraries/overleaf-editor-core/test/support/fake_blob_store.js
  37. 1 1
      libraries/overleaf-editor-core/test/tracked_change_list.test.js
  38. 2 2
      services/docstore/app/js/DocManager.js
  39. 2 6
      services/document-updater/app/js/HistoryConversions.js
  40. 1 1
      services/document-updater/app/js/ProjectHistoryRedisManager.js
  41. 3 15
      services/document-updater/app/js/RangesManager.js
  42. 1 6
      services/document-updater/app/js/UpdateManager.js
  43. 1 5
      services/document-updater/app/js/Utils.js
  44. 1 1
      services/history-v1/storage/lib/blob_store/index.js
  45. 4 5
      services/history-v1/storage/lib/project_archive.js
  46. 1 2
      services/project-history/app/js/ChunkTranslator.js
  47. 3 4
      services/project-history/app/js/HistoryBlobTranslator.js
  48. 2 3
      services/project-history/app/js/SnapshotManager.js
  49. 4 12
      services/project-history/app/js/SyncManager.js
  50. 1 4
      services/project-history/app/js/UpdateCompressor.js
  51. 3 13
      services/project-history/app/js/UpdateTranslator.js
  52. 1 5
      services/project-history/app/js/Utils.js
  53. 3 1
      services/project-history/test/unit/js/HistoryBlobTranslator/HistoryBlobTranslatorTests.js
  54. 1 3
      services/web/app/src/Features/Project/ProjectController.js
  55. 1 1
      services/web/app/src/Features/Project/ProjectHelper.js
  56. 5 9
      services/web/app/src/Features/Project/ProjectListController.js
  57. 1 1
      services/web/app/src/Features/SplitTests/SplitTestHandler.js
  58. 4 4
      services/web/app/src/Features/Subscription/SubscriptionFormatters.js
  59. 1 1
      services/web/app/src/Features/Subscription/SubscriptionGroupController.js
  60. 1 1
      services/web/app/src/Features/Subscription/SubscriptionHelper.js
  61. 3 1
      services/web/app/src/Features/Subscription/SubscriptionViewModelBuilder.js
  62. 1 1
      services/web/app/src/Features/Survey/SurveyHandler.js
  63. 2 2
      services/web/app/src/infrastructure/HttpPermissionsPolicy.js
  64. 1 1
      services/web/app/src/util/currency.js
  65. 1 1
      services/web/frontend/js/features/plans/utils/group-plan-pricing.js
  66. 1 1
      services/web/modules/history-v1/index.js
  67. 1 1
      services/web/modules/launchpad/index.js
  68. 1 1
      services/web/modules/server-ce-scripts/index.js
  69. 3 1
      services/web/modules/user-activate/index.js

+ 4 - 2
libraries/fetch-utils/index.js

@@ -5,6 +5,10 @@ const fetch = require('node-fetch')
 const http = require('http')
 const https = require('https')
 
+/**
+ * @import { Response } from 'node-fetch'
+ */
+
 /**
  * Make a request and return the parsed JSON response.
  *
@@ -240,8 +244,6 @@ async function discardResponseBody(response) {
 }
 
 /**
- * @typedef {import('node-fetch').Response} Response
- *
  * @param {Response} response
  */
 async function maybeGetResponseBody(response) {

+ 2 - 2
libraries/overleaf-editor-core/lib/change.js

@@ -12,8 +12,8 @@ const FileMap = require('./file_map')
 const V2DocVersions = require('./v2_doc_versions')
 
 /**
- * @typedef {import("./author")} Author
- * @typedef {import("./types").BlobStore} BlobStore
+ * @import Author from "./author"
+ * @import { BlobStore } from "./types"
  */
 
 /**

+ 1 - 1
libraries/overleaf-editor-core/lib/change_request.js

@@ -7,7 +7,7 @@ const Change = require('./change')
 const Operation = require('./operation')
 
 /**
- * @typedef {import("./author")} Author
+ * @import Author from "./author"
  */
 
 /**

+ 3 - 3
libraries/overleaf-editor-core/lib/chunk.js

@@ -6,9 +6,9 @@ const OError = require('@overleaf/o-error')
 const History = require('./history')
 
 /**
- * @typedef {import("./types").BlobStore} BlobStore
- * @typedef {import("./change")} Change
- * @typedef {import("./snapshot")} Snapshot
+ * @import { BlobStore } from "./types"
+ * @import Change from "./change"
+ * @import Snapshot from "./snapshot"
  */
 class ConflictingEndVersion extends OError {
   constructor(clientEndVersion, latestEndVersion) {

+ 2 - 2
libraries/overleaf-editor-core/lib/comment.js

@@ -3,8 +3,8 @@ const { RetainOp, InsertOp, RemoveOp } = require('./operation/scan_op')
 const Range = require('./range')
 
 /**
- * @typedef {import("./types").CommentRawData} CommentRawData
- * @typedef {import("./operation/text_operation")} TextOperation
+ * @import { CommentRawData } from "./types"
+ * @import TextOperation from "./operation/text_operation"
  */
 
 class Comment {

+ 7 - 10
libraries/overleaf-editor-core/lib/file.js

@@ -10,16 +10,13 @@ const HashFileData = require('./file_data/hash_file_data')
 const StringFileData = require('./file_data/string_file_data')
 
 /**
- * @typedef {import("./blob")} Blob
- * @typedef {import("./types").BlobStore} BlobStore
- * @typedef {import("./types").ReadonlyBlobStore} ReadonlyBlobStore
- * @typedef {import("./types").RawFileData} RawFileData
- * @typedef {import("./types").RawFile} RawFile
- * @typedef {import("./types").StringFileRawData} StringFileRawData
- * @typedef {import("./types").CommentRawData} CommentRawData
- * @typedef {import("./file_data/comment_list")} CommentList
- * @typedef {import("./operation/text_operation")} TextOperation
- * @typedef {import("./file_data/tracked_change_list")} TrackedChangeList
+ * @import Blob from "./blob"
+ * @import { BlobStore, ReadonlyBlobStore, RawFileData, RawFile } from "./types"
+ * @import { StringFileRawData, CommentRawData } from "./types"
+ * @import CommentList from "./file_data/comment_list"
+ * @import TextOperation from "./operation/text_operation"
+ * @import TrackedChangeList from "./file_data/tracked_change_list"
+ *
  * @typedef {{filterTrackedDeletes?: boolean}} FileGetContentOptions
  */
 

+ 1 - 1
libraries/overleaf-editor-core/lib/file_data/binary_file_data.js

@@ -6,7 +6,7 @@ const Blob = require('../blob')
 const FileData = require('./')
 
 /**
- * @typedef {import('../types').RawBinaryFileData} RawBinaryFileData
+ * @import { RawBinaryFileData } from '../types'
  */
 
 class BinaryFileData extends FileData {

+ 1 - 1
libraries/overleaf-editor-core/lib/file_data/clear_tracking_props.js

@@ -1,7 +1,7 @@
 // @ts-check
 
 /**
- * @typedef {import('../types').ClearTrackingPropsRawData} ClearTrackingPropsRawData
+ * @import { ClearTrackingPropsRawData } from '../types'
  */
 
 class ClearTrackingProps {

+ 2 - 2
libraries/overleaf-editor-core/lib/file_data/comment_list.js

@@ -2,8 +2,8 @@
 const Comment = require('../comment')
 
 /**
- * @typedef {import("../types").CommentRawData} CommentRawData
- * @typedef {import("../range")} Range
+ * @import { CommentRawData } from "../types"
+ * @import Range from "../range"
  */
 
 class CommentList {

+ 4 - 5
libraries/overleaf-editor-core/lib/file_data/hash_file_data.js

@@ -6,11 +6,10 @@ const assert = require('check-types').assert
 const Blob = require('../blob')
 const FileData = require('./')
 /**
- * @typedef {import('./string_file_data')} StringFileData
- * @typedef {import('./lazy_string_file_data')} LazyStringFileData
- * @typedef {import('./hollow_string_file_data')} HollowStringFileData
- * @typedef {import('../types').BlobStore} BlobStore
- * @typedef {import('../types').RawHashFileData} RawHashFileData
+ * @import StringFileData from './string_file_data'
+ * @import LazyStringFileData from './lazy_string_file_data'
+ * @import HollowStringFileData from './hollow_string_file_data'
+ * @import { BlobStore, RawHashFileData } from '../types'
  */
 
 class HashFileData extends FileData {

+ 1 - 1
libraries/overleaf-editor-core/lib/file_data/hollow_binary_file_data.js

@@ -5,7 +5,7 @@ const assert = require('check-types').assert
 const FileData = require('./')
 
 /**
- * @typedef {import('../types').RawHollowBinaryFileData} RawHollowBinaryFileData
+ * @import { RawHollowBinaryFileData } from '../types'
  */
 
 class HollowBinaryFileData extends FileData {

+ 2 - 4
libraries/overleaf-editor-core/lib/file_data/hollow_string_file_data.js

@@ -1,15 +1,13 @@
 // @ts-check
 'use strict'
 
-/**
- * @typedef {import('../operation/edit_operation')} EditOperation
- */
 const assert = require('check-types').assert
 
 const FileData = require('./')
 
 /**
- * @typedef {import('../types').RawHollowStringFileData} RawHollowStringFileData
+ * @import { RawHollowStringFileData } from '../types'
+ * @import EditOperation from '../operation/edit_operation'
  */
 
 class HollowStringFileData extends FileData {

+ 4 - 7
libraries/overleaf-editor-core/lib/file_data/index.js

@@ -7,13 +7,10 @@ const assert = require('check-types').assert
 const Blob = require('../blob')
 
 /**
- * @typedef {import("../types").BlobStore} BlobStore
- * @typedef {import("../types").ReadonlyBlobStore} ReadonlyBlobStore
- * @typedef {import("../types").RawFileData} RawFileData
- * @typedef {import("../operation/edit_operation")} EditOperation
- * @typedef {import("../file_data/comment_list")} CommentList
- * @typedef {import("../types").CommentRawData} CommentRawData
- * @typedef {import("../file_data/tracked_change_list")} TrackedChangeList
+ * @import { BlobStore, ReadonlyBlobStore, RawFileData, CommentRawData } from "../types"
+ * @import EditOperation from "../operation/edit_operation"
+ * @import CommentList from "../file_data/comment_list"
+ * @import TrackedChangeList from "../file_data/tracked_change_list"
  */
 
 /**

+ 1 - 5
libraries/overleaf-editor-core/lib/file_data/lazy_string_file_data.js

@@ -11,11 +11,7 @@ const EditOperation = require('../operation/edit_operation')
 const EditOperationBuilder = require('../operation/edit_operation_builder')
 
 /**
- *  @typedef {import('../types').BlobStore} BlobStore
- *  @typedef {import('../types').ReadonlyBlobStore} ReadonlyBlobStore
- *  @typedef {import('../types').RangesBlob} RangesBlob
- *  @typedef {import('../types').RawFileData} RawFileData
- *  @typedef {import('../types').RawLazyStringFileData} RawLazyStringFileData
+ *  @import { BlobStore, ReadonlyBlobStore, RangesBlob, RawFileData, RawLazyStringFileData } from '../types'
  */
 
 class LazyStringFileData extends FileData {

+ 3 - 7
libraries/overleaf-editor-core/lib/file_data/string_file_data.js

@@ -8,13 +8,9 @@ const CommentList = require('./comment_list')
 const TrackedChangeList = require('./tracked_change_list')
 
 /**
- * @typedef {import("../types").StringFileRawData} StringFileRawData
- * @typedef {import("../types").RawFileData} RawFileData
- * @typedef {import("../operation/edit_operation")} EditOperation
- * @typedef {import("../types").BlobStore} BlobStore
- * @typedef {import("../types").CommentRawData} CommentRawData
- * @typedef {import("../types").TrackedChangeRawData} TrackedChangeRawData
- * @typedef {import('../types').RangesBlob} RangesBlob
+ * @import { StringFileRawData, RawFileData, BlobStore, CommentRawData } from "../types"
+ * @import { TrackedChangeRawData, RangesBlob } from "../types"
+ * @import EditOperation from "../operation/edit_operation"
  */
 
 class StringFileData extends FileData {

+ 1 - 1
libraries/overleaf-editor-core/lib/file_data/tracked_change.js

@@ -3,7 +3,7 @@ const Range = require('../range')
 const TrackingProps = require('./tracking_props')
 
 /**
- * @typedef {import("../types").TrackedChangeRawData} TrackedChangeRawData
+ * @import { TrackedChangeRawData } from "../types"
  */
 
 class TrackedChange {

+ 1 - 2
libraries/overleaf-editor-core/lib/file_data/tracked_change_list.js

@@ -4,8 +4,7 @@ const TrackedChange = require('./tracked_change')
 const TrackingProps = require('../file_data/tracking_props')
 
 /**
- * @typedef {import("../types").TrackingDirective} TrackingDirective
- * @typedef {import("../types").TrackedChangeRawData} TrackedChangeRawData
+ * @import { TrackingDirective, TrackedChangeRawData } from "../types"
  */
 
 class TrackedChangeList {

+ 1 - 2
libraries/overleaf-editor-core/lib/file_data/tracking_props.js

@@ -1,7 +1,6 @@
 // @ts-check
 /**
- * @typedef {import("../types").TrackingPropsRawData} TrackingPropsRawData
- * @typedef {import("../types").TrackingDirective} TrackingDirective
+ * @import { TrackingPropsRawData, TrackingDirective } from "../types"
  */
 
 class TrackingProps {

+ 2 - 2
libraries/overleaf-editor-core/lib/file_map.js

@@ -10,8 +10,8 @@ const File = require('./file')
 const safePathname = require('./safe_pathname')
 
 /**
- * @typedef {import('./types').RawFile} RawFile
- * @typedef {import('./types').RawFileMap} RawFileMap
+ * @import { RawFile, RawFileMap } from './types'
+ *
  * @typedef {Record<String, File | null>} FileMapData
  */
 

+ 1 - 1
libraries/overleaf-editor-core/lib/history.js

@@ -7,7 +7,7 @@ const Change = require('./change')
 const Snapshot = require('./snapshot')
 
 /**
- * @typedef {import("./types").BlobStore} BlobStore
+ * @import { BlobStore } from "./types"
  */
 
 class History {

+ 1 - 1
libraries/overleaf-editor-core/lib/label.js

@@ -4,7 +4,7 @@
 const assert = require('check-types').assert
 
 /**
- * @typedef {import('./types').RawLabel} RawLabel
+ * @import { RawLabel } from './types'
  */
 
 /**

+ 3 - 4
libraries/overleaf-editor-core/lib/operation/add_comment_operation.js

@@ -5,10 +5,9 @@ const Range = require('../range')
 const EditOperation = require('./edit_operation')
 
 /**
- * @typedef {import('./delete_comment_operation')} DeleteCommentOperation
- * @typedef {import('../types').CommentRawData} CommentRawData
- * @typedef {import('../types').RawAddCommentOperation} RawAddCommentOperation
- * @typedef {import('../file_data/string_file_data')} StringFileData
+ * @import DeleteCommentOperation from './delete_comment_operation'
+ * @import { CommentRawData, RawAddCommentOperation } from '../types'
+ * @import StringFileData from '../file_data/string_file_data'
  */
 
 /**

+ 3 - 3
libraries/overleaf-editor-core/lib/operation/delete_comment_operation.js

@@ -4,9 +4,9 @@ const EditNoOperation = require('./edit_no_operation')
 const EditOperation = require('./edit_operation')
 
 /**
- * @typedef {import('./add_comment_operation')} AddCommentOperation
- * @typedef {import('../types').RawDeleteCommentOperation} RawDeleteCommentOperation
- * @typedef {import('../file_data/string_file_data')} StringFileData
+ * @import AddCommentOperation from './add_comment_operation'
+ * @import StringFileData from '../file_data/string_file_data'
+ * @import { RawDeleteCommentOperation } from '../types'
  */
 
 /**

+ 3 - 3
libraries/overleaf-editor-core/lib/operation/edit_file_operation.js

@@ -1,9 +1,9 @@
 // @ts-check
 'use strict'
 /**
- * @typedef {import('./edit_operation')} EditOperation
- * @typedef {import('../types').RawEditFileOperation} RawEditFileOperation
- * @typedef {import("../snapshot")} Snapshot
+ * @import EditOperation from './edit_operation'
+ * @import { RawEditFileOperation } from '../types'
+ * @import Snapshot from "../snapshot"
  */
 
 const Operation = require('./')

+ 1 - 1
libraries/overleaf-editor-core/lib/operation/edit_no_operation.js

@@ -1,7 +1,7 @@
 const EditOperation = require('./edit_operation')
 
 /**
- * @typedef {import('../types').RawEditNoOperation} RawEditNoOperation
+ * @import { RawEditNoOperation } from '../types'
  */
 
 class EditNoOperation extends EditOperation {

+ 2 - 2
libraries/overleaf-editor-core/lib/operation/edit_operation.js

@@ -1,7 +1,7 @@
 // @ts-check
 /**
- * @typedef {import('../file_data')} FileData
- * @typedef {import('../types').RawEditOperation} RawEditOperation
+ * @import FileData from '../file_data'
+ * @import { RawEditOperation } from '../types'
  */
 
 class EditOperation {

+ 5 - 6
libraries/overleaf-editor-core/lib/operation/edit_operation_builder.js

@@ -1,12 +1,11 @@
 // @ts-check
+
 /**
- * @typedef {import('./edit_operation')} EditOperation
- * @typedef {import('../types').RawTextOperation} RawTextOperation
- * @typedef {import('../types').RawAddCommentOperation} RawAddCommentOperation
- * @typedef {import('../types').RawDeleteCommentOperation} RawDeleteCommentOperation
- * @typedef {import('../types').RawSetCommentStateOperation} RawSetCommentStateOperation
- * @typedef {import('../types').RawEditOperation} RawEditOperation
+ * @import EditOperation from './edit_operation'
+ * @import { RawTextOperation, RawAddCommentOperation, RawEditOperation } from '../types'
+ * @import { RawDeleteCommentOperation, RawSetCommentStateOperation } from '../types'
  */
+
 const DeleteCommentOperation = require('./delete_comment_operation')
 const AddCommentOperation = require('./add_comment_operation')
 const TextOperation = require('./text_operation')

+ 4 - 1
libraries/overleaf-editor-core/lib/operation/edit_operation_transformer.js

@@ -3,7 +3,10 @@ const core = require('../..')
 const Comment = require('../comment')
 const EditNoOperation = require('./edit_no_operation')
 const TextOperation = require('./text_operation')
-/** @typedef {import('./edit_operation')} EditOperation */
+
+/**
+ * @import EditOperation from './edit_operation'
+ */
 
 class EditOperationTransformer {
   /**

+ 2 - 2
libraries/overleaf-editor-core/lib/operation/index.js

@@ -13,8 +13,8 @@ let EditFileOperation = null
 let SetFileMetadataOperation = null
 
 /**
- * @typedef {import("../types").BlobStore} BlobStore
- * @typedef {import("../snapshot")} Snapshot
+ * @import { BlobStore } from "../types"
+ * @import Snapshot from "../snapshot"
  */
 
 /**

+ 2 - 5
libraries/overleaf-editor-core/lib/operation/scan_op.js

@@ -9,12 +9,9 @@ const ClearTrackingProps = require('../file_data/clear_tracking_props')
 const TrackingProps = require('../file_data/tracking_props')
 
 /**
+ * @import { RawScanOp, RawInsertOp, RawRetainOp, RawRemoveOp, TrackingDirective } from '../types'
+ *
  * @typedef {{ length: number, inputCursor: number, readonly inputLength: number}} LengthApplyContext
- * @typedef {import('../types').RawScanOp} RawScanOp
- * @typedef {import('../types').RawInsertOp} RawInsertOp
- * @typedef {import('../types').RawRetainOp} RawRetainOp
- * @typedef {import('../types').RawRemoveOp} RawRemoveOp
- * @typedef {import('../types').TrackingDirective} TrackingDirective
  */
 
 class ScanOp {

+ 4 - 4
libraries/overleaf-editor-core/lib/operation/set_comment_state_operation.js

@@ -5,10 +5,10 @@ const EditNoOperation = require('./edit_no_operation')
 const EditOperation = require('./edit_operation')
 
 /**
- * @typedef {import('./delete_comment_operation')} DeleteCommentOperation
- * @typedef {import('../types').CommentRawData} CommentRawData
- * @typedef {import('../types').RawSetCommentStateOperation} RawSetCommentStateOperation
- * @typedef {import('../file_data/string_file_data')} StringFileData
+ * @import DeleteCommentOperation from './delete_comment_operation'
+ * @import { CommentRawData } from '../types'
+ * @import { RawSetCommentStateOperation } from '../types'
+ * @import StringFileData from '../file_data/string_file_data'
  */
 
 /**

+ 5 - 5
libraries/overleaf-editor-core/lib/operation/text_operation.js

@@ -30,11 +30,11 @@ const ClearTrackingProps = require('../file_data/clear_tracking_props')
 const TrackingProps = require('../file_data/tracking_props')
 
 /**
- * @typedef {import('../file_data/string_file_data')} StringFileData
- * @typedef {import('../types').RawTextOperation} RawTextOperation
- * @typedef {import('../operation/scan_op').ScanOp} ScanOp
- * @typedef {import('../file_data/tracked_change_list')} TrackedChangeList
- * @typedef {import('../types').TrackingDirective} TrackingDirective
+ * @import StringFileData from '../file_data/string_file_data'
+ * @import { RawTextOperation, TrackingDirective } from '../types'
+ * @import { ScanOp } from '../operation/scan_op'
+ * @import TrackedChangeList from '../file_data/tracked_change_list'
+ *
  * @typedef {{tracking?: TrackingProps, commentIds?: string[]}} InsertOptions
  */
 

+ 1 - 1
libraries/overleaf-editor-core/lib/range.js

@@ -3,7 +3,7 @@
 const OError = require('@overleaf/o-error')
 
 /**
- * @typedef {import('./types').RawRange} RawRange
+ * @import { RawRange } from './types'
  */
 
 class Range {

+ 4 - 6
libraries/overleaf-editor-core/lib/snapshot.js

@@ -10,12 +10,10 @@ const V2DocVersions = require('./v2_doc_versions')
 const FILE_LOAD_CONCURRENCY = 50
 
 /**
- * @typedef {import("./types").BlobStore} BlobStore
- * @typedef {import("./types").RawSnapshot} RawSnapshot
- * @typedef {import("./types").ReadonlyBlobStore} ReadonlyBlobStore
- * @typedef {import("./change")} Change
- * @typedef {import("./operation/text_operation")} TextOperation
- * @typedef {import("./file")} File
+ * @import { BlobStore, RawSnapshot, ReadonlyBlobStore } from "./types"
+ * @import Change from "./change"
+ * @import TextOperation from "./operation/text_operation"
+ * @import File from "./file"
  */
 
 class EditMissingFileError extends OError {}

+ 3 - 3
libraries/overleaf-editor-core/lib/v2_doc_versions.js

@@ -4,9 +4,9 @@
 const _ = require('lodash')
 
 /**
- * @typedef {import("./file")} File
- * @typedef {import("./snapshot")} Snapshot
- * @typedef {import("./types").RawV2DocVersions} RawV2DocVersions
+ * @import File from "./file"
+ * @import Snapshot from "./snapshot"
+ * @import { RawV2DocVersions } from "./types"
  */
 
 class V2DocVersions {

+ 1 - 1
libraries/overleaf-editor-core/test/support/fake_blob_store.js

@@ -1,5 +1,5 @@
 /**
- * @typedef {import("../..").Blob } Blob
+ * @import { Blob } from "../.."
  */
 
 /**

+ 1 - 1
libraries/overleaf-editor-core/test/tracked_change_list.test.js

@@ -3,7 +3,7 @@ const TrackedChangeList = require('../lib/file_data/tracked_change_list')
 const TrackingProps = require('../lib/file_data/tracking_props')
 const ClearTrackingProps = require('../lib/file_data/clear_tracking_props')
 const { expect } = require('chai')
-/** @typedef {import('../lib/types').TrackedChangeRawData} TrackedChangeRawData */
+/** @import { TrackedChangeRawData } from '../lib/types' */
 
 describe('TrackedChangeList', function () {
   describe('applyInsert', function () {

+ 2 - 2
services/docstore/app/js/DocManager.js

@@ -9,8 +9,8 @@ const { callbackifyAll } = require('@overleaf/promise-utils')
 const { setTimeout } = require('timers/promises')
 
 /**
- * @typedef {import('mongodb').Document} Document
- * @typedef {import('mongodb').WithId} WithId
+ * @import { Document } from 'mongodb'
+ * @import { WithId } from 'mongodb'
  */
 
 const DocManager = {

+ 2 - 6
services/document-updater/app/js/HistoryConversions.js

@@ -4,12 +4,8 @@ const _ = require('lodash')
 const { isDelete } = require('./Utils')
 
 /**
- * @typedef {import('./types').Comment} Comment
- * @typedef {import('./types').HistoryComment} HistoryComment
- * @typedef {import('./types').HistoryRanges} HistoryRanges
- * @typedef {import('./types').HistoryTrackedChange} HistoryTrackedChange
- * @typedef {import('./types').Ranges} Ranges
- * @typedef {import('./types').TrackedChange} TrackedChange
+ * @import { Comment, HistoryComment, HistoryRanges, HistoryTrackedChange } from './types'
+ * @import { Ranges, TrackedChange } from './types'
  */
 
 /**

+ 1 - 1
services/document-updater/app/js/ProjectHistoryRedisManager.js

@@ -14,7 +14,7 @@ const HistoryConversions = require('./HistoryConversions')
 const OError = require('@overleaf/o-error')
 
 /**
- * @typedef {import('./types').Ranges} Ranges
+ * @import { Ranges } from './types'
  */
 
 const ProjectHistoryRedisManager = {

+ 3 - 15
services/document-updater/app/js/RangesManager.js

@@ -8,21 +8,9 @@ const _ = require('lodash')
 const { isInsert, isDelete, isComment, getDocLength } = require('./Utils')
 
 /**
- * @typedef {import('./types').Comment} Comment
- * @typedef {import('./types').CommentOp} CommentOp
- * @typedef {import('./types').DeleteOp} DeleteOp
- * @typedef {import('./types').HistoryCommentOp} HistoryCommentOp
- * @typedef {import('./types').HistoryDeleteOp} HistoryDeleteOp
- * @typedef {import('./types').HistoryDeleteTrackedChange} HistoryDeleteTrackedChange
- * @typedef {import('./types').HistoryInsertOp} HistoryInsertOp
- * @typedef {import('./types').HistoryRetainOp} HistoryRetainOp
- * @typedef {import('./types').HistoryOp} HistoryOp
- * @typedef {import('./types').HistoryUpdate} HistoryUpdate
- * @typedef {import('./types').InsertOp} InsertOp
- * @typedef {import('./types').Op} Op
- * @typedef {import('./types').Ranges} Ranges
- * @typedef {import('./types').TrackedChange} TrackedChange
- * @typedef {import('./types').Update} Update
+ * @import { Comment, CommentOp, InsertOp, DeleteOp, HistoryOp, Op } from './types'
+ * @import { HistoryCommentOp, HistoryDeleteOp, HistoryInsertOp, HistoryRetainOp } from './types'
+ * @import { HistoryDeleteTrackedChange, HistoryUpdate, Ranges, TrackedChange, Update } from './types'
  */
 
 const RANGE_DELTA_BUCKETS = [0, 1, 2, 3, 4, 5, 10, 20, 50]

+ 1 - 6
services/document-updater/app/js/UpdateManager.js

@@ -17,12 +17,7 @@ const Profiler = require('./Profiler')
 const { isInsert, isDelete, getDocLength } = require('./Utils')
 
 /**
- * @typedef {import("./types").DeleteOp} DeleteOp
- * @typedef {import("./types").HistoryUpdate } HistoryUpdate
- * @typedef {import("./types").InsertOp} InsertOp
- * @typedef {import("./types").Op} Op
- * @typedef {import("./types").Ranges} Ranges
- * @typedef {import("./types").Update} Update
+ * @import { DeleteOp, InsertOp, Op, Ranges, Update, HistoryUpdate } from "./types"
  */
 
 const UpdateManager = {

+ 1 - 5
services/document-updater/app/js/Utils.js

@@ -2,11 +2,7 @@
 const _ = require('lodash')
 
 /**
- * @typedef {import('./types').CommentOp} CommentOp
- * @typedef {import('./types').DeleteOp} DeleteOp
- * @typedef {import('./types').InsertOp} InsertOp
- * @typedef {import('./types').Op} Op
- * @typedef {import('./types').TrackedChange} TrackedChange
+ * @import { CommentOp, DeleteOp, InsertOp, Op, TrackedChange } from './types'
  */
 
 /**

+ 1 - 1
services/history-v1/storage/lib/blob_store/index.js

@@ -22,7 +22,7 @@ const postgresBackend = require('./postgres')
 const mongoBackend = require('./mongo')
 const logger = require('@overleaf/logger')
 
-/** @typedef {import('stream').Readable} Readable */
+/** @import { Readable } from 'stream' */
 
 const GLOBAL_BLOBS = new Map()
 

+ 4 - 5
services/history-v1/storage/lib/project_archive.js

@@ -1,7 +1,10 @@
 // @ts-check
 'use strict'
 
-/** @typedef {import('overleaf-editor-core').Snapshot} Snapshot */
+/**
+ * @import { Snapshot } from 'overleaf-editor-core'
+ * @import { BlobStore } from '../../storage/lib/blob_store/index'
+ */
 
 const Archive = require('archiver')
 const BPromise = require('bluebird')
@@ -15,10 +18,6 @@ const OError = require('@overleaf/o-error')
 
 const assert = require('./assert')
 
-/**
- * @typedef {import('../../storage/lib/blob_store/index').BlobStore} BlobStore
- */
-
 // The maximum safe concurrency appears to be 1.
 // https://github.com/overleaf/issues/issues/1909
 const FETCH_CONCURRENCY = 1 // number of files to fetch at once

+ 1 - 2
services/project-history/app/js/ChunkTranslator.js

@@ -14,8 +14,7 @@ import {
 } from 'overleaf-editor-core'
 
 /**
- * @typedef {import('overleaf-editor-core/lib/types').RawEditOperation} RawEditOperation
- * @typedef {import('overleaf-editor-core/lib/types').TrackedChangeRawData} TrackedChangeRawData
+ * @import { RawEditOperation, TrackedChangeRawData } from 'overleaf-editor-core/lib/types'
  */
 
 export function convertToSummarizedUpdates(chunk, callback) {

+ 3 - 4
services/project-history/app/js/HistoryBlobTranslator.js

@@ -12,10 +12,9 @@ import logger from '@overleaf/logger'
 import OError from '@overleaf/o-error'
 
 /**
- * @typedef {import('./types').AddDocUpdate} AddDocUpdate
- * @typedef {import('overleaf-editor-core/lib/types').CommentRawData} CommentRawData
- * @typedef {import('overleaf-editor-core/lib/types').TrackedChangeRawData} TrackedChangeRawData
- * */
+ * @import { AddDocUpdate } from './types'
+ * @import { CommentRawData, TrackedChangeRawData } from 'overleaf-editor-core/lib/types'
+ */
 
 /**
  *

+ 2 - 3
services/project-history/app/js/SnapshotManager.js

@@ -10,9 +10,8 @@ import * as Errors from './Errors.js'
 import _ from 'lodash'
 
 /**
- * @typedef {import('stream').Readable} ReadableStream
- * @typedef {import('overleaf-editor-core').Snapshot} Snapshot
- * @typedef {import('./types').RangesSnapshot} RangesSnapshot
+ * @import { Snapshot } from 'overleaf-editor-core'
+ * @import { RangesSnapshot } from './types'
  */
 
 StringStream.prototype._read = function () {}

+ 4 - 12
services/project-history/app/js/SyncManager.js

@@ -22,18 +22,10 @@ import * as HashManager from './HashManager.js'
 import { isInsert, isDelete } from './Utils.js'
 
 /**
- * @typedef {import('overleaf-editor-core').Comment} HistoryComment
- * @typedef {import('overleaf-editor-core').TrackedChange} HistoryTrackedChange
- * @typedef {import('./types').Comment} Comment
- * @typedef {import('./types').Entity} Entity
- * @typedef {import('./types').ResyncDocContentUpdate} ResyncDocContentUpdate
- * @typedef {import('./types').RetainOp} RetainOp
- * @typedef {import('./types').TrackedChange} TrackedChange
- * @typedef {import('./types').TrackedChangeTransition} TrackedChangeTransition
- * @typedef {import('./types').TrackingDirective} TrackingDirective
- * @typedef {import('./types').TrackingType} TrackingType
- * @typedef {import('./types').Update} Update
- * @typedef {import('./types').ProjectStructureUpdate} ProjectStructureUpdate
+ * @import { Comment as HistoryComment, TrackedChange as HistoryTrackedChange } from 'overleaf-editor-core'
+ * @import { Comment, Entity, ResyncDocContentUpdate, RetainOp, TrackedChange } from './types'
+ * @import { TrackedChangeTransition, TrackingDirective, TrackingType, Update } from './types'
+ * @import { ProjectStructureUpdate } from './types'
  */
 const MAX_RESYNC_HISTORY_RECORDS = 100 // keep this many records of previous resyncs
 const EXPIRE_RESYNC_HISTORY_INTERVAL_MS = 90 * 24 * 3600 * 1000 // 90 days

+ 1 - 4
services/project-history/app/js/UpdateCompressor.js

@@ -4,10 +4,7 @@ import OError from '@overleaf/o-error'
 import DMP from 'diff-match-patch'
 
 /**
- * @typedef {import('./types').DeleteOp} DeleteOp
- * @typedef {import('./types').InsertOp} InsertOp
- * @typedef {import('./types').Op} Op
- * @typedef {import('./types').Update} Update
+ * @import { DeleteOp, InsertOp, Op, Update } from './types'
  */
 
 const MAX_TIME_BETWEEN_UPDATES = 60 * 1000 // one minute

+ 3 - 13
services/project-history/app/js/UpdateTranslator.js

@@ -7,19 +7,9 @@ import * as OperationsCompressor from './OperationsCompressor.js'
 import { isInsert, isRetain, isDelete, isComment } from './Utils.js'
 
 /**
- * @typedef {import('./types').AddDocUpdate} AddDocUpdate
- * @typedef {import('./types').AddFileUpdate} AddFileUpdate
- * @typedef {import('./types').DeleteCommentUpdate} DeleteCommentUpdate
- * @typedef {import('./types').Op} Op
- * @typedef {import('./types').RawScanOp} RawScanOp
- * @typedef {import('./types').RenameUpdate} RenameUpdate
- * @typedef {import('./types').TextUpdate} TextUpdate
- * @typedef {import('./types').TrackingDirective} TrackingDirective
- * @typedef {import('./types').TrackingProps} TrackingProps
- * @typedef {import('./types').SetCommentStateUpdate} SetCommentStateUpdate
- * @typedef {import('./types').SetFileMetadataOperation} SetFileMetadataOperation
- * @typedef {import('./types').Update} Update
- * @typedef {import('./types').UpdateWithBlob} UpdateWithBlob
+ * @import { AddDocUpdate, AddFileUpdate, DeleteCommentUpdate, Op, RawScanOp } from './types'
+ * @import { RenameUpdate, TextUpdate, TrackingDirective, TrackingProps } from './types'
+ * @import { SetCommentStateUpdate, SetFileMetadataOperation, Update, UpdateWithBlob } from './types'
  */
 
 /**

+ 1 - 5
services/project-history/app/js/Utils.js

@@ -1,11 +1,7 @@
 // @ts-check
 
 /**
- * @typedef {import('./types').CommentOp} CommentOp
- * @typedef {import('./types').DeleteOp} DeleteOp
- * @typedef {import('./types').InsertOp} InsertOp
- * @typedef {import('./types').Op} Op
- * @typedef {import('./types').RetainOp} RetainOp
+ * @import { CommentOp, DeleteOp, InsertOp, Op, RetainOp } from './types'
  */
 
 /**

+ 3 - 1
services/project-history/test/unit/js/HistoryBlobTranslator/HistoryBlobTranslatorTests.js

@@ -1,7 +1,9 @@
 import { expect } from 'chai'
 import { createRangeBlobDataFromUpdate } from '../../../../app/js/HistoryBlobTranslator.js'
 
-/** @typedef {import("../../../../app/js/types").AddDocUpdate} AddDocUpdate */
+/**
+ * @import { AddDocUpdate } from "../../../../app/js/types"
+ */
 
 /**
  *

+ 1 - 3
services/web/app/src/Features/Project/ProjectController.js

@@ -47,9 +47,7 @@ const Modules = require('../../infrastructure/Modules')
 const UserGetter = require('../User/UserGetter')
 
 /**
- * @typedef {import("./types").GetProjectsRequest} GetProjectsRequest
- * @typedef {import("./types").GetProjectsResponse} GetProjectsResponse
- * @typedef {import("./types").Project} Project
+ * @import { GetProjectsRequest, GetProjectsResponse, Project } from "./types"
  */
 
 const _ProjectController = {

+ 1 - 1
services/web/app/src/Features/Project/ProjectHelper.js

@@ -5,7 +5,7 @@ const { promisify } = require('util')
 const Settings = require('@overleaf/settings')
 
 /**
- * @typedef {import("./types").MongoProject} MongoProject
+ * @import { MongoProject } from "./types"
  */
 
 const ENGINE_TO_COMPILER_MAP = {

+ 5 - 9
services/web/app/src/Features/Project/ProjectListController.js

@@ -27,15 +27,11 @@ const SplitTestHandler = require('../SplitTests/SplitTestHandler')
 const SplitTestSessionHandler = require('../SplitTests/SplitTestSessionHandler')
 const SubscriptionLocator = require('../Subscription/SubscriptionLocator')
 
-/** @typedef {import("./types").GetProjectsRequest} GetProjectsRequest */
-/** @typedef {import("./types").GetProjectsResponse} GetProjectsResponse */
-/** @typedef {import("../../../../types/project/dashboard/api").ProjectApi} ProjectApi */
-/** @typedef {import("../../../../types/project/dashboard/api").Filters} Filters */
-/** @typedef {import("../../../../types/project/dashboard/api").Page} Page */
-/** @typedef {import("../../../../types/project/dashboard/api").Sort} Sort */
-/** @typedef {import("./types").AllUsersProjects} AllUsersProjects */
-/** @typedef {import("./types").MongoProject} MongoProject */
-/** @typedef {import("../Tags/types").Tag} Tag */
+/**
+ * @import { GetProjectsRequest, GetProjectsResponse, AllUsersProjects, MongoProject } from "./types"
+ * @import { ProjectApi, Filters, Page, Sort } from "../../../../types/project/dashboard/api"
+ * @import { Tag } from "../Tags/types"
+ */
 
 const _ssoAvailable = (affiliation, session, linkedInstitutionIds) => {
   if (!affiliation.institution) return false

+ 1 - 1
services/web/app/src/Features/SplitTests/SplitTestHandler.js

@@ -17,7 +17,7 @@ const SplitTestSessionHandler = require('./SplitTestSessionHandler')
 const SplitTestUserGetter = require('./SplitTestUserGetter')
 
 /**
- * @typedef {import("./types").Assignment} Assignment
+ * @import { Assignment } from "./types"
  */
 
 const DEFAULT_VARIANT = 'default'

+ 4 - 4
services/web/app/src/Features/Subscription/SubscriptionFormatters.js

@@ -1,6 +1,10 @@
 const dateformat = require('dateformat')
 const { formatCurrencyLocalized } = require('../../util/currency')
 
+/**
+ * @import { CurrencyCode } from '@/shared/utils/currency'
+ */
+
 const currencySymbols = {
   EUR: '€',
   USD: '$',
@@ -48,10 +52,6 @@ function formatPriceDefault(priceInCents, currency) {
   return `${symbol}${dollars}.${cents}`
 }
 
-/**
- * @typedef {import('@/shared/utils/currency').CurrencyCode} CurrencyCode
- */
-
 /**
  * @param {number} priceInCents - price in the smallest currency unit (e.g. dollar cents, CLP units, ...)
  * @param {CurrencyCode?} currency - currency code (default to USD)

+ 1 - 1
services/web/app/src/Features/Subscription/SubscriptionGroupController.js

@@ -9,7 +9,7 @@ const { expressify } = require('@overleaf/promise-utils')
 const Modules = require('../../infrastructure/Modules')
 
 /**
- * @typedef {import("../../../../types/subscription/dashboard/subscription").Subscription} Subscription
+ * @import { Subscription } from "../../../../types/subscription/dashboard/subscription"
  */
 
 /**

+ 1 - 1
services/web/app/src/Features/Subscription/SubscriptionHelper.js

@@ -9,7 +9,7 @@ function shouldPlanChangeAtTermEnd(oldPlan, newPlan) {
 }
 
 /**
- * @typedef {import('../../../../frontend/js/shared/utils/currency').CurrencyCode} CurrencyCode
+ * @import { CurrencyCode } from '../../../../frontend/js/shared/utils/currency'
  */
 
 /**

+ 3 - 1
services/web/app/src/Features/Subscription/SubscriptionViewModelBuilder.js

@@ -20,7 +20,9 @@ const {
 } = require('../Errors/Errors')
 const FeaturesHelper = require('./FeaturesHelper')
 
-/** @typedef {import("../../../../types/project/dashboard/subscription").Subscription} Subscription */
+/**
+ * @import { Subscription } from "../../../../types/project/dashboard/subscription"
+ */
 
 function buildHostedLink(type) {
   return `/user/subscription/recurly/${type}`

+ 1 - 1
services/web/app/src/Features/Survey/SurveyHandler.js

@@ -5,7 +5,7 @@ const SubscriptionLocator = require('../Subscription/SubscriptionLocator')
 const { callbackify } = require('@overleaf/promise-utils')
 
 /**
- * @typedef {import('../../../../types/project/dashboard/survey').Survey} Survey
+ * @import { Survey } from '../../../../types/project/dashboard/survey'
  */
 
 /**

+ 2 - 2
services/web/app/src/infrastructure/HttpPermissionsPolicy.js

@@ -3,8 +3,8 @@
 const Settings = require('@overleaf/settings')
 
 /**
- * @typedef {import('./types').HttpPermissionsPolicy} HttpPermissionsPolicy
- * */
+ * @import { HttpPermissionsPolicy } from './types'
+ */
 
 class HttpPermissionsPolicyMiddleware {
   /**

+ 1 - 1
services/web/app/src/util/currency.js

@@ -3,7 +3,7 @@
  */
 
 /**
- * @typedef {import('@/shared/utils/currency').CurrencyCode} CurrencyCode
+ * @import { CurrencyCode } from '@/shared/utils/currency'
  */
 
 /**

+ 1 - 1
services/web/frontend/js/features/plans/utils/group-plan-pricing.js

@@ -1,7 +1,7 @@
 import getMeta from '../../../utils/meta'
 
 /**
- * @typedef {import('@/shared/utils/currency').CurrencyCode} CurrencyCode
+ * @import { CurrencyCode } from '@/shared/utils/currency'
  */
 
 // plan: 'collaborator' or 'professional'

+ 1 - 1
services/web/modules/history-v1/index.js

@@ -1,4 +1,4 @@
-/** @typedef {import("../../types/web-module").WebModule} WebModule */
+/** @import { WebModule } from "../../types/web-module" */
 
 /** @type {WebModule} */
 const HistoryModule = {}

+ 1 - 1
services/web/modules/launchpad/index.js

@@ -1,6 +1,6 @@
 const LaunchpadRouter = require('./app/src/LaunchpadRouter')
 
-/** @typedef {import("../../types/web-module").WebModule} WebModule */
+/** @import { WebModule } from "../../types/web-module" */
 
 /** @type {WebModule} */
 const LaunchpadModule = {

+ 1 - 1
services/web/modules/server-ce-scripts/index.js

@@ -1,4 +1,4 @@
-/** @typedef {import("../../types/web-module").WebModule} WebModule */
+/** @import { WebModule } from "../../types/web-module" */
 
 /** @type {WebModule} */
 const ServerCeScriptsModule = {}

+ 3 - 1
services/web/modules/user-activate/index.js

@@ -1,6 +1,8 @@
 const UserActivateRouter = require('./app/src/UserActivateRouter')
 
-/** @typedef {import("../../types/web-module").WebModule} WebModule */
+/**
+ * @import { WebModule } from "../../types/web-module"
+ */
 
 /** @type {WebModule} */
 const UserActivateModule = {