@isrd-isi-edu/ermrestjs 2.0.0

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 (71) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +55 -0
  3. package/dist/ermrest.d.ts +3481 -0
  4. package/dist/ermrest.js +45 -0
  5. package/dist/ermrest.js.gz +0 -0
  6. package/dist/ermrest.js.map +1 -0
  7. package/dist/ermrest.min.js +45 -0
  8. package/dist/ermrest.min.js.gz +0 -0
  9. package/dist/ermrest.min.js.map +1 -0
  10. package/dist/ermrest.ver.txt +1 -0
  11. package/dist/stats.html +4949 -0
  12. package/js/ag_reference.js +1483 -0
  13. package/js/core.js +4931 -0
  14. package/js/datapath.js +336 -0
  15. package/js/export.js +956 -0
  16. package/js/filters.js +192 -0
  17. package/js/format.js +344 -0
  18. package/js/hatrac.js +1130 -0
  19. package/js/json_ld_validator.js +285 -0
  20. package/js/parser.js +2320 -0
  21. package/js/setup/node.js +27 -0
  22. package/js/utils/helpers.js +2300 -0
  23. package/js/utils/json_ld_schema.js +680 -0
  24. package/js/utils/pseudocolumn_helpers.js +2196 -0
  25. package/package.json +79 -0
  26. package/src/index.ts +204 -0
  27. package/src/models/comment.ts +14 -0
  28. package/src/models/deferred-promise.ts +16 -0
  29. package/src/models/display-name.ts +5 -0
  30. package/src/models/errors.ts +408 -0
  31. package/src/models/path-prefix-alias-mapping.ts +130 -0
  32. package/src/models/reference/bulk-create-foreign-key-object.ts +133 -0
  33. package/src/models/reference/citation.ts +98 -0
  34. package/src/models/reference/contextualize.ts +535 -0
  35. package/src/models/reference/google-dataset-metadata.ts +72 -0
  36. package/src/models/reference/index.ts +14 -0
  37. package/src/models/reference/page.ts +520 -0
  38. package/src/models/reference/reference-aggregate-fn.ts +37 -0
  39. package/src/models/reference/reference.ts +2813 -0
  40. package/src/models/reference/related-reference.ts +467 -0
  41. package/src/models/reference/tuple.ts +652 -0
  42. package/src/models/reference-column/asset-pseudo-column.ts +498 -0
  43. package/src/models/reference-column/column-aggregate.ts +313 -0
  44. package/src/models/reference-column/facet-column.ts +1380 -0
  45. package/src/models/reference-column/foreign-key-pseudo-column.ts +626 -0
  46. package/src/models/reference-column/inbound-foreign-key-pseudo-column.ts +131 -0
  47. package/src/models/reference-column/index.ts +13 -0
  48. package/src/models/reference-column/key-pseudo-column.ts +236 -0
  49. package/src/models/reference-column/pseudo-column.ts +850 -0
  50. package/src/models/reference-column/reference-column.ts +740 -0
  51. package/src/models/source-object-node.ts +156 -0
  52. package/src/models/source-object-wrapper.ts +694 -0
  53. package/src/models/table-source-definitions.ts +98 -0
  54. package/src/services/authn.ts +43 -0
  55. package/src/services/catalog.ts +37 -0
  56. package/src/services/config.ts +202 -0
  57. package/src/services/error.ts +247 -0
  58. package/src/services/handlebars.ts +607 -0
  59. package/src/services/history.ts +136 -0
  60. package/src/services/http.ts +536 -0
  61. package/src/services/logger.ts +70 -0
  62. package/src/services/mustache.ts +0 -0
  63. package/src/utils/column-utils.ts +308 -0
  64. package/src/utils/constants.ts +526 -0
  65. package/src/utils/markdown-utils.ts +855 -0
  66. package/src/utils/reference-utils.ts +1658 -0
  67. package/src/utils/template-utils.ts +0 -0
  68. package/src/utils/type-utils.ts +89 -0
  69. package/src/utils/value-utils.ts +127 -0
  70. package/tsconfig.json +30 -0
  71. package/vite.config.mts +104 -0
