@wener/common 1.0.4 → 2.0.1

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 (151) hide show
  1. package/lib/cn/DivisionCode.js +55 -32
  2. package/lib/cn/DivisionCode.test.js +140 -0
  3. package/lib/cn/Mod11Checksum.js +80 -37
  4. package/lib/cn/Mod31Checksum.js +89 -40
  5. package/lib/cn/ResidentIdentityCardNumber.js +16 -16
  6. package/lib/cn/ResidentIdentityCardNumber.test.js +21 -0
  7. package/lib/cn/UnifiedSocialCreditCode.js +32 -26
  8. package/lib/cn/UnifiedSocialCreditCode.test.js +16 -0
  9. package/lib/cn/formatDate.js +5 -7
  10. package/lib/cn/index.js +0 -1
  11. package/lib/cn/parseSex.js +0 -2
  12. package/lib/cn/types.d.js +0 -2
  13. package/lib/consola/createStandardConsolaReporter.js +18 -0
  14. package/lib/consola/formatLogObject.js +226 -0
  15. package/lib/consola/index.js +2 -0
  16. package/lib/data/formatSort.js +5 -6
  17. package/lib/data/formatSort.test.js +34 -0
  18. package/lib/data/index.js +0 -1
  19. package/lib/data/maybeNumber.js +11 -5
  20. package/lib/data/parseSort.js +28 -22
  21. package/lib/data/parseSort.test.js +188 -0
  22. package/lib/data/resolvePagination.js +27 -16
  23. package/lib/data/resolvePagination.test.js +232 -0
  24. package/lib/data/types.d.js +0 -2
  25. package/lib/index.js +0 -1
  26. package/lib/jsonschema/JsonSchema.js +80 -54
  27. package/lib/jsonschema/JsonSchema.test.js +137 -0
  28. package/lib/jsonschema/index.js +0 -1
  29. package/lib/jsonschema/types.d.js +5 -3
  30. package/lib/meta/defineFileType.js +103 -20
  31. package/lib/meta/defineInit.js +250 -31
  32. package/lib/meta/defineMetadata.js +140 -24
  33. package/lib/meta/defineMetadata.test.js +13 -0
  34. package/lib/meta/index.js +0 -1
  35. package/lib/password/PHC.js +87 -63
  36. package/lib/password/PHC.test.js +539 -0
  37. package/lib/password/Password.js +291 -29
  38. package/lib/password/Password.test.js +362 -0
  39. package/lib/password/createArgon2PasswordAlgorithm.js +191 -35
  40. package/lib/password/createBase64PasswordAlgorithm.js +141 -8
  41. package/lib/password/createBcryptPasswordAlgorithm.js +168 -13
  42. package/lib/password/createPBKDF2PasswordAlgorithm.js +228 -46
  43. package/lib/password/createScryptPasswordAlgorithm.js +211 -55
  44. package/lib/password/index.js +0 -1
  45. package/lib/password/server/index.js +0 -1
  46. package/lib/resource/Identifiable.js +1 -0
  47. package/lib/resource/getTitleOfResource.js +10 -0
  48. package/lib/resource/index.js +1 -0
  49. package/lib/resource/schema/AnyResourceSchema.js +89 -0
  50. package/lib/resource/schema/BaseResourceSchema.js +29 -0
  51. package/lib/resource/schema/ResourceActionType.js +118 -0
  52. package/lib/resource/schema/ResourceStatus.js +93 -0
  53. package/lib/resource/schema/ResourceType.js +24 -0
  54. package/lib/resource/schema/SchemaRegistry.js +38 -0
  55. package/lib/resource/schema/SexType.js +10 -0
  56. package/lib/resource/schema/types.js +89 -0
  57. package/lib/resource/schema/types.test.js +14 -0
  58. package/lib/schema/TypeSchema.d.js +1 -0
  59. package/lib/schema/createSchemaData.js +173 -0
  60. package/lib/schema/findJsonSchemaByPath.js +49 -0
  61. package/lib/schema/getSchemaCache.js +11 -0
  62. package/lib/schema/getSchemaOptions.js +24 -0
  63. package/lib/schema/index.js +5 -0
  64. package/lib/schema/toJsonSchema.js +441 -0
  65. package/lib/schema/toJsonSchema.test.js +27 -0
  66. package/lib/schema/validate.js +124 -0
  67. package/lib/search/AdvanceSearch.js +0 -1
  68. package/lib/search/AdvanceSearch.test.js +435 -0
  69. package/lib/search/formatAdvanceSearch.js +41 -27
  70. package/lib/search/index.js +0 -1
  71. package/lib/search/optimizeAdvanceSearch.js +79 -25
  72. package/lib/search/parseAdvanceSearch.js +5 -5
  73. package/lib/search/parser.d.js +0 -2
  74. package/lib/search/parser.js +97 -74
  75. package/lib/search/types.d.js +0 -2
  76. package/lib/tools/generateSchema.js +201 -0
  77. package/lib/tools/renderJsonSchemaToMarkdownDoc.js +143 -55
  78. package/package.json +30 -9
  79. package/src/consola/createStandardConsolaReporter.ts +31 -0
  80. package/src/consola/formatLogObject.ts +171 -0
  81. package/src/consola/index.ts +2 -0
  82. package/src/data/maybeNumber.ts +5 -1
  83. package/src/data/resolvePagination.test.ts +1 -1
  84. package/src/data/resolvePagination.ts +18 -7
  85. package/src/data/types.d.ts +12 -0
  86. package/src/jsonschema/JsonSchema.test.ts +17 -0
  87. package/src/jsonschema/JsonSchema.ts +4 -4
  88. package/src/jsonschema/types.d.ts +63 -12
  89. package/src/resource/Identifiable.ts +3 -0
  90. package/src/resource/getTitleOfResource.tsx +6 -0
  91. package/src/resource/index.ts +3 -0
  92. package/src/resource/schema/AnyResourceSchema.ts +113 -0
  93. package/src/resource/schema/BaseResourceSchema.ts +32 -0
  94. package/src/resource/schema/ResourceActionType.ts +123 -0
  95. package/src/resource/schema/ResourceStatus.ts +94 -0
  96. package/src/resource/schema/ResourceType.ts +25 -0
  97. package/src/resource/schema/SchemaRegistry.ts +42 -0
  98. package/src/resource/schema/SexType.ts +13 -0
  99. package/src/resource/schema/types.test.ts +18 -0
  100. package/src/resource/schema/types.ts +105 -0
  101. package/src/schema/TypeSchema.d.ts +32 -0
  102. package/src/schema/createSchemaData.ts +81 -0
  103. package/src/schema/findJsonSchemaByPath.ts +37 -0
  104. package/src/schema/getSchemaCache.ts +21 -0
  105. package/src/schema/getSchemaOptions.ts +24 -0
  106. package/src/schema/index.ts +6 -0
  107. package/src/schema/toJsonSchema.test.ts +37 -0
  108. package/src/schema/toJsonSchema.ts +200 -0
  109. package/src/schema/validate.ts +135 -0
  110. package/src/tools/generateSchema.ts +39 -0
  111. package/lib/cn/DivisionCode.js.map +0 -1
  112. package/lib/cn/Mod11Checksum.js.map +0 -1
  113. package/lib/cn/Mod31Checksum.js.map +0 -1
  114. package/lib/cn/ResidentIdentityCardNumber.js.map +0 -1
  115. package/lib/cn/UnifiedSocialCreditCode.js.map +0 -1
  116. package/lib/cn/formatDate.js.map +0 -1
  117. package/lib/cn/index.js.map +0 -1
  118. package/lib/cn/parseSex.js.map +0 -1
  119. package/lib/cn/types.d.js.map +0 -1
  120. package/lib/data/formatSort.js.map +0 -1
  121. package/lib/data/index.js.map +0 -1
  122. package/lib/data/maybeNumber.js.map +0 -1
  123. package/lib/data/parseSort.js.map +0 -1
  124. package/lib/data/resolvePagination.js.map +0 -1
  125. package/lib/data/types.d.js.map +0 -1
  126. package/lib/index.js.map +0 -1
  127. package/lib/jsonschema/JsonSchema.js.map +0 -1
  128. package/lib/jsonschema/index.js.map +0 -1
  129. package/lib/jsonschema/types.d.js.map +0 -1
  130. package/lib/meta/defineFileType.js.map +0 -1
  131. package/lib/meta/defineInit.js.map +0 -1
  132. package/lib/meta/defineMetadata.js.map +0 -1
  133. package/lib/meta/index.js.map +0 -1
  134. package/lib/password/PHC.js.map +0 -1
  135. package/lib/password/Password.js.map +0 -1
  136. package/lib/password/createArgon2PasswordAlgorithm.js.map +0 -1
  137. package/lib/password/createBase64PasswordAlgorithm.js.map +0 -1
  138. package/lib/password/createBcryptPasswordAlgorithm.js.map +0 -1
  139. package/lib/password/createPBKDF2PasswordAlgorithm.js.map +0 -1
  140. package/lib/password/createScryptPasswordAlgorithm.js.map +0 -1
  141. package/lib/password/index.js.map +0 -1
  142. package/lib/password/server/index.js.map +0 -1
  143. package/lib/search/AdvanceSearch.js.map +0 -1
  144. package/lib/search/formatAdvanceSearch.js.map +0 -1
  145. package/lib/search/index.js.map +0 -1
  146. package/lib/search/optimizeAdvanceSearch.js.map +0 -1
  147. package/lib/search/parseAdvanceSearch.js.map +0 -1
  148. package/lib/search/parser.d.js.map +0 -1
  149. package/lib/search/parser.js.map +0 -1
  150. package/lib/search/types.d.js.map +0 -1
  151. package/lib/tools/renderJsonSchemaToMarkdownDoc.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/password/Password.ts"],"sourcesContent":["import { Errors } from '@wener/utils';\nimport { createPBKDF2PasswordAlgorithm } from './createPBKDF2PasswordAlgorithm';\nimport { PHC } from './PHC';\n\nexport namespace Password {\n\texport interface ParsedPassword {\n\t\tid: string;\n\t\tversion?: number;\n\t\tparams?: Record<string, string | number>;\n\t\tsalt?: Uint8Array;\n\t\thash?: Uint8Array;\n\t}\n\n\ttype PasswordAlgorithmHashOptions = { rounds?: number; salt?: Uint8Array; id?: string };\n\ttype PasswordAlgorithmVerifyOptions = ParsedPassword;\n\texport type PasswordAlgorithm = {\n\t\treadonly name: string;\n\t\treadonly ids?: string[];\n\t\thash(password: string, opts?: PasswordAlgorithmHashOptions): Promise<string>;\n\t\tverify(password: string, hash: string, opts: PasswordAlgorithmVerifyOptions): Promise<boolean>;\n\t};\n\n\tconst Algorithms: Record<string, string | PasswordAlgorithm> = {\n\t\t1: 'md5',\n\t\t'2a': 'bcrypt', // original\n\t\t'2b': 'bcrypt', // February 2014\n\t\t'2x': 'bcrypt', // June 2011\n\t\t'2y': 'bcrypt', // June 2011\n\t\t5: 'sha256',\n\t\t6: 'sha512',\n\t\t7: 'scrypt',\n\t};\n\tlet DefaultAlgorithm: string = '6';\n\n\texport function setDefaultAlgorithm(algorithm: string) {\n\t\tErrors.BadRequest.check(Algorithms[algorithm], `Unknown algorithm ${algorithm}`);\n\t\tDefaultAlgorithm = algorithm;\n\t}\n\n\texport function getDefaultAlgorithm() {\n\t\treturn DefaultAlgorithm;\n\t}\n\n\texport function addAlgorithm(algorithm: PasswordAlgorithm) {\n\t\tAlgorithms[algorithm.name] = algorithm;\n\t\tif (algorithm.ids) {\n\t\t\tfor (const id of algorithm.ids) {\n\t\t\t\tAlgorithms[id] = algorithm;\n\t\t\t}\n\t\t}\n\t}\n\n\taddAlgorithm(createPBKDF2PasswordAlgorithm({ id: 'sha256', digest: 'SHA-256' }));\n\taddAlgorithm(createPBKDF2PasswordAlgorithm({ id: 'sha512', digest: 'SHA-512' }));\n\n\texport async function parse(hash: string) {\n\t\treturn PHC.deserialize(hash);\n\t}\n\n\tfunction resolveAlgorithm(id: string | PasswordAlgorithm): PasswordAlgorithm {\n\t\tlet f = id;\n\t\twhile (typeof f === 'string') {\n\t\t\tf = Algorithms[f];\n\t\t}\n\t\tif (!f) {\n\t\t\tthrow new Error(`Unknown algorithm ${id}`);\n\t\t}\n\t\treturn f;\n\t}\n\n\texport async function check(password: string, hash: string) {\n\t\tlet res = await parse(hash);\n\t\tlet f = resolveAlgorithm(res.id);\n\t\treturn { result: f.verify(password, hash, res), parsed: res };\n\t}\n\n\texport async function verify(password: string, hash: string) {\n\t\tlet res = await parse(hash);\n\t\tlet f = resolveAlgorithm(res.id);\n\t\treturn f.verify(password, hash, res);\n\t}\n\n\texport type PasswordHashOptions = PasswordAlgorithmHashOptions & { algorithm?: string | PasswordAlgorithm };\n\n\texport async function hash(password: string, { algorithm, ...opts }: PasswordHashOptions = {}) {\n\t\tlet f = resolveAlgorithm(algorithm ?? DefaultAlgorithm);\n\t\tlet id = algorithm ?? DefaultAlgorithm;\n\t\ttypeof id !== 'string' && (id = f.name);\n\t\treturn f.hash(password, { id, ...opts });\n\t}\n}\n"],"names":["Errors","createPBKDF2PasswordAlgorithm","PHC","Password","Algorithms","DefaultAlgorithm","setDefaultAlgorithm","algorithm","BadRequest","check","getDefaultAlgorithm","addAlgorithm","name","ids","id","digest","parse","hash","deserialize","resolveAlgorithm","f","Error","password","res","result","verify","parsed","opts"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AACtC,SAASC,6BAA6B,QAAQ,kCAAkC;AAChF,SAASC,GAAG,QAAQ,QAAQ;UAEXC;IAkBhB,MAAMC,aAAyD;QAC9D,GAAG;QACH,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,GAAG;QACH,GAAG;QACH,GAAG;IACJ;IACA,IAAIC,mBAA2B;IAExB,SAASC,oBAAoBC,SAAiB;QACpDP,OAAOQ,UAAU,CAACC,KAAK,CAACL,UAAU,CAACG,UAAU,EAAE,CAAC,kBAAkB,EAAEA,WAAW;QAC/EF,mBAAmBE;IACpB;aAHgBD,sBAAAA;IAKT,SAASI;QACf,OAAOL;IACR;aAFgBK,sBAAAA;IAIT,SAASC,aAAaJ,SAA4B;QACxDH,UAAU,CAACG,UAAUK,IAAI,CAAC,GAAGL;QAC7B,IAAIA,UAAUM,GAAG,EAAE;YAClB,KAAK,MAAMC,MAAMP,UAAUM,GAAG,CAAE;gBAC/BT,UAAU,CAACU,GAAG,GAAGP;YAClB;QACD;IACD;aAPgBI,eAAAA;IAShBA,aAAaV,8BAA8B;QAAEa,IAAI;QAAUC,QAAQ;IAAU;IAC7EJ,aAAaV,8BAA8B;QAAEa,IAAI;QAAUC,QAAQ;IAAU;IAEtE,eAAeC,MAAMC,IAAY;QACvC,OAAOf,IAAIgB,WAAW,CAACD;IACxB;aAFsBD,QAAAA;IAItB,SAASG,iBAAiBL,EAA8B;QACvD,IAAIM,IAAIN;QACR,MAAO,OAAOM,MAAM,SAAU;YAC7BA,IAAIhB,UAAU,CAACgB,EAAE;QAClB;QACA,IAAI,CAACA,GAAG;YACP,MAAM,IAAIC,MAAM,CAAC,kBAAkB,EAAEP,IAAI;QAC1C;QACA,OAAOM;IACR;IAEO,eAAeX,MAAMa,QAAgB,EAAEL,IAAY;QACzD,IAAIM,MAAM,MAAMP,MAAMC;QACtB,IAAIG,IAAID,iBAAiBI,IAAIT,EAAE;QAC/B,OAAO;YAAEU,QAAQJ,EAAEK,MAAM,CAACH,UAAUL,MAAMM;YAAMG,QAAQH;QAAI;IAC7D;aAJsBd,QAAAA;IAMf,eAAegB,OAAOH,QAAgB,EAAEL,IAAY;QAC1D,IAAIM,MAAM,MAAMP,MAAMC;QACtB,IAAIG,IAAID,iBAAiBI,IAAIT,EAAE;QAC/B,OAAOM,EAAEK,MAAM,CAACH,UAAUL,MAAMM;IACjC;aAJsBE,SAAAA;IAQf,eAAeR,KAAKK,QAAgB,EAAE,EAAEf,SAAS,EAAE,GAAGoB,MAA2B,GAAG,CAAC,CAAC;QAC5F,IAAIP,IAAID,iBAAiBZ,aAAaF;QACtC,IAAIS,KAAKP,aAAaF;QACtB,OAAOS,OAAO,YAAaA,CAAAA,KAAKM,EAAER,IAAI,AAAD;QACrC,OAAOQ,EAAEH,IAAI,CAACK,UAAU;YAAER;YAAI,GAAGa,IAAI;QAAC;IACvC;aALsBV,OAAAA;AAMvB,GAtFiBd,aAAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/password/createArgon2PasswordAlgorithm.ts"],"sourcesContent":["import { maybeFunction, type MaybeFunction, type MaybePromise } from '@wener/utils';\nimport { Password } from './Password';\n\ntype Provide = {\n\thash: (password: string, options: { salt?: Buffer; raw?: boolean; type?: 0 | 1 | 2 }) => Promise<string>;\n\tverify: (hash: string, password: string) => Promise<boolean>;\n};\n\nexport function createArgon2PasswordAlgorithm({\n\ttype,\n\tprovide = async () => {\n\t\tthrow new Error('Please provide argon2');\n\t\t// const { default: wasm } = await import('argon2-browser/dist/argon2.wasm');\n\t\t// const argon2 = await WebAssembly.instantiateStreaming(fetch(wasm), {\n\t\t// env: {\n\t\t// memoryBase: 0,\n\t\t// tableBase: 0,\n\t\t// memory: new WebAssembly.Memory({ initial: 256 }),\n\t\t// table: new WebAssembly.Table({ initial: 0, element: 'anyfunc' }),\n\t\t// __memory_base: 0,\n\t\t// __table_base: 0,\n\t\t// },\n\t\t// });\n\t\t// console.log(argon2.instance.exports);\n\t\t// const { hash } = argon2.instance.exports as any as typeof import('argon2-browser');\n\t},\n\t// argon2-browser/dist/argon2-bundled.min.js\n\t// import('argon2-browser').then(({ default: { hash, verify } }) => {\n\t// return {\n\t// hash(password, options) {\n\t// return hash({\n\t// pass: password,\n\t// });\n\t// },\n\t// verify(hash, password) {\n\t// return verify({\n\t// pass: password,\n\t// hash: hash,\n\t// })\n\t// .then(() => true)\n\t// .catch(() => false);\n\t// },\n\t// };\n\t// }),\n\t// provide = () => import('argon2'),\n}: {\n\ttype?: 'argon2d' | 'argon2i' | 'argon2id';\n\tprovide?: MaybeFunction<MaybePromise<Provide>>;\n} = {}): Password.PasswordAlgorithm {\n\t// 0=Argon2d, 1=Argon2i, 2=Argon2id\n\tconst toType: Record<string, 0 | 1 | 2 | undefined> = { argon2d: 0, argon2i: 1, argon2id: 2 } as const;\n\n\tlet mod: Provide;\n\tconst resolve = () => {\n\t\tif (mod) return mod;\n\t\treturn Promise.resolve(maybeFunction(provide)).then((v) => (mod = v));\n\t};\n\treturn {\n\t\tname: 'argon2',\n\t\tids: ['argon2i', 'argon2d', 'argon2id'],\n\t\tasync hash(password: string, opts) {\n\t\t\t// const { hash } = await import('argon2');\n\t\t\tconst { hash } = await resolve();\n\t\t\tconst id = opts?.id;\n\t\t\treturn hash(password, {\n\t\t\t\tsalt: opts?.salt ? Buffer.from(opts.salt) : undefined,\n\t\t\t\traw: false,\n\t\t\t\ttype: toType[id || ''] ?? toType[type || ''],\n\t\t\t});\n\t\t},\n\t\tasync verify(password: string, hash: string) {\n\t\t\tconst { verify } = await resolve();\n\t\t\treturn verify(hash, password);\n\t\t},\n\t};\n}\n"],"names":["maybeFunction","createArgon2PasswordAlgorithm","type","provide","Error","toType","argon2d","argon2i","argon2id","mod","resolve","Promise","then","v","name","ids","hash","password","opts","id","salt","Buffer","from","undefined","raw","verify"],"mappings":"AAAA,SAASA,aAAa,QAA+C,eAAe;AAQpF,OAAO,SAASC,8BAA8B,EAC7CC,IAAI,EACJC,UAAU;IACT,MAAM,IAAIC,MAAM;AAChB,6EAA6E;AAC7E,uEAAuE;AACvE,WAAW;AACX,qBAAqB;AACrB,oBAAoB;AACpB,wDAAwD;AACxD,wEAAwE;AACxE,wBAAwB;AACxB,uBAAuB;AACvB,OAAO;AACP,MAAM;AACN,wCAAwC;AACxC,sFAAsF;AACvF,CAAC,EAuBD,GAAG,CAAC,CAAC;IACL,mCAAmC;IACnC,MAAMC,SAAgD;QAAEC,SAAS;QAAGC,SAAS;QAAGC,UAAU;IAAE;IAE5F,IAAIC;IACJ,MAAMC,UAAU;QACf,IAAID,KAAK,OAAOA;QAChB,OAAOE,QAAQD,OAAO,CAACV,cAAcG,UAAUS,IAAI,CAAC,CAACC,IAAOJ,MAAMI;IACnE;IACA,OAAO;QACNC,MAAM;QACNC,KAAK;YAAC;YAAW;YAAW;SAAW;QACvC,MAAMC,MAAKC,QAAgB,EAAEC,IAAI;YAChC,2CAA2C;YAC3C,MAAM,EAAEF,IAAI,EAAE,GAAG,MAAMN;YACvB,MAAMS,KAAKD,MAAMC;YACjB,OAAOH,KAAKC,UAAU;gBACrBG,MAAMF,MAAME,OAAOC,OAAOC,IAAI,CAACJ,KAAKE,IAAI,IAAIG;gBAC5CC,KAAK;gBACLtB,MAAMG,MAAM,CAACc,MAAM,GAAG,IAAId,MAAM,CAACH,QAAQ,GAAG;YAC7C;QACD;QACA,MAAMuB,QAAOR,QAAgB,EAAED,IAAY;YAC1C,MAAM,EAAES,MAAM,EAAE,GAAG,MAAMf;YACzB,OAAOe,OAAOT,MAAMC;QACrB;IACD;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/password/createBase64PasswordAlgorithm.ts"],"sourcesContent":["import { ArrayBuffers } from '@wener/utils';\nimport { Password } from './Password';\n\nexport function createBase64PasswordAlgorithm({ id = 'base64' }: { id?: string } = {}): Password.PasswordAlgorithm {\n\treturn {\n\t\tname: id,\n\t\tasync hash(password: string) {\n\t\t\treturn `$${id}$$${ArrayBuffers.toBase64(password).replace(/=/g, '')}`;\n\t\t},\n\t\tasync verify(password: string, hash: string, opts) {\n\t\t\treturn Boolean(opts.hash) && ArrayBuffers.toString(opts.hash!) === password;\n\t\t},\n\t};\n}\n"],"names":["ArrayBuffers","createBase64PasswordAlgorithm","id","name","hash","password","toBase64","replace","verify","opts","Boolean","toString"],"mappings":"AAAA,SAASA,YAAY,QAAQ,eAAe;AAG5C,OAAO,SAASC,8BAA8B,EAAEC,KAAK,QAAQ,EAAmB,GAAG,CAAC,CAAC;IACpF,OAAO;QACNC,MAAMD;QACN,MAAME,MAAKC,QAAgB;YAC1B,OAAO,CAAC,CAAC,EAAEH,GAAG,EAAE,EAAEF,aAAaM,QAAQ,CAACD,UAAUE,OAAO,CAAC,MAAM,KAAK;QACtE;QACA,MAAMC,QAAOH,QAAgB,EAAED,IAAY,EAAEK,IAAI;YAChD,OAAOC,QAAQD,KAAKL,IAAI,KAAKJ,aAAaW,QAAQ,CAACF,KAAKL,IAAI,MAAOC;QACpE;IACD;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/password/createBcryptPasswordAlgorithm.ts"],"sourcesContent":["import type { MaybePromise } from '@wener/utils';\nimport { Password } from './Password';\n\ntype ProviderType = () => MaybePromise<{\n\thash: (password: string, rounds: number | string) => Promise<string>;\n\tcompare: (password: string, hash: string) => Promise<boolean>;\n}>;\n\nexport function createBcryptPasswordAlgorithm({\n\t// provider = () => import('bcrypt').then((v) => v.default),\n\tprovider = () => import('bcryptjs').then((v) => v.default),\n}: { provider?: ProviderType } = {}): Password.PasswordAlgorithm {\n\t// bcrypt or bcryptjs\n\treturn {\n\t\tname: 'bcrypt',\n\t\tasync hash(password: string, opts) {\n\t\t\tconst { hash } = await provider();\n\t\t\treturn hash(password, opts?.rounds ?? 10);\n\t\t},\n\t\tasync verify(password: string, hash: string) {\n\t\t\tconst { compare } = await provider();\n\t\t\tif (hash.startsWith('$2y$')) {\n\t\t\t\thash = hash.replace(/^\\$2y\\$/, '$2a$');\n\t\t\t}\n\t\t\treturn compare(password, hash);\n\t\t},\n\t};\n}\n"],"names":["createBcryptPasswordAlgorithm","provider","then","v","default","name","hash","password","opts","rounds","verify","compare","startsWith","replace"],"mappings":"AAQA,OAAO,SAASA,8BAA8B,EAC7C,4DAA4D;AAC5DC,WAAW,IAAM,MAAM,CAAC,YAAYC,IAAI,CAAC,CAACC,IAAMA,EAAEC,OAAO,CAAC,EAC7B,GAAG,CAAC,CAAC;IAClC,qBAAqB;IACrB,OAAO;QACNC,MAAM;QACN,MAAMC,MAAKC,QAAgB,EAAEC,IAAI;YAChC,MAAM,EAAEF,IAAI,EAAE,GAAG,MAAML;YACvB,OAAOK,KAAKC,UAAUC,MAAMC,UAAU;QACvC;QACA,MAAMC,QAAOH,QAAgB,EAAED,IAAY;YAC1C,MAAM,EAAEK,OAAO,EAAE,GAAG,MAAMV;YAC1B,IAAIK,KAAKM,UAAU,CAAC,SAAS;gBAC5BN,OAAOA,KAAKO,OAAO,CAAC,WAAW;YAChC;YACA,OAAOF,QAAQJ,UAAUD;QAC1B;IACD;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/password/createPBKDF2PasswordAlgorithm.ts"],"sourcesContent":["import { Errors } from '@wener/utils';\nimport { Password } from './Password';\nimport { PHC } from './PHC';\n\nexport function createPBKDF2PasswordAlgorithm({\n\tid,\n\tdigest,\n\titerations = 100000,\n\tsaltlen = 16,\n\tkeylen = digest === 'SHA-256' ? 32 : 64,\n}: {\n\tid: string;\n\tdigest: 'SHA-256' | 'SHA-512';\n\titerations?: number;\n\tkeylen?: number;\n\tsaltlen?: number;\n}): Password.PasswordAlgorithm {\n\treturn {\n\t\tname: id,\n\t\tasync hash(password: string, opts) {\n\t\t\tlet salt: Uint8Array;\n\n\t\t\tif (opts?.salt) {\n\t\t\t\tsalt = opts.salt;\n\t\t\t} else {\n\t\t\t\tsalt = new Uint8Array(saltlen);\n\t\t\t\tcrypto.getRandomValues(salt);\n\t\t\t}\n\n\t\t\tconst rounds = opts?.rounds ?? iterations;\n\n\t\t\tlet key = await crypto.subtle.importKey('raw', new TextEncoder().encode(password), 'PBKDF2', false, [\n\t\t\t\t'deriveBits',\n\t\t\t]);\n\t\t\tlet hash = await crypto.subtle.deriveBits(\n\t\t\t\t{ name: 'PBKDF2', iterations: rounds, salt, hash: digest },\n\t\t\t\tkey,\n\t\t\t\tkeylen * 8,\n\t\t\t);\n\t\t\treturn PHC.serialize({ id: opts?.id ?? id, params: { rounds }, salt, hash: new Uint8Array(hash) });\n\t\t},\n\t\tasync verify(password: string, _: string, opts) {\n\t\t\tconst rounds = opts?.params?.rounds ?? iterations;\n\t\t\tconst salt = opts.salt;\n\t\t\tconst storedHash = opts.hash;\n\t\t\tErrors.BadRequest.check(typeof rounds === 'number', 'Invalid rounds');\n\t\t\tErrors.BadRequest.check(salt instanceof Uint8Array, 'Invalid salt');\n\t\t\tErrors.BadRequest.check(storedHash instanceof Uint8Array, 'Invalid hash');\n\n\t\t\tlet key = await crypto.subtle.importKey('raw', new TextEncoder().encode(password), 'PBKDF2', false, [\n\t\t\t\t'deriveBits',\n\t\t\t]);\n\t\t\tlet hash = await crypto.subtle.deriveBits(\n\t\t\t\t{ name: 'PBKDF2', iterations: rounds, salt, hash: digest },\n\t\t\t\tkey,\n\t\t\t\tstoredHash.length * 8,\n\t\t\t);\n\t\t\treturn new Uint8Array(hash).every((v, i) => v === storedHash![i]);\n\t\t},\n\t};\n}\n"],"names":["Errors","PHC","createPBKDF2PasswordAlgorithm","id","digest","iterations","saltlen","keylen","name","hash","password","opts","salt","Uint8Array","crypto","getRandomValues","rounds","key","subtle","importKey","TextEncoder","encode","deriveBits","serialize","params","verify","_","storedHash","BadRequest","check","length","every","v","i"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AAEtC,SAASC,GAAG,QAAQ,QAAQ;AAE5B,OAAO,SAASC,8BAA8B,EAC7CC,EAAE,EACFC,MAAM,EACNC,aAAa,MAAM,EACnBC,UAAU,EAAE,EACZC,SAASH,WAAW,YAAY,KAAK,EAAE,EAOvC;IACA,OAAO;QACNI,MAAML;QACN,MAAMM,MAAKC,QAAgB,EAAEC,IAAI;YAChC,IAAIC;YAEJ,IAAID,MAAMC,MAAM;gBACfA,OAAOD,KAAKC,IAAI;YACjB,OAAO;gBACNA,OAAO,IAAIC,WAAWP;gBACtBQ,OAAOC,eAAe,CAACH;YACxB;YAEA,MAAMI,SAASL,MAAMK,UAAUX;YAE/B,IAAIY,MAAM,MAAMH,OAAOI,MAAM,CAACC,SAAS,CAAC,OAAO,IAAIC,cAAcC,MAAM,CAACX,WAAW,UAAU,OAAO;gBACnG;aACA;YACD,IAAID,OAAO,MAAMK,OAAOI,MAAM,CAACI,UAAU,CACxC;gBAAEd,MAAM;gBAAUH,YAAYW;gBAAQJ;gBAAMH,MAAML;YAAO,GACzDa,KACAV,SAAS;YAEV,OAAON,IAAIsB,SAAS,CAAC;gBAAEpB,IAAIQ,MAAMR,MAAMA;gBAAIqB,QAAQ;oBAAER;gBAAO;gBAAGJ;gBAAMH,MAAM,IAAII,WAAWJ;YAAM;QACjG;QACA,MAAMgB,QAAOf,QAAgB,EAAEgB,CAAS,EAAEf,IAAI;YAC7C,MAAMK,SAASL,MAAMa,QAAQR,UAAUX;YACvC,MAAMO,OAAOD,KAAKC,IAAI;YACtB,MAAMe,aAAahB,KAAKF,IAAI;YAC5BT,OAAO4B,UAAU,CAACC,KAAK,CAAC,OAAOb,WAAW,UAAU;YACpDhB,OAAO4B,UAAU,CAACC,KAAK,CAACjB,gBAAgBC,YAAY;YACpDb,OAAO4B,UAAU,CAACC,KAAK,CAACF,sBAAsBd,YAAY;YAE1D,IAAII,MAAM,MAAMH,OAAOI,MAAM,CAACC,SAAS,CAAC,OAAO,IAAIC,cAAcC,MAAM,CAACX,WAAW,UAAU,OAAO;gBACnG;aACA;YACD,IAAID,OAAO,MAAMK,OAAOI,MAAM,CAACI,UAAU,CACxC;gBAAEd,MAAM;gBAAUH,YAAYW;gBAAQJ;gBAAMH,MAAML;YAAO,GACzDa,KACAU,WAAWG,MAAM,GAAG;YAErB,OAAO,IAAIjB,WAAWJ,MAAMsB,KAAK,CAAC,CAACC,GAAGC,IAAMD,MAAML,UAAW,CAACM,EAAE;QACjE;IACD;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/password/createScryptPasswordAlgorithm.ts"],"sourcesContent":["import { randomBytes, scrypt, timingSafeEqual } from 'node:crypto';\nimport { Errors } from '@wener/utils';\nimport { Password } from './Password';\nimport { PHC } from './PHC';\n\nexport function createScryptPasswordAlgorithm(\n\toptions: {\n\t\tid?: string;\n\t\tcost?: number;\n\t\tblocksize?: number;\n\t\tparallelism?: number;\n\t\tsaltlen?: number;\n\t\tkeylen?: number;\n\t} = {},\n): Password.PasswordAlgorithm {\n\tlet id = options.id || 'scrypt';\n\toptions.cost ||= Math.pow(2, 14);\n\toptions.blocksize ||= 8;\n\toptions.parallelism ||= 1;\n\toptions.saltlen ||= 16;\n\toptions.keylen ||= 32;\n\treturn {\n\t\tname: id,\n\t\tasync hash(password: string, opts): Promise<string> {\n\t\t\tconst salt = opts?.salt || randomBytes(options.saltlen!);\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tlet N = options.cost!;\n\t\t\t\tlet r = options.blocksize!;\n\t\t\t\tlet p = options.parallelism!;\n\t\t\t\tscrypt(password, salt, options.keylen!, { N, r, p }, (err, derivedKey) => {\n\t\t\t\t\tif (err) return reject(err);\n\n\t\t\t\t\tresolve(PHC.serialize({ id: opts?.id ?? id, params: { ln: N!, r: r!, p: p! }, salt, hash: derivedKey }));\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\t\tasync verify(password: string, hash: string, opts): Promise<boolean> {\n\t\t\ttry {\n\t\t\t\tconst salt = Errors.BadRequest.require(opts.salt);\n\t\t\t\tconst storedHash = Errors.BadRequest.require(opts.hash);\n\n\t\t\t\tconst N = parseInt(opts.params?.ln as string, 10);\n\t\t\t\tconst r = parseInt(opts.params?.r as string, 10);\n\t\t\t\tconst p = parseInt(opts.params?.p as string, 10);\n\t\t\t\tconst keylen = storedHash.length;\n\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tscrypt(password, salt, keylen, { N, r, p }, (err, derivedKey) => {\n\t\t\t\t\t\tif (err) return reject(err);\n\n\t\t\t\t\t\tconst isMatch = timingSafeEqual(derivedKey, storedHash);\n\t\t\t\t\t\tresolve(isMatch);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treturn Promise.resolve(false);\n\t\t\t}\n\t\t},\n\t};\n}\n"],"names":["randomBytes","scrypt","timingSafeEqual","Errors","PHC","createScryptPasswordAlgorithm","options","id","cost","Math","pow","blocksize","parallelism","saltlen","keylen","name","hash","password","opts","salt","Promise","resolve","reject","N","r","p","err","derivedKey","serialize","params","ln","verify","BadRequest","require","storedHash","parseInt","length","isMatch","error"],"mappings":"AAAA,SAASA,WAAW,EAAEC,MAAM,EAAEC,eAAe,QAAQ,cAAc;AACnE,SAASC,MAAM,QAAQ,eAAe;AAEtC,SAASC,GAAG,QAAQ,QAAQ;AAE5B,OAAO,SAASC,8BACfC,UAOI,CAAC,CAAC;IAEN,IAAIC,KAAKD,QAAQC,EAAE,IAAI;IACvBD,QAAQE,IAAI,KAAKC,KAAKC,GAAG,CAAC,GAAG;IAC7BJ,QAAQK,SAAS,KAAK;IACtBL,QAAQM,WAAW,KAAK;IACxBN,QAAQO,OAAO,KAAK;IACpBP,QAAQQ,MAAM,KAAK;IACnB,OAAO;QACNC,MAAMR;QACN,MAAMS,MAAKC,QAAgB,EAAEC,IAAI;YAChC,MAAMC,OAAOD,MAAMC,QAAQnB,YAAYM,QAAQO,OAAO;YACtD,OAAO,IAAIO,QAAQ,CAACC,SAASC;gBAC5B,IAAIC,IAAIjB,QAAQE,IAAI;gBACpB,IAAIgB,IAAIlB,QAAQK,SAAS;gBACzB,IAAIc,IAAInB,QAAQM,WAAW;gBAC3BX,OAAOgB,UAAUE,MAAMb,QAAQQ,MAAM,EAAG;oBAAES;oBAAGC;oBAAGC;gBAAE,GAAG,CAACC,KAAKC;oBAC1D,IAAID,KAAK,OAAOJ,OAAOI;oBAEvBL,QAAQjB,IAAIwB,SAAS,CAAC;wBAAErB,IAAIW,MAAMX,MAAMA;wBAAIsB,QAAQ;4BAAEC,IAAIP;4BAAIC,GAAGA;4BAAIC,GAAGA;wBAAG;wBAAGN;wBAAMH,MAAMW;oBAAW;gBACtG;YACD;QACD;QAEA,MAAMI,QAAOd,QAAgB,EAAED,IAAY,EAAEE,IAAI;YAChD,IAAI;gBACH,MAAMC,OAAOhB,OAAO6B,UAAU,CAACC,OAAO,CAACf,KAAKC,IAAI;gBAChD,MAAMe,aAAa/B,OAAO6B,UAAU,CAACC,OAAO,CAACf,KAAKF,IAAI;gBAEtD,MAAMO,IAAIY,SAASjB,KAAKW,MAAM,EAAEC,IAAc;gBAC9C,MAAMN,IAAIW,SAASjB,KAAKW,MAAM,EAAEL,GAAa;gBAC7C,MAAMC,IAAIU,SAASjB,KAAKW,MAAM,EAAEJ,GAAa;gBAC7C,MAAMX,SAASoB,WAAWE,MAAM;gBAEhC,OAAO,IAAIhB,QAAQ,CAACC,SAASC;oBAC5BrB,OAAOgB,UAAUE,MAAML,QAAQ;wBAAES;wBAAGC;wBAAGC;oBAAE,GAAG,CAACC,KAAKC;wBACjD,IAAID,KAAK,OAAOJ,OAAOI;wBAEvB,MAAMW,UAAUnC,gBAAgByB,YAAYO;wBAC5Cb,QAAQgB;oBACT;gBACD;YACD,EAAE,OAAOC,OAAO;gBACf,OAAOlB,QAAQC,OAAO,CAAC;YACxB;QACD;IACD;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/password/index.ts"],"sourcesContent":["export { PHC } from './PHC';\nexport { Password } from './Password';\nexport { createArgon2PasswordAlgorithm } from './createArgon2PasswordAlgorithm';\nexport { createBase64PasswordAlgorithm } from './createBase64PasswordAlgorithm';\nexport { createBcryptPasswordAlgorithm } from './createBcryptPasswordAlgorithm';\n"],"names":["PHC","Password","createArgon2PasswordAlgorithm","createBase64PasswordAlgorithm","createBcryptPasswordAlgorithm"],"mappings":"AAAA,SAASA,GAAG,QAAQ,QAAQ;AAC5B,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,6BAA6B,QAAQ,kCAAkC;AAChF,SAASC,6BAA6B,QAAQ,kCAAkC;AAChF,SAASC,6BAA6B,QAAQ,kCAAkC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/password/server/index.ts"],"sourcesContent":["export { createScryptPasswordAlgorithm } from '../createScryptPasswordAlgorithm';\n"],"names":["createScryptPasswordAlgorithm"],"mappings":"AAAA,SAASA,6BAA6B,QAAQ,mCAAmC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/search/AdvanceSearch.ts"],"sourcesContent":["import { formatAdvanceSearch } from './formatAdvanceSearch';\nimport { optimizeAdvanceSearch } from './optimizeAdvanceSearch';\nimport { parseAdvanceSearch } from './parseAdvanceSearch';\nimport type * as types from './types';\n\nexport namespace AdvanceSearch {\n\texport type Exprs = types.Exprs;\n\texport type Expr = types.Expr;\n\texport type Value = types.Value;\n\n\texport const parse = parseAdvanceSearch;\n\texport const format = formatAdvanceSearch;\n\texport const optimize = optimizeAdvanceSearch;\n}\n"],"names":["formatAdvanceSearch","optimizeAdvanceSearch","parseAdvanceSearch","AdvanceSearch","parse","format","optimize"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,qBAAqB,QAAQ,0BAA0B;AAChE,SAASC,kBAAkB,QAAQ,uBAAuB;UAGzCC;kBAKHC,QAAQF;kBACRG,SAASL;kBACTM,WAAWL;AACzB,GARiBE,kBAAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/search/formatAdvanceSearch.ts"],"sourcesContent":["import { match } from 'ts-pattern';\nimport { AdvanceSearch } from './AdvanceSearch';\n\nexport function formatAdvanceSearch(input: AdvanceSearch.Expr[]) {\n\tconst OP = { match: ':', eq: ':=', ne: ':!=', gt: ':>', lt: ':<', gte: ':>=', lte: ':<=', range: ':' } as const;\n\n\tconst _exprs = (s: AdvanceSearch.Expr[]): string => {\n\t\treturn s.map(_expr).join(' ');\n\t};\n\tconst _expr = (s: AdvanceSearch.Expr): string => {\n\t\treturn match(s)\n\t\t\t.with({ type: 'keyword' }, ({ value, exact, negative }) => {\n\t\t\t\treturn `${negative ? '-' : ''}${exact ? `\"${value}\"` : value}`;\n\t\t\t})\n\t\t\t.with({ type: 'logical' }, ({ operator, value }) => value.map(_expr).join(` ${operator.toLocaleUpperCase()} `))\n\t\t\t.with({ type: 'not' }, ({ value }) => `NOT ${_expr(value)}`)\n\t\t\t.with({ type: 'compare' }, ({ field, operator, value, negative, mention }) => {\n\t\t\t\treturn `${negative ? '-' : ''}${mention ? '@' : ''}${field}${OP[operator]}${_value(value)}`;\n\t\t\t})\n\t\t\t.with({ type: 'comment' }, ({ value }) => `/* ${value} */`)\n\t\t\t.with({ type: 'parentheses' }, ({ value }) => `(${_exprs(value)})`)\n\t\t\t.exhaustive();\n\t};\n\n\tconst _literal = (s: string | null | number) => {\n\t\tif (typeof s === 'string') {\n\t\t\treturn s.includes(' ') ? `\"${s}\"` : s;\n\t\t}\n\t\treturn JSON.stringify(s);\n\t};\n\tconst _value = (v: AdvanceSearch.Value): string => {\n\t\treturn match(v)\n\t\t\t.with({ type: 'range' }, ({ minimum, maximum, minimumExclusive, maximumExclusive }) => {\n\t\t\t\tif (minimumExclusive === undefined && maximumExclusive === undefined) {\n\t\t\t\t\tlet min = minimum === undefined ? '*' : _value(minimum);\n\t\t\t\t\tlet max = maximum === undefined ? '*' : _value(maximum);\n\t\t\t\t\treturn `${min}..${max}`;\n\t\t\t\t}\n\t\t\t\tlet min = minimum === undefined ? '' : _value(minimum);\n\t\t\t\tlet max = maximum === undefined ? '' : _value(maximum);\n\t\t\t\treturn `${minimumExclusive ? '(' : '['}${min},${max}${maximumExclusive ? ')' : ']'}`;\n\t\t\t})\n\t\t\t.with({ format: 'mention' }, ({ value }) => {\n\t\t\t\treturn `@${value}`;\n\t\t\t})\n\t\t\t.otherwise((value) => {\n\t\t\t\treturn _literal(value.value);\n\t\t\t});\n\t};\n\n\treturn _exprs(input);\n}\n"],"names":["match","formatAdvanceSearch","input","OP","eq","ne","gt","lt","gte","lte","range","_exprs","s","map","_expr","join","with","type","value","exact","negative","operator","toLocaleUpperCase","field","mention","_value","exhaustive","_literal","includes","JSON","stringify","v","minimum","maximum","minimumExclusive","maximumExclusive","undefined","min","max","format","otherwise"],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AAGnC,OAAO,SAASC,oBAAoBC,KAA2B;IAC9D,MAAMC,KAAK;QAAEH,OAAO;QAAKI,IAAI;QAAMC,IAAI;QAAOC,IAAI;QAAMC,IAAI;QAAMC,KAAK;QAAOC,KAAK;QAAOC,OAAO;IAAI;IAErG,MAAMC,SAAS,CAACC;QACf,OAAOA,EAAEC,GAAG,CAACC,OAAOC,IAAI,CAAC;IAC1B;IACA,MAAMD,QAAQ,CAACF;QACd,OAAOZ,MAAMY,GACXI,IAAI,CAAC;YAAEC,MAAM;QAAU,GAAG,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAE;YACrD,OAAO,GAAGA,WAAW,MAAM,KAAKD,QAAQ,CAAC,CAAC,EAAED,MAAM,CAAC,CAAC,GAAGA,OAAO;QAC/D,GACCF,IAAI,CAAC;YAAEC,MAAM;QAAU,GAAG,CAAC,EAAEI,QAAQ,EAAEH,KAAK,EAAE,GAAKA,MAAML,GAAG,CAACC,OAAOC,IAAI,CAAC,CAAC,CAAC,EAAEM,SAASC,iBAAiB,GAAG,CAAC,CAAC,GAC5GN,IAAI,CAAC;YAAEC,MAAM;QAAM,GAAG,CAAC,EAAEC,KAAK,EAAE,GAAK,CAAC,IAAI,EAAEJ,MAAMI,QAAQ,EAC1DF,IAAI,CAAC;YAAEC,MAAM;QAAU,GAAG,CAAC,EAAEM,KAAK,EAAEF,QAAQ,EAAEH,KAAK,EAAEE,QAAQ,EAAEI,OAAO,EAAE;YACxE,OAAO,GAAGJ,WAAW,MAAM,KAAKI,UAAU,MAAM,KAAKD,QAAQpB,EAAE,CAACkB,SAAS,GAAGI,OAAOP,QAAQ;QAC5F,GACCF,IAAI,CAAC;YAAEC,MAAM;QAAU,GAAG,CAAC,EAAEC,KAAK,EAAE,GAAK,CAAC,GAAG,EAAEA,MAAM,GAAG,CAAC,EACzDF,IAAI,CAAC;YAAEC,MAAM;QAAc,GAAG,CAAC,EAAEC,KAAK,EAAE,GAAK,CAAC,CAAC,EAAEP,OAAOO,OAAO,CAAC,CAAC,EACjEQ,UAAU;IACb;IAEA,MAAMC,WAAW,CAACf;QACjB,IAAI,OAAOA,MAAM,UAAU;YAC1B,OAAOA,EAAEgB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAEhB,EAAE,CAAC,CAAC,GAAGA;QACrC;QACA,OAAOiB,KAAKC,SAAS,CAAClB;IACvB;IACA,MAAMa,SAAS,CAACM;QACf,OAAO/B,MAAM+B,GACXf,IAAI,CAAC;YAAEC,MAAM;QAAQ,GAAG,CAAC,EAAEe,OAAO,EAAEC,OAAO,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAE;YACjF,IAAID,qBAAqBE,aAAaD,qBAAqBC,WAAW;gBACrE,IAAIC,MAAML,YAAYI,YAAY,MAAMX,OAAOO;gBAC/C,IAAIM,MAAML,YAAYG,YAAY,MAAMX,OAAOQ;gBAC/C,OAAO,GAAGI,IAAI,EAAE,EAAEC,KAAK;YACxB;YACA,IAAID,MAAML,YAAYI,YAAY,KAAKX,OAAOO;YAC9C,IAAIM,MAAML,YAAYG,YAAY,KAAKX,OAAOQ;YAC9C,OAAO,GAAGC,mBAAmB,MAAM,MAAMG,IAAI,CAAC,EAAEC,MAAMH,mBAAmB,MAAM,KAAK;QACrF,GACCnB,IAAI,CAAC;YAAEuB,QAAQ;QAAU,GAAG,CAAC,EAAErB,KAAK,EAAE;YACtC,OAAO,CAAC,CAAC,EAAEA,OAAO;QACnB,GACCsB,SAAS,CAAC,CAACtB;YACX,OAAOS,SAAST,MAAMA,KAAK;QAC5B;IACF;IAEA,OAAOP,OAAOT;AACf"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/search/index.ts"],"sourcesContent":["export { AdvanceSearch } from './AdvanceSearch';\n"],"names":["AdvanceSearch"],"mappings":"AAAA,SAASA,aAAa,QAAQ,kBAAkB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/search/optimizeAdvanceSearch.ts"],"sourcesContent":["import { arrayOfMaybeArray, deepEqual, type MaybeArray } from '@wener/utils';\nimport { match } from 'ts-pattern';\nimport { AdvanceSearch } from './AdvanceSearch';\n\nexport function optimizeAdvanceSearch(expr: AdvanceSearch.Exprs): AdvanceSearch.Exprs {\n\tconst NEG = { eq: 'ne', ne: 'eq', gt: 'lte', lt: 'gte', gte: 'lt', lte: 'gt' } as const;\n\tconst _expr = (e: AdvanceSearch.Expr): MaybeArray<AdvanceSearch.Expr> => {\n\t\t// merge Exprs to AND ?\n\t\treturn (\n\t\t\tmatch(e)\n\t\t\t\t// (EXPR) -> EXPR\n\t\t\t\t// TODO (EXPR EXPR) -> EXPR AND EXPR\n\t\t\t\t.with({ type: 'parentheses' }, (expr) => {\n\t\t\t\t\t// unwrap\n\t\t\t\t\tif (expr.value.length < 2) {\n\t\t\t\t\t\treturn expr.value[0];\n\t\t\t\t\t}\n\t\t\t\t\texpr.value = expr.value.flatMap(_expr);\n\t\t\t\t\treturn expr;\n\t\t\t\t})\n\t\t\t\t.with({ type: 'comment' }, (expr) => {\n\t\t\t\t\t// remove empty comment\n\t\t\t\t\tif (!expr.value.length) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t\treturn expr;\n\t\t\t\t})\n\t\t\t\t// NOT\n\t\t\t\t.with({ type: 'not' }, (expr) => {\n\t\t\t\t\tlet out = arrayOfMaybeArray(_expr(expr.value));\n\t\t\t\t\tif (!out.length) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t} else if (out.length === 1) {\n\t\t\t\t\t\texpr.value = out[0];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new Error('NOT should have only one value');\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\tmatch(expr.value)\n\t\t\t\t\t\t\t// NOT NOT EXPR -> EXPR\n\t\t\t\t\t\t\t.with({ type: 'not' }, (expr) => expr.value)\n\t\t\t\t\t\t\t// NOT EXPR -> -EXPR\n\t\t\t\t\t\t\t.with({ type: 'compare' }, (expr) => {\n\t\t\t\t\t\t\t\treturn { ...expr, negative: !expr.negative };\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.with({ type: 'keyword' }, (expr) => {\n\t\t\t\t\t\t\t\treturn { ...expr, negative: !expr.negative };\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.otherwise(() => expr)\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.with({ type: 'compare' }, (expr) => {\n\t\t\t\t\t// negative by swap operator\n\t\t\t\t\tif (expr.negative) {\n\t\t\t\t\t\tconst ne = NEG[expr.operator as keyof typeof NEG];\n\t\t\t\t\t\tif (ne) {\n\t\t\t\t\t\t\texpr.operator = ne;\n\t\t\t\t\t\t\texpr.negative = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (expr.operator === 'range') {\n\t\t\t\t\t}\n\t\t\t\t\treturn expr;\n\t\t\t\t})\n\t\t\t\t.otherwise((e) => e)\n\t\t);\n\t};\n\n\tlet last = expr;\n\twhile (true) {\n\t\tlet next = structuredClone(last).flatMap(_expr);\n\t\tif (deepEqual(last, next)) {\n\t\t\treturn last;\n\t\t}\n\t\tlast = next;\n\t}\n}\n"],"names":["arrayOfMaybeArray","deepEqual","match","optimizeAdvanceSearch","expr","NEG","eq","ne","gt","lt","gte","lte","_expr","e","with","type","value","length","flatMap","out","Error","negative","otherwise","operator","last","next","structuredClone"],"mappings":"AAAA,SAASA,iBAAiB,EAAEC,SAAS,QAAyB,eAAe;AAC7E,SAASC,KAAK,QAAQ,aAAa;AAGnC,OAAO,SAASC,sBAAsBC,IAAyB;IAC9D,MAAMC,MAAM;QAAEC,IAAI;QAAMC,IAAI;QAAMC,IAAI;QAAOC,IAAI;QAAOC,KAAK;QAAMC,KAAK;IAAK;IAC7E,MAAMC,QAAQ,CAACC;QACd,uBAAuB;QACvB,OACCX,MAAMW,EACL,iBAAiB;QACjB,oCAAoC;SACnCC,IAAI,CAAC;YAAEC,MAAM;QAAc,GAAG,CAACX;YAC/B,SAAS;YACT,IAAIA,KAAKY,KAAK,CAACC,MAAM,GAAG,GAAG;gBAC1B,OAAOb,KAAKY,KAAK,CAAC,EAAE;YACrB;YACAZ,KAAKY,KAAK,GAAGZ,KAAKY,KAAK,CAACE,OAAO,CAACN;YAChC,OAAOR;QACR,GACCU,IAAI,CAAC;YAAEC,MAAM;QAAU,GAAG,CAACX;YAC3B,uBAAuB;YACvB,IAAI,CAACA,KAAKY,KAAK,CAACC,MAAM,EAAE;gBACvB,OAAO,EAAE;YACV;YACA,OAAOb;QACR,EACA,MAAM;SACLU,IAAI,CAAC;YAAEC,MAAM;QAAM,GAAG,CAACX;YACvB,IAAIe,MAAMnB,kBAAkBY,MAAMR,KAAKY,KAAK;YAC5C,IAAI,CAACG,IAAIF,MAAM,EAAE;gBAChB,OAAO,EAAE;YACV,OAAO,IAAIE,IAAIF,MAAM,KAAK,GAAG;gBAC5Bb,KAAKY,KAAK,GAAGG,GAAG,CAAC,EAAE;YACpB,OAAO;gBACN,MAAM,IAAIC,MAAM;YACjB;YACA,OACClB,MAAME,KAAKY,KAAK,CACf,uBAAuB;aACtBF,IAAI,CAAC;gBAAEC,MAAM;YAAM,GAAG,CAACX,OAASA,KAAKY,KAAK,CAC3C,oBAAoB;aACnBF,IAAI,CAAC;gBAAEC,MAAM;YAAU,GAAG,CAACX;gBAC3B,OAAO;oBAAE,GAAGA,IAAI;oBAAEiB,UAAU,CAACjB,KAAKiB,QAAQ;gBAAC;YAC5C,GACCP,IAAI,CAAC;gBAAEC,MAAM;YAAU,GAAG,CAACX;gBAC3B,OAAO;oBAAE,GAAGA,IAAI;oBAAEiB,UAAU,CAACjB,KAAKiB,QAAQ;gBAAC;YAC5C,GACCC,SAAS,CAAC,IAAMlB;QAEpB,GACCU,IAAI,CAAC;YAAEC,MAAM;QAAU,GAAG,CAACX;YAC3B,4BAA4B;YAC5B,IAAIA,KAAKiB,QAAQ,EAAE;gBAClB,MAAMd,KAAKF,GAAG,CAACD,KAAKmB,QAAQ,CAAqB;gBACjD,IAAIhB,IAAI;oBACPH,KAAKmB,QAAQ,GAAGhB;oBAChBH,KAAKiB,QAAQ,GAAG;gBACjB;YACD;YACA,IAAIjB,KAAKmB,QAAQ,KAAK,SAAS,CAC/B;YACA,OAAOnB;QACR,GACCkB,SAAS,CAAC,CAACT,IAAMA;IAErB;IAEA,IAAIW,OAAOpB;IACX,MAAO,KAAM;QACZ,IAAIqB,OAAOC,gBAAgBF,MAAMN,OAAO,CAACN;QACzC,IAAIX,UAAUuB,MAAMC,OAAO;YAC1B,OAAOD;QACR;QACAA,OAAOC;IACR;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/search/parseAdvanceSearch.ts"],"sourcesContent":["import { AdvanceSearch } from './AdvanceSearch';\nimport { parse } from './parser';\n\nexport function parseAdvanceSearch(s: string | undefined | null): AdvanceSearch.Expr[] {\n\ts = s?.trim();\n\tif (!s) {\n\t\treturn [];\n\t}\n\n\t// no Logical, no Compare, no Quote, no Comment\n\tif (!/AND|OR|NOT|[-\"():]|\\/\\*/.test(s)) {\n\t\t// fast path\n\t\treturn s\n\t\t\t.split(/\\s+/)\n\t\t\t.map((v) => v.trim())\n\t\t\t.filter(Boolean)\n\t\t\t.map((v) => {\n\t\t\t\treturn { type: 'keyword', value: v };\n\t\t\t});\n\t}\n\n\treturn parse(s);\n}\n"],"names":["parse","parseAdvanceSearch","s","trim","test","split","map","v","filter","Boolean","type","value"],"mappings":"AACA,SAASA,KAAK,QAAQ,cAAW;AAEjC,OAAO,SAASC,mBAAmBC,CAA4B;IAC9DA,IAAIA,GAAGC;IACP,IAAI,CAACD,GAAG;QACP,OAAO,EAAE;IACV;IAEA,+CAA+C;IAC/C,IAAI,CAAC,0BAA0BE,IAAI,CAACF,IAAI;QACvC,YAAY;QACZ,OAAOA,EACLG,KAAK,CAAC,OACNC,GAAG,CAAC,CAACC,IAAMA,EAAEJ,IAAI,IACjBK,MAAM,CAACC,SACPH,GAAG,CAAC,CAACC;YACL,OAAO;gBAAEG,MAAM;gBAAWC,OAAOJ;YAAE;QACpC;IACF;IAEA,OAAOP,MAAME;AACd"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/search/parser.d.ts"],"sourcesContent":["export function parse(input: string, options?: ParseOptions): any;\n\nexport interface ParseOptions {\n\tgrammarSource?: string;\n\tstartRule?: string;\n\n\t[k: string]: any;\n}\n"],"names":[],"mappings":"AAEA,WAKC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/search/parser.js"],"sourcesContent":["// @generated by Peggy 4.2.0.\n//\n// https://peggyjs.org/\n\n\nfunction peg$subclass(child, parent) {\n function C() { this.constructor = child; }\n C.prototype = parent.prototype;\n child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n var self = Error.call(this, message);\n // istanbul ignore next Check is a necessary evil to support older environments\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n }\n self.expected = expected;\n self.found = found;\n self.location = location;\n self.name = \"SyntaxError\";\n return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n padString = padString || \" \";\n if (str.length > targetLength) { return str; }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function(sources) {\n var str = \"Error: \" + this.message;\n if (this.location) {\n var src = null;\n var k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n var s = this.location.start;\n var offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n ? this.location.source.offset(s)\n : s;\n var loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n if (src) {\n var e = this.location.end;\n var filler = peg$padEnd(\"\", offset_s.line.toString().length, ' ');\n var line = src[s.line - 1];\n var last = s.line === e.line ? e.column : line.length + 1;\n var hatLen = (last - s.column) || 1;\n str += \"\\n --> \" + loc + \"\\n\"\n + filler + \" |\\n\"\n + offset_s.line + \" | \" + line + \"\\n\"\n + filler + \" | \" + peg$padEnd(\"\", s.column - 1, ' ')\n + peg$padEnd(\"\", hatLen, \"^\");\n } else {\n str += \"\\n at \" + loc;\n }\n }\n return str;\n};\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n class: function(expectation) {\n var escapedParts = expectation.parts.map(function(part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part);\n });\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\";\n },\n\n any: function() {\n return \"any character\";\n },\n\n end: function() {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = expected.map(describeExpectation);\n var i, j;\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n var peg$FAILED = {};\n var peg$source = options.grammarSource;\n\n var peg$startRuleFunctions = { Main: peg$parseMain };\n var peg$startRuleFunction = peg$parseMain;\n\n var peg$c0 = \"/*\";\n var peg$c1 = \"*/\";\n var peg$c2 = \"(\";\n var peg$c3 = \")\";\n var peg$c4 = \"-\";\n var peg$c5 = \"+\";\n var peg$c6 = \":\";\n var peg$c7 = \":=\";\n var peg$c8 = \":!=\";\n var peg$c9 = \":>\";\n var peg$c10 = \":<\";\n var peg$c11 = \":>=\";\n var peg$c12 = \":<=\";\n var peg$c13 = \"@\";\n var peg$c14 = \".\";\n var peg$c15 = \"*\";\n var peg$c16 = \"..\";\n var peg$c17 = \",\";\n var peg$c18 = \"T\";\n var peg$c19 = \"Z\";\n var peg$c20 = \"\\\"\";\n var peg$c21 = \"\\\\'\";\n var peg$c22 = \"\\\\\\\"\";\n var peg$c23 = \"\\\\\\\\\";\n var peg$c24 = \"\\\\/\";\n var peg$c25 = \"\\\\b\";\n var peg$c26 = \"\\\\f\";\n var peg$c27 = \"\\\\n\";\n var peg$c28 = \"\\\\r\";\n var peg$c29 = \"\\\\t\";\n var peg$c30 = \"''\";\n var peg$c31 = \"\\\\u\";\n var peg$c32 = \"true\";\n var peg$c33 = \"false\";\n var peg$c34 = \"null\";\n var peg$c35 = \"OR\";\n var peg$c36 = \"AND\";\n var peg$c37 = \"NOT\";\n\n var peg$r0 = /^[^*]/;\n var peg$r1 = /^[^\\-+,'\" \\r\\n\\t()]/;\n var peg$r2 = /^[^ \\r\\n\\t)]/;\n var peg$r3 = /^[[(]/;\n var peg$r4 = /^[)\\]]/;\n var peg$r5 = /^[1-9]/;\n var peg$r6 = /^[0-9]/;\n var peg$r7 = /^[a-zA-Z]/;\n var peg$r8 = /^[_a-zA-Z0-9]/;\n var peg$r9 = /^[^\"\\\\\\0-\\x1F\\x7F]/;\n var peg$r10 = /^[0-9a-fA-F]/;\n var peg$r11 = /^[A-Za-z_]/;\n var peg$r12 = /^[ \\t\\n\\r]/;\n\n var peg$e0 = peg$literalExpectation(\"/*\", false);\n var peg$e1 = peg$classExpectation([\"*\"], true, false);\n var peg$e2 = peg$literalExpectation(\"*/\", false);\n var peg$e3 = peg$literalExpectation(\"(\", false);\n var peg$e4 = peg$literalExpectation(\")\", false);\n var peg$e5 = peg$literalExpectation(\"-\", false);\n var peg$e6 = peg$literalExpectation(\"+\", false);\n var peg$e7 = peg$literalExpectation(\":\", false);\n var peg$e8 = peg$literalExpectation(\":=\", false);\n var peg$e9 = peg$literalExpectation(\":!=\", false);\n var peg$e10 = peg$literalExpectation(\":>\", false);\n var peg$e11 = peg$literalExpectation(\":<\", false);\n var peg$e12 = peg$literalExpectation(\":>=\", false);\n var peg$e13 = peg$literalExpectation(\":<=\", false);\n var peg$e14 = peg$literalExpectation(\"@\", false);\n var peg$e15 = peg$classExpectation([\"-\", \"+\", \",\", \"'\", \"\\\"\", \" \", \"\\r\", \"\\n\", \"\\t\", \"(\", \")\"], true, false);\n var peg$e16 = peg$classExpectation([\" \", \"\\r\", \"\\n\", \"\\t\", \")\"], true, false);\n var peg$e17 = peg$literalExpectation(\".\", false);\n var peg$e18 = peg$literalExpectation(\"*\", false);\n var peg$e19 = peg$literalExpectation(\"..\", false);\n var peg$e20 = peg$classExpectation([\"[\", \"(\"], false, false);\n var peg$e21 = peg$literalExpectation(\",\", false);\n var peg$e22 = peg$classExpectation([\")\", \"]\"], false, false);\n var peg$e23 = peg$classExpectation([[\"1\", \"9\"]], false, false);\n var peg$e24 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n var peg$e25 = peg$literalExpectation(\"T\", false);\n var peg$e26 = peg$literalExpectation(\"Z\", false);\n var peg$e27 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false);\n var peg$e28 = peg$classExpectation([\"_\", [\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"]], false, false);\n var peg$e29 = peg$literalExpectation(\"\\\"\", false);\n var peg$e30 = peg$classExpectation([\"\\\"\", \"\\\\\", [\"\\0\", \"\\x1F\"], \"\\x7F\"], true, false);\n var peg$e31 = peg$literalExpectation(\"\\\\'\", false);\n var peg$e32 = peg$literalExpectation(\"\\\\\\\"\", false);\n var peg$e33 = peg$literalExpectation(\"\\\\\\\\\", false);\n var peg$e34 = peg$literalExpectation(\"\\\\/\", false);\n var peg$e35 = peg$literalExpectation(\"\\\\b\", false);\n var peg$e36 = peg$literalExpectation(\"\\\\f\", false);\n var peg$e37 = peg$literalExpectation(\"\\\\n\", false);\n var peg$e38 = peg$literalExpectation(\"\\\\r\", false);\n var peg$e39 = peg$literalExpectation(\"\\\\t\", false);\n var peg$e40 = peg$literalExpectation(\"''\", false);\n var peg$e41 = peg$literalExpectation(\"\\\\u\", false);\n var peg$e42 = peg$classExpectation([[\"0\", \"9\"], [\"a\", \"f\"], [\"A\", \"F\"]], false, false);\n var peg$e43 = peg$literalExpectation(\"true\", false);\n var peg$e44 = peg$literalExpectation(\"false\", false);\n var peg$e45 = peg$literalExpectation(\"null\", false);\n var peg$e46 = peg$classExpectation([[\"A\", \"Z\"], [\"a\", \"z\"], \"_\"], false, false);\n var peg$e47 = peg$literalExpectation(\"OR\", false);\n var peg$e48 = peg$literalExpectation(\"AND\", false);\n var peg$e49 = peg$literalExpectation(\"NOT\", false);\n var peg$e50 = peg$otherExpectation(\"whitespace\");\n var peg$e51 = peg$classExpectation([\" \", \"\\t\", \"\\n\", \"\\r\"], false, false);\n var peg$e52 = peg$anyExpectation();\n\n var peg$f0 = function(value) { return { type: \"comment\", value: value.trim() }; };\n var peg$f1 = function(head, tail) {\n return !tail.length\n ? head\n : { type: \"logical\", operator: \"or\", value: [head].concat(tail) };\n };\n var peg$f2 = function(head, tail) {\n return !tail.length\n ? head\n : { type: \"logical\", operator: \"and\", value: [head].concat(tail) };\n };\n var peg$f3 = function(value) { return { type: \"not\", value }; };\n var peg$f4 = function(value) { return { type: \"parentheses\", value }; };\n var peg$f5 = function(negative) { return { negative: true }; };\n var peg$f6 = function() { return {}; };\n var peg$f7 = function(modifier, field, operator, value) {\n return { type: \"compare\", field, operator: \"range\", value };\n };\n var peg$f8 = function(modifier, field, operator, value) {\n return {\n type: \"compare\",\n field,\n operator: operator === \":!=\" ? \"ne\" : \"eq\",\n value,\n };\n };\n var peg$f9 = function(modifier, field, operator, value) {\n return {\n type: \"compare\",\n field,\n operator: OPERATORS[operator],\n value,\n };\n };\n var peg$f10 = function(modifier, expr) { return { ...expr, ...modifier }; };\n var peg$f11 = function(field, value) {\n return {\n type: \"compare\",\n field,\n operator: \"match\",\n value: { value },\n mention: true,\n };\n };\n var peg$f12 = function(negative, value) {\n return {\n type: \"keyword\",\n negative: Boolean(negative),\n value,\n exact: true,\n };\n };\n var peg$f13 = function(negative, value) {\n return { type: \"keyword\", negative: Boolean(negative), value };\n };\n var peg$f14 = function() { return text(); };\n var peg$f15 = function(minimum, maximum) {\n return {\n type: \"range\",\n minimum: minimum === \"*\" ? undefined : minimum,\n maximum: maximum === \"*\" ? undefined : maximum,\n };\n };\n var peg$f16 = function(minimumBoundary, minimum, maximum, maximumBoundary) {\n return {\n type: \"range\",\n minimum,\n maximum,\n minimumExclusive: minimumBoundary === \"(\",\n maximumExclusive: maximumBoundary === \")\",\n };\n };\n var peg$f17 = function(value) { return { format: \"mention\", value }; };\n var peg$f18 = function(value) { return { type: \"literal\", value }; };\n var peg$f19 = function(time) { return { format: time ? \"date-time\" : \"date\", value: text() }; };\n var peg$f20 = function() { return text(); };\n var peg$f21 = function() { return parseFloat(text()); };\n var peg$f22 = function(v) { return v.join(\"\"); };\n var peg$f23 = function() { return \"'\"; };\n var peg$f24 = function() { return '\"'; };\n var peg$f25 = function() { return \"\\\\\"; };\n var peg$f26 = function() { return \"/\"; };\n var peg$f27 = function() { return \"\\b\"; };\n var peg$f28 = function() { return \"\\f\"; };\n var peg$f29 = function() { return \"\\n\"; };\n var peg$f30 = function() { return \"\\r\"; };\n var peg$f31 = function() { return \"\\t\"; };\n var peg$f32 = function() { return \"'\"; };\n var peg$f33 = function(h1, h2, h3, h4) {\n return String.fromCharCode(parseInt(\"0x\" + h1 + h2 + h3 + h4));\n };\n var peg$f34 = function() { return text().toLowerCase() === \"true\"; };\n var peg$f35 = function() { return parseInt(text()); };\n var peg$f36 = function() { return parseFloat(text()); };\n var peg$f37 = function() { return null; };\n var peg$f38 = function() { return \"\"; };\n var peg$f39 = function() { return \" \"; };\n var peg$currPos = options.peg$currPos | 0;\n var peg$savedPos = peg$currPos;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = peg$currPos;\n var peg$maxFailExpected = options.peg$maxFailExpected || [];\n var peg$silentFails = options.peg$silentFails | 0;\n\n var peg$result;\n\n if (options.startRule) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n\n if (details) {\n return details;\n } else {\n if (pos >= peg$posDetailsCache.length) {\n p = peg$posDetailsCache.length - 1;\n } else {\n p = pos;\n while (!peg$posDetailsCache[--p]) {}\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n\n var res = {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parseMain() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseExprs();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseEOF();\n if (s2 !== peg$FAILED) {\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseExprs() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$currPos;\n s3 = [];\n s4 = peg$parseExpr();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s5 = peg$parseExpr();\n if (s5 === peg$FAILED) {\n peg$currPos = s4;\n s4 = peg$FAILED;\n } else {\n s4 = s5;\n }\n } else {\n s4 = s5;\n }\n }\n if (s3.length < 1) {\n peg$currPos = s2;\n s2 = peg$FAILED;\n } else {\n s2 = s3;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s0 = s2;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseExpr() {\n var s0;\n\n s0 = peg$parseComment();\n if (s0 === peg$FAILED) {\n s0 = peg$parseOrExpr();\n }\n\n return s0;\n }\n\n function peg$parseComment() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c0) {\n s1 = peg$c0;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r0.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r0.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n }\n s2 = input.substring(s2, peg$currPos);\n if (input.substr(peg$currPos, 2) === peg$c1) {\n s3 = peg$c1;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f0(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseOrExpr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseAndExpr();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_OR();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseAndExpr();\n if (s7 !== peg$FAILED) {\n s3 = s7;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_OR();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseAndExpr();\n if (s7 !== peg$FAILED) {\n s3 = s7;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n peg$savedPos = s0;\n s0 = peg$f1(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseAndExpr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseNotExpr();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AND();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseNotExpr();\n if (s7 !== peg$FAILED) {\n s3 = s7;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AND();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseNotExpr();\n if (s7 !== peg$FAILED) {\n s3 = s7;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n peg$savedPos = s0;\n s0 = peg$f2(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseNotExpr() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_NOT();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseNotExpr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f3(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseParenthesesExpr();\n if (s1 !== peg$FAILED) {\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseParenthesesExpr() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c2;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e3); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n s3 = peg$parseExprs();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 41) {\n s5 = peg$c3;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f4(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseComparisonExpr();\n if (s1 !== peg$FAILED) {\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseComparisonExpr() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s2 = peg$c4;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s1;\n s2 = peg$f5(s2);\n }\n s1 = s2;\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 43) {\n s2 = peg$c5;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s1;\n s2 = peg$f6();\n }\n s1 = s2;\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n s2 = peg$currPos;\n s3 = peg$parsefield();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s4 = peg$c6;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parserange();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s2;\n s2 = peg$f7(s1, s3, s4, s5);\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parsefield();\n if (s3 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c7) {\n s4 = peg$c7;\n peg$currPos += 2;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s4 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c8) {\n s4 = peg$c8;\n peg$currPos += 3;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n }\n if (s4 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s4 = peg$c6;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsemention();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s2;\n s2 = peg$f8(s1, s3, s4, s5);\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parsefield();\n if (s3 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c7) {\n s4 = peg$c7;\n peg$currPos += 2;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s4 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c9) {\n s4 = peg$c9;\n peg$currPos += 2;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s4 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c10) {\n s4 = peg$c10;\n peg$currPos += 2;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c11) {\n s4 = peg$c11;\n peg$currPos += 3;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n if (s4 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s4 = peg$c12;\n peg$currPos += 3;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n if (s4 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c8) {\n s4 = peg$c8;\n peg$currPos += 3;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n }\n if (s4 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s4 = peg$c6;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n }\n }\n }\n }\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsevalue();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s2;\n s2 = peg$f9(s1, s3, s4, s5);\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f10(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s1 = peg$c13;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsefield();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c6;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsestring();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f11(s2, s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseKeywordExpr();\n }\n }\n\n return s0;\n }\n\n function peg$parseKeywordExpr() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c4;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n s2 = peg$parsestring();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f12(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c4;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n s2 = peg$parsekeyword();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f13(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsekeyword() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r1.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = input.charAt(peg$currPos);\n if (peg$r2.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = input.charAt(peg$currPos);\n if (peg$r2.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n }\n peg$savedPos = s0;\n s0 = peg$f14();\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsefield() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$parseident();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c14;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s4 !== peg$FAILED) {\n s4 = peg$parseident();\n if (s4 === peg$FAILED) {\n peg$currPos = s3;\n s3 = peg$FAILED;\n } else {\n s3 = s4;\n }\n } else {\n s3 = s4;\n }\n }\n if (s2.length < 1) {\n peg$currPos = s1;\n s1 = peg$FAILED;\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parserange() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parsevalue();\n if (s1 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 42) {\n s1 = peg$c15;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e18); }\n }\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c16) {\n s2 = peg$c16;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e19); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsevalue();\n if (s3 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 42) {\n s3 = peg$c15;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e18); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f15(s1, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r3.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e20); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n s3 = peg$parsevalue();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c17;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parsevalue();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n s8 = peg$parse_();\n s9 = input.charAt(peg$currPos);\n if (peg$r4.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e22); }\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f16(s1, s3, s7, s9);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsemention() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s1 = peg$c13;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseident();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f17(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsevalue() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsedate();\n if (s1 !== peg$FAILED) {\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseident();\n if (s1 === peg$FAILED) {\n s1 = peg$parseliteral();\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f18(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsedate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = input.charAt(peg$currPos);\n if (peg$r5.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = [];\n s5 = input.charAt(peg$currPos);\n if (peg$r6.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (s4.length >= 3) {\n s5 = peg$FAILED;\n } else {\n s5 = input.charAt(peg$currPos);\n if (peg$r6.test(s5)) {\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n if (s4.length < 3) {\n peg$currPos = s3;\n s3 = peg$FAILED;\n } else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s4 = peg$c4;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n s6 = [];\n s7 = input.charAt(peg$currPos);\n if (peg$r6.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n if (s6.length >= 2) {\n s7 = peg$FAILED;\n } else {\n s7 = input.charAt(peg$currPos);\n if (peg$r6.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n if (s6.length < 1) {\n peg$currPos = s5;\n s5 = peg$FAILED;\n } else {\n s5 = s6;\n }\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s6 = peg$c4;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n s8 = [];\n s9 = input.charAt(peg$currPos);\n if (peg$r6.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n if (s8.length >= 2) {\n s9 = peg$FAILED;\n } else {\n s9 = input.charAt(peg$currPos);\n if (peg$r6.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n if (s8.length < 1) {\n peg$currPos = s7;\n s7 = peg$FAILED;\n } else {\n s7 = s8;\n }\n if (s7 !== peg$FAILED) {\n s2 = [s2, s3, s4, s5, s6, s7];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 84) {\n s3 = peg$c18;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e25); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$currPos;\n s6 = [];\n s7 = input.charAt(peg$currPos);\n if (peg$r6.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n if (s6.length >= 2) {\n s7 = peg$FAILED;\n } else {\n s7 = input.charAt(peg$currPos);\n if (peg$r6.test(s7)) {\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n if (s6.length < 1) {\n peg$currPos = s5;\n s5 = peg$FAILED;\n } else {\n s5 = s6;\n }\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s6 = peg$c6;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n s8 = [];\n s9 = input.charAt(peg$currPos);\n if (peg$r6.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n if (s8.length >= 2) {\n s9 = peg$FAILED;\n } else {\n s9 = input.charAt(peg$currPos);\n if (peg$r6.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n if (s8.length < 1) {\n peg$currPos = s7;\n s7 = peg$FAILED;\n } else {\n s7 = s8;\n }\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s8 = peg$c6;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$currPos;\n s10 = [];\n s11 = input.charAt(peg$currPos);\n if (peg$r6.test(s11)) {\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n while (s11 !== peg$FAILED) {\n s10.push(s11);\n if (s10.length >= 2) {\n s11 = peg$FAILED;\n } else {\n s11 = input.charAt(peg$currPos);\n if (peg$r6.test(s11)) {\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n if (s10.length < 1) {\n peg$currPos = s9;\n s9 = peg$FAILED;\n } else {\n s9 = s10;\n }\n if (s9 !== peg$FAILED) {\n s5 = [s5, s6, s7, s8, s9];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s6 = peg$c14;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n s8 = [];\n s9 = input.charAt(peg$currPos);\n if (peg$r6.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n if (s8.length >= 3) {\n s9 = peg$FAILED;\n } else {\n s9 = input.charAt(peg$currPos);\n if (peg$r6.test(s9)) {\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n if (s8.length < 1) {\n peg$currPos = s7;\n s7 = peg$FAILED;\n } else {\n s7 = s8;\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (input.charCodeAt(peg$currPos) === 90) {\n s6 = peg$c19;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s6 === peg$FAILED) {\n s6 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 43) {\n s7 = peg$c5;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$currPos;\n s9 = [];\n s10 = input.charAt(peg$currPos);\n if (peg$r6.test(s10)) {\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n while (s10 !== peg$FAILED) {\n s9.push(s10);\n if (s9.length >= 2) {\n s10 = peg$FAILED;\n } else {\n s10 = input.charAt(peg$currPos);\n if (peg$r6.test(s10)) {\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n if (s9.length < 1) {\n peg$currPos = s8;\n s8 = peg$FAILED;\n } else {\n s8 = s9;\n }\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s9 = peg$c6;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$currPos;\n s11 = [];\n s12 = input.charAt(peg$currPos);\n if (peg$r6.test(s12)) {\n peg$currPos++;\n } else {\n s12 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n while (s12 !== peg$FAILED) {\n s11.push(s12);\n if (s11.length >= 2) {\n s12 = peg$FAILED;\n } else {\n s12 = input.charAt(peg$currPos);\n if (peg$r6.test(s12)) {\n peg$currPos++;\n } else {\n s12 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n }\n if (s11.length < 1) {\n peg$currPos = s10;\n s10 = peg$FAILED;\n } else {\n s10 = s11;\n }\n if (s10 !== peg$FAILED) {\n s7 = [s7, s8, s9, s10];\n s6 = s7;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n }\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s3 = [s3, s4, s5, s6];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n peg$savedPos = s0;\n s0 = peg$f19(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseident() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = input.charAt(peg$currPos);\n if (peg$r7.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r8.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r8.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n }\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f20();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseliteral() {\n var s0;\n\n s0 = peg$parsestring();\n if (s0 === peg$FAILED) {\n s0 = peg$parsefloat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseint();\n if (s0 === peg$FAILED) {\n s0 = peg$parsebool();\n if (s0 === peg$FAILED) {\n s0 = peg$parsenull();\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = input.charAt(peg$currPos);\n if (peg$r6.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = input.charAt(peg$currPos);\n if (peg$r6.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c14;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = input.charAt(peg$currPos);\n if (peg$r6.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = input.charAt(peg$currPos);\n if (peg$r6.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c14;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r6.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r6.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f21();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsestring() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c20;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsesingle_char();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsesingle_char();\n }\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c20;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f22(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsesingle_char() {\n var s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r9.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e30); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseescape_char();\n }\n\n return s0;\n }\n\n function peg$parseescape_char() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c21) {\n s1 = peg$c21;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f23();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f24();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c23) {\n s1 = peg$c23;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f25();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c24) {\n s1 = peg$c24;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e34); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f26();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c25) {\n s1 = peg$c25;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e35); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f27();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c26) {\n s1 = peg$c26;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e36); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f28();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c27) {\n s1 = peg$c27;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e37); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f29();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c28) {\n s1 = peg$c28;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e38); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f30();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c29) {\n s1 = peg$c29;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e39); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f31();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c30) {\n s1 = peg$c30;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e40); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f32();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c31) {\n s1 = peg$c31;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e41); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsehex_digit();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsehex_digit();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsehex_digit();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsehex_digit();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f33(s2, s3, s4, s5);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsehex_digit() {\n var s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r10.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e42); }\n }\n\n return s0;\n }\n\n function peg$parsebool() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c32) {\n s1 = peg$c32;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e43); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c33) {\n s1 = peg$c33;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e44); }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f34();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseint() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = input.charAt(peg$currPos);\n if (peg$r6.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = input.charAt(peg$currPos);\n if (peg$r6.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f35();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsefloat() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = input.charAt(peg$currPos);\n if (peg$r6.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = input.charAt(peg$currPos);\n if (peg$r6.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c14;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r6.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r6.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f36();\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsenull() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c34) {\n s1 = peg$c34;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e45); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f37();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseident_start() {\n var s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r11.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e46); }\n }\n\n return s0;\n }\n\n function peg$parseKW_OR() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c35) {\n s1 = peg$c35;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e47); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_AND() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3) === peg$c36) {\n s1 = peg$c36;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e48); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_NOT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3) === peg$c37) {\n s1 = peg$c37;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e49); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewhite();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewhite();\n }\n peg$savedPos = s0;\n s1 = peg$f38();\n s0 = s1;\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e50); }\n\n return s0;\n }\n\n function peg$parse__() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewhite();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewhite();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f39();\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e50); }\n }\n\n return s0;\n }\n\n function peg$parsewhite() {\n var s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r12.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e51); }\n }\n\n return s0;\n }\n\n function peg$parseEOF() {\n var s0, s1;\n\n s0 = peg$currPos;\n peg$silentFails++;\n if (input.length > peg$currPos) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e52); }\n }\n peg$silentFails--;\n if (s1 === peg$FAILED) {\n s0 = undefined;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n\n const OPERATORS = {\n \":\": \"match\",\n \":=\": \"eq\",\n \":!=\": \"ne\",\n \":>\": \"gt\",\n \":>=\": \"gte\",\n \":<\": \"lt\",\n \":<=\": \"lte\",\n };\n\n peg$result = peg$startRuleFunction();\n\n if (options.peg$library) {\n return /** @type {any} */ ({\n peg$result,\n peg$currPos,\n peg$FAILED,\n peg$maxFailExpected,\n peg$maxFailPos\n });\n }\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nconst peg$allowedStartRules = [\n \"Main\"\n];\n\nexport {\n peg$allowedStartRules as StartRules,\n peg$SyntaxError as SyntaxError,\n peg$parse as parse\n};\n"],"names":["peg$subclass","child","parent","C","constructor","prototype","peg$SyntaxError","message","expected","found","location","self","Error","call","Object","setPrototypeOf","name","peg$padEnd","str","targetLength","padString","length","repeat","slice","format","sources","src","k","source","text","split","s","start","offset_s","offset","loc","line","column","e","end","filler","toString","last","hatLen","buildMessage","DESCRIBE_EXPECTATION_FNS","literal","expectation","literalEscape","class","escapedParts","parts","map","part","Array","isArray","classEscape","inverted","join","any","other","description","hex","ch","charCodeAt","toUpperCase","replace","describeExpectation","type","describeExpected","descriptions","i","j","sort","describeFound","peg$parse","input","options","undefined","peg$FAILED","peg$source","grammarSource","peg$startRuleFunctions","Main","peg$parseMain","peg$startRuleFunction","peg$c0","peg$c1","peg$c2","peg$c3","peg$c4","peg$c5","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","peg$c11","peg$c12","peg$c13","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","peg$c21","peg$c22","peg$c23","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$r0","peg$r1","peg$r2","peg$r3","peg$r4","peg$r5","peg$r6","peg$r7","peg$r8","peg$r9","peg$r10","peg$r11","peg$r12","peg$e0","peg$literalExpectation","peg$e1","peg$classExpectation","peg$e2","peg$e3","peg$e4","peg$e5","peg$e6","peg$e7","peg$e8","peg$e9","peg$e10","peg$e11","peg$e12","peg$e13","peg$e14","peg$e15","peg$e16","peg$e17","peg$e18","peg$e19","peg$e20","peg$e21","peg$e22","peg$e23","peg$e24","peg$e25","peg$e26","peg$e27","peg$e28","peg$e29","peg$e30","peg$e31","peg$e32","peg$e33","peg$e34","peg$e35","peg$e36","peg$e37","peg$e38","peg$e39","peg$e40","peg$e41","peg$e42","peg$e43","peg$e44","peg$e45","peg$e46","peg$e47","peg$e48","peg$e49","peg$e50","peg$otherExpectation","peg$e51","peg$e52","peg$anyExpectation","peg$f0","value","trim","peg$f1","head","tail","operator","concat","peg$f2","peg$f3","peg$f4","peg$f5","negative","peg$f6","peg$f7","modifier","field","peg$f8","peg$f9","OPERATORS","peg$f10","expr","peg$f11","mention","peg$f12","Boolean","exact","peg$f13","peg$f14","peg$f15","minimum","maximum","peg$f16","minimumBoundary","maximumBoundary","minimumExclusive","maximumExclusive","peg$f17","peg$f18","peg$f19","time","peg$f20","peg$f21","parseFloat","peg$f22","v","peg$f23","peg$f24","peg$f25","peg$f26","peg$f27","peg$f28","peg$f29","peg$f30","peg$f31","peg$f32","peg$f33","h1","h2","h3","h4","String","fromCharCode","parseInt","peg$f34","toLowerCase","peg$f35","peg$f36","peg$f37","peg$f38","peg$f39","peg$currPos","peg$savedPos","peg$posDetailsCache","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","peg$result","startRule","substring","range","peg$computeLocation","peg$buildStructuredError","error","peg$buildSimpleError","ignoreCase","peg$endExpectation","peg$computePosDetails","pos","details","p","startPos","endPos","startPosDetails","endPosDetails","res","peg$fail","push","s0","s1","s2","peg$parseExprs","peg$parseEOF","s3","s4","s5","peg$parse_","peg$parseExpr","peg$parse__","peg$parseComment","peg$parseOrExpr","substr","charAt","test","s6","s7","peg$parseAndExpr","peg$parseKW_OR","peg$parseNotExpr","peg$parseKW_AND","peg$parseKW_NOT","peg$parseParenthesesExpr","peg$parseComparisonExpr","peg$parsefield","peg$parserange","peg$parsemention","peg$parsevalue","peg$parsestring","peg$parseKeywordExpr","peg$parsekeyword","peg$parseident","s8","s9","peg$parsedate","peg$parseliteral","s10","s11","s12","peg$parsefloat","peg$parseint","peg$parsebool","peg$parsenull","peg$parsenumber","peg$parsesingle_char","peg$parseescape_char","peg$parsehex_digit","peg$parseident_start","peg$parsewhite","peg$library","peg$allowedStartRules","StartRules","SyntaxError","parse"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/search/types.d.ts"],"sourcesContent":["export type Exprs = Expr[];\nexport type Expr =\n\t| CommentExpr\n\t| ParenthesesExpr\n\t| KeywordCondition\n\t| LogicalCondition\n\t| NotCondition\n\t| CompareCondition;\n\nexport type CommentExpr = { type: 'comment'; value: string };\n\nexport type ParenthesesExpr = { type: 'parentheses'; value: Expr[] };\n\nexport type KeywordCondition = { type: 'keyword'; value: string; negative?: boolean; exact?: boolean };\n\nexport type LogicalCondition = { type: 'logical'; operator: 'and' | 'or'; value: Expr[] };\n\nexport type NotCondition = { type: 'not'; value: Expr };\n\nexport type CompareCondition = {\n\ttype: 'compare';\n\tfield: string;\n\t/**\n\t * mention value for eq, ne only\n\t * range require range value\n\t */\n\toperator: 'eq' | 'ne' | 'gt' | 'lt' | 'gte' | 'lte' | 'range' | 'match';\n\tnegative?: boolean;\n\tmention?: boolean;\n\tvalue: Value;\n};\n\nexport type Value = LiteralValue | RangeValue | MentionValue;\n\nexport type LiteralValue = { type?: 'literal'; format?: 'date' | 'date-time'; value: string | number | null };\n\nexport type MentionValue = { type?: 'literal'; format: 'mention'; value: string };\n\nexport type RangeValue = {\n\ttype: 'range';\n\tminimum: LiteralValue | undefined;\n\tmaximum: LiteralValue | undefined;\n\tminimumExclusive: boolean;\n\tmaximumExclusive: boolean;\n};\n"],"names":[],"mappings":"AAsCA,WAME"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/tools/renderJsonSchemaToMarkdownDoc.ts"],"sourcesContent":["import type { TObject, TSchema } from '@sinclair/typebox';\n\nexport function renderJsonSchemaToMarkdownDoc(rootSchema: any) {\n\t// markdown\n\tconst out: string[] = [];\n\tconst all = new Set();\n\tconst pending: TSchema[] = [];\n\n\tconst addObject = (o: TSchema) => {\n\t\tif (all.has(o.$id)) {\n\t\t\treturn;\n\t\t}\n\t\tall.add(o.$id);\n\t\tpending.push(o);\n\t};\n\n\tconst writeObjectProps = (T: TObject, { prefix = '' }: { prefix?: string } = {}) => {\n\t\tif (!T?.properties) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const [name, schema] of Object.entries(T.properties)) {\n\t\t\tlet typ = schema.$id || schema.type;\n\n\t\t\tif (typ === 'array') {\n\t\t\t\ttyp = `${schema.items.$id || schema.items.type}[]`;\n\t\t\t\tif (schema.items.$id) {\n\t\t\t\t\taddObject(schema.items);\n\t\t\t\t}\n\t\t\t} else if (schema.$id) {\n\t\t\t\taddObject(schema);\n\t\t\t}\n\t\t\tif (!typ) {\n\t\t\t\tif ('anyOf' in schema) {\n\t\t\t\t\ttyp = 'enum';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout.push(`| ${prefix}${name} | ${typ} | ${schema.title || schema.description || ''} |`);\n\n\t\t\tif (typ === 'object') {\n\t\t\t\twriteObjectProps(schema as TObject, { prefix: `${prefix}${name}.` });\n\t\t\t} else if (schema.type === 'array') {\n\t\t\t\tif (schema.items.type === 'object' && !schema.items.$id) {\n\t\t\t\t\twriteObjectProps(schema.items as TObject, { prefix: `${prefix}${name}[].` });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tconst writeObject = (T: TObject) => {\n\t\tout.push(`### ${T.title || T.$id}`);\n\t\tout.push(`\n| $id | 名字 |\n| --- | --- |\n| ${T.$id || ''} | ${T.title || ''} | \n `);\n\t\tif (T.description) {\n\t\t\tout.push('');\n\t\t\tout.push(`> ${T.description}`);\n\t\t\tout.push('');\n\t\t}\n\n\t\tout.push(`| 名字 | 类型 | 说明 |`);\n\t\tout.push(`| --- | --- | --- |`);\n\n\t\twriteObjectProps(T);\n\n\t\tout.push('');\n\t};\n\n\twriteObject(rootSchema);\n\n\tfor (const schema of pending) {\n\t\tif (schema.type === 'object') {\n\t\t\twriteObject(schema as TObject);\n\t\t} else if ('anyOf' in schema) {\n\t\t\tout.push(`### ${schema.$id || schema.title}`);\n\t\t\tout.push(`\n| $id | 名字 |\n| --- | --- |\n| ${schema.$id || ''} | ${schema.title || ''} | \n `);\n\n\t\t\tout.push(`| 值 | 说明 |`);\n\t\t\tout.push(`| --- | --- |`);\n\t\t\tfor (const item of schema.anyOf) {\n\t\t\t\tout.push(`| ${item.const} | ${item.title || item.description || ''} |`);\n\t\t\t}\n\t\t\tout.push('');\n\t\t}\n\t}\n\n\treturn out.join('\\n');\n}\n"],"names":["renderJsonSchemaToMarkdownDoc","rootSchema","out","all","Set","pending","addObject","o","has","$id","add","push","writeObjectProps","T","prefix","properties","name","schema","Object","entries","typ","type","items","title","description","writeObject","item","anyOf","const","join"],"mappings":"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"}