@deephaven/console 0.16.1-beta.2 → 0.16.1-beta.5

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.
Files changed (56) hide show
  1. package/dist/Console.js.map +1 -1
  2. package/dist/ConsoleInput.js.map +1 -1
  3. package/dist/ConsoleMenu.js.map +1 -1
  4. package/dist/ConsolePropTypes.js.map +1 -1
  5. package/dist/ConsoleShortcuts.js.map +1 -1
  6. package/dist/ConsoleStatusBar.js.map +1 -1
  7. package/dist/HeapUsage.js.map +1 -1
  8. package/dist/StoragePropTypes.js.map +1 -1
  9. package/dist/command-history/CommandHistory.js.map +1 -1
  10. package/dist/command-history/CommandHistoryActions.js.map +1 -1
  11. package/dist/command-history/CommandHistoryItem.js.map +1 -1
  12. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
  13. package/dist/command-history/CommandHistoryStorage.js.map +1 -1
  14. package/dist/command-history/CommandHistoryTypes.js.map +1 -1
  15. package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
  16. package/dist/command-history/index.js.map +1 -1
  17. package/dist/common/Code.js.map +1 -1
  18. package/dist/common/ConsoleConstants.js.map +1 -1
  19. package/dist/common/ConsoleUtils.js.map +1 -1
  20. package/dist/common/ObjectIcon.js.map +1 -1
  21. package/dist/common/index.d.js.map +1 -1
  22. package/dist/common/index.js.map +1 -1
  23. package/dist/console-history/ConsoleHistory.js.map +1 -1
  24. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  25. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
  26. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
  27. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  28. package/dist/console-history/ConsoleHistoryTypes.js.map +1 -1
  29. package/dist/console-history/index.js.map +1 -1
  30. package/dist/csv/CsvFormats.js.map +1 -1
  31. package/dist/csv/CsvInputBar.js.map +1 -1
  32. package/dist/csv/CsvOverlay.js.map +1 -1
  33. package/dist/csv/CsvParser.js.map +1 -1
  34. package/dist/csv/CsvTypeParser.js.map +1 -1
  35. package/dist/csv/NewTableColumnTypes.js.map +1 -1
  36. package/dist/declaration.d.js.map +1 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/log/LogLevel.js.map +1 -1
  39. package/dist/log/LogLevelMenuItem.js.map +1 -1
  40. package/dist/log/LogView.js.map +1 -1
  41. package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
  42. package/dist/monaco/MonacoUtils.d.ts +1 -1
  43. package/dist/monaco/MonacoUtils.d.ts.map +1 -1
  44. package/dist/monaco/MonacoUtils.js +14 -1
  45. package/dist/monaco/MonacoUtils.js.map +1 -1
  46. package/dist/monaco/index.js.map +1 -1
  47. package/dist/monaco/lang/Language.js.map +1 -1
  48. package/dist/monaco/lang/db.js.map +1 -1
  49. package/dist/monaco/lang/groovy.js.map +1 -1
  50. package/dist/monaco/lang/log.js.map +1 -1
  51. package/dist/monaco/lang/python.js.map +1 -1
  52. package/dist/monaco/lang/scala.js.map +1 -1
  53. package/dist/notebook/Editor.js.map +1 -1
  54. package/dist/notebook/ScriptEditor.js.map +1 -1
  55. package/dist/notebook/ScriptEditorUtils.js.map +1 -1
  56. package/package.json +12 -11
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/console-history/ConsoleHistoryResultInProgress.tsx"],"names":["React","Component","classNames","FontAwesomeIcon","LoadingSpinner","Tooltip","vsClose","TimeUtils","ConsoleHistoryResultInProgress","constructor","props","updateElapsed","bind","startTime","Date","now","state","elapsed","componentDidMount","timer","setInterval","componentWillUnmount","clearInterval","undefined","setState","Math","round","render","disabled","onCancelClick","formatElapsedTime"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAA+C,OAA/C;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,cAAT,EAAyBC,OAAzB,QAAwC,uBAAxC;AACA,SAASC,OAAT,QAAwB,kBAAxB;AACA,SAASC,SAAT,QAA0B,kBAA1B;;;AAWA;AACA;AACA;AACA,MAAMC,8BAAN,SAA6CP,SAA7C,CAGE;AAKAQ,EAAAA,WAAW,CAACC,KAAD,EAA6C;AACtD,UAAMA,KAAN;;AADsD;;AAAA;;AAGtD,SAAKC,aAAL,GAAqB,KAAKA,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CAArB;AAEA,SAAKC,SAAL,GAAiBC,IAAI,CAACC,GAAL,EAAjB;AAEA,SAAKC,KAAL,GAAa;AACXC,MAAAA,OAAO,EAAE;AADE,KAAb;AAGD;;AAEDC,EAAAA,iBAAiB,GAAS;AACxB,SAAKC,KAAL,GAAaC,WAAW,CAAC,KAAKT,aAAN,EAAqB,IAArB,CAAxB;AACD;;AAEDU,EAAAA,oBAAoB,GAAS;AAC3B,QAAI,KAAKF,KAAT,EAAgB;AACdG,MAAAA,aAAa,CAAC,KAAKH,KAAN,CAAb;AACD;;AAED,SAAKA,KAAL,GAAaI,SAAb;AACD;;AAMDZ,EAAAA,aAAa,GAAS;AACpB,SAAKa,QAAL,CAAc;AACZP,MAAAA,OAAO,EAAEQ,IAAI,CAACC,KAAL,CAAW,CAACZ,IAAI,CAACC,GAAL,KAAa,KAAKF,SAAnB,IAAgC,IAA3C;AADG,KAAd;AAGD;;AAEDc,EAAAA,MAAM,GAAiB;AACrB,QAAM;AAAEC,MAAAA,QAAF;AAAYC,MAAAA;AAAZ,QAA8B,KAAKnB,KAAzC;AACA,QAAM;AAAEO,MAAAA;AAAF,QAAc,KAAKD,KAAzB;AACA,wBACE;AACE,MAAA,SAAS,EAAEd,UAAU,CAAC,oCAAD,EAAuC;AAC1D0B,QAAAA;AAD0D,OAAvC;AADvB,oBAKE;AAAM,MAAA,SAAS,EAAC;AAAhB,oBACE,oBAAC,cAAD,OADF,qBAEoBrB,SAAS,CAACuB,iBAAV,CAA4Bb,OAA5B,CAFpB,uBAGE;AAAQ,MAAA,IAAI,EAAC,QAAb;AAAsB,MAAA,OAAO,EAAEY,aAA/B;AAA8C,MAAA,QAAQ,EAAED;AAAxD,oBACE,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAEtB;AAAvB,MADF,eAEE,oBAAC,OAAD,iBAFF,CAHF,CALF,CADF;AAgBD;;AA1DD;;gBAHIE,8B,kBAIkB;AACpBoB,EAAAA,QAAQ,EAAE;AADU,C;;AA4DxB,eAAepB,8BAAf","sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { LoadingSpinner, Tooltip } from '@deephaven/components';\nimport { vsClose } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport './ConsoleHistoryResultInProgress.scss';\n\ninterface ConsoleHistoryResultInProgressProps {\n onCancelClick: () => void;\n disabled: boolean;\n}\n\ninterface ConsoleHistoryResultInProgressState {\n elapsed: number;\n}\n/**\n * A spinner shown when a command is taking a while.\n */\nclass ConsoleHistoryResultInProgress extends Component<\n ConsoleHistoryResultInProgressProps,\n ConsoleHistoryResultInProgressState\n> {\n static defaultProps = {\n disabled: false,\n };\n\n constructor(props: ConsoleHistoryResultInProgressProps) {\n super(props);\n\n this.updateElapsed = this.updateElapsed.bind(this);\n\n this.startTime = Date.now();\n\n this.state = {\n elapsed: 0,\n };\n }\n\n componentDidMount(): void {\n this.timer = setInterval(this.updateElapsed, 1000);\n }\n\n componentWillUnmount(): void {\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.timer = undefined;\n }\n\n timer?: NodeJS.Timer;\n\n startTime: number;\n\n updateElapsed(): void {\n this.setState({\n elapsed: Math.round((Date.now() - this.startTime) / 1000),\n });\n }\n\n render(): ReactElement {\n const { disabled, onCancelClick } = this.props;\n const { elapsed } = this.state;\n return (\n <div\n className={classNames('console-history-result-in-progress', {\n disabled,\n })}\n >\n <span className=\"badge\">\n <LoadingSpinner />\n &nbsp;Running... {TimeUtils.formatElapsedTime(elapsed)}&nbsp;\n <button type=\"button\" onClick={onCancelClick} disabled={disabled}>\n <FontAwesomeIcon icon={vsClose} />\n <Tooltip>Cancel</Tooltip>\n </button>\n </span>\n </div>\n );\n }\n}\n\nexport default ConsoleHistoryResultInProgress;\n"],"file":"ConsoleHistoryResultInProgress.js"}
1
+ {"version":3,"file":"ConsoleHistoryResultInProgress.js","names":["React","Component","classNames","FontAwesomeIcon","LoadingSpinner","Tooltip","vsClose","TimeUtils","ConsoleHistoryResultInProgress","constructor","props","updateElapsed","bind","startTime","Date","now","state","elapsed","componentDidMount","timer","setInterval","componentWillUnmount","clearInterval","undefined","setState","Math","round","render","disabled","onCancelClick","formatElapsedTime"],"sources":["../../src/console-history/ConsoleHistoryResultInProgress.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { LoadingSpinner, Tooltip } from '@deephaven/components';\nimport { vsClose } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport './ConsoleHistoryResultInProgress.scss';\n\ninterface ConsoleHistoryResultInProgressProps {\n onCancelClick: () => void;\n disabled: boolean;\n}\n\ninterface ConsoleHistoryResultInProgressState {\n elapsed: number;\n}\n/**\n * A spinner shown when a command is taking a while.\n */\nclass ConsoleHistoryResultInProgress extends Component<\n ConsoleHistoryResultInProgressProps,\n ConsoleHistoryResultInProgressState\n> {\n static defaultProps = {\n disabled: false,\n };\n\n constructor(props: ConsoleHistoryResultInProgressProps) {\n super(props);\n\n this.updateElapsed = this.updateElapsed.bind(this);\n\n this.startTime = Date.now();\n\n this.state = {\n elapsed: 0,\n };\n }\n\n componentDidMount(): void {\n this.timer = setInterval(this.updateElapsed, 1000);\n }\n\n componentWillUnmount(): void {\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.timer = undefined;\n }\n\n timer?: NodeJS.Timer;\n\n startTime: number;\n\n updateElapsed(): void {\n this.setState({\n elapsed: Math.round((Date.now() - this.startTime) / 1000),\n });\n }\n\n render(): ReactElement {\n const { disabled, onCancelClick } = this.props;\n const { elapsed } = this.state;\n return (\n <div\n className={classNames('console-history-result-in-progress', {\n disabled,\n })}\n >\n <span className=\"badge\">\n <LoadingSpinner />\n &nbsp;Running... {TimeUtils.formatElapsedTime(elapsed)}&nbsp;\n <button type=\"button\" onClick={onCancelClick} disabled={disabled}>\n <FontAwesomeIcon icon={vsClose} />\n <Tooltip>Cancel</Tooltip>\n </button>\n </span>\n </div>\n );\n }\n}\n\nexport default ConsoleHistoryResultInProgress;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAA+C,OAA/C;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,cAAT,EAAyBC,OAAzB,QAAwC,uBAAxC;AACA,SAASC,OAAT,QAAwB,kBAAxB;AACA,SAASC,SAAT,QAA0B,kBAA1B;;;AAWA;AACA;AACA;AACA,MAAMC,8BAAN,SAA6CP,SAA7C,CAGE;EAKAQ,WAAW,CAACC,KAAD,EAA6C;IACtD,MAAMA,KAAN;;IADsD;;IAAA;;IAGtD,KAAKC,aAAL,GAAqB,KAAKA,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CAArB;IAEA,KAAKC,SAAL,GAAiBC,IAAI,CAACC,GAAL,EAAjB;IAEA,KAAKC,KAAL,GAAa;MACXC,OAAO,EAAE;IADE,CAAb;EAGD;;EAEDC,iBAAiB,GAAS;IACxB,KAAKC,KAAL,GAAaC,WAAW,CAAC,KAAKT,aAAN,EAAqB,IAArB,CAAxB;EACD;;EAEDU,oBAAoB,GAAS;IAC3B,IAAI,KAAKF,KAAT,EAAgB;MACdG,aAAa,CAAC,KAAKH,KAAN,CAAb;IACD;;IAED,KAAKA,KAAL,GAAaI,SAAb;EACD;;EAMDZ,aAAa,GAAS;IACpB,KAAKa,QAAL,CAAc;MACZP,OAAO,EAAEQ,IAAI,CAACC,KAAL,CAAW,CAACZ,IAAI,CAACC,GAAL,KAAa,KAAKF,SAAnB,IAAgC,IAA3C;IADG,CAAd;EAGD;;EAEDc,MAAM,GAAiB;IACrB,IAAM;MAAEC,QAAF;MAAYC;IAAZ,IAA8B,KAAKnB,KAAzC;IACA,IAAM;MAAEO;IAAF,IAAc,KAAKD,KAAzB;IACA,oBACE;MACE,SAAS,EAAEd,UAAU,CAAC,oCAAD,EAAuC;QAC1D0B;MAD0D,CAAvC;IADvB,gBAKE;MAAM,SAAS,EAAC;IAAhB,gBACE,oBAAC,cAAD,OADF,qBAEoBrB,SAAS,CAACuB,iBAAV,CAA4Bb,OAA5B,CAFpB,uBAGE;MAAQ,IAAI,EAAC,QAAb;MAAsB,OAAO,EAAEY,aAA/B;MAA8C,QAAQ,EAAED;IAAxD,gBACE,oBAAC,eAAD;MAAiB,IAAI,EAAEtB;IAAvB,EADF,eAEE,oBAAC,OAAD,iBAFF,CAHF,CALF,CADF;EAgBD;;AA1DD;;gBAHIE,8B,kBAIkB;EACpBoB,QAAQ,EAAE;AADU,C;;AA4DxB,eAAepB,8BAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"ConsoleHistoryTypes.js"}
1
+ {"version":3,"file":"ConsoleHistoryTypes.js","names":[],"sources":["../../src/console-history/ConsoleHistoryTypes.tsx"],"sourcesContent":["import { CancelablePromise } from '@deephaven/utils';\nimport { VariableChanges } from '@deephaven/jsapi-shim';\n\nexport type ConsoleHistoryError =\n | string\n | {\n message: string;\n }\n | undefined;\n\nexport interface ConsoleHistoryActionItem {\n command?: string;\n result?: {\n message?: string;\n error?: unknown;\n changes?: VariableChanges;\n };\n disabledObjects?: string[];\n startTime?: number;\n endTime?: number;\n cancelResult?: () => void;\n wrappedResult?: CancelablePromise<unknown>;\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/console-history/index.tsx"],"names":["default","ConsoleHistory","ConsoleHistoryItem","ConsoleHistoryItemResult","ConsoleHistoryResultErrorMessage","ConsoleHistoryResultInProgress"],"mappings":"SAASA,OAAO,IAAIC,c;SACXD,OAAO,IAAIE,kB;SACXF,OAAO,IAAIG,wB;SACXH,OAAO,IAAII,gC;SACXJ,OAAO,IAAIK,8B","sourcesContent":["export { default as ConsoleHistory } from './ConsoleHistory';\nexport { default as ConsoleHistoryItem } from './ConsoleHistoryItem';\nexport { default as ConsoleHistoryItemResult } from './ConsoleHistoryItemResult';\nexport { default as ConsoleHistoryResultErrorMessage } from './ConsoleHistoryResultErrorMessage';\nexport { default as ConsoleHistoryResultInProgress } from './ConsoleHistoryResultInProgress';\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["default","ConsoleHistory","ConsoleHistoryItem","ConsoleHistoryItemResult","ConsoleHistoryResultErrorMessage","ConsoleHistoryResultInProgress"],"sources":["../../src/console-history/index.tsx"],"sourcesContent":["export { default as ConsoleHistory } from './ConsoleHistory';\nexport { default as ConsoleHistoryItem } from './ConsoleHistoryItem';\nexport { default as ConsoleHistoryItemResult } from './ConsoleHistoryItemResult';\nexport { default as ConsoleHistoryResultErrorMessage } from './ConsoleHistoryResultErrorMessage';\nexport { default as ConsoleHistoryResultInProgress } from './ConsoleHistoryResultInProgress';\n"],"mappings":"SAASA,OAAO,IAAIC,c;SACXD,OAAO,IAAIE,kB;SACXF,OAAO,IAAIG,wB;SACXH,OAAO,IAAII,gC;SACXJ,OAAO,IAAIK,8B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/csv/CsvFormats.ts"],"names":["CsvFormats","fromExtension","fileName","endsWith","Object","freeze","DEFAULT_CSV","name","delimiter","newline","undefined","escapeChar","shouldTrim","skipEmptyLines","nullString","TSV","APACHE_COMMON_CSV","EXCEL_CSV","MY_SQL_CSV","RFC4180_CSV","COLON_SV","SEMI_COLON_SV","PIPE_SV","SPACE_SV","AUTODETECT"],"mappings":"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","sourcesContent":["export type CsvTypes = typeof CsvFormats.TYPES[keyof typeof CsvFormats.TYPES];\n\nclass CsvFormats {\n static DEFAULT_TYPE = 'DEFAULT_CSV' as const;\n\n static AUTO = 'AUTODETECT' as const;\n\n static fromExtension(fileName: string): keyof typeof CsvFormats.TYPES {\n if (fileName.endsWith('.csv')) {\n return 'DEFAULT_CSV';\n }\n if (fileName.endsWith('.tsv') || fileName.endsWith('.tab')) {\n return 'TSV';\n }\n if (fileName.endsWith('.psv')) {\n return 'PIPE_SV';\n }\n return 'AUTODETECT';\n }\n\n static TYPES = Object.freeze({\n DEFAULT_CSV: {\n name: 'Default csv (trimmed)',\n delimiter: ',',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n TSV: {\n name: 'Tab seperated (tsv)',\n delimiter: '\\t',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n // From org.apache.commons.csv.CSVFormat#DEFAULT\n APACHE_COMMON_CSV: {\n name: 'Apache Common csv',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: null,\n },\n\n // From org.apache.commons.csv.CSVFormat#EXCEL\n EXCEL_CSV: {\n name: 'Excel csv (strict)',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: null,\n },\n\n // From org.apache.commons.csv.CSVFormat#MYSQL\n MY_SQL_CSV: {\n name: 'MySQL csv',\n delimiter: '\\t',\n newline: '\\n',\n escapeChar: '\\\\',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: '\\\\N',\n },\n\n // From org.apache.commons.csv.CSVFormat#RFC4180\n RFC4180_CSV: {\n name: 'RFC4180 csv',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: null,\n },\n\n COLON_SV: {\n name: ': colon sv',\n delimiter: ':',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n SEMI_COLON_SV: {\n name: '; semi-colon sv',\n delimiter: ';',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n PIPE_SV: {\n name: '| pipe separated (psv)',\n delimiter: '|',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n SPACE_SV: {\n name: '\" \" space sv',\n delimiter: ' ',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n AUTODETECT: {\n name: 'autodetect',\n delimiter: undefined, // autodetect\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n });\n}\n\nexport default CsvFormats;\n"],"file":"CsvFormats.js"}
1
+ {"version":3,"file":"CsvFormats.js","names":["CsvFormats","fromExtension","fileName","endsWith","Object","freeze","DEFAULT_CSV","name","delimiter","newline","undefined","escapeChar","shouldTrim","skipEmptyLines","nullString","TSV","APACHE_COMMON_CSV","EXCEL_CSV","MY_SQL_CSV","RFC4180_CSV","COLON_SV","SEMI_COLON_SV","PIPE_SV","SPACE_SV","AUTODETECT"],"sources":["../../src/csv/CsvFormats.ts"],"sourcesContent":["export type CsvTypes = typeof CsvFormats.TYPES[keyof typeof CsvFormats.TYPES];\n\nclass CsvFormats {\n static DEFAULT_TYPE = 'DEFAULT_CSV' as const;\n\n static AUTO = 'AUTODETECT' as const;\n\n static fromExtension(fileName: string): keyof typeof CsvFormats.TYPES {\n if (fileName.endsWith('.csv')) {\n return 'DEFAULT_CSV';\n }\n if (fileName.endsWith('.tsv') || fileName.endsWith('.tab')) {\n return 'TSV';\n }\n if (fileName.endsWith('.psv')) {\n return 'PIPE_SV';\n }\n return 'AUTODETECT';\n }\n\n static TYPES = Object.freeze({\n DEFAULT_CSV: {\n name: 'Default csv (trimmed)',\n delimiter: ',',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n TSV: {\n name: 'Tab seperated (tsv)',\n delimiter: '\\t',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n // From org.apache.commons.csv.CSVFormat#DEFAULT\n APACHE_COMMON_CSV: {\n name: 'Apache Common csv',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: null,\n },\n\n // From org.apache.commons.csv.CSVFormat#EXCEL\n EXCEL_CSV: {\n name: 'Excel csv (strict)',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: null,\n },\n\n // From org.apache.commons.csv.CSVFormat#MYSQL\n MY_SQL_CSV: {\n name: 'MySQL csv',\n delimiter: '\\t',\n newline: '\\n',\n escapeChar: '\\\\',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: '\\\\N',\n },\n\n // From org.apache.commons.csv.CSVFormat#RFC4180\n RFC4180_CSV: {\n name: 'RFC4180 csv',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: null,\n },\n\n COLON_SV: {\n name: ': colon sv',\n delimiter: ':',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n SEMI_COLON_SV: {\n name: '; semi-colon sv',\n delimiter: ';',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n PIPE_SV: {\n name: '| pipe separated (psv)',\n delimiter: '|',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n SPACE_SV: {\n name: '\" \" space sv',\n delimiter: ' ',\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n\n AUTODETECT: {\n name: 'autodetect',\n delimiter: undefined, // autodetect\n newline: undefined, // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)',\n },\n });\n}\n\nexport default CsvFormats;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/csv/CsvInputBar.tsx"],"names":["React","Component","classNames","Button","Checkbox","Log","DbNameValidator","CsvOverlay","CsvParser","CsvFormats","log","module","TYPE_OPTIONS","Object","entries","TYPES","map","key","value","name","CsvInputBar","constructor","props","handleUpload","bind","handleCancel","handleError","handleTableName","toggleFirstRowHeaders","handleProgress","handleCancelInProgress","handleQueryTypeChange","inputRef","createRef","state","tableName","tableNameSet","isFirstRowHeaders","showProgress","progressValue","type","DEFAULT_TYPE","parser","componentDidUpdate","prevProps","file","paste","dotIndex","lastIndexOf","fileTableName","legalizeTableName","substring","setState","current","focus","fromExtension","AUTO","componentWillUnmount","cancel","onClose","e","onError","error","event","target","stopPropagation","preventDefault","endsWith","handleZipFile","handleFile","Blob","isZip","info","File","size","session","timeZone","onInProgress","handleParseDone","tables","length","bindTableToVariable","then","openTable","catch","mergeTables","table","forEach","t","close","onFileCompleted","readHeaders","onProgress","parse","zipFile","onUpdate","unzip","Error","files","csvFound","i","f","isValidExtension","onOpenTable","render","isNameInvalid","width"],"mappings":"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","sourcesContent":["import React, {\n ChangeEvent,\n Component,\n FormEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport classNames from 'classnames';\nimport type { JSZipObject } from 'jszip';\nimport { Button, Checkbox } from '@deephaven/components';\nimport { IdeSession, Table } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { DbNameValidator } from '@deephaven/utils';\nimport CsvOverlay from './CsvOverlay';\nimport CsvParser from './CsvParser';\nimport CsvFormats from './CsvFormats';\nimport './CsvInputBar.scss';\n\nconst log = Log.module('CsvInputBar');\n\nconst TYPE_OPTIONS = Object.entries(CsvFormats.TYPES).map(([key, value]) => (\n <option key={key} value={key}>\n {value.name}\n </option>\n));\n\ninterface CsvInputBarProps {\n session: IdeSession;\n onOpenTable: (name: string) => void;\n onClose: () => void;\n onUpdate: (update: string) => void;\n onError: (e: unknown) => void;\n file: File;\n paste?: string;\n onInProgress: (boolean: boolean) => void;\n timeZone: string;\n unzip?: (zipFile: File) => Promise<JSZipObject[]>;\n}\n\ninterface CsvInputBarState {\n tableName: string;\n tableNameSet: boolean;\n isFirstRowHeaders: boolean;\n showProgress: boolean;\n progressValue: number;\n type: keyof typeof CsvFormats.TYPES;\n parser: CsvParser | null;\n}\n/**\n * Input controls for CSV upload.\n */\nclass CsvInputBar extends Component<CsvInputBarProps, CsvInputBarState> {\n static defaultProps = {\n file: null,\n paste: null,\n unzip: null,\n };\n\n constructor(props: CsvInputBarProps) {\n super(props);\n\n this.handleUpload = this.handleUpload.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTableName = this.handleTableName.bind(this);\n this.toggleFirstRowHeaders = this.toggleFirstRowHeaders.bind(this);\n this.handleProgress = this.handleProgress.bind(this);\n this.handleCancelInProgress = this.handleCancelInProgress.bind(this);\n this.handleQueryTypeChange = this.handleQueryTypeChange.bind(this);\n\n this.inputRef = React.createRef();\n\n this.state = {\n tableName: '',\n tableNameSet: false,\n isFirstRowHeaders: true,\n showProgress: false,\n progressValue: 0,\n type: CsvFormats.DEFAULT_TYPE,\n parser: null,\n };\n }\n\n // React documentation says it is fine to update state inside an if statment\n /* eslint-disable react/no-did-update-set-state */\n componentDidUpdate(prevProps: CsvInputBarProps): void {\n const { file, paste } = this.props;\n const { tableName, tableNameSet } = this.state;\n // Set the table name from a file\n if (!tableNameSet && file && !tableName) {\n const dotIndex = file.name.lastIndexOf('.');\n const fileTableName = DbNameValidator.legalizeTableName(\n file.name.substring(0, dotIndex)\n );\n this.setState({\n tableName: fileTableName,\n tableNameSet: true,\n });\n this.inputRef.current?.focus();\n } else if ((!file && prevProps.file) || (!paste && prevProps.paste)) {\n // The file or paste was unstaged\n this.setState({\n tableName: '',\n tableNameSet: false,\n });\n }\n\n // Focus the name input field on paste\n if (paste && !tableName && this.inputRef.current) {\n this.inputRef.current.focus();\n }\n\n // Determine parser type by file extension\n if (file && file !== prevProps.file) {\n this.setState({\n type: CsvFormats.fromExtension(file.name),\n });\n } else if (paste && !prevProps.paste) {\n this.setState({\n type: CsvFormats.AUTO,\n });\n }\n }\n\n componentWillUnmount(): void {\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n handleCancel(): void {\n const { onClose } = this.props;\n onClose();\n }\n\n handleError(e: unknown): void {\n const { onClose, onError } = this.props;\n log.error(e);\n onError(e);\n onClose();\n }\n\n handleTableName(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({ tableName: event.target.value, tableNameSet: true });\n }\n\n toggleFirstRowHeaders(): void {\n const { isFirstRowHeaders } = this.state;\n this.setState({ isFirstRowHeaders: !isFirstRowHeaders });\n }\n\n handleUpload(event: FormEvent<HTMLFormElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { file, paste } = this.props;\n if (file) {\n if (file.name.endsWith('.zip')) {\n this.handleZipFile(file);\n } else {\n this.handleFile(file);\n }\n } else if (paste) {\n this.handleFile(\n new Blob([paste], {\n type: 'text/plain',\n })\n );\n }\n }\n\n handleFile(file: Blob | JSZipObject, isZip = false): void {\n log.info(\n `Starting CSV parser for ${\n file instanceof File ? file.name : 'pasted values'\n } ${isZip ? '' : (file as Blob).size} bytes`\n );\n const { session, timeZone, onInProgress } = this.props;\n const { tableName, isFirstRowHeaders, type } = this.state;\n const handleParseDone = (tables: Table[]) => {\n // Do not bother merging just one table\n if (tables.length === 1) {\n session\n .bindTableToVariable(tables[0], tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n } else {\n session\n .mergeTables(tables)\n .then(table => {\n session\n .bindTableToVariable(table, tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n tables.forEach(t => t.close());\n })\n .catch(e => this.handleError(e));\n }\n };\n const parser = new CsvParser({\n onFileCompleted: handleParseDone,\n session,\n file,\n type: CsvFormats.TYPES[type],\n readHeaders: isFirstRowHeaders,\n onProgress: this.handleProgress,\n onError: this.handleError,\n timeZone,\n isZip,\n });\n parser.parse();\n this.setState({\n showProgress: true,\n parser,\n });\n // Note that calling onClose will set in progress to false\n onInProgress(true);\n }\n\n handleZipFile(zipFile: File): void {\n const { onUpdate, unzip } = this.props;\n if (unzip == null) {\n this.handleError(new Error('No support for zip files available.'));\n return;\n }\n\n unzip(zipFile)\n .then(files => {\n let csvFound = false;\n // Find the first Csv file in the zip and use that\n for (let i = 0; i < files.length; i += 1) {\n const f = files[i];\n if (CsvOverlay.isValidExtension(f.name)) {\n onUpdate(`Loading ${f.name} as csv from ${zipFile.name}`);\n csvFound = true;\n this.handleFile(f, true);\n break;\n }\n }\n if (!csvFound) {\n throw new Error(`No csv file found in ${zipFile.name}`);\n }\n })\n .catch(e => this.handleError(e));\n }\n\n handleProgress(progressValue: number): boolean {\n const { showProgress } = this.state;\n if (showProgress) {\n this.setState({\n progressValue,\n });\n }\n // Indicates to the caller that the upload has been cancelled\n return !showProgress;\n }\n\n // Cancels an in progress upload\n handleCancelInProgress(): void {\n const { onInProgress } = this.props;\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n this.setState({\n showProgress: false,\n progressValue: 0,\n });\n onInProgress(false);\n }\n\n openTable(): void {\n const { onOpenTable, onClose } = this.props;\n const { tableName } = this.state;\n onOpenTable(tableName);\n onClose();\n }\n\n handleQueryTypeChange(event: ChangeEvent<HTMLSelectElement>): void {\n this.setState({\n type: event.target.value as keyof typeof CsvFormats.TYPES,\n });\n }\n\n render(): ReactElement {\n const { file, paste } = this.props;\n const {\n tableName,\n isFirstRowHeaders,\n showProgress,\n progressValue,\n type,\n } = this.state;\n // A blank table name is invalid for pasted values\n const isNameInvalid = paste && !tableName;\n return (\n <div className=\"csv-input-bar\">\n {!showProgress && (\n <form\n onSubmit={this.handleUpload}\n className=\"csv-input-bar-container form-inline\"\n >\n <div className=\"form-group\">\n <label htmlFor=\"tableNameInput\">Table name</label>\n <input\n ref={this.inputRef}\n id=\"tableNameInput\"\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': isNameInvalid,\n })}\n value={tableName}\n onChange={this.handleTableName}\n />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"formatSelect\">File format</label>\n <select\n id=\"formatSelect\"\n className=\"custom-select\"\n value={type}\n onChange={this.handleQueryTypeChange}\n >\n {TYPE_OPTIONS}\n </select>\n </div>\n <Checkbox\n className=\"firstRowHeaders\"\n checked={isFirstRowHeaders}\n onChange={this.toggleFirstRowHeaders}\n >\n First row is column headers\n </Checkbox>\n <div className=\"csv-input-buttons form-group\">\n <Button kind=\"secondary\" onClick={this.handleCancel}>\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"submit\"\n disabled={!(file || paste) || !tableName}\n >\n Upload\n </Button>\n </div>\n </form>\n )}\n {showProgress && (\n <div className=\"csv-progress-container\">\n <label>Uploading Table</label>\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-primary\"\n style={{ width: `${progressValue}%` }}\n aria-valuenow={progressValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </div>\n <label>{progressValue}%</label>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleCancelInProgress}\n >\n Cancel\n </button>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvInputBar;\n"],"file":"CsvInputBar.js"}
1
+ {"version":3,"file":"CsvInputBar.js","names":["React","Component","classNames","Button","Checkbox","Log","DbNameValidator","CsvOverlay","CsvParser","CsvFormats","log","module","TYPE_OPTIONS","Object","entries","TYPES","map","key","value","name","CsvInputBar","constructor","props","handleUpload","bind","handleCancel","handleError","handleTableName","toggleFirstRowHeaders","handleProgress","handleCancelInProgress","handleQueryTypeChange","inputRef","createRef","state","tableName","tableNameSet","isFirstRowHeaders","showProgress","progressValue","type","DEFAULT_TYPE","parser","componentDidUpdate","prevProps","file","paste","dotIndex","lastIndexOf","fileTableName","legalizeTableName","substring","setState","current","focus","fromExtension","AUTO","componentWillUnmount","cancel","onClose","e","onError","error","event","target","stopPropagation","preventDefault","endsWith","handleZipFile","handleFile","Blob","isZip","info","File","size","session","timeZone","onInProgress","handleParseDone","tables","length","bindTableToVariable","then","openTable","catch","mergeTables","table","forEach","t","close","onFileCompleted","readHeaders","onProgress","parse","zipFile","onUpdate","unzip","Error","files","csvFound","i","f","isValidExtension","onOpenTable","render","isNameInvalid","width"],"sources":["../../src/csv/CsvInputBar.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Component,\n FormEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport classNames from 'classnames';\nimport type { JSZipObject } from 'jszip';\nimport { Button, Checkbox } from '@deephaven/components';\nimport { IdeSession, Table } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { DbNameValidator } from '@deephaven/utils';\nimport CsvOverlay from './CsvOverlay';\nimport CsvParser from './CsvParser';\nimport CsvFormats from './CsvFormats';\nimport './CsvInputBar.scss';\n\nconst log = Log.module('CsvInputBar');\n\nconst TYPE_OPTIONS = Object.entries(CsvFormats.TYPES).map(([key, value]) => (\n <option key={key} value={key}>\n {value.name}\n </option>\n));\n\ninterface CsvInputBarProps {\n session: IdeSession;\n onOpenTable: (name: string) => void;\n onClose: () => void;\n onUpdate: (update: string) => void;\n onError: (e: unknown) => void;\n file: File;\n paste?: string;\n onInProgress: (boolean: boolean) => void;\n timeZone: string;\n unzip?: (zipFile: File) => Promise<JSZipObject[]>;\n}\n\ninterface CsvInputBarState {\n tableName: string;\n tableNameSet: boolean;\n isFirstRowHeaders: boolean;\n showProgress: boolean;\n progressValue: number;\n type: keyof typeof CsvFormats.TYPES;\n parser: CsvParser | null;\n}\n/**\n * Input controls for CSV upload.\n */\nclass CsvInputBar extends Component<CsvInputBarProps, CsvInputBarState> {\n static defaultProps = {\n file: null,\n paste: null,\n unzip: null,\n };\n\n constructor(props: CsvInputBarProps) {\n super(props);\n\n this.handleUpload = this.handleUpload.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTableName = this.handleTableName.bind(this);\n this.toggleFirstRowHeaders = this.toggleFirstRowHeaders.bind(this);\n this.handleProgress = this.handleProgress.bind(this);\n this.handleCancelInProgress = this.handleCancelInProgress.bind(this);\n this.handleQueryTypeChange = this.handleQueryTypeChange.bind(this);\n\n this.inputRef = React.createRef();\n\n this.state = {\n tableName: '',\n tableNameSet: false,\n isFirstRowHeaders: true,\n showProgress: false,\n progressValue: 0,\n type: CsvFormats.DEFAULT_TYPE,\n parser: null,\n };\n }\n\n // React documentation says it is fine to update state inside an if statment\n /* eslint-disable react/no-did-update-set-state */\n componentDidUpdate(prevProps: CsvInputBarProps): void {\n const { file, paste } = this.props;\n const { tableName, tableNameSet } = this.state;\n // Set the table name from a file\n if (!tableNameSet && file && !tableName) {\n const dotIndex = file.name.lastIndexOf('.');\n const fileTableName = DbNameValidator.legalizeTableName(\n file.name.substring(0, dotIndex)\n );\n this.setState({\n tableName: fileTableName,\n tableNameSet: true,\n });\n this.inputRef.current?.focus();\n } else if ((!file && prevProps.file) || (!paste && prevProps.paste)) {\n // The file or paste was unstaged\n this.setState({\n tableName: '',\n tableNameSet: false,\n });\n }\n\n // Focus the name input field on paste\n if (paste && !tableName && this.inputRef.current) {\n this.inputRef.current.focus();\n }\n\n // Determine parser type by file extension\n if (file && file !== prevProps.file) {\n this.setState({\n type: CsvFormats.fromExtension(file.name),\n });\n } else if (paste && !prevProps.paste) {\n this.setState({\n type: CsvFormats.AUTO,\n });\n }\n }\n\n componentWillUnmount(): void {\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n handleCancel(): void {\n const { onClose } = this.props;\n onClose();\n }\n\n handleError(e: unknown): void {\n const { onClose, onError } = this.props;\n log.error(e);\n onError(e);\n onClose();\n }\n\n handleTableName(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({ tableName: event.target.value, tableNameSet: true });\n }\n\n toggleFirstRowHeaders(): void {\n const { isFirstRowHeaders } = this.state;\n this.setState({ isFirstRowHeaders: !isFirstRowHeaders });\n }\n\n handleUpload(event: FormEvent<HTMLFormElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { file, paste } = this.props;\n if (file) {\n if (file.name.endsWith('.zip')) {\n this.handleZipFile(file);\n } else {\n this.handleFile(file);\n }\n } else if (paste) {\n this.handleFile(\n new Blob([paste], {\n type: 'text/plain',\n })\n );\n }\n }\n\n handleFile(file: Blob | JSZipObject, isZip = false): void {\n log.info(\n `Starting CSV parser for ${\n file instanceof File ? file.name : 'pasted values'\n } ${isZip ? '' : (file as Blob).size} bytes`\n );\n const { session, timeZone, onInProgress } = this.props;\n const { tableName, isFirstRowHeaders, type } = this.state;\n const handleParseDone = (tables: Table[]) => {\n // Do not bother merging just one table\n if (tables.length === 1) {\n session\n .bindTableToVariable(tables[0], tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n } else {\n session\n .mergeTables(tables)\n .then(table => {\n session\n .bindTableToVariable(table, tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n tables.forEach(t => t.close());\n })\n .catch(e => this.handleError(e));\n }\n };\n const parser = new CsvParser({\n onFileCompleted: handleParseDone,\n session,\n file,\n type: CsvFormats.TYPES[type],\n readHeaders: isFirstRowHeaders,\n onProgress: this.handleProgress,\n onError: this.handleError,\n timeZone,\n isZip,\n });\n parser.parse();\n this.setState({\n showProgress: true,\n parser,\n });\n // Note that calling onClose will set in progress to false\n onInProgress(true);\n }\n\n handleZipFile(zipFile: File): void {\n const { onUpdate, unzip } = this.props;\n if (unzip == null) {\n this.handleError(new Error('No support for zip files available.'));\n return;\n }\n\n unzip(zipFile)\n .then(files => {\n let csvFound = false;\n // Find the first Csv file in the zip and use that\n for (let i = 0; i < files.length; i += 1) {\n const f = files[i];\n if (CsvOverlay.isValidExtension(f.name)) {\n onUpdate(`Loading ${f.name} as csv from ${zipFile.name}`);\n csvFound = true;\n this.handleFile(f, true);\n break;\n }\n }\n if (!csvFound) {\n throw new Error(`No csv file found in ${zipFile.name}`);\n }\n })\n .catch(e => this.handleError(e));\n }\n\n handleProgress(progressValue: number): boolean {\n const { showProgress } = this.state;\n if (showProgress) {\n this.setState({\n progressValue,\n });\n }\n // Indicates to the caller that the upload has been cancelled\n return !showProgress;\n }\n\n // Cancels an in progress upload\n handleCancelInProgress(): void {\n const { onInProgress } = this.props;\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n this.setState({\n showProgress: false,\n progressValue: 0,\n });\n onInProgress(false);\n }\n\n openTable(): void {\n const { onOpenTable, onClose } = this.props;\n const { tableName } = this.state;\n onOpenTable(tableName);\n onClose();\n }\n\n handleQueryTypeChange(event: ChangeEvent<HTMLSelectElement>): void {\n this.setState({\n type: event.target.value as keyof typeof CsvFormats.TYPES,\n });\n }\n\n render(): ReactElement {\n const { file, paste } = this.props;\n const {\n tableName,\n isFirstRowHeaders,\n showProgress,\n progressValue,\n type,\n } = this.state;\n // A blank table name is invalid for pasted values\n const isNameInvalid = paste && !tableName;\n return (\n <div className=\"csv-input-bar\">\n {!showProgress && (\n <form\n onSubmit={this.handleUpload}\n className=\"csv-input-bar-container form-inline\"\n >\n <div className=\"form-group\">\n <label htmlFor=\"tableNameInput\">Table name</label>\n <input\n ref={this.inputRef}\n id=\"tableNameInput\"\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': isNameInvalid,\n })}\n value={tableName}\n onChange={this.handleTableName}\n />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"formatSelect\">File format</label>\n <select\n id=\"formatSelect\"\n className=\"custom-select\"\n value={type}\n onChange={this.handleQueryTypeChange}\n >\n {TYPE_OPTIONS}\n </select>\n </div>\n <Checkbox\n className=\"firstRowHeaders\"\n checked={isFirstRowHeaders}\n onChange={this.toggleFirstRowHeaders}\n >\n First row is column headers\n </Checkbox>\n <div className=\"csv-input-buttons form-group\">\n <Button kind=\"secondary\" onClick={this.handleCancel}>\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"submit\"\n disabled={!(file || paste) || !tableName}\n >\n Upload\n </Button>\n </div>\n </form>\n )}\n {showProgress && (\n <div className=\"csv-progress-container\">\n <label>Uploading Table</label>\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-primary\"\n style={{ width: `${progressValue}%` }}\n aria-valuenow={progressValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </div>\n <label>{progressValue}%</label>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleCancelInProgress}\n >\n Cancel\n </button>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvInputBar;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/csv/CsvOverlay.tsx"],"names":["React","Component","memoize","FontAwesomeIcon","ContextActions","GLOBAL_SHORTCUTS","dhFileCsv","dhFileDownload","dhFileSpreadsheet","vsClippy","vsFileZip","vsTrash","vsWarning","assertNotNull","TextUtils","PASTED_VALUES","INVALID_MIME_TYPES","VALID_EXTENSIONS","ZIP_EXTENSIONS","CsvOverlay","isValidDropItem","item","kind","find","invalid","test","type","isValidExtension","name","allowZip","some","ext","endsWith","handleDragOver","e","preventDefault","stopPropagation","getIcon","fileName","constructor","props","getValidExtensions","join","handleSelectFile","bind","handleFiles","handleDrop","unstageFile","handleMenuPaste","handlePasteEvent","fileElem","createRef","divElem","state","selectedFileName","componentDidMount","current","addEventListener","focus","componentWillUnmount","removeEventListener","value","click","event","files","target","handleFile","clearDragError","dragError","dataTransfer","items","file","getAsFile","setState","dropError","FILE_TYPE_ERROR","onCancel","undefined","onFileOpened","onPaste","onError","uploadInProgress","navigator","clipboard","readText","then","clipText","catch","makeContextMenuItems","title","icon","action","shortcut","PASTE","disabled","render","error","contextActions","getAcceptString","display","getFileTypeErrorString"],"mappings":"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","sourcesContent":["import React, {\n ChangeEvent,\n Component,\n DragEvent,\n MouseEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextAction,\n ContextActions,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport {\n dhFileCsv,\n dhFileDownload,\n dhFileSpreadsheet,\n IconDefinition,\n vsClippy,\n vsFileZip,\n vsTrash,\n vsWarning,\n} from '@deephaven/icons';\nimport './CsvOverlay.scss';\nimport { assertNotNull, TextUtils } from '@deephaven/utils';\n\ninterface CsvOverlayProps {\n allowZip: boolean;\n onFileOpened: (file: File) => void;\n onCancel: () => void;\n onPaste: (clipText: string) => void;\n clearDragError: () => void;\n dragError: string | null;\n onError: (e: unknown) => void;\n uploadInProgress: boolean;\n}\n\ninterface CsvOverlayState {\n selectedFileName: string;\n dropError?: string;\n}\n\nconst PASTED_VALUES = 'pasted values';\n\nconst INVALID_MIME_TYPES = [/^audio.*/, /^font.*/, /^image.*/, /^video.*/];\n\nconst VALID_EXTENSIONS = ['.csv', '.tsv', '.tab', '.psv', '.dsv', '.txt'];\n\nconst ZIP_EXTENSIONS = ['.zip'];\n\n/**\n * Overlay that is displayed when uploading a CSV file.\n */\nclass CsvOverlay extends Component<CsvOverlayProps, CsvOverlayState> {\n static defaultProps = {\n allowZip: false,\n dragError: null,\n };\n\n static MULTIPLE_FILE_ERROR = 'Please select only one file';\n\n static FILE_TYPE_ERROR = 'Filetype not supported.';\n\n static isValidDropItem(item: DataTransferItem): boolean {\n return (\n item &&\n item.kind === 'file' &&\n !INVALID_MIME_TYPES.find(invalid => invalid.test(item.type))\n );\n }\n\n static isValidExtension(name: string, allowZip = false): boolean {\n return (\n VALID_EXTENSIONS.some(ext => name.endsWith(ext)) ||\n (allowZip && ZIP_EXTENSIONS.some(ext => name.endsWith(ext)))\n );\n }\n\n static handleDragOver(e: DragEvent): void {\n e.preventDefault();\n e.stopPropagation();\n }\n\n static getIcon(fileName: string): IconDefinition {\n if (fileName === PASTED_VALUES) {\n return vsClippy;\n }\n if (fileName.endsWith('.csv')) {\n return dhFileCsv;\n }\n if (fileName.endsWith('.zip')) {\n return vsFileZip;\n }\n return dhFileSpreadsheet;\n }\n\n constructor(props: CsvOverlayProps) {\n super(props);\n\n this.handleSelectFile = this.handleSelectFile.bind(this);\n this.handleFiles = this.handleFiles.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.unstageFile = this.unstageFile.bind(this);\n this.handleMenuPaste = this.handleMenuPaste.bind(this);\n this.handlePasteEvent = this.handlePasteEvent.bind(this);\n\n this.fileElem = React.createRef();\n this.divElem = React.createRef();\n\n this.state = {\n selectedFileName: '',\n };\n }\n\n componentDidMount(): void {\n this.divElem.current?.addEventListener('paste', this.handlePasteEvent);\n this.divElem.current?.focus();\n }\n\n componentWillUnmount(): void {\n this.divElem.current?.removeEventListener('paste', this.handlePasteEvent);\n }\n\n fileElem: RefObject<HTMLInputElement>;\n\n divElem: RefObject<HTMLDivElement>;\n\n handleSelectFile(): void {\n if (this.fileElem.current) {\n this.fileElem.current.value = '';\n this.fileElem.current?.click();\n }\n }\n\n handleFiles(event: ChangeEvent<HTMLInputElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { files } = event.target;\n if (files != null) {\n this.handleFile(files[0]);\n }\n }\n\n handleDrop(e: DragEvent<HTMLDivElement>): void {\n const { allowZip, clearDragError, dragError } = this.props;\n e.preventDefault();\n e.stopPropagation();\n\n if (dragError) {\n clearDragError();\n return;\n }\n\n if (!e.dataTransfer || !e.dataTransfer.items) {\n return;\n }\n\n const file = e.dataTransfer.items[0].getAsFile();\n assertNotNull(file);\n if (CsvOverlay.isValidExtension(file.name, allowZip)) {\n this.handleFile(file);\n } else {\n this.setState({\n dropError: CsvOverlay.FILE_TYPE_ERROR,\n });\n }\n }\n\n unstageFile(event: MouseEvent<HTMLButtonElement>): void {\n const { onCancel } = this.props;\n event.stopPropagation();\n event.preventDefault();\n onCancel();\n this.setState({\n selectedFileName: '',\n dropError: undefined,\n });\n }\n\n handleFile(file: File): void {\n const { onFileOpened } = this.props;\n onFileOpened(file);\n this.setState({\n selectedFileName: file.name,\n dropError: undefined,\n });\n }\n\n handleMenuPaste(): void {\n const { onPaste, onError, uploadInProgress } = this.props;\n if (uploadInProgress) {\n return;\n }\n navigator.clipboard\n .readText()\n .then(clipText => {\n onPaste(clipText);\n this.setState({\n selectedFileName: PASTED_VALUES,\n dropError: undefined,\n });\n })\n .catch((e: unknown) => onError(e));\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.handleMenuPaste();\n }\n\n makeContextMenuItems(): ContextAction[] {\n const { uploadInProgress } = this.props;\n return [\n {\n title: 'Paste',\n icon: vsClippy,\n action: this.handleMenuPaste,\n shortcut: GLOBAL_SHORTCUTS.PASTE,\n disabled: uploadInProgress,\n },\n ];\n }\n\n getValidExtensions = memoize(allowZip =>\n allowZip ? [...VALID_EXTENSIONS, ...ZIP_EXTENSIONS] : [...VALID_EXTENSIONS]\n );\n\n getAcceptString = memoize(allowZip =>\n this.getValidExtensions(allowZip).join(', ')\n );\n\n getFileTypeErrorString = memoize(allowZip =>\n TextUtils.join(this.getValidExtensions(allowZip), 'or')\n );\n\n render(): ReactElement {\n const { allowZip, dragError, uploadInProgress } = this.props;\n const { selectedFileName, dropError } = this.state;\n const error = dragError || dropError;\n const contextActions = this.makeContextMenuItems();\n return (\n <div\n ref={this.divElem}\n className=\"csv-overlay fill-parent-absolute\"\n onDragOver={CsvOverlay.handleDragOver}\n onDrop={this.handleDrop}\n tabIndex={-1}\n >\n <ContextActions actions={contextActions} />\n <input\n ref={this.fileElem}\n type=\"file\"\n id=\"fileElem\"\n accept={this.getAcceptString(allowZip)}\n style={{ display: 'none' }}\n onChange={this.handleFiles}\n data-testid=\"fileElem\"\n />\n {!selectedFileName && !error && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={dhFileDownload} />\n </div>\n <label>Drop file (or paste values) here to import</label>\n <div className=\"message-small\">\n <label>or</label>\n </div>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleSelectFile}\n >\n Select File...\n </button>\n </div>\n )}\n {selectedFileName && !error && (\n <div className=\"selected-content\">\n <div className=\"selected-icon\">\n <FontAwesomeIcon icon={CsvOverlay.getIcon(selectedFileName)} />\n </div>\n <div className=\"selected-text\">\n <label>Selected File</label>\n <label className=\"selected-name\">\n {selectedFileName}\n {!uploadInProgress && (\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon ml-2\"\n onClick={this.unstageFile}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n )}\n </label>\n </div>\n </div>\n )}\n {error && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={vsWarning} />\n </div>\n <label>{error}</label>\n {error === CsvOverlay.FILE_TYPE_ERROR && (\n <div className=\"message-small\">\n <label>{this.getFileTypeErrorString(allowZip)}</label>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvOverlay;\n"],"file":"CsvOverlay.js"}
1
+ {"version":3,"file":"CsvOverlay.js","names":["React","Component","memoize","FontAwesomeIcon","ContextActions","GLOBAL_SHORTCUTS","dhFileCsv","dhFileDownload","dhFileSpreadsheet","vsClippy","vsFileZip","vsTrash","vsWarning","assertNotNull","TextUtils","PASTED_VALUES","INVALID_MIME_TYPES","VALID_EXTENSIONS","ZIP_EXTENSIONS","CsvOverlay","isValidDropItem","item","kind","find","invalid","test","type","isValidExtension","name","allowZip","some","ext","endsWith","handleDragOver","e","preventDefault","stopPropagation","getIcon","fileName","constructor","props","getValidExtensions","join","handleSelectFile","bind","handleFiles","handleDrop","unstageFile","handleMenuPaste","handlePasteEvent","fileElem","createRef","divElem","state","selectedFileName","componentDidMount","current","addEventListener","focus","componentWillUnmount","removeEventListener","value","click","event","files","target","handleFile","clearDragError","dragError","dataTransfer","items","file","getAsFile","setState","dropError","FILE_TYPE_ERROR","onCancel","undefined","onFileOpened","onPaste","onError","uploadInProgress","navigator","clipboard","readText","then","clipText","catch","makeContextMenuItems","title","icon","action","shortcut","PASTE","disabled","render","error","contextActions","getAcceptString","display","getFileTypeErrorString"],"sources":["../../src/csv/CsvOverlay.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Component,\n DragEvent,\n MouseEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextAction,\n ContextActions,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport {\n dhFileCsv,\n dhFileDownload,\n dhFileSpreadsheet,\n IconDefinition,\n vsClippy,\n vsFileZip,\n vsTrash,\n vsWarning,\n} from '@deephaven/icons';\nimport './CsvOverlay.scss';\nimport { assertNotNull, TextUtils } from '@deephaven/utils';\n\ninterface CsvOverlayProps {\n allowZip: boolean;\n onFileOpened: (file: File) => void;\n onCancel: () => void;\n onPaste: (clipText: string) => void;\n clearDragError: () => void;\n dragError: string | null;\n onError: (e: unknown) => void;\n uploadInProgress: boolean;\n}\n\ninterface CsvOverlayState {\n selectedFileName: string;\n dropError?: string;\n}\n\nconst PASTED_VALUES = 'pasted values';\n\nconst INVALID_MIME_TYPES = [/^audio.*/, /^font.*/, /^image.*/, /^video.*/];\n\nconst VALID_EXTENSIONS = ['.csv', '.tsv', '.tab', '.psv', '.dsv', '.txt'];\n\nconst ZIP_EXTENSIONS = ['.zip'];\n\n/**\n * Overlay that is displayed when uploading a CSV file.\n */\nclass CsvOverlay extends Component<CsvOverlayProps, CsvOverlayState> {\n static defaultProps = {\n allowZip: false,\n dragError: null,\n };\n\n static MULTIPLE_FILE_ERROR = 'Please select only one file';\n\n static FILE_TYPE_ERROR = 'Filetype not supported.';\n\n static isValidDropItem(item: DataTransferItem): boolean {\n return (\n item &&\n item.kind === 'file' &&\n !INVALID_MIME_TYPES.find(invalid => invalid.test(item.type))\n );\n }\n\n static isValidExtension(name: string, allowZip = false): boolean {\n return (\n VALID_EXTENSIONS.some(ext => name.endsWith(ext)) ||\n (allowZip && ZIP_EXTENSIONS.some(ext => name.endsWith(ext)))\n );\n }\n\n static handleDragOver(e: DragEvent): void {\n e.preventDefault();\n e.stopPropagation();\n }\n\n static getIcon(fileName: string): IconDefinition {\n if (fileName === PASTED_VALUES) {\n return vsClippy;\n }\n if (fileName.endsWith('.csv')) {\n return dhFileCsv;\n }\n if (fileName.endsWith('.zip')) {\n return vsFileZip;\n }\n return dhFileSpreadsheet;\n }\n\n constructor(props: CsvOverlayProps) {\n super(props);\n\n this.handleSelectFile = this.handleSelectFile.bind(this);\n this.handleFiles = this.handleFiles.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.unstageFile = this.unstageFile.bind(this);\n this.handleMenuPaste = this.handleMenuPaste.bind(this);\n this.handlePasteEvent = this.handlePasteEvent.bind(this);\n\n this.fileElem = React.createRef();\n this.divElem = React.createRef();\n\n this.state = {\n selectedFileName: '',\n };\n }\n\n componentDidMount(): void {\n this.divElem.current?.addEventListener('paste', this.handlePasteEvent);\n this.divElem.current?.focus();\n }\n\n componentWillUnmount(): void {\n this.divElem.current?.removeEventListener('paste', this.handlePasteEvent);\n }\n\n fileElem: RefObject<HTMLInputElement>;\n\n divElem: RefObject<HTMLDivElement>;\n\n handleSelectFile(): void {\n if (this.fileElem.current) {\n this.fileElem.current.value = '';\n this.fileElem.current?.click();\n }\n }\n\n handleFiles(event: ChangeEvent<HTMLInputElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { files } = event.target;\n if (files != null) {\n this.handleFile(files[0]);\n }\n }\n\n handleDrop(e: DragEvent<HTMLDivElement>): void {\n const { allowZip, clearDragError, dragError } = this.props;\n e.preventDefault();\n e.stopPropagation();\n\n if (dragError) {\n clearDragError();\n return;\n }\n\n if (!e.dataTransfer || !e.dataTransfer.items) {\n return;\n }\n\n const file = e.dataTransfer.items[0].getAsFile();\n assertNotNull(file);\n if (CsvOverlay.isValidExtension(file.name, allowZip)) {\n this.handleFile(file);\n } else {\n this.setState({\n dropError: CsvOverlay.FILE_TYPE_ERROR,\n });\n }\n }\n\n unstageFile(event: MouseEvent<HTMLButtonElement>): void {\n const { onCancel } = this.props;\n event.stopPropagation();\n event.preventDefault();\n onCancel();\n this.setState({\n selectedFileName: '',\n dropError: undefined,\n });\n }\n\n handleFile(file: File): void {\n const { onFileOpened } = this.props;\n onFileOpened(file);\n this.setState({\n selectedFileName: file.name,\n dropError: undefined,\n });\n }\n\n handleMenuPaste(): void {\n const { onPaste, onError, uploadInProgress } = this.props;\n if (uploadInProgress) {\n return;\n }\n navigator.clipboard\n .readText()\n .then(clipText => {\n onPaste(clipText);\n this.setState({\n selectedFileName: PASTED_VALUES,\n dropError: undefined,\n });\n })\n .catch((e: unknown) => onError(e));\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.handleMenuPaste();\n }\n\n makeContextMenuItems(): ContextAction[] {\n const { uploadInProgress } = this.props;\n return [\n {\n title: 'Paste',\n icon: vsClippy,\n action: this.handleMenuPaste,\n shortcut: GLOBAL_SHORTCUTS.PASTE,\n disabled: uploadInProgress,\n },\n ];\n }\n\n getValidExtensions = memoize(allowZip =>\n allowZip ? [...VALID_EXTENSIONS, ...ZIP_EXTENSIONS] : [...VALID_EXTENSIONS]\n );\n\n getAcceptString = memoize(allowZip =>\n this.getValidExtensions(allowZip).join(', ')\n );\n\n getFileTypeErrorString = memoize(allowZip =>\n TextUtils.join(this.getValidExtensions(allowZip), 'or')\n );\n\n render(): ReactElement {\n const { allowZip, dragError, uploadInProgress } = this.props;\n const { selectedFileName, dropError } = this.state;\n const error = dragError || dropError;\n const contextActions = this.makeContextMenuItems();\n return (\n <div\n ref={this.divElem}\n className=\"csv-overlay fill-parent-absolute\"\n onDragOver={CsvOverlay.handleDragOver}\n onDrop={this.handleDrop}\n tabIndex={-1}\n >\n <ContextActions actions={contextActions} />\n <input\n ref={this.fileElem}\n type=\"file\"\n id=\"fileElem\"\n accept={this.getAcceptString(allowZip)}\n style={{ display: 'none' }}\n onChange={this.handleFiles}\n data-testid=\"fileElem\"\n />\n {!selectedFileName && !error && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={dhFileDownload} />\n </div>\n <label>Drop file (or paste values) here to import</label>\n <div className=\"message-small\">\n <label>or</label>\n </div>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleSelectFile}\n >\n Select File...\n </button>\n </div>\n )}\n {selectedFileName && !error && (\n <div className=\"selected-content\">\n <div className=\"selected-icon\">\n <FontAwesomeIcon icon={CsvOverlay.getIcon(selectedFileName)} />\n </div>\n <div className=\"selected-text\">\n <label>Selected File</label>\n <label className=\"selected-name\">\n {selectedFileName}\n {!uploadInProgress && (\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon ml-2\"\n onClick={this.unstageFile}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n )}\n </label>\n </div>\n </div>\n )}\n {error && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={vsWarning} />\n </div>\n <label>{error}</label>\n {error === CsvOverlay.FILE_TYPE_ERROR && (\n <div className=\"message-small\">\n <label>{this.getFileTypeErrorString(allowZip)}</label>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvOverlay;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/csv/CsvParser.ts"],"names":["Papa","Log","assertNotNull","DbNameValidator","CsvTypeParser","log","module","ZIP_CONSOLIDATE_CHUNKS","CsvParser","generateHeaderRecursive","n","header","char","concat","Math","floor","String","fromCharCode","constructor","onFileCompleted","session","file","type","readHeaders","onProgress","onError","timeZone","isZip","tables","chunks","totalChunks","ceil","size","LocalChunkSize","isComplete","zipProgress","numConsolidated","isCancelled","handleChunk","bind","handleError","handleComplete","handleNodeUpdate","handleCreateTable","config","delimiter","newline","escapeChar","dynamicTyping","error","skipEmptyLines","chunk","complete","fastMode","cancel","transpose","numColumns","array","numRows","length","columns","Array","fill","map","r","row","Error","c","value","shouldTrim","trim","nullCheck","nullString","parse","handleParseDone","types","toParse","nodeStream","typeParser","result","parser","debug2","abort","forEach","t","close","data","headers","legalizeColumnNames","slice","generateHeaders","consolidateChunks","index","e","consolidatedChunks","i","uploadConsolidatedChunks","toUpload","undefined","pause","newTable","then","table","resume","progress","round","catch","results","meta","aborted","metadata","percent","push"],"mappings":";;AAAA,OAAOA,IAAP,MAA4D,WAA5D;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,aAAT,EAAwBC,eAAxB,QAA+C,kBAA/C;OAGOC,a;AAGP,IAAMC,GAAG,GAAGJ,GAAG,CAACK,MAAJ,CAAW,WAAX,CAAZ,C,CAEA;AACA;;AACA,IAAMC,sBAAsB,GAAG,GAA/B;;AAcA;AACA;AACA;AACA,MAAMC,SAAN,CAAgB;AACd;AAS8B,SAAvBC,uBAAuB,CAACC,CAAD,EAAoB;AAChD,QAAIC,MAAM,GAAG,EAAb;AACA,QAAIC,IAAI,GAAGF,CAAX;;AACA,QAAIA,CAAC,IAAI,EAAT,EAAa;AACXC,MAAAA,MAAM,GAAGA,MAAM,CAACE,MAAP,CACPL,SAAS,CAACC,uBAAV,CAAkCK,IAAI,CAACC,KAAL,CAAWL,CAAC,GAAG,EAAf,IAAqB,CAAvD,CADO,CAAT;AAGAE,MAAAA,IAAI,GAAGF,CAAC,GAAG,EAAX;AACD;;AACD,WAAOC,MAAM,CAACE,MAAP,CAAcG,MAAM,CAACC,YAAP,CAAoB,KAAKL,IAAzB,CAAd,CAAP;AACD;;AAEDM,EAAAA,WAAW,OAUc;AAAA,QAVb;AACVC,MAAAA,eADU;AAEVC,MAAAA,OAFU;AAGVC,MAAAA,IAHU;AAIVC,MAAAA,IAJU;AAKVC,MAAAA,WAAW,GAAG,IALJ;AAMVC,MAAAA,UANU;AAOVC,MAAAA,OAPU;AAQVC,MAAAA,QARU;AASVC,MAAAA;AATU,KAUa;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AACvB,SAAKR,eAAL,GAAuBA,eAAvB;AACA,SAAKC,OAAL,GAAeA,OAAf;AACA,SAAKC,IAAL,GAAYA,IAAZ;AACA,SAAKM,KAAL,GAAaA,KAAb;AACA,SAAKL,IAAL,GAAYA,IAAZ;AACA,SAAKC,WAAL,GAAmBA,WAAnB;AACA,SAAKG,QAAL,GAAgBA,QAAhB;AACA,SAAKF,UAAL,GAAkBA,UAAlB;AACA,SAAKC,OAAL,GAAeA,OAAf;AACA,SAAKG,MAAL,GAAc,EAAd;AACA,SAAKC,MAAL,GAAc,CAAd;AACA,SAAKC,WAAL,GAAmBH,KAAK,GACpB,CADoB,GAEpBb,IAAI,CAACiB,IAAL,CAAWV,IAAD,CAAeW,IAAf,GAAsBhC,IAAI,CAACiC,cAArC,CAFJ;AAGA,SAAKC,UAAL,GAAkB,KAAlB;AACA,SAAKC,WAAL,GAAmB,CAAnB;AACA,SAAKC,eAAL,GAAuB,CAAvB;AACA,SAAKC,WAAL,GAAmB,KAAnB;AAEA,SAAKC,WAAL,GAAmB,KAAKA,WAAL,CAAiBC,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAKC,WAAL,GAAmB,KAAKA,WAAL,CAAiBD,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAKE,cAAL,GAAsB,KAAKA,cAAL,CAAoBF,IAApB,CAAyB,IAAzB,CAAtB;AACA,SAAKG,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBH,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKI,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBJ,IAAvB,CAA4B,IAA5B,CAAzB;AAEA,SAAKK,MAAL,GAAc;AACZC,MAAAA,SAAS,EAAEvB,IAAI,CAACuB,SADJ;AAEZC,MAAAA,OAAO,EAAExB,IAAI,CAACwB,OAFF;AAGZC,MAAAA,UAAU,EAAEzB,IAAI,CAACyB,UAHL;AAIZC,MAAAA,aAAa,EAAE,KAJH;AAKZC,MAAAA,KAAK,EAAE,KAAKT,WALA;AAMZU,MAAAA,cAAc,EAAE5B,IAAI,CAAC4B,cANT;AAOZC,MAAAA,KAAK,EAAE,KAAKb,WAPA;AAQZc,MAAAA,QAAQ,EAAE,KAAKX,cARH;AASZY,MAAAA,QAAQ,EAAE;AATE,KAAd;AAWD;;AA0CDC,EAAAA,MAAM,GAAS;AACb,SAAKjB,WAAL,GAAmB,IAAnB;AACD;;AAEDkB,EAAAA,SAAS,CAACC,UAAD,EAAqBC,KAArB,EAAoD;AAC3D,QAAMC,OAAO,GAAGD,KAAK,CAACE,MAAtB;AACA,QAAMC,OAAO,GAAG,IAAIC,KAAJ,CAAUL,UAAV,EACbM,IADa,CACR,IADQ,EAEbC,GAFa,CAET,MAAM,IAAIF,KAAJ,CAAUH,OAAV,CAFG,CAAhB;;AAGA,SAAK,IAAIM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,OAApB,EAA6BM,CAAC,IAAI,CAAlC,EAAqC;AACnC,UAAMC,GAAG,GAAGR,KAAK,CAACO,CAAD,CAAjB;;AACA,UAAIC,GAAG,CAACN,MAAJ,GAAaH,UAAjB,EAA6B;AAC3B,cAAM,IAAIU,KAAJ,0CAC8BV,UAD9B,wBACsDS,GAAG,CAACN,MAD1D,eACqEM,GADrE,EAAN;AAGD;;AACD,WAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGX,UAApB,EAAgCW,CAAC,IAAI,CAArC,EAAwC;AACtC,YAAMC,KAAK,GAAG,KAAK9C,IAAL,CAAU+C,UAAV,GAAuBZ,KAAK,CAACO,CAAD,CAAL,CAASG,CAAT,EAAYG,IAAZ,EAAvB,GAA4Cb,KAAK,CAACO,CAAD,CAAL,CAASG,CAAT,CAA1D;AACAP,QAAAA,OAAO,CAACO,CAAD,CAAP,CAAWH,CAAX,IAAgB,KAAKO,SAAL,CAAeH,KAAf,CAAhB;AACD;AACF;;AACD,WAAOR,OAAP;AACD;;AAEDW,EAAAA,SAAS,CAACH,KAAD,EAAwB;AAC/B,WAAOA,KAAK,KAAK,KAAK9C,IAAL,CAAUkD,UAApB,GAAiC,EAAjC,GAAsCJ,KAA7C;AACD;;AAEDK,EAAAA,KAAK,GAAS;AACZ,QAAMC,eAAe,GAAIC,KAAD,IAAqB;AAC3C,UAAMC,OAAO,GAAG,KAAKjD,KAAL,GACX,KAAKN,IAAN,CAA2BwD,UAA3B,EACE;AACA;AACA,kBAHF,EAIE,KAAKnC,gBAJP,CADY,GAOX,KAAKrB,IAPV;AAQA,WAAKsD,KAAL,GAAaA,KAAb;AACA3E,MAAAA,IAAI,CAACyE,KAAL,CAAWG,OAAX,EAAoB,KAAKhC,MAAzB;AACD,KAXD;;AAYA,QAAMkC,UAAU,GAAG,IAAI1E,aAAJ,CACjBsE,eADiB,EAEjB,KAAKrD,IAFY,EAGjB,KAAKE,WAHY,EAIjB,KAAKqB,MAJY,EAKjB,KAAKtB,IAAL,CAAUkD,UALO,EAMjB,KAAKhD,UANY,EAOjB,KAAKC,OAPY,EAQjB,KAAKK,WARY,EASjB,KAAKH,KATY,EAUjB,KAAKL,IAAL,CAAU+C,UAVO,CAAnB;AAYAS,IAAAA,UAAU,CAACL,KAAX;AACD;;AAEDnC,EAAAA,WAAW,CAACyC,MAAD,EAAgCC,MAAhC,EAAsD;AAC/D,QAAM;AAAEzD,MAAAA,WAAF;AAAeE,MAAAA,OAAf;AAAwBkB,MAAAA,iBAAxB;AAA2ChB,MAAAA,KAA3C;AAAkDC,MAAAA;AAAlD,QAA6D,IAAnE;;AACA,QAAI,KAAKS,WAAT,EAAsB;AACpBhC,MAAAA,GAAG,CAAC4E,MAAJ,CAAW,uBAAX;AACAD,MAAAA,MAAM,CAACE,KAAP;AACAtD,MAAAA,MAAM,CAACuD,OAAP,CAAeC,CAAC,IAAIA,CAAC,CAACC,KAAF,EAApB;AACA;AACD;;AACD,QAAI;AAAEC,MAAAA;AAAF,QAAWP,MAAf;;AACA,QAAI,CAAC,KAAKQ,OAAV,EAAmB;AACjB,UAAIhE,WAAJ,EAAiB;AACf,aAAKgE,OAAL,GAAepF,eAAe,CAACqF,mBAAhB,CAAoCF,IAAI,CAAC,CAAD,CAAxC,CAAf;AACAA,QAAAA,IAAI,GAAGA,IAAI,CAACG,KAAL,CAAW,CAAX,CAAP;AACD,OAHD,MAGO;AACL,aAAKF,OAAL,GAAe/E,SAAS,CAACkF,eAAV,CAA0BJ,IAAI,CAAC,CAAD,CAAJ,CAAQ3B,MAAlC,CAAf;AACD;AACF;;AAED,QAAIC,OAAmB,GAAG,EAA1B;;AACA,QAAI;AACFA,MAAAA,OAAO,GAAG,KAAKL,SAAL,CAAe,KAAKgC,OAAL,CAAa5B,MAA5B,EAAoC2B,IAApC,CAAV;;AACA,UAAI3D,KAAJ,EAAW;AACT;AACA,aAAKgE,iBAAL,CAAuB/B,OAAvB,EAAgCoB,MAAhC;AACD,OAHD,MAGO;AACL,YAAMY,KAAK,GAAG,KAAK/D,MAAnB;AACA,aAAKA,MAAL,IAAe,CAAf;AACAc,QAAAA,iBAAiB,CAACiD,KAAD,EAAQhC,OAAR,EAAiBoB,MAAjB,CAAjB;AACD;AACF,KAVD,CAUE,OAAOa,CAAP,EAAmB;AACnBpE,MAAAA,OAAO,CAACoE,CAAD,CAAP;AACD;AACF;;AAEDF,EAAAA,iBAAiB,CAAC/B,OAAD,EAAsBoB,MAAtB,EAA4C;AAC3D,QAAI,CAAC,KAAKc,kBAAV,EAA8B;AAC5B,WAAKA,kBAAL,GAA0BlC,OAAO,CAAC6B,KAAR,EAA1B;AACD,KAFD,MAEO;AACL,WAAK,IAAIM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGnC,OAAO,CAACD,MAA5B,EAAoCoC,CAAC,IAAI,CAAzC,EAA4C;AAC1C,aAAKD,kBAAL,CAAwBC,CAAxB,IAA6B,KAAKD,kBAAL,CAAwBC,CAAxB,EAA2BlF,MAA3B,CAC3B+C,OAAO,CAACmC,CAAD,CADoB,CAA7B;AAGD;AACF;;AACD,SAAK3D,eAAL,IAAwB,CAAxB;;AACA,QAAI,KAAKA,eAAL,IAAwB7B,sBAAxB,IAAkD,KAAK2B,UAA3D,EAAuE;AACrE,WAAK8D,wBAAL,CAA8BhB,MAA9B;AACD;AACF;;AAEDgB,EAAAA,wBAAwB,CAAChB,MAAD,EAA8B;AAAA;;AACpD,QAAM;AAAErC,MAAAA;AAAF,QAAwB,IAA9B;AACA,QAAMiD,KAAK,GAAG,KAAK/D,MAAnB;AACA,SAAKA,MAAL,IAAe,CAAf;AACA,QAAMoE,QAAQ,4BAAG,KAAKH,kBAAR,0DAAG,sBAAyBL,KAAzB,EAAjB;AACA,SAAKK,kBAAL,GAA0BI,SAA1B;AACA,SAAK9D,eAAL,GAAuB,CAAvB;AACAlC,IAAAA,aAAa,CAAC+F,QAAD,CAAb;AACAtD,IAAAA,iBAAiB,CAACiD,KAAD,EAAQK,QAAR,EAAkBjB,MAAlB,CAAjB;AACD;;AAEDrC,EAAAA,iBAAiB,CACfiD,KADe,EAEfhC,OAFe,EAGfoB,MAHe,EAIT;AACN,QAAM;AACJ5D,MAAAA,OADI;AAEJQ,MAAAA,MAFI;AAGJT,MAAAA,eAHI;AAIJW,MAAAA,WAJI;AAKJ6C,MAAAA,KALI;AAMJnD,MAAAA,UANI;AAOJC,MAAAA;AAPI,QAQF,IARJ;;AASA,QAAIuD,MAAJ,EAAY;AACVA,MAAAA,MAAM,CAACmB,KAAP;AACD;;AACDjG,IAAAA,aAAa,CAAC,KAAKqF,OAAN,CAAb;AACArF,IAAAA,aAAa,CAACyE,KAAD,CAAb;AACAvD,IAAAA,OAAO,CACJgF,QADH,CACY,KAAKb,OADjB,EAC0BZ,KAD1B,EACiCf,OADjC,EAC0C,KAAKlC,QAD/C,EAEG2E,IAFH,CAEQC,KAAK,IAAI;AACb,UAAI,KAAKjE,WAAT,EAAsB;AACpBhC,QAAAA,GAAG,CAAC4E,MAAJ,CAAW,uBAAX;;AACA,YAAID,MAAJ,EAAY;AACVA,UAAAA,MAAM,CAACE,KAAP;AACD;;AACDtD,QAAAA,MAAM,CAACuD,OAAP,CAAeC,CAAC,IAAIA,CAAC,CAACC,KAAF,EAApB;AACA;AACD;;AACD,UAAIL,MAAJ,EAAY;AACVA,QAAAA,MAAM,CAACuB,MAAP;AACD;;AACD3E,MAAAA,MAAM,CAACgE,KAAD,CAAN,GAAgBU,KAAhB,CAZa,CAab;;AACA,UAAIE,QAAQ,GAAG,CAAf;;AACA,UAAI1E,WAAW,GAAG,CAAlB,EAAqB;AACnB0E,QAAAA,QAAQ,GAAG1F,IAAI,CAAC2F,KAAL,CAAY7E,MAAM,CAAC+B,MAAP,GAAgB7B,WAAjB,GAAgC,EAA3C,IAAiD,EAA5D;AACD,OAFD,MAEO;AACL0E,QAAAA,QAAQ,GAAG1F,IAAI,CAAC2F,KAAL,CAAW,KAAK,KAAKtE,WAAL,GAAmB,CAAnC,CAAX;AACD;;AACD9B,MAAAA,GAAG,CAAC4E,MAAJ,+BAAkCuB,QAAlC;AACAhF,MAAAA,UAAU,CAACgF,QAAD,CAAV;;AACA,UAAI,KAAKtE,UAAL,IAAmBN,MAAM,CAAC+B,MAAP,KAAkB,KAAK9B,MAA9C,EAAsD;AACpDxB,QAAAA,GAAG,CAAC4E,MAAJ,CAAW,sBAAX;AACA9D,QAAAA,eAAe,CAACS,MAAD,CAAf;AACD;AACF,KA5BH,EA6BG8E,KA7BH,CA6BSb,CAAC,IAAI;AACV,UAAI,CAAC,KAAK3D,UAAN,IAAoB8C,MAAxB,EAAgC;AAC9BA,QAAAA,MAAM,CAACE,KAAP;AACD;;AACDzD,MAAAA,OAAO,CAACoE,CAAD,CAAP;AACD,KAlCH;AAmCD;;AAEDpD,EAAAA,cAAc,CAACkE,OAAD,EAAsC;AAClD;AACA,QAAI,CAACA,OAAD,IAAY,CAACA,OAAO,CAACC,IAAR,CAAaC,OAA9B,EAAuC;AACrC,WAAK3E,UAAL,GAAkB,IAAlB,CADqC,CAErC;;AACA,UAAI,KAAK4D,kBAAT,EAA6B;AAC3B,aAAKE,wBAAL,CAA8B,IAA9B;AACD;AACF;AACF;;AAEDxD,EAAAA,WAAW,CAACS,KAAD,EAAuB;AAChC,QAAM;AAAExB,MAAAA;AAAF,QAAc,IAApB;AACAA,IAAAA,OAAO,CAACwB,KAAD,CAAP;AACD;;AAEDP,EAAAA,gBAAgB,CAACoE,QAAD,EAAsC;AACpD,SAAK3E,WAAL,GAAmB2E,QAAQ,CAACC,OAA5B;AACD;;AA9Sa;;gBAAVvG,S,qBAEsBgD,UAAD,IAAkC;AACzD,MAAM+B,OAAO,GAAG,EAAhB;;AACA,OAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvC,UAApB,EAAgCuC,CAAC,IAAI,CAArC,EAAwC;AACtCR,IAAAA,OAAO,CAACyB,IAAR,CAAaxG,SAAS,CAACC,uBAAV,CAAkCsF,CAAlC,CAAb;AACD;;AACD,SAAOR,OAAP;AACD,C;;AAySH,eAAe/E,SAAf","sourcesContent":["import Papa, { ParseLocalConfig, Parser, ParseResult } from 'papaparse';\nimport Log from '@deephaven/log';\nimport { assertNotNull, DbNameValidator } from '@deephaven/utils';\nimport { IdeSession, Table } from '@deephaven/jsapi-shim';\nimport type { JSZipObject } from 'jszip';\nimport CsvTypeParser from './CsvTypeParser';\nimport { CsvTypes } from './CsvFormats';\n\nconst log = Log.module('CsvParser');\n\n// This is based on jszip streaming ~15 KB chunks to papa parse\n// Want to consolidate to ~10 MB chunks\nconst ZIP_CONSOLIDATE_CHUNKS = 650;\n\ninterface CsvParserConstructor {\n onFileCompleted: (tables: Table[]) => void;\n session: IdeSession;\n file: Blob | JSZipObject;\n type: CsvTypes;\n readHeaders: boolean;\n onProgress: (progressValue: number) => boolean;\n onError: (e: unknown) => void;\n timeZone: string;\n isZip: boolean;\n}\n\n/**\n * Parser a CSV file in chunks and returns a table handle for each chunk.\n */\nclass CsvParser {\n // Generates column names A-Z, AA-AZ, BA-BZ, etc...\n static generateHeaders = (numColumns: number): string[] => {\n const headers = [];\n for (let i = 0; i < numColumns; i += 1) {\n headers.push(CsvParser.generateHeaderRecursive(i));\n }\n return headers;\n };\n\n static generateHeaderRecursive(n: number): string {\n let header = '';\n let char = n;\n if (n >= 26) {\n header = header.concat(\n CsvParser.generateHeaderRecursive(Math.floor(n / 26) - 1)\n );\n char = n % 26;\n }\n return header.concat(String.fromCharCode(65 + char));\n }\n\n constructor({\n onFileCompleted,\n session,\n file,\n type,\n readHeaders = true,\n onProgress,\n onError,\n timeZone,\n isZip,\n }: CsvParserConstructor) {\n this.onFileCompleted = onFileCompleted;\n this.session = session;\n this.file = file;\n this.isZip = isZip;\n this.type = type;\n this.readHeaders = readHeaders;\n this.timeZone = timeZone;\n this.onProgress = onProgress;\n this.onError = onError;\n this.tables = [];\n this.chunks = 0;\n this.totalChunks = isZip\n ? 0\n : Math.ceil((file as Blob).size / Papa.LocalChunkSize);\n this.isComplete = false;\n this.zipProgress = 0;\n this.numConsolidated = 0;\n this.isCancelled = false;\n\n this.handleChunk = this.handleChunk.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n this.handleCreateTable = this.handleCreateTable.bind(this);\n\n this.config = {\n delimiter: type.delimiter,\n newline: type.newline as '\\r\\n' | '\\n' | '\\r' | undefined,\n escapeChar: type.escapeChar,\n dynamicTyping: false,\n error: this.handleError,\n skipEmptyLines: type.skipEmptyLines,\n chunk: this.handleChunk,\n complete: this.handleComplete,\n fastMode: false,\n };\n }\n\n onFileCompleted: (tables: Table[]) => void;\n\n session: IdeSession;\n\n file: Blob | JSZipObject;\n\n isZip: boolean;\n\n type: CsvTypes;\n\n readHeaders: boolean;\n\n timeZone: string;\n\n onProgress: (progressValue: number) => boolean;\n\n onError: (e: unknown) => void;\n\n tables: Table[];\n\n headers?: string[];\n\n types?: string[];\n\n chunks: number;\n\n totalChunks: number;\n\n isComplete: boolean;\n\n zipProgress: number;\n\n consolidatedChunks?: string[][];\n\n numConsolidated: number;\n\n isCancelled: boolean;\n\n config: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>;\n\n cancel(): void {\n this.isCancelled = true;\n }\n\n transpose(numColumns: number, array: string[][]): string[][] {\n const numRows = array.length;\n const columns = new Array(numColumns)\n .fill(null)\n .map(() => new Array(numRows));\n for (let r = 0; r < numRows; r += 1) {\n const row = array[r];\n if (row.length < numColumns) {\n throw new Error(\n `Insufficient columns. Expected ${numColumns} but found ${row.length}\\n${row}`\n );\n }\n for (let c = 0; c < numColumns; c += 1) {\n const value = this.type.shouldTrim ? array[r][c].trim() : array[r][c];\n columns[c][r] = this.nullCheck(value);\n }\n }\n return columns as string[][];\n }\n\n nullCheck(value: string): string {\n return value === this.type.nullString ? '' : value;\n }\n\n parse(): void {\n const handleParseDone = (types: string[]) => {\n const toParse = this.isZip\n ? (this.file as JSZipObject).nodeStream(\n // JsZip types are incorrect, thus the funny casting\n // Actual parameter is 'nodebuffer'\n 'nodebuffer' as 'nodestream',\n this.handleNodeUpdate\n )\n : (this.file as Blob);\n this.types = types;\n Papa.parse(toParse, this.config);\n };\n const typeParser = new CsvTypeParser(\n handleParseDone,\n this.file,\n this.readHeaders,\n this.config,\n this.type.nullString,\n this.onProgress,\n this.onError,\n this.totalChunks,\n this.isZip,\n this.type.shouldTrim\n );\n typeParser.parse();\n }\n\n handleChunk(result: ParseResult<string[]>, parser: Parser): void {\n const { readHeaders, onError, handleCreateTable, isZip, tables } = this;\n if (this.isCancelled) {\n log.debug2('CSV parser cancelled.');\n parser.abort();\n tables.forEach(t => t.close());\n return;\n }\n let { data } = result;\n if (!this.headers) {\n if (readHeaders) {\n this.headers = DbNameValidator.legalizeColumnNames(data[0]);\n data = data.slice(1);\n } else {\n this.headers = CsvParser.generateHeaders(data[0].length);\n }\n }\n\n let columns: string[][] = [];\n try {\n columns = this.transpose(this.headers.length, data);\n if (isZip) {\n // Zip file chunks are tiny, so consolidate them to avoid create thousands of small tables\n this.consolidateChunks(columns, parser);\n } else {\n const index = this.chunks;\n this.chunks += 1;\n handleCreateTable(index, columns, parser);\n }\n } catch (e: unknown) {\n onError(e);\n }\n }\n\n consolidateChunks(columns: string[][], parser: Parser): void {\n if (!this.consolidatedChunks) {\n this.consolidatedChunks = columns.slice();\n } else {\n for (let i = 0; i < columns.length; i += 1) {\n this.consolidatedChunks[i] = this.consolidatedChunks[i].concat(\n columns[i]\n );\n }\n }\n this.numConsolidated += 1;\n if (this.numConsolidated >= ZIP_CONSOLIDATE_CHUNKS || this.isComplete) {\n this.uploadConsolidatedChunks(parser);\n }\n }\n\n uploadConsolidatedChunks(parser: Parser | null): void {\n const { handleCreateTable } = this;\n const index = this.chunks;\n this.chunks += 1;\n const toUpload = this.consolidatedChunks?.slice();\n this.consolidatedChunks = undefined;\n this.numConsolidated = 0;\n assertNotNull(toUpload);\n handleCreateTable(index, toUpload, parser);\n }\n\n handleCreateTable(\n index: number,\n columns: string[][],\n parser: Parser | null\n ): void {\n const {\n session,\n tables,\n onFileCompleted,\n totalChunks,\n types,\n onProgress,\n onError,\n } = this;\n if (parser) {\n parser.pause();\n }\n assertNotNull(this.headers);\n assertNotNull(types);\n session\n .newTable(this.headers, types, columns, this.timeZone)\n .then(table => {\n if (this.isCancelled) {\n log.debug2('CSV parser cancelled.');\n if (parser) {\n parser.abort();\n }\n tables.forEach(t => t.close());\n return;\n }\n if (parser) {\n parser.resume();\n }\n tables[index] = table;\n // This accounts for 50% of parsing plus 50% already done by the type parser\n let progress = 0;\n if (totalChunks > 0) {\n progress = Math.round((tables.length / totalChunks) * 50) + 50;\n } else {\n progress = Math.round(50 + this.zipProgress / 2);\n }\n log.debug2(`CSV parser progress ${progress}`);\n onProgress(progress);\n if (this.isComplete && tables.length === this.chunks) {\n log.debug2('CSV parser complete.');\n onFileCompleted(tables);\n }\n })\n .catch(e => {\n if (!this.isComplete && parser) {\n parser.abort();\n }\n onError(e);\n });\n }\n\n handleComplete(results: ParseResult<unknown>): void {\n // results is undefined for a succesful parse, but has meta data for an abort\n if (!results || !results.meta.aborted) {\n this.isComplete = true;\n // Check if there are any consolidated chunks left over from a zip file\n if (this.consolidatedChunks) {\n this.uploadConsolidatedChunks(null);\n }\n }\n }\n\n handleError(error: unknown): void {\n const { onError } = this;\n onError(error);\n }\n\n handleNodeUpdate(metadata: { percent: number }): void {\n this.zipProgress = metadata.percent;\n }\n}\n\nexport default CsvParser;\n"],"file":"CsvParser.js"}
1
+ {"version":3,"file":"CsvParser.js","names":["Papa","Log","assertNotNull","DbNameValidator","CsvTypeParser","log","module","ZIP_CONSOLIDATE_CHUNKS","CsvParser","generateHeaderRecursive","n","header","char","concat","Math","floor","String","fromCharCode","constructor","onFileCompleted","session","file","type","readHeaders","onProgress","onError","timeZone","isZip","tables","chunks","totalChunks","ceil","size","LocalChunkSize","isComplete","zipProgress","numConsolidated","isCancelled","handleChunk","bind","handleError","handleComplete","handleNodeUpdate","handleCreateTable","config","delimiter","newline","escapeChar","dynamicTyping","error","skipEmptyLines","chunk","complete","fastMode","cancel","transpose","numColumns","array","numRows","length","columns","Array","fill","map","r","row","Error","c","value","shouldTrim","trim","nullCheck","nullString","parse","handleParseDone","types","toParse","nodeStream","typeParser","result","parser","debug2","abort","forEach","t","close","data","headers","legalizeColumnNames","slice","generateHeaders","consolidateChunks","index","e","consolidatedChunks","i","uploadConsolidatedChunks","toUpload","undefined","pause","newTable","then","table","resume","progress","round","catch","results","meta","aborted","metadata","percent","push"],"sources":["../../src/csv/CsvParser.ts"],"sourcesContent":["import Papa, { ParseLocalConfig, Parser, ParseResult } from 'papaparse';\nimport Log from '@deephaven/log';\nimport { assertNotNull, DbNameValidator } from '@deephaven/utils';\nimport { IdeSession, Table } from '@deephaven/jsapi-shim';\nimport type { JSZipObject } from 'jszip';\nimport CsvTypeParser from './CsvTypeParser';\nimport { CsvTypes } from './CsvFormats';\n\nconst log = Log.module('CsvParser');\n\n// This is based on jszip streaming ~15 KB chunks to papa parse\n// Want to consolidate to ~10 MB chunks\nconst ZIP_CONSOLIDATE_CHUNKS = 650;\n\ninterface CsvParserConstructor {\n onFileCompleted: (tables: Table[]) => void;\n session: IdeSession;\n file: Blob | JSZipObject;\n type: CsvTypes;\n readHeaders: boolean;\n onProgress: (progressValue: number) => boolean;\n onError: (e: unknown) => void;\n timeZone: string;\n isZip: boolean;\n}\n\n/**\n * Parser a CSV file in chunks and returns a table handle for each chunk.\n */\nclass CsvParser {\n // Generates column names A-Z, AA-AZ, BA-BZ, etc...\n static generateHeaders = (numColumns: number): string[] => {\n const headers = [];\n for (let i = 0; i < numColumns; i += 1) {\n headers.push(CsvParser.generateHeaderRecursive(i));\n }\n return headers;\n };\n\n static generateHeaderRecursive(n: number): string {\n let header = '';\n let char = n;\n if (n >= 26) {\n header = header.concat(\n CsvParser.generateHeaderRecursive(Math.floor(n / 26) - 1)\n );\n char = n % 26;\n }\n return header.concat(String.fromCharCode(65 + char));\n }\n\n constructor({\n onFileCompleted,\n session,\n file,\n type,\n readHeaders = true,\n onProgress,\n onError,\n timeZone,\n isZip,\n }: CsvParserConstructor) {\n this.onFileCompleted = onFileCompleted;\n this.session = session;\n this.file = file;\n this.isZip = isZip;\n this.type = type;\n this.readHeaders = readHeaders;\n this.timeZone = timeZone;\n this.onProgress = onProgress;\n this.onError = onError;\n this.tables = [];\n this.chunks = 0;\n this.totalChunks = isZip\n ? 0\n : Math.ceil((file as Blob).size / Papa.LocalChunkSize);\n this.isComplete = false;\n this.zipProgress = 0;\n this.numConsolidated = 0;\n this.isCancelled = false;\n\n this.handleChunk = this.handleChunk.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n this.handleCreateTable = this.handleCreateTable.bind(this);\n\n this.config = {\n delimiter: type.delimiter,\n newline: type.newline as '\\r\\n' | '\\n' | '\\r' | undefined,\n escapeChar: type.escapeChar,\n dynamicTyping: false,\n error: this.handleError,\n skipEmptyLines: type.skipEmptyLines,\n chunk: this.handleChunk,\n complete: this.handleComplete,\n fastMode: false,\n };\n }\n\n onFileCompleted: (tables: Table[]) => void;\n\n session: IdeSession;\n\n file: Blob | JSZipObject;\n\n isZip: boolean;\n\n type: CsvTypes;\n\n readHeaders: boolean;\n\n timeZone: string;\n\n onProgress: (progressValue: number) => boolean;\n\n onError: (e: unknown) => void;\n\n tables: Table[];\n\n headers?: string[];\n\n types?: string[];\n\n chunks: number;\n\n totalChunks: number;\n\n isComplete: boolean;\n\n zipProgress: number;\n\n consolidatedChunks?: string[][];\n\n numConsolidated: number;\n\n isCancelled: boolean;\n\n config: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>;\n\n cancel(): void {\n this.isCancelled = true;\n }\n\n transpose(numColumns: number, array: string[][]): string[][] {\n const numRows = array.length;\n const columns = new Array(numColumns)\n .fill(null)\n .map(() => new Array(numRows));\n for (let r = 0; r < numRows; r += 1) {\n const row = array[r];\n if (row.length < numColumns) {\n throw new Error(\n `Insufficient columns. Expected ${numColumns} but found ${row.length}\\n${row}`\n );\n }\n for (let c = 0; c < numColumns; c += 1) {\n const value = this.type.shouldTrim ? array[r][c].trim() : array[r][c];\n columns[c][r] = this.nullCheck(value);\n }\n }\n return columns as string[][];\n }\n\n nullCheck(value: string): string {\n return value === this.type.nullString ? '' : value;\n }\n\n parse(): void {\n const handleParseDone = (types: string[]) => {\n const toParse = this.isZip\n ? (this.file as JSZipObject).nodeStream(\n // JsZip types are incorrect, thus the funny casting\n // Actual parameter is 'nodebuffer'\n 'nodebuffer' as 'nodestream',\n this.handleNodeUpdate\n )\n : (this.file as Blob);\n this.types = types;\n Papa.parse(toParse, this.config);\n };\n const typeParser = new CsvTypeParser(\n handleParseDone,\n this.file,\n this.readHeaders,\n this.config,\n this.type.nullString,\n this.onProgress,\n this.onError,\n this.totalChunks,\n this.isZip,\n this.type.shouldTrim\n );\n typeParser.parse();\n }\n\n handleChunk(result: ParseResult<string[]>, parser: Parser): void {\n const { readHeaders, onError, handleCreateTable, isZip, tables } = this;\n if (this.isCancelled) {\n log.debug2('CSV parser cancelled.');\n parser.abort();\n tables.forEach(t => t.close());\n return;\n }\n let { data } = result;\n if (!this.headers) {\n if (readHeaders) {\n this.headers = DbNameValidator.legalizeColumnNames(data[0]);\n data = data.slice(1);\n } else {\n this.headers = CsvParser.generateHeaders(data[0].length);\n }\n }\n\n let columns: string[][] = [];\n try {\n columns = this.transpose(this.headers.length, data);\n if (isZip) {\n // Zip file chunks are tiny, so consolidate them to avoid create thousands of small tables\n this.consolidateChunks(columns, parser);\n } else {\n const index = this.chunks;\n this.chunks += 1;\n handleCreateTable(index, columns, parser);\n }\n } catch (e: unknown) {\n onError(e);\n }\n }\n\n consolidateChunks(columns: string[][], parser: Parser): void {\n if (!this.consolidatedChunks) {\n this.consolidatedChunks = columns.slice();\n } else {\n for (let i = 0; i < columns.length; i += 1) {\n this.consolidatedChunks[i] = this.consolidatedChunks[i].concat(\n columns[i]\n );\n }\n }\n this.numConsolidated += 1;\n if (this.numConsolidated >= ZIP_CONSOLIDATE_CHUNKS || this.isComplete) {\n this.uploadConsolidatedChunks(parser);\n }\n }\n\n uploadConsolidatedChunks(parser: Parser | null): void {\n const { handleCreateTable } = this;\n const index = this.chunks;\n this.chunks += 1;\n const toUpload = this.consolidatedChunks?.slice();\n this.consolidatedChunks = undefined;\n this.numConsolidated = 0;\n assertNotNull(toUpload);\n handleCreateTable(index, toUpload, parser);\n }\n\n handleCreateTable(\n index: number,\n columns: string[][],\n parser: Parser | null\n ): void {\n const {\n session,\n tables,\n onFileCompleted,\n totalChunks,\n types,\n onProgress,\n onError,\n } = this;\n if (parser) {\n parser.pause();\n }\n assertNotNull(this.headers);\n assertNotNull(types);\n session\n .newTable(this.headers, types, columns, this.timeZone)\n .then(table => {\n if (this.isCancelled) {\n log.debug2('CSV parser cancelled.');\n if (parser) {\n parser.abort();\n }\n tables.forEach(t => t.close());\n return;\n }\n if (parser) {\n parser.resume();\n }\n tables[index] = table;\n // This accounts for 50% of parsing plus 50% already done by the type parser\n let progress = 0;\n if (totalChunks > 0) {\n progress = Math.round((tables.length / totalChunks) * 50) + 50;\n } else {\n progress = Math.round(50 + this.zipProgress / 2);\n }\n log.debug2(`CSV parser progress ${progress}`);\n onProgress(progress);\n if (this.isComplete && tables.length === this.chunks) {\n log.debug2('CSV parser complete.');\n onFileCompleted(tables);\n }\n })\n .catch(e => {\n if (!this.isComplete && parser) {\n parser.abort();\n }\n onError(e);\n });\n }\n\n handleComplete(results: ParseResult<unknown>): void {\n // results is undefined for a succesful parse, but has meta data for an abort\n if (!results || !results.meta.aborted) {\n this.isComplete = true;\n // Check if there are any consolidated chunks left over from a zip file\n if (this.consolidatedChunks) {\n this.uploadConsolidatedChunks(null);\n }\n }\n }\n\n handleError(error: unknown): void {\n const { onError } = this;\n onError(error);\n }\n\n handleNodeUpdate(metadata: { percent: number }): void {\n this.zipProgress = metadata.percent;\n }\n}\n\nexport default CsvParser;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/csv/CsvTypeParser.ts"],"names":["assertNotNull","Papa","NewTableColumnTypes","UNKNOWN","MAX_INT","MIN_INT","DATE_TIME_REGEX","LOCAL_TIME_REGEX","CsvTypeParser","determineType","value","type","nullString","STRING","INTEGER","checkInteger","LONG","checkLong","DOUBLE","checkDouble","BOOLEAN","checkBoolean","DATE_TIME","checkDateTime","LOCAL_TIME","checkLocalTime","getTypeFromUnknown","isNotParsableNumber","s","isNaN","noCommas","replace","getNumberType","includes","lower","toLowerCase","test","maxIntLength","startsWith","length","intValue","parseInt","constructor","onFileCompleted","file","readHeaders","parentConfig","onProgress","onError","totalChunks","isZip","shouldTrim","chunks","zipProgress","handleChunk","bind","handleComplete","handleError","handleNodeUpdate","config","error","chunk","complete","parse","toParse","nodeStream","result","parser","data","types","abort","Array","fill","slice","cloneTypes","forEach","row","i","trim","progress","Math","round","isCancelled","results","meta","aborted","map","metadata","percent"],"mappings":"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","sourcesContent":["import type { JSZipObject } from 'jszip';\nimport { assertNotNull } from '@deephaven/utils';\nimport Papa, { Parser, ParseResult, ParseLocalConfig } from 'papaparse';\n// Intentionally using isNaN rather than Number.isNaN\n/* eslint-disable no-restricted-globals */\nimport NewTableColumnTypes from './NewTableColumnTypes';\n\n// Initially column types start al unknown\nconst UNKNOWN = 'unknown';\n\nconst MAX_INT = 2147483647;\nconst MIN_INT = -2147483648;\n\nconst DATE_TIME_REGEX = /^[0-9]{4}-[0-1][0-9]-[0-3][0-9][ T][0-2][0-9]:[0-5][0-9]:[0-6][0-9](?:\\.[0-9]{1,9})?(?: [a-zA-Z]+)?$/;\nconst LOCAL_TIME_REGEX = /^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\\.[0-9]{1,9})?$/;\n\n/**\n * Determines the type of each column in a CSV file by parsing it and looking at every value.\n */\nclass CsvTypeParser {\n static determineType(\n value: string,\n type: string,\n nullString: string | null\n ): string {\n if (!value || value === nullString) {\n // A null tells us nothing about the type\n return type;\n }\n\n switch (type) {\n case NewTableColumnTypes.STRING:\n // Strings never get promoted\n return NewTableColumnTypes.STRING;\n case NewTableColumnTypes.INTEGER:\n return CsvTypeParser.checkInteger(value);\n case NewTableColumnTypes.LONG:\n return CsvTypeParser.checkLong(value);\n case NewTableColumnTypes.DOUBLE:\n return CsvTypeParser.checkDouble(value);\n case NewTableColumnTypes.BOOLEAN:\n return CsvTypeParser.checkBoolean(value);\n case NewTableColumnTypes.DATE_TIME:\n return CsvTypeParser.checkDateTime(value);\n case NewTableColumnTypes.LOCAL_TIME:\n return CsvTypeParser.checkLocalTime(value);\n default:\n return CsvTypeParser.getTypeFromUnknown(value);\n }\n }\n\n // Allows for cusomt rules in addition to isNaN\n static isNotParsableNumber(s: string): boolean {\n return (\n isNaN((s as unknown) as number) || s === 'Infinity' || s === '-Infinity'\n );\n }\n\n static checkInteger(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static checkLong(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n if (noCommas.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n return NewTableColumnTypes.LONG;\n }\n\n static checkDouble(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return NewTableColumnTypes.DOUBLE;\n }\n\n static checkBoolean(value: string): string {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n return NewTableColumnTypes.STRING;\n }\n\n static checkDateTime(value: string): string {\n if (DATE_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static checkLocalTime(value: string): string {\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static getTypeFromUnknown(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n\n if (DATE_TIME_REGEX.test(value) && value.includes(':')) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static getNumberType(value: string): string {\n if (value.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n // Fast length check\n const maxIntLength = value.startsWith('-') ? 11 : 10;\n if (value.length > maxIntLength) {\n return NewTableColumnTypes.LONG;\n }\n\n // Slower parseInt check\n const intValue = parseInt(value, 10);\n if (intValue > MAX_INT || intValue < MIN_INT) {\n return NewTableColumnTypes.LONG;\n }\n\n return NewTableColumnTypes.INTEGER;\n }\n\n constructor(\n onFileCompleted: (types: string[]) => void,\n file: Blob | JSZipObject,\n readHeaders: boolean,\n parentConfig: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>,\n nullString: string | null,\n onProgress: (progressValue: number) => boolean,\n onError: (e: unknown) => void,\n totalChunks: number,\n isZip: boolean,\n shouldTrim: boolean\n ) {\n this.onFileCompleted = onFileCompleted;\n this.file = file;\n this.readHeaders = readHeaders;\n this.nullString = nullString;\n this.onProgress = onProgress;\n this.onError = onError;\n this.chunks = 0;\n this.totalChunks = totalChunks;\n this.isZip = isZip;\n this.shouldTrim = shouldTrim;\n this.zipProgress = 0;\n\n this.handleChunk = this.handleChunk.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n\n this.config = {\n ...parentConfig,\n error: this.handleError,\n chunk: this.handleChunk,\n complete: this.handleComplete,\n };\n }\n\n onFileCompleted: (types: string[]) => void;\n\n file: Blob | JSZipObject;\n\n readHeaders: boolean;\n\n nullString: string | null;\n\n onProgress: (progressValue: number) => boolean;\n\n onError: (e: unknown) => void;\n\n types?: string[];\n\n chunks: number;\n\n totalChunks: number;\n\n isZip: boolean;\n\n shouldTrim: boolean;\n\n zipProgress: number;\n\n config: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>;\n\n parse(): void {\n const toParse = this.isZip\n ? (this.file as JSZipObject).nodeStream(\n // JsZip types are incorrect, thus the funny casting\n // Actual parameter is 'nodebuffer'\n 'nodebuffer' as 'nodestream',\n this.handleNodeUpdate\n )\n : (this.file as Blob);\n Papa.parse(toParse, this.config);\n }\n\n handleChunk(result: ParseResult<string[]>, parser: Parser): void {\n let { data } = result;\n if (!this.types) {\n if (!data || data.length === 0) {\n parser.abort();\n this.onError('Error parsing CSV: no data in file.');\n return;\n }\n this.types = new Array(data[0].length).fill(UNKNOWN);\n if (this.readHeaders) {\n // If headers are being read from the file, remove them from type analysis\n data = data.slice(1);\n }\n }\n\n assertNotNull(this.types);\n\n const cloneTypes = [...this.types];\n\n data.forEach(row => {\n if (row.length >= cloneTypes.length) {\n for (let i = 0; i < cloneTypes.length; i += 1) {\n cloneTypes[i] = CsvTypeParser.determineType(\n this.shouldTrim ? row[i].trim() : row[i],\n cloneTypes[i],\n this.nullString\n );\n }\n this.types = cloneTypes;\n } else {\n parser.abort();\n this.onError(\n `Error parsing CSV: Insufficient data in row.\\nExpected length ${cloneTypes.length} but found ${row.length}.\\nRow = ${row}`\n );\n }\n });\n\n this.chunks += 1;\n // 50 because the type parsing accounts for 50% of the parsing\n let progress = 0;\n if (this.totalChunks > 0) {\n progress = Math.round((this.chunks / this.totalChunks) * 50);\n } else {\n progress = Math.round(this.zipProgress / 2);\n }\n const isCancelled = this.onProgress(progress);\n if (isCancelled) {\n parser.abort();\n }\n }\n\n handleComplete(results: ParseResult<unknown>): void {\n const { types, onFileCompleted } = this;\n // results is undefined for a succesful parse, but has meta data for an abort\n assertNotNull(types);\n if (!results || !results.meta.aborted) {\n onFileCompleted(\n types.map(type =>\n type === UNKNOWN ? NewTableColumnTypes.STRING : type\n )\n );\n }\n }\n\n handleError(error: unknown): void {\n const { onError } = this;\n onError(error);\n }\n\n handleNodeUpdate(metadata: { percent: number }): void {\n this.zipProgress = metadata.percent;\n }\n}\n\nexport default CsvTypeParser;\n"],"file":"CsvTypeParser.js"}
1
+ {"version":3,"file":"CsvTypeParser.js","names":["assertNotNull","Papa","NewTableColumnTypes","UNKNOWN","MAX_INT","MIN_INT","DATE_TIME_REGEX","LOCAL_TIME_REGEX","CsvTypeParser","determineType","value","type","nullString","STRING","INTEGER","checkInteger","LONG","checkLong","DOUBLE","checkDouble","BOOLEAN","checkBoolean","DATE_TIME","checkDateTime","LOCAL_TIME","checkLocalTime","getTypeFromUnknown","isNotParsableNumber","s","isNaN","noCommas","replace","getNumberType","includes","lower","toLowerCase","test","maxIntLength","startsWith","length","intValue","parseInt","constructor","onFileCompleted","file","readHeaders","parentConfig","onProgress","onError","totalChunks","isZip","shouldTrim","chunks","zipProgress","handleChunk","bind","handleComplete","handleError","handleNodeUpdate","config","error","chunk","complete","parse","toParse","nodeStream","result","parser","data","types","abort","Array","fill","slice","cloneTypes","forEach","row","i","trim","progress","Math","round","isCancelled","results","meta","aborted","map","metadata","percent"],"sources":["../../src/csv/CsvTypeParser.ts"],"sourcesContent":["import type { JSZipObject } from 'jszip';\nimport { assertNotNull } from '@deephaven/utils';\nimport Papa, { Parser, ParseResult, ParseLocalConfig } from 'papaparse';\n// Intentionally using isNaN rather than Number.isNaN\n/* eslint-disable no-restricted-globals */\nimport NewTableColumnTypes from './NewTableColumnTypes';\n\n// Initially column types start al unknown\nconst UNKNOWN = 'unknown';\n\nconst MAX_INT = 2147483647;\nconst MIN_INT = -2147483648;\n\nconst DATE_TIME_REGEX = /^[0-9]{4}-[0-1][0-9]-[0-3][0-9][ T][0-2][0-9]:[0-5][0-9]:[0-6][0-9](?:\\.[0-9]{1,9})?(?: [a-zA-Z]+)?$/;\nconst LOCAL_TIME_REGEX = /^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\\.[0-9]{1,9})?$/;\n\n/**\n * Determines the type of each column in a CSV file by parsing it and looking at every value.\n */\nclass CsvTypeParser {\n static determineType(\n value: string,\n type: string,\n nullString: string | null\n ): string {\n if (!value || value === nullString) {\n // A null tells us nothing about the type\n return type;\n }\n\n switch (type) {\n case NewTableColumnTypes.STRING:\n // Strings never get promoted\n return NewTableColumnTypes.STRING;\n case NewTableColumnTypes.INTEGER:\n return CsvTypeParser.checkInteger(value);\n case NewTableColumnTypes.LONG:\n return CsvTypeParser.checkLong(value);\n case NewTableColumnTypes.DOUBLE:\n return CsvTypeParser.checkDouble(value);\n case NewTableColumnTypes.BOOLEAN:\n return CsvTypeParser.checkBoolean(value);\n case NewTableColumnTypes.DATE_TIME:\n return CsvTypeParser.checkDateTime(value);\n case NewTableColumnTypes.LOCAL_TIME:\n return CsvTypeParser.checkLocalTime(value);\n default:\n return CsvTypeParser.getTypeFromUnknown(value);\n }\n }\n\n // Allows for cusomt rules in addition to isNaN\n static isNotParsableNumber(s: string): boolean {\n return (\n isNaN((s as unknown) as number) || s === 'Infinity' || s === '-Infinity'\n );\n }\n\n static checkInteger(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static checkLong(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n if (noCommas.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n return NewTableColumnTypes.LONG;\n }\n\n static checkDouble(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return NewTableColumnTypes.DOUBLE;\n }\n\n static checkBoolean(value: string): string {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n return NewTableColumnTypes.STRING;\n }\n\n static checkDateTime(value: string): string {\n if (DATE_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static checkLocalTime(value: string): string {\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static getTypeFromUnknown(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n\n if (DATE_TIME_REGEX.test(value) && value.includes(':')) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static getNumberType(value: string): string {\n if (value.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n // Fast length check\n const maxIntLength = value.startsWith('-') ? 11 : 10;\n if (value.length > maxIntLength) {\n return NewTableColumnTypes.LONG;\n }\n\n // Slower parseInt check\n const intValue = parseInt(value, 10);\n if (intValue > MAX_INT || intValue < MIN_INT) {\n return NewTableColumnTypes.LONG;\n }\n\n return NewTableColumnTypes.INTEGER;\n }\n\n constructor(\n onFileCompleted: (types: string[]) => void,\n file: Blob | JSZipObject,\n readHeaders: boolean,\n parentConfig: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>,\n nullString: string | null,\n onProgress: (progressValue: number) => boolean,\n onError: (e: unknown) => void,\n totalChunks: number,\n isZip: boolean,\n shouldTrim: boolean\n ) {\n this.onFileCompleted = onFileCompleted;\n this.file = file;\n this.readHeaders = readHeaders;\n this.nullString = nullString;\n this.onProgress = onProgress;\n this.onError = onError;\n this.chunks = 0;\n this.totalChunks = totalChunks;\n this.isZip = isZip;\n this.shouldTrim = shouldTrim;\n this.zipProgress = 0;\n\n this.handleChunk = this.handleChunk.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n\n this.config = {\n ...parentConfig,\n error: this.handleError,\n chunk: this.handleChunk,\n complete: this.handleComplete,\n };\n }\n\n onFileCompleted: (types: string[]) => void;\n\n file: Blob | JSZipObject;\n\n readHeaders: boolean;\n\n nullString: string | null;\n\n onProgress: (progressValue: number) => boolean;\n\n onError: (e: unknown) => void;\n\n types?: string[];\n\n chunks: number;\n\n totalChunks: number;\n\n isZip: boolean;\n\n shouldTrim: boolean;\n\n zipProgress: number;\n\n config: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>;\n\n parse(): void {\n const toParse = this.isZip\n ? (this.file as JSZipObject).nodeStream(\n // JsZip types are incorrect, thus the funny casting\n // Actual parameter is 'nodebuffer'\n 'nodebuffer' as 'nodestream',\n this.handleNodeUpdate\n )\n : (this.file as Blob);\n Papa.parse(toParse, this.config);\n }\n\n handleChunk(result: ParseResult<string[]>, parser: Parser): void {\n let { data } = result;\n if (!this.types) {\n if (!data || data.length === 0) {\n parser.abort();\n this.onError('Error parsing CSV: no data in file.');\n return;\n }\n this.types = new Array(data[0].length).fill(UNKNOWN);\n if (this.readHeaders) {\n // If headers are being read from the file, remove them from type analysis\n data = data.slice(1);\n }\n }\n\n assertNotNull(this.types);\n\n const cloneTypes = [...this.types];\n\n data.forEach(row => {\n if (row.length >= cloneTypes.length) {\n for (let i = 0; i < cloneTypes.length; i += 1) {\n cloneTypes[i] = CsvTypeParser.determineType(\n this.shouldTrim ? row[i].trim() : row[i],\n cloneTypes[i],\n this.nullString\n );\n }\n this.types = cloneTypes;\n } else {\n parser.abort();\n this.onError(\n `Error parsing CSV: Insufficient data in row.\\nExpected length ${cloneTypes.length} but found ${row.length}.\\nRow = ${row}`\n );\n }\n });\n\n this.chunks += 1;\n // 50 because the type parsing accounts for 50% of the parsing\n let progress = 0;\n if (this.totalChunks > 0) {\n progress = Math.round((this.chunks / this.totalChunks) * 50);\n } else {\n progress = Math.round(this.zipProgress / 2);\n }\n const isCancelled = this.onProgress(progress);\n if (isCancelled) {\n parser.abort();\n }\n }\n\n handleComplete(results: ParseResult<unknown>): void {\n const { types, onFileCompleted } = this;\n // results is undefined for a succesful parse, but has meta data for an abort\n assertNotNull(types);\n if (!results || !results.meta.aborted) {\n onFileCompleted(\n types.map(type =>\n type === UNKNOWN ? NewTableColumnTypes.STRING : type\n )\n );\n }\n }\n\n handleError(error: unknown): void {\n const { onError } = this;\n onError(error);\n }\n\n handleNodeUpdate(metadata: { percent: number }): void {\n this.zipProgress = metadata.percent;\n }\n}\n\nexport default CsvTypeParser;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/csv/NewTableColumnTypes.ts"],"names":["NewTableColumnTypes"],"mappings":";;AAAA;AACA;AACA;AACA,MAAMA,mBAAN,CAA0B;;gBAApBA,mB,aACa,K;;gBADbA,mB,UAGU,M;;gBAHVA,mB,YAKY,Q;;gBALZA,mB,aAOa,M;;gBAPbA,mB,YASY,Q;;gBATZA,mB,eAWe,U;;gBAXfA,mB,gBAagB,W;;AAGtB,eAAeA,mBAAf","sourcesContent":["/**\n * Valid column types to be used for a call to newTable.\n */\nclass NewTableColumnTypes {\n static INTEGER = 'int';\n\n static LONG = 'long';\n\n static DOUBLE = 'double';\n\n static BOOLEAN = 'bool';\n\n static STRING = 'string';\n\n static DATE_TIME = 'datetime';\n\n static LOCAL_TIME = 'localtime';\n}\n\nexport default NewTableColumnTypes;\n"],"file":"NewTableColumnTypes.js"}
1
+ {"version":3,"file":"NewTableColumnTypes.js","names":["NewTableColumnTypes"],"sources":["../../src/csv/NewTableColumnTypes.ts"],"sourcesContent":["/**\n * Valid column types to be used for a call to newTable.\n */\nclass NewTableColumnTypes {\n static INTEGER = 'int';\n\n static LONG = 'long';\n\n static DOUBLE = 'double';\n\n static BOOLEAN = 'bool';\n\n static STRING = 'string';\n\n static DATE_TIME = 'datetime';\n\n static LOCAL_TIME = 'localtime';\n}\n\nexport default NewTableColumnTypes;\n"],"mappings":";;AAAA;AACA;AACA;AACA,MAAMA,mBAAN,CAA0B;;gBAApBA,mB,aACa,K;;gBADbA,mB,UAGU,M;;gBAHVA,mB,YAKY,Q;;gBALZA,mB,aAOa,M;;gBAPbA,mB,YASY,Q;;gBATZA,mB,eAWe,U;;gBAXfA,mB,gBAagB,W;;AAGtB,eAAeA,mBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"declaration.d.js"}
1
+ {"version":3,"file":"declaration.d.js","names":[],"sources":["../src/declaration.d.ts"],"sourcesContent":["declare module '*.module.scss' {\n const content: Record<string, string>;\n export default content;\n}\n\ndeclare module '*.scss';\n"],"mappings":""}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["default","Console","ConsoleInput","ConsoleMenu","SHORTCUTS","ConsoleStatusBar","MonacoUtils","Editor","ScriptEditor","ScriptEditorUtils","LogView","HeapUsage"],"mappings":"SAASA,OAAO,IAAIC,O;SACXD,OAAO,IAAIE,Y;SACXF,OAAO,IAAIG,W;SACXH,OAAO,IAAII,S;SACXJ,OAAO,IAAIK,gB;SACXL,OAAO,IAAIM,W;SACXN,OAAO,IAAIO,M;SACXP,OAAO,IAAIQ,Y;SACXR,OAAO,IAAIS,iB;;;;SAIXT,OAAO,IAAIU,O;SACXV,OAAO,IAAIW,S;SAEXX,O","sourcesContent":["export { default as Console } from './Console';\nexport { default as ConsoleInput } from './ConsoleInput';\nexport { default as ConsoleMenu } from './ConsoleMenu';\nexport { default as SHORTCUTS } from './ConsoleShortcuts';\nexport { default as ConsoleStatusBar } from './ConsoleStatusBar';\nexport { default as MonacoUtils } from './monaco/MonacoUtils';\nexport { default as Editor } from './notebook/Editor';\nexport { default as ScriptEditor } from './notebook/ScriptEditor';\nexport { default as ScriptEditorUtils } from './notebook/ScriptEditorUtils';\nexport * from './common';\nexport * from './command-history';\nexport * from './console-history';\nexport { default as LogView } from './log/LogView';\nexport { default as HeapUsage } from './HeapUsage';\n\nexport { default } from './Console';\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["default","Console","ConsoleInput","ConsoleMenu","SHORTCUTS","ConsoleStatusBar","MonacoUtils","Editor","ScriptEditor","ScriptEditorUtils","LogView","HeapUsage"],"sources":["../src/index.ts"],"sourcesContent":["export { default as Console } from './Console';\nexport { default as ConsoleInput } from './ConsoleInput';\nexport { default as ConsoleMenu } from './ConsoleMenu';\nexport { default as SHORTCUTS } from './ConsoleShortcuts';\nexport { default as ConsoleStatusBar } from './ConsoleStatusBar';\nexport { default as MonacoUtils } from './monaco/MonacoUtils';\nexport { default as Editor } from './notebook/Editor';\nexport { default as ScriptEditor } from './notebook/ScriptEditor';\nexport { default as ScriptEditorUtils } from './notebook/ScriptEditorUtils';\nexport * from './common';\nexport * from './command-history';\nexport * from './console-history';\nexport { default as LogView } from './log/LogView';\nexport { default as HeapUsage } from './HeapUsage';\n\nexport { default } from './Console';\n"],"mappings":"SAASA,OAAO,IAAIC,O;SACXD,OAAO,IAAIE,Y;SACXF,OAAO,IAAIG,W;SACXH,OAAO,IAAII,S;SACXJ,OAAO,IAAIK,gB;SACXL,OAAO,IAAIM,W;SACXN,OAAO,IAAIO,M;SACXP,OAAO,IAAIQ,Y;SACXR,OAAO,IAAIS,iB;;;;SAIXT,OAAO,IAAIU,O;SACXV,OAAO,IAAIW,S;SAEXX,O"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/log/LogLevel.ts"],"names":["Object","freeze","FATAL","STDERR","ERROR","WARN","STDOUT","INFO","DEBUG","TRACE"],"mappings":"AAAA,eAAeA,MAAM,CAACC,MAAP,CAAc;AAC3BC,EAAAA,KAAK,EAAE,OADoB;AAE3BC,EAAAA,MAAM,EAAE,QAFmB;AAG3BC,EAAAA,KAAK,EAAE,OAHoB;AAI3BC,EAAAA,IAAI,EAAE,MAJqB;AAK3BC,EAAAA,MAAM,EAAE,QALmB;AAM3BC,EAAAA,IAAI,EAAE,MANqB;AAO3BC,EAAAA,KAAK,EAAE,OAPoB;AAQ3BC,EAAAA,KAAK,EAAE;AARoB,CAAd,CAAf","sourcesContent":["export default Object.freeze({\n FATAL: 'FATAL',\n STDERR: 'STDERR',\n ERROR: 'ERROR',\n WARN: 'WARN',\n STDOUT: 'STDOUT',\n INFO: 'INFO',\n DEBUG: 'DEBUG',\n TRACE: 'TRACE',\n});\n"],"file":"LogLevel.js"}
1
+ {"version":3,"file":"LogLevel.js","names":["Object","freeze","FATAL","STDERR","ERROR","WARN","STDOUT","INFO","DEBUG","TRACE"],"sources":["../../src/log/LogLevel.ts"],"sourcesContent":["export default Object.freeze({\n FATAL: 'FATAL',\n STDERR: 'STDERR',\n ERROR: 'ERROR',\n WARN: 'WARN',\n STDOUT: 'STDOUT',\n INFO: 'INFO',\n DEBUG: 'DEBUG',\n TRACE: 'TRACE',\n});\n"],"mappings":"AAAA,eAAeA,MAAM,CAACC,MAAP,CAAc;EAC3BC,KAAK,EAAE,OADoB;EAE3BC,MAAM,EAAE,QAFmB;EAG3BC,KAAK,EAAE,OAHoB;EAI3BC,IAAI,EAAE,MAJqB;EAK3BC,MAAM,EAAE,QALmB;EAM3BC,IAAI,EAAE,MANqB;EAO3BC,KAAK,EAAE,OAPoB;EAQ3BC,KAAK,EAAE;AARoB,CAAd,CAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/log/LogLevelMenuItem.tsx"],"names":["React","PureComponent","classNames","UISwitch","LogLevelMenuItem","constructor","props","handleSwitchClick","bind","logLevel","onClick","render","on"],"mappings":"AAAA;AACA,OAAOA,KAAP,IAAgBC,aAAhB,QAAmD,OAAnD;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,QAAT,QAAyB,uBAAzB;;;AASA,MAAMC,gBAAN,SAA+BH,aAA/B,CAGE;AACAI,EAAAA,WAAW,CAACC,KAAD,EAA+B;AACxC,UAAMA,KAAN;AAEA,SAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBC,IAAvB,CAA4B,IAA5B,CAAzB;AACD;;AAEDD,EAAAA,iBAAiB,GAAS;AACxB,QAAM;AAAEE,MAAAA,QAAF;AAAYC,MAAAA;AAAZ,QAAwB,KAAKJ,KAAnC;AACAI,IAAAA,OAAO,CAACD,QAAD,CAAP;AACD;;AAEDE,EAAAA,MAAM,GAAiB;AACrB,QAAM;AAAEF,MAAAA,QAAF;AAAYG,MAAAA;AAAZ,QAAmB,KAAKN,KAA9B;AACA,wBACE;AAAK,MAAA,SAAS,EAAEJ,UAAU,CAAC,qBAAD,EAAwBO,QAAxB;AAA1B,oBACE,oBAAC,QAAD;AAAU,MAAA,EAAE,EAAEG,EAAd;AAAkB,MAAA,OAAO,EAAE,KAAKL;AAAhC,MADF,EAEGE,QAFH,CADF;AAMD;;AApBD;;AAuBF,eAAeL,gBAAf","sourcesContent":["// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { PureComponent, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { UISwitch } from '@deephaven/components';\nimport './LogLevelMenuItem.scss';\n\ninterface LogLevelMenuItemProps {\n logLevel: string;\n on: boolean;\n onClick: (logLevel: string) => void;\n}\n\nclass LogLevelMenuItem extends PureComponent<\n LogLevelMenuItemProps,\n Record<string, never>\n> {\n constructor(props: LogLevelMenuItemProps) {\n super(props);\n\n this.handleSwitchClick = this.handleSwitchClick.bind(this);\n }\n\n handleSwitchClick(): void {\n const { logLevel, onClick } = this.props;\n onClick(logLevel);\n }\n\n render(): ReactElement {\n const { logLevel, on } = this.props;\n return (\n <div className={classNames('log-level-menu-item', logLevel)}>\n <UISwitch on={on} onClick={this.handleSwitchClick} />\n {logLevel}\n </div>\n );\n }\n}\n\nexport default LogLevelMenuItem;\n"],"file":"LogLevelMenuItem.js"}
1
+ {"version":3,"file":"LogLevelMenuItem.js","names":["React","PureComponent","classNames","UISwitch","LogLevelMenuItem","constructor","props","handleSwitchClick","bind","logLevel","onClick","render","on"],"sources":["../../src/log/LogLevelMenuItem.tsx"],"sourcesContent":["// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { PureComponent, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { UISwitch } from '@deephaven/components';\nimport './LogLevelMenuItem.scss';\n\ninterface LogLevelMenuItemProps {\n logLevel: string;\n on: boolean;\n onClick: (logLevel: string) => void;\n}\n\nclass LogLevelMenuItem extends PureComponent<\n LogLevelMenuItemProps,\n Record<string, never>\n> {\n constructor(props: LogLevelMenuItemProps) {\n super(props);\n\n this.handleSwitchClick = this.handleSwitchClick.bind(this);\n }\n\n handleSwitchClick(): void {\n const { logLevel, onClick } = this.props;\n onClick(logLevel);\n }\n\n render(): ReactElement {\n const { logLevel, on } = this.props;\n return (\n <div className={classNames('log-level-menu-item', logLevel)}>\n <UISwitch on={on} onClick={this.handleSwitchClick} />\n {logLevel}\n </div>\n );\n }\n}\n\nexport default LogLevelMenuItem;\n"],"mappings":"AAAA;AACA,OAAOA,KAAP,IAAgBC,aAAhB,QAAmD,OAAnD;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,QAAT,QAAyB,uBAAzB;;;AASA,MAAMC,gBAAN,SAA+BH,aAA/B,CAGE;EACAI,WAAW,CAACC,KAAD,EAA+B;IACxC,MAAMA,KAAN;IAEA,KAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBC,IAAvB,CAA4B,IAA5B,CAAzB;EACD;;EAEDD,iBAAiB,GAAS;IACxB,IAAM;MAAEE,QAAF;MAAYC;IAAZ,IAAwB,KAAKJ,KAAnC;IACAI,OAAO,CAACD,QAAD,CAAP;EACD;;EAEDE,MAAM,GAAiB;IACrB,IAAM;MAAEF,QAAF;MAAYG;IAAZ,IAAmB,KAAKN,KAA9B;IACA,oBACE;MAAK,SAAS,EAAEJ,UAAU,CAAC,qBAAD,EAAwBO,QAAxB;IAA1B,gBACE,oBAAC,QAAD;MAAU,EAAE,EAAEG,EAAd;MAAkB,OAAO,EAAE,KAAKL;IAAhC,EADF,EAEGE,QAFH,CADF;EAMD;;AApBD;;AAuBF,eAAeL,gBAAf"}