package/package.json ADDED
@@ -0,0 +1,79 @@
1
+ {
2
+ "name": "@isrd-isi-edu/ermrestjs",
3
+ "description": "ERMrest client library in JavaScript",
4
+ "version": "2.0.0",
5
+ "license": "Apache-2.0",
6
+ "engines": {
7
+ "node": ">= 20.0.0",
8
+ "npm": ">=6.0.0"
9
+ },
10
+ "main": "dist/ermrest.js",
11
+ "module": "dist/ermrest.min.js",
12
+ "types": "dist/ermrest.d.ts",
13
+ "files": [
14
+ "dist",
15
+ "js",
16
+ "src",
17
+ "tsconfig.json",
18
+ "vite.config.mts"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc && vite build",
22
+ "pretest": "make deps-test && make dist-w-deps",
23
+ "deploy": "make deploy",
24
+ "test": "make test",
25
+ "lint": "eslint src js --quiet",
26
+ "lint-w-warn": "eslint src js",
27
+ "format": "prettier --write src"
28
+ },
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/informatics-isi-edu/ermrestjs.git"
32
+ },
33
+ "bugs": {
34
+ "url": "https://github.com/informatics-isi-edu/ermrestjs/issues"
35
+ },
36
+ "homepage": "https://github.com/informatics-isi-edu/ermrestjs#readme",
37
+ "keywords": [
38
+ "database",
39
+ "rest",
40
+ "postgresql",
41
+ "library"
42
+ ],
43
+ "dependencies": {
44
+ "@types/markdown-it": "^14.1.2",
45
+ "@types/q": "^1.5.8",
46
+ "axios": "1.12.2",
47
+ "handlebars": "4.7.8",
48
+ "lz-string": "^1.5.0",
49
+ "markdown-it": "12.3.2",
50
+ "moment": "2.29.4",
51
+ "moment-timezone": "0.5.48",
52
+ "mustache": "x",
53
+ "q": "1.5.1",
54
+ "spark-md5": "^3.0.0",
55
+ "terser": "^5.43.1",
56
+ "typescript": "~5.8.3",
57
+ "vite": "^6.3.6",
58
+ "vite-plugin-compression2": "^2.2.1"
59
+ },
60
+ "devDependencies": {
61
+ "@eslint/js": "^9.36.0",
62
+ "@isrd-isi-edu/ermrest-data-utils": "0.0.5",
63
+ "@types/node": "^24.6.1",
64
+ "eslint": "^9.36.0",
65
+ "eslint-config-prettier": "^10.1.8",
66
+ "eslint-plugin-prettier": "^5.5.4",
67
+ "file-api": "^0.10.4",
68
+ "globals": "^16.4.0",
69
+ "jasmine": "2.5.3",
70
+ "jasmine-expect": "3.7.1",
71
+ "jasmine-spec-reporter": "2.5.0",
72
+ "nock": "13.5.4",
73
+ "prettier": "^3.6.2",
74
+ "require-reload": "^0.2.2",
75
+ "rollup-plugin-visualizer": "^6.0.3",
76
+ "typescript-eslint": "^8.45.0",
77
+ "vite-plugin-dts": "^4.5.4"
78
+ }
79
+ }
package/src/index.ts ADDED
@@ -0,0 +1,204 @@
1
+ /**
2
+ * This file contains the functions and classes that we want to expose for standalone javascript ermrest bundle
3
+ * vite will attach these to 'ERMrest' namespace which will allow accessing them using `window.ERMrest`
4
+ */
5
+ import moment from 'moment-timezone';
6
+
7
+ // model
8
+ import {
9
+ ERMrestError,
10
+ TimedOutError,
11
+ BadRequestError,
12
+ QueryTimeoutError,
13
+ UnauthorizedError,
14
+ ForbiddenError,
15
+ NotFoundError,
16
+ ConflictError,
17
+ IntegrityConflictError,
18
+ DuplicateConflictError,
19
+ PreconditionFailedError,
20
+ InternalServerError,
21
+ BadGatewayError,
22
+ ServiceUnavailableError,
23
+ NoConnectionError,
24
+ InvalidFacetOperatorError,
25
+ InvalidCustomFacetOperatorError,
26
+ InvalidFilterOperatorError,
27
+ InvalidSortCriteria,
28
+ InvalidPageCriteria,
29
+ InvalidInputError,
30
+ InvalidServerResponse,
31
+ MalformedURIError,
32
+ NoDataChangedError,
33
+ BatchUnlinkResponse,
34
+ BatchDeleteResponse,
35
+ UnsupportedFilters,
36
+ } from '@isrd-isi-edu/ermrestjs/src/models/errors';
37
+
38
+ // services
39
+ import CatalogService from '@isrd-isi-edu/ermrestjs/src/services/catalog';
40
+ import ConfigService from '@isrd-isi-edu/ermrestjs/src/services/config';
41
+ import ErrorService from '@isrd-isi-edu/ermrestjs/src/services/error';
42
+ import AuthnService from '@isrd-isi-edu/ermrestjs/src/services/authn';
43
+ import HTTPService from '@isrd-isi-edu/ermrestjs/src/services/http';
44
+
45
+ // utils
46
+ import { contextHeaderName, ENV_IS_NODE } from '@isrd-isi-edu/ermrestjs/src/utils/constants';
47
+ import { fixedEncodeURIComponent } from '@isrd-isi-edu/ermrestjs/src/utils/value-utils';
48
+ import { renderMarkdown } from '@isrd-isi-edu/ermrestjs/src/utils/markdown-utils';
49
+
50
+ // legacy imports
51
+ import { Checksum, Upload } from '@isrd-isi-edu/ermrestjs/js/hatrac';
52
+ import { onload, getElapsedTime } from '@isrd-isi-edu/ermrestjs/js/setup/node';
53
+ import printf from '@isrd-isi-edu/ermrestjs/js/format';
54
+ import { resolve, _createPage } from '@isrd-isi-edu/ermrestjs/src/models/reference';
55
+ import { ermrestFactory } from '@isrd-isi-edu/ermrestjs/js/core';
56
+ import { parse, createPath, createSearchPath, createLocation } from '@isrd-isi-edu/ermrestjs/js/parser';
57
+ import {
58
+ _currDate,
59
+ decodeFacet,
60
+ encodeFacet,
61
+ encodeFacetString,
62
+ _formatUtils,
63
+ processMarkdownPattern,
64
+ renderMustacheTemplate,
65
+ _validateMustacheTemplate,
66
+ } from '@isrd-isi-edu/ermrestjs/js/utils/helpers';
67
+ import {
68
+ AttributeGroupColumn,
69
+ AttributeGroupReference,
70
+ AttributeGroupLocation,
71
+ BucketAttributeGroupReference,
72
+ } from '@isrd-isi-edu/ermrestjs/js/ag_reference';
73
+ import { BinaryPredicate } from '@isrd-isi-edu/ermrestjs/js/filters';
74
+ import { DataPath } from '@isrd-isi-edu/ermrestjs/js/datapath';
75
+ import HandlebarsService from '@isrd-isi-edu/ermrestjs/src/services/handlebars';
76
+ import { Exporter } from '@isrd-isi-edu/ermrestjs/js/export';
77
+ import validateJSONLD from '@isrd-isi-edu/ermrestjs/js/json_ld_validator.js';
78
+ import HistoryService from '@isrd-isi-edu/ermrestjs/src/services/history';
79
+
80
+ const logError = ErrorService.logError;
81
+ const responseToError = ErrorService.responseToError;
82
+
83
+ const configure = ConfigService.configure;
84
+ const appLinkFn = ConfigService.setAppLinkFn;
85
+ const setClientConfig = ConfigService.setClientConfig;
86
+ const systemColumnsHeuristicsMode = ConfigService.setSystemColumnsHeuristicsMode;
87
+ const resetUserCookie = ConfigService.resetUserCookie;
88
+ const setUserCookie = ConfigService.setUserCookie;
89
+
90
+ const setClientSession = AuthnService.setClientSession;
91
+
92
+ const _certifyContextHeader = HTTPService.certifyContextHeader;
93
+ const setHTTP401Handler = HTTPService.setHTTP401Handler;
94
+ const onHTTPSuccess = HTTPService.setOnHTTPSuccess;
95
+
96
+ const renderHandlebarsTemplate = HandlebarsService.render;
97
+
98
+ const _clearConstraintNames = CatalogService.clearConstraintNames;
99
+
100
+ // chaise relies on moment
101
+ if (!ENV_IS_NODE) {
102
+ window.moment = moment;
103
+ }
104
+
105
+ export {
106
+ // services
107
+ // ConfigService,
108
+ // ErrorService,
109
+ // HTTPService,
110
+ AuthnService,
111
+ Exporter,
112
+ HistoryService,
113
+
114
+ // constants
115
+ contextHeaderName,
116
+
117
+ // functions
118
+ resolve,
119
+ configure,
120
+ appLinkFn,
121
+ _certifyContextHeader,
122
+ ermrestFactory,
123
+ fixedEncodeURIComponent,
124
+ decodeFacet,
125
+ encodeFacet,
126
+ setClientConfig,
127
+ /**
128
+ * @deprecated
129
+ * use `AuthnService.setClientSession` instead
130
+ */
131
+ setClientSession,
132
+ systemColumnsHeuristicsMode,
133
+ onHTTPSuccess,
134
+ setHTTP401Handler,
135
+ getElapsedTime,
136
+ onload,
137
+
138
+ // markdown/template/print
139
+ processMarkdownPattern,
140
+ renderHandlebarsTemplate,
141
+ renderMarkdown,
142
+ renderMustacheTemplate,
143
+
144
+ // parser
145
+ parse,
146
+ createPath,
147
+ createSearchPath,
148
+ createLocation,
149
+
150
+ // attribute group
151
+ AttributeGroupColumn,
152
+ AttributeGroupReference,
153
+ AttributeGroupLocation,
154
+ BucketAttributeGroupReference,
155
+
156
+ // hatrac
157
+ Upload,
158
+ Checksum,
159
+
160
+ // error:
161
+ logError,
162
+ responseToError,
163
+ ERMrestError,
164
+ TimedOutError,
165
+ BadRequestError,
166
+ QueryTimeoutError,
167
+ UnauthorizedError,
168
+ ForbiddenError,
169
+ NotFoundError,
170
+ ConflictError,
171
+ IntegrityConflictError,
172
+ DuplicateConflictError,
173
+ PreconditionFailedError,
174
+ InternalServerError,
175
+ BadGatewayError,
176
+ ServiceUnavailableError,
177
+ NoConnectionError,
178
+ InvalidFacetOperatorError,
179
+ InvalidCustomFacetOperatorError,
180
+ InvalidFilterOperatorError,
181
+ InvalidSortCriteria,
182
+ InvalidPageCriteria,
183
+ InvalidInputError,
184
+ InvalidServerResponse,
185
+ MalformedURIError,
186
+ NoDataChangedError,
187
+ BatchUnlinkResponse,
188
+ BatchDeleteResponse,
189
+ UnsupportedFilters,
190
+
191
+ // used for testing
192
+ resetUserCookie,
193
+ setUserCookie,
194
+ printf,
195
+ _clearConstraintNames,
196
+ _createPage,
197
+ _formatUtils,
198
+ encodeFacetString,
199
+ _validateMustacheTemplate,
200
+ _currDate,
201
+ BinaryPredicate,
202
+ DataPath,
203
+ validateJSONLD,
204
+ };
@@ -0,0 +1,14 @@
1
+ export type CommentType =
2
+ | {
3
+ value: string;
4
+ isHTML: boolean;
5
+ unformatted: string;
6
+ displayMode: CommentDisplayModes;
7
+ }
8
+ | false
9
+ | null;
10
+
11
+ export enum CommentDisplayModes {
12
+ INLINE = 'inline',
13
+ TOOLTIP = 'tooltip',
14
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * TODO I added this to replace the usage of Q.defer().
3
+ * But doing so broke the flow-control of chaise. We should investigate this later so we can remove Q.
4
+ */
5
+ export default class DeferredPromise<T> {
6
+ promise: Promise<T>;
7
+ resolve!: (value: T | PromiseLike<T>) => void;
8
+ reject!: (reason?: any) => void;
9
+
10
+ constructor() {
11
+ this.promise = new Promise<T>((resolve, reject) => {
12
+ this.resolve = resolve;
13
+ this.reject = reject;
14
+ });
15
+ }
16
+ }
@@ -0,0 +1,5 @@
1
+ export type DisplayName = {
2
+ value: string | null;
3
+ isHTML: boolean;
4
+ unformatted?: string | null;
5
+ };