@medplum/core 2.0.14 → 2.0.16
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.
- package/dist/cjs/index.cjs +1244 -1101
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.min.cjs +1 -1
- package/dist/esm/base64.mjs +33 -0
- package/dist/esm/base64.mjs.map +1 -0
- package/dist/esm/cache.mjs +17 -23
- package/dist/esm/cache.mjs.map +1 -1
- package/dist/esm/client.mjs +500 -413
- package/dist/esm/client.mjs.map +1 -1
- package/dist/esm/eventtarget.mjs +6 -11
- package/dist/esm/eventtarget.mjs.map +1 -1
- package/dist/esm/fhirlexer/parse.mjs +15 -23
- package/dist/esm/fhirlexer/parse.mjs.map +1 -1
- package/dist/esm/fhirlexer/tokenize.mjs +190 -180
- package/dist/esm/fhirlexer/tokenize.mjs.map +1 -1
- package/dist/esm/fhirmapper/parse.mjs +264 -252
- package/dist/esm/fhirmapper/parse.mjs.map +1 -1
- package/dist/esm/fhirmapper/tokenize.mjs +0 -1
- package/dist/esm/fhirmapper/tokenize.mjs.map +1 -1
- package/dist/esm/fhirpath/atoms.mjs +0 -1
- package/dist/esm/fhirpath/atoms.mjs.map +1 -1
- package/dist/esm/fhirpath/parse.mjs +0 -1
- package/dist/esm/fhirpath/parse.mjs.map +1 -1
- package/dist/esm/fhirpath/tokenize.mjs +0 -1
- package/dist/esm/fhirpath/tokenize.mjs.map +1 -1
- package/dist/esm/filter/parse.mjs +0 -2
- package/dist/esm/filter/parse.mjs.map +1 -1
- package/dist/esm/filter/tokenize.mjs +0 -1
- package/dist/esm/filter/tokenize.mjs.map +1 -1
- package/dist/esm/format.mjs +24 -15
- package/dist/esm/format.mjs.map +1 -1
- package/dist/esm/index.min.mjs +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/jwt.mjs +2 -9
- package/dist/esm/jwt.mjs.map +1 -1
- package/dist/esm/outcomes.mjs +15 -1
- package/dist/esm/outcomes.mjs.map +1 -1
- package/dist/esm/readablepromise.mjs +18 -23
- package/dist/esm/readablepromise.mjs.map +1 -1
- package/dist/esm/schema.mjs +146 -123
- package/dist/esm/schema.mjs.map +1 -1
- package/dist/esm/search/match.mjs +0 -2
- package/dist/esm/search/match.mjs.map +1 -1
- package/dist/esm/search/search.mjs +15 -9
- package/dist/esm/search/search.mjs.map +1 -1
- package/dist/esm/storage.mjs +13 -19
- package/dist/esm/storage.mjs.map +1 -1
- package/dist/types/base64.d.ts +14 -0
- package/dist/types/cache.d.ts +3 -1
- package/dist/types/client.d.ts +153 -1
- package/dist/types/eventtarget.d.ts +1 -1
- package/dist/types/fhirlexer/parse.d.ts +5 -2
- package/dist/types/fhirlexer/tokenize.d.ts +28 -1
- package/dist/types/format.d.ts +3 -1
- package/dist/types/outcomes.d.ts +1 -0
- package/dist/types/readablepromise.d.ts +4 -1
- package/dist/types/schema.d.ts +33 -1
- package/dist/types/storage.d.ts +2 -2
- package/package.json +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.mjs +0 -30
- package/dist/esm/node_modules/tslib/tslib.es6.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenize.mjs","sources":["../../../src/fhirlexer/tokenize.ts"],"sourcesContent":["export interface Marker {\n index: number;\n line: number;\n column: number;\n}\n\nexport interface Token extends Marker {\n id: string;\n value: string;\n}\n\nconst STANDARD_UNITS = [\n 'year',\n 'years',\n 'month',\n 'months',\n 'week',\n 'weeks',\n 'day',\n 'days',\n 'hour',\n 'hours',\n 'minute',\n 'minutes',\n 'second',\n 'seconds',\n 'millisecond',\n 'milliseconds',\n];\n\nexport interface TokenizerOptions {\n dateTimeLiterals?: boolean;\n symbolRegex?: RegExp;\n}\n\nexport class Tokenizer {\n readonly #str: string;\n readonly #keywords: string[];\n readonly #operators: string[];\n readonly #dateTimeLiterals: boolean;\n readonly #symbolRegex: RegExp;\n readonly #result: Token[] = [];\n readonly #pos: Marker = { index: 0, line: 1, column: 0 };\n readonly #markStack: Marker[] = [];\n\n constructor(str: string, keywords: string[], operators: string[], options?: TokenizerOptions) {\n this.#str = str;\n this.#keywords = keywords;\n this.#operators = operators;\n this.#dateTimeLiterals = !!options?.dateTimeLiterals;\n this.#symbolRegex = options?.symbolRegex ?? /[$\\w]/;\n }\n\n tokenize(): Token[] {\n while (this.#pos.index < this.#str.length) {\n const token = this.#consumeToken();\n if (token) {\n this.#result.push(token);\n }\n }\n\n return this.#result;\n }\n\n #prevToken(): Token | undefined {\n return this.#result.slice(-1)[0];\n }\n\n #peekToken(): Token | undefined {\n this.#mark();\n const token = this.#consumeToken();\n this.#reset();\n return token;\n }\n\n #consumeToken(): Token | undefined {\n this.#consumeWhitespace();\n\n const c = this.#curr();\n if (!c) {\n return undefined;\n }\n\n this.#mark();\n\n const next = this.#peek();\n\n if (c === '/' && next === '*') {\n return this.#consumeMultiLineComment();\n }\n\n if (c === '/' && next === '/') {\n return this.#consumeSingleLineComment();\n }\n\n if (c === \"'\" || c === '\"') {\n return this.#consumeString(c);\n }\n\n if (c === '`') {\n return this.#consumeBacktickSymbol();\n }\n\n if (c === '@') {\n return this.#consumeDateTime();\n }\n\n if (c.match(/\\d/)) {\n return this.#consumeNumber();\n }\n\n if (c.match(/\\w/)) {\n return this.#consumeSymbol();\n }\n\n if (c === '$' && next.match(/\\w/)) {\n return this.#consumeSymbol();\n }\n\n return this.#consumeOperator();\n }\n\n #consumeWhitespace(): void {\n this.#consumeWhile(() => this.#curr().match(/\\s/));\n }\n\n #consumeMultiLineComment(): Token {\n const start = this.#pos.index;\n this.#consumeWhile(() => this.#curr() !== '*' || this.#peek() !== '/');\n this.#advance();\n this.#advance();\n return this.#buildToken('Comment', this.#str.substring(start, this.#pos.index));\n }\n\n #consumeSingleLineComment(): Token {\n return this.#buildToken(\n 'Comment',\n this.#consumeWhile(() => this.#curr() !== '\\n')\n );\n }\n\n #consumeString(endChar: string): Token {\n this.#advance();\n const result = this.#buildToken(\n 'String',\n this.#consumeWhile(() => this.#prev() === '\\\\' || this.#curr() !== endChar)\n );\n this.#advance();\n return result;\n }\n\n #consumeBacktickSymbol(): Token {\n this.#advance();\n const result = this.#buildToken(\n 'Symbol',\n this.#consumeWhile(() => this.#curr() !== '`')\n );\n this.#advance();\n return result;\n }\n\n #consumeDateTime(): Token {\n this.#advance(); // Consume \"@\"\n\n const start = this.#pos.index;\n this.#consumeWhile(() => this.#curr().match(/[\\d-]/));\n\n if (this.#curr() === 'T') {\n this.#advance();\n this.#consumeWhile(() => this.#curr().match(/[\\d:]/));\n\n if (this.#curr() === '.' && this.#peek().match(/\\d/)) {\n this.#advance();\n this.#consumeWhile(() => this.#curr().match(/\\d/));\n }\n\n if (this.#curr() === 'Z') {\n this.#advance();\n } else if (this.#curr() === '+' || this.#curr() === '-') {\n this.#advance();\n this.#consumeWhile(() => this.#curr().match(/[\\d:]/));\n }\n }\n\n return this.#buildToken('DateTime', this.#str.substring(start, this.#pos.index));\n }\n\n #consumeNumber(): Token {\n const start = this.#pos.index;\n let id = 'Number';\n this.#consumeWhile(() => this.#curr().match(/\\d/));\n\n if (this.#curr() === '.' && this.#peek().match(/\\d/)) {\n this.#advance();\n this.#consumeWhile(() => this.#curr().match(/\\d/));\n }\n\n if (this.#curr() === '-' && this.#dateTimeLiterals) {\n // Rewind to one character before the start, and then treat as dateTime literal.\n this.#pos.index = start - 1;\n return this.#consumeDateTime();\n }\n\n if (this.#curr() === ' ') {\n if (isUnitToken(this.#peekToken())) {\n id = 'Quantity';\n this.#consumeToken();\n }\n }\n\n return this.#buildToken(id, this.#str.substring(start, this.#pos.index));\n }\n\n #consumeSymbol(): Token {\n const value = this.#consumeWhile(() => this.#curr().match(this.#symbolRegex));\n if (this.#prevToken()?.value !== '.' && this.#keywords.includes(value)) {\n return this.#buildToken(value, value);\n }\n return this.#buildToken('Symbol', value);\n }\n\n #consumeOperator(): Token {\n const c = this.#curr();\n const next = this.#peek();\n const twoCharOp = c + next;\n\n if (this.#operators.includes(twoCharOp)) {\n this.#advance();\n this.#advance();\n return this.#buildToken(twoCharOp, twoCharOp);\n }\n\n this.#advance();\n return this.#buildToken(c, c);\n }\n\n #consumeWhile(condition: () => unknown): string {\n const start = this.#pos.index;\n\n while (this.#pos.index < this.#str.length && condition()) {\n this.#advance();\n }\n\n return this.#str.substring(start, this.#pos.index);\n }\n\n #curr(): string {\n return this.#str[this.#pos.index];\n }\n\n #prev(): string {\n return this.#str[this.#pos.index - 1] ?? '';\n }\n\n #peek(): string {\n return this.#str[this.#pos.index + 1] ?? '';\n }\n\n #mark(): void {\n this.#markStack.push({ ...this.#pos });\n }\n\n #reset(): void {\n const mark = this.#markStack.pop();\n if (!mark) {\n throw new Error('No mark to reset to');\n }\n this.#pos.index = mark.index;\n this.#pos.line = mark.line;\n this.#pos.column = mark.column;\n }\n\n #advance(): void {\n this.#pos.index++;\n if (this.#curr() === '\\n') {\n this.#pos.line++;\n this.#pos.column = 0;\n } else {\n this.#pos.column++;\n }\n }\n\n #buildToken(id: string, value: string): Token {\n const mark = this.#markStack.pop();\n if (!mark) {\n throw new Error('No mark for token');\n }\n return {\n id,\n value,\n ...mark,\n };\n }\n}\n\nfunction isUnitToken(token: Token | undefined): boolean {\n if (token) {\n if (token.id === 'String') {\n return true;\n }\n\n if (token.id === 'Symbol' && STANDARD_UNITS.includes(token.value)) {\n return true;\n }\n }\n\n return false;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tokenize.mjs","sources":["../../../src/fhirlexer/tokenize.ts"],"sourcesContent":["export interface Marker {\n index: number;\n line: number;\n column: number;\n}\n\nexport interface Token extends Marker {\n id: string;\n value: string;\n}\n\nconst STANDARD_UNITS = [\n 'year',\n 'years',\n 'month',\n 'months',\n 'week',\n 'weeks',\n 'day',\n 'days',\n 'hour',\n 'hours',\n 'minute',\n 'minutes',\n 'second',\n 'seconds',\n 'millisecond',\n 'milliseconds',\n];\n\nexport interface TokenizerOptions {\n dateTimeLiterals?: boolean;\n symbolRegex?: RegExp;\n}\n\nexport class Tokenizer {\n private readonly str: string;\n private readonly keywords: string[];\n private readonly operators: string[];\n private readonly dateTimeLiterals: boolean;\n private readonly symbolRegex: RegExp;\n private readonly result: Token[] = [];\n private readonly pos: Marker = { index: 0, line: 1, column: 0 };\n private readonly markStack: Marker[] = [];\n\n constructor(str: string, keywords: string[], operators: string[], options?: TokenizerOptions) {\n this.str = str;\n this.keywords = keywords;\n this.operators = operators;\n this.dateTimeLiterals = !!options?.dateTimeLiterals;\n this.symbolRegex = options?.symbolRegex ?? /[$\\w]/;\n }\n\n tokenize(): Token[] {\n while (this.pos.index < this.str.length) {\n const token = this.consumeToken();\n if (token) {\n this.result.push(token);\n }\n }\n\n return this.result;\n }\n\n private prevToken(): Token | undefined {\n return this.result.slice(-1)[0];\n }\n\n private peekToken(): Token | undefined {\n this.mark();\n const token = this.consumeToken();\n this.reset();\n return token;\n }\n\n private consumeToken(): Token | undefined {\n this.consumeWhitespace();\n\n const c = this.curr();\n if (!c) {\n return undefined;\n }\n\n this.mark();\n\n const next = this.peek();\n\n if (c === '/' && next === '*') {\n return this.consumeMultiLineComment();\n }\n\n if (c === '/' && next === '/') {\n return this.consumeSingleLineComment();\n }\n\n if (c === \"'\" || c === '\"') {\n return this.consumeString(c);\n }\n\n if (c === '`') {\n return this.consumeBacktickSymbol();\n }\n\n if (c === '@') {\n return this.consumeDateTime();\n }\n\n if (c.match(/\\d/)) {\n return this.consumeNumber();\n }\n\n if (c.match(/\\w/)) {\n return this.consumeSymbol();\n }\n\n if (c === '$' && next.match(/\\w/)) {\n return this.consumeSymbol();\n }\n\n return this.consumeOperator();\n }\n\n private consumeWhitespace(): void {\n this.consumeWhile(() => this.curr().match(/\\s/));\n }\n\n private consumeMultiLineComment(): Token {\n const start = this.pos.index;\n this.consumeWhile(() => this.curr() !== '*' || this.peek() !== '/');\n this.advance();\n this.advance();\n return this.buildToken('Comment', this.str.substring(start, this.pos.index));\n }\n\n private consumeSingleLineComment(): Token {\n return this.buildToken(\n 'Comment',\n this.consumeWhile(() => this.curr() !== '\\n')\n );\n }\n\n private consumeString(endChar: string): Token {\n this.advance();\n const result = this.buildToken(\n 'String',\n this.consumeWhile(() => this.prev() === '\\\\' || this.curr() !== endChar)\n );\n this.advance();\n return result;\n }\n\n private consumeBacktickSymbol(): Token {\n this.advance();\n const result = this.buildToken(\n 'Symbol',\n this.consumeWhile(() => this.curr() !== '`')\n );\n this.advance();\n return result;\n }\n\n private consumeDateTime(): Token {\n this.advance(); // Consume \"@\"\n\n const start = this.pos.index;\n this.consumeWhile(() => this.curr().match(/[\\d-]/));\n\n if (this.curr() === 'T') {\n this.advance();\n this.consumeWhile(() => this.curr().match(/[\\d:]/));\n\n if (this.curr() === '.' && this.peek().match(/\\d/)) {\n this.advance();\n this.consumeWhile(() => this.curr().match(/\\d/));\n }\n\n if (this.curr() === 'Z') {\n this.advance();\n } else if (this.curr() === '+' || this.curr() === '-') {\n this.advance();\n this.consumeWhile(() => this.curr().match(/[\\d:]/));\n }\n }\n\n return this.buildToken('DateTime', this.str.substring(start, this.pos.index));\n }\n\n private consumeNumber(): Token {\n const start = this.pos.index;\n let id = 'Number';\n this.consumeWhile(() => this.curr().match(/\\d/));\n\n if (this.curr() === '.' && this.peek().match(/\\d/)) {\n this.advance();\n this.consumeWhile(() => this.curr().match(/\\d/));\n }\n\n if (this.curr() === '-' && this.dateTimeLiterals) {\n // Rewind to one character before the start, and then treat as dateTime literal.\n this.pos.index = start - 1;\n return this.consumeDateTime();\n }\n\n if (this.curr() === ' ') {\n if (isUnitToken(this.peekToken())) {\n id = 'Quantity';\n this.consumeToken();\n }\n }\n\n return this.buildToken(id, this.str.substring(start, this.pos.index));\n }\n\n private consumeSymbol(): Token {\n const value = this.consumeWhile(() => this.curr().match(this.symbolRegex));\n if (this.prevToken()?.value !== '.' && this.keywords.includes(value)) {\n return this.buildToken(value, value);\n }\n return this.buildToken('Symbol', value);\n }\n\n private consumeOperator(): Token {\n const c = this.curr();\n const next = this.peek();\n const twoCharOp = c + next;\n\n if (this.operators.includes(twoCharOp)) {\n this.advance();\n this.advance();\n return this.buildToken(twoCharOp, twoCharOp);\n }\n\n this.advance();\n return this.buildToken(c, c);\n }\n\n private consumeWhile(condition: () => unknown): string {\n const start = this.pos.index;\n\n while (this.pos.index < this.str.length && condition()) {\n this.advance();\n }\n\n return this.str.substring(start, this.pos.index);\n }\n\n private curr(): string {\n return this.str[this.pos.index];\n }\n\n private prev(): string {\n return this.str[this.pos.index - 1] ?? '';\n }\n\n private peek(): string {\n return this.str[this.pos.index + 1] ?? '';\n }\n\n private mark(): void {\n this.markStack.push({ ...this.pos });\n }\n\n private reset(): void {\n const mark = this.markStack.pop();\n if (!mark) {\n throw new Error('No mark to reset to');\n }\n this.pos.index = mark.index;\n this.pos.line = mark.line;\n this.pos.column = mark.column;\n }\n\n private advance(): void {\n this.pos.index++;\n if (this.curr() === '\\n') {\n this.pos.line++;\n this.pos.column = 0;\n } else {\n this.pos.column++;\n }\n }\n\n private buildToken(id: string, value: string): Token {\n const mark = this.markStack.pop();\n if (!mark) {\n throw new Error('No mark for token');\n }\n return {\n id,\n value,\n ...mark,\n };\n }\n}\n\nfunction isUnitToken(token: Token | undefined): boolean {\n if (token) {\n if (token.id === 'String') {\n return true;\n }\n\n if (token.id === 'Symbol' && STANDARD_UNITS.includes(token.value)) {\n return true;\n }\n }\n\n return false;\n}\n"],"names":[],"mappings":"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"}
|