@teleporthq/teleport-plugin-next-data-source 0.43.59 → 0.43.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__tests__/_helpers/pagination-widget-fixture.ts +230 -0
- package/__tests__/ecommerce-product-discounts.test.ts +196 -0
- package/__tests__/infinite-scroll.test.ts +143 -0
- package/__tests__/numbered-pagination.test.ts +113 -0
- package/__tests__/page-reset-on-filter-sort.test.ts +182 -0
- package/__tests__/page-url-sync.test.ts +208 -0
- package/__tests__/product-price-sort.ts +313 -0
- package/__tests__/search-url-sync.test.ts +7 -3
- package/dist/cjs/array-mapper-pagination.d.ts +9 -0
- package/dist/cjs/array-mapper-pagination.d.ts.map +1 -1
- package/dist/cjs/array-mapper-pagination.js.map +1 -1
- package/dist/cjs/count-effect.d.ts +42 -0
- package/dist/cjs/count-effect.d.ts.map +1 -0
- package/dist/cjs/count-effect.js +81 -0
- package/dist/cjs/count-effect.js.map +1 -0
- package/dist/cjs/fetchers/postgresql.d.ts.map +1 -1
- package/dist/cjs/fetchers/postgresql.js +2 -1
- package/dist/cjs/fetchers/postgresql.js.map +1 -1
- package/dist/cjs/fetchers/teleport.d.ts.map +1 -1
- package/dist/cjs/fetchers/teleport.js +3 -2
- package/dist/cjs/fetchers/teleport.js.map +1 -1
- package/dist/cjs/infinite-scroll.d.ts +65 -0
- package/dist/cjs/infinite-scroll.d.ts.map +1 -0
- package/dist/cjs/infinite-scroll.js +190 -0
- package/dist/cjs/infinite-scroll.js.map +1 -0
- package/dist/cjs/numbered-pagination.d.ts +42 -0
- package/dist/cjs/numbered-pagination.d.ts.map +1 -0
- package/dist/cjs/numbered-pagination.js +167 -0
- package/dist/cjs/numbered-pagination.js.map +1 -0
- package/dist/cjs/page-reset.d.ts +42 -0
- package/dist/cjs/page-reset.d.ts.map +1 -0
- package/dist/cjs/page-reset.js +116 -0
- package/dist/cjs/page-reset.js.map +1 -0
- package/dist/cjs/page-url-sync.d.ts +42 -0
- package/dist/cjs/page-url-sync.d.ts.map +1 -0
- package/dist/cjs/page-url-sync.js +180 -0
- package/dist/cjs/page-url-sync.js.map +1 -0
- package/dist/cjs/pagination-controls.d.ts +55 -0
- package/dist/cjs/pagination-controls.d.ts.map +1 -0
- package/dist/cjs/pagination-controls.js +159 -0
- package/dist/cjs/pagination-controls.js.map +1 -0
- package/dist/cjs/pagination-plugin.d.ts.map +1 -1
- package/dist/cjs/pagination-plugin.js +506 -160
- package/dist/cjs/pagination-plugin.js.map +1 -1
- package/dist/cjs/product-price-sort.d.ts +116 -0
- package/dist/cjs/product-price-sort.d.ts.map +1 -0
- package/dist/cjs/product-price-sort.js +169 -0
- package/dist/cjs/product-price-sort.js.map +1 -0
- package/dist/cjs/transformations/ecommerce-product.d.ts.map +1 -1
- package/dist/cjs/transformations/ecommerce-product.js +1 -1
- package/dist/cjs/transformations/ecommerce-product.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/array-mapper-pagination.d.ts +9 -0
- package/dist/esm/array-mapper-pagination.d.ts.map +1 -1
- package/dist/esm/array-mapper-pagination.js.map +1 -1
- package/dist/esm/count-effect.d.ts +42 -0
- package/dist/esm/count-effect.d.ts.map +1 -0
- package/dist/esm/count-effect.js +53 -0
- package/dist/esm/count-effect.js.map +1 -0
- package/dist/esm/fetchers/postgresql.d.ts.map +1 -1
- package/dist/esm/fetchers/postgresql.js +2 -1
- package/dist/esm/fetchers/postgresql.js.map +1 -1
- package/dist/esm/fetchers/teleport.d.ts.map +1 -1
- package/dist/esm/fetchers/teleport.js +3 -2
- package/dist/esm/fetchers/teleport.js.map +1 -1
- package/dist/esm/infinite-scroll.d.ts +65 -0
- package/dist/esm/infinite-scroll.d.ts.map +1 -0
- package/dist/esm/infinite-scroll.js +159 -0
- package/dist/esm/infinite-scroll.js.map +1 -0
- package/dist/esm/numbered-pagination.d.ts +42 -0
- package/dist/esm/numbered-pagination.d.ts.map +1 -0
- package/dist/esm/numbered-pagination.js +138 -0
- package/dist/esm/numbered-pagination.js.map +1 -0
- package/dist/esm/page-reset.d.ts +42 -0
- package/dist/esm/page-reset.d.ts.map +1 -0
- package/dist/esm/page-reset.js +87 -0
- package/dist/esm/page-reset.js.map +1 -0
- package/dist/esm/page-url-sync.d.ts +42 -0
- package/dist/esm/page-url-sync.d.ts.map +1 -0
- package/dist/esm/page-url-sync.js +152 -0
- package/dist/esm/page-url-sync.js.map +1 -0
- package/dist/esm/pagination-controls.d.ts +55 -0
- package/dist/esm/pagination-controls.d.ts.map +1 -0
- package/dist/esm/pagination-controls.js +126 -0
- package/dist/esm/pagination-controls.js.map +1 -0
- package/dist/esm/pagination-plugin.d.ts.map +1 -1
- package/dist/esm/pagination-plugin.js +507 -161
- package/dist/esm/pagination-plugin.js.map +1 -1
- package/dist/esm/product-price-sort.d.ts +116 -0
- package/dist/esm/product-price-sort.d.ts.map +1 -0
- package/dist/esm/product-price-sort.js +160 -0
- package/dist/esm/product-price-sort.js.map +1 -0
- package/dist/esm/transformations/ecommerce-product.d.ts.map +1 -1
- package/dist/esm/transformations/ecommerce-product.js +2 -2
- package/dist/esm/transformations/ecommerce-product.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/array-mapper-pagination.ts +10 -0
- package/src/count-effect.ts +137 -0
- package/src/fetchers/postgresql.ts +52 -13
- package/src/fetchers/teleport.ts +53 -13
- package/src/infinite-scroll.ts +401 -0
- package/src/numbered-pagination.ts +292 -0
- package/src/page-reset.ts +162 -0
- package/src/page-url-sync.ts +241 -0
- package/src/pagination-controls.ts +176 -0
- package/src/pagination-plugin.ts +755 -346
- package/src/product-price-sort.ts +204 -0
- package/src/transformations/ecommerce-product.ts +33 -7
- package/dist/cjs/array-mapper-registry.d.ts +0 -85
- package/dist/cjs/array-mapper-registry.d.ts.map +0 -1
- package/dist/cjs/array-mapper-registry.js +0 -296
- package/dist/cjs/array-mapper-registry.js.map +0 -1
- package/dist/cjs/pagination-with-count.d.ts +0 -6
- package/dist/cjs/pagination-with-count.d.ts.map +0 -1
- package/dist/cjs/pagination-with-count.js +0 -63
- package/dist/cjs/pagination-with-count.js.map +0 -1
- package/dist/esm/array-mapper-registry.d.ts +0 -85
- package/dist/esm/array-mapper-registry.d.ts.map +0 -1
- package/dist/esm/array-mapper-registry.js +0 -292
- package/dist/esm/array-mapper-registry.js.map +0 -1
- package/dist/esm/pagination-with-count.d.ts +0 -6
- package/dist/esm/pagination-with-count.d.ts.map +0 -1
- package/dist/esm/pagination-with-count.js +0 -34
- package/dist/esm/pagination-with-count.js.map +0 -1
- package/src/array-mapper-registry.ts +0 -416
- package/src/pagination-with-count.ts +0 -89
|
@@ -1 +1 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../teleport-types/dist/cjs/helper.d.ts","../../../teleport-types/dist/cjs/uidl.d.ts","../../../../node_modules/@babel/types/lib/index.d.ts","../../../teleport-types/dist/cjs/generators.d.ts","../../../teleport-types/dist/cjs/errors.d.ts","../../../teleport-types/dist/cjs/vuidl.d.ts","../../../teleport-types/dist/cjs/index.d.ts","../../../teleport-shared/dist/cjs/constants/index.d.ts","../../../teleport-shared/dist/cjs/utils/string-utils.d.ts","../../../teleport-shared/dist/cjs/utils/uidl-utils.d.ts","../../../teleport-shared/dist/cjs/utils/generic.d.ts","../../../teleport-shared/dist/cjs/utils/js-identifiers.d.ts","../../../teleport-shared/dist/cjs/utils/ast-scope.d.ts","../../../teleport-shared/dist/cjs/utils/ast-statement-order.d.ts","../../../teleport-shared/dist/cjs/utils/ast-effect-cleanup.d.ts","../../../teleport-shared/dist/cjs/utils/route-paths.d.ts","../../../teleport-shared/dist/cjs/utils/layout-topology.d.ts","../../../teleport-shared/dist/cjs/utils/html-content-model.d.ts","../../../teleport-shared/dist/cjs/utils/style-declarations.d.ts","../../../teleport-shared/dist/cjs/utils/storefront-tax.d.ts","../../../teleport-shared/dist/cjs/utils/email-date.d.ts","../../../teleport-shared/dist/cjs/cache/constants.d.ts","../../../teleport-shared/dist/cjs/cache/client-runtime.d.ts","../../../teleport-shared/dist/cjs/cache/server-runtime.d.ts","../../../teleport-shared/dist/cjs/cache/version-store.d.ts","../../../teleport-shared/dist/cjs/cache/api-routes.d.ts","../../../teleport-shared/dist/cjs/cache/index.d.ts","../../../teleport-shared/dist/cjs/index.d.ts","../../src/array-mapper-pagination.ts","../../src/array-mapper-registry.ts","../../../teleport-plugin-common/dist/cjs/builders/ast-builders.d.ts","../../../teleport-plugin-common/dist/cjs/utils/parsed-ast.d.ts","../../../teleport-plugin-common/dist/cjs/builders/style-builders.d.ts","../../../teleport-plugin-common/dist/cjs/builders/hast-builders.d.ts","../../../teleport-plugin-common/dist/cjs/utils/types.d.ts","../../../teleport-plugin-common/dist/cjs/utils/ast-utils.d.ts","../../../teleport-plugin-common/dist/cjs/utils/style-utils.d.ts","../../../teleport-plugin-common/dist/cjs/utils/hast-utils.d.ts","../../../teleport-plugin-common/dist/cjs/utils/url-search-param-sync.d.ts","../../../teleport-plugin-common/dist/cjs/utils/route-utils.d.ts","../../../teleport-plugin-common/dist/cjs/node-handlers/node-to-jsx/types.d.ts","../../../teleport-plugin-common/dist/cjs/node-handlers/node-to-jsx/utils.d.ts","../../../teleport-plugin-common/dist/cjs/node-handlers/node-to-html/types.d.ts","../../../teleport-plugin-common/dist/cjs/node-handlers/node-to-html/index.d.ts","../../../teleport-plugin-common/dist/cjs/node-handlers/node-to-jsx/index.d.ts","../../../teleport-plugin-common/dist/cjs/index.d.ts","../../src/transformations/shared-utils.ts","../../src/transformations/blog-post.ts","../../src/transformations/ecommerce-product.ts","../../src/transformations/index.ts","../../src/isr.ts","../../src/utils.ts","../../src/fetchers/postgresql.ts","../../src/fetchers/mysql.ts","../../src/fetchers/mariadb.ts","../../src/fetchers/redshift.ts","../../src/fetchers/mongodb.ts","../../src/fetchers/redis.ts","../../src/fetchers/firestore.ts","../../src/fetchers/clickhouse.ts","../../src/fetchers/airtable.ts","../../src/fetchers/supabase.ts","../../src/fetchers/turso.ts","../../src/fetchers/rest-api.ts","../../src/fetchers/javascript.ts","../../src/fetchers/utils/header-detection.ts","../../src/fetchers/csv-file.ts","../../src/fetchers/google-sheets.ts","../../src/fetchers/teleport.ts","../../src/fetchers/raw-query.ts","../../src/fetchers/index.ts","../../src/validation.ts","../../src/cache/types.ts","../../src/data-source-fetchers.ts","../../src/count-fetchers.ts","../../src/filter-utils.ts","../../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../src/sort-utils.ts","../../src/cache/ast.ts","../../src/loading-state.ts","../../src/cache/config.ts","../../src/pagination-plugin.ts","../../src/index.ts","../../src/pagination-with-count.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/types.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/diffLines.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/printDiffs.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/index.d.ts","../../../../node_modules/@types/jest/node_modules/pretty-format/build/types.d.ts","../../../../node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","../../../../node_modules/@types/jest/index.d.ts","../../../../node_modules/@types/jest/ts3.2/index.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"14fc7efae8b184b18019a5906c6f6de752823b44ff1acf7924bbdc8877ded21b","89916c189760569ec3da1c2f516dc5814cc4115a9080bde9452a00df00e9cfe2","8d27e5f73b75340198b2df36f39326f693743e64006bd7b88a925a5f285df628","dc825386fec10debdf3c70118b36fab9fbf806c96b4bc562ca819ca7a57c4307","71a689048584cde03cb508408ae7c3b04ad8f10af887865e8b65c27ed9d91488","d9118ed71b9968fea213b070209081a1b1c378b55ddcd026fb1ae8a7f52c15b7","6ba1631f84ef4507073189c4ada06d6de8bac89375ea3b49e34e49006cc44a3f","afa9397f3aa80897cec3ddec1dd6f7c8741106ce96090f74df790a474b114ed6","2151c15cf44957b985572346813bd65fba324d8f9422ad7aacdcacbd78dc2d5f","016e13cb6b202723f41294ea8028ae51ab987e847808c6f637d5a890954a943c","403723c612eb5754e02e99e0509f13822535b3b559bba19f01cfc7a543919142","ef444c3abed06ad312847e29b4ba4432f7c195314c4bb82a25ce95f95c778a5b","1b162486fa280dbee48fc4c144654d5f55efcc37b7fee14d797abfbdad9a949c","ac38f9ccc10049dd76ddfb68a4ac6647d36656d62d4c01cd32ce1386e6e56758","210a682e78eed1c7aae6824de615032daaf3fc60c2b0cd3720200b6d61f9fd19","3e39c53f8d84f8cab50817a177664b09180a2d7eebac4583789268f9fd589b84","ab05daec0e36402aa878f9e6bce5bbb4ca1766771a40287cc253744045349777","ecfca193bd5f4c5a96cdca608fcc5bdec30439d0648bc90795cabbe07927b777","26b70c898ac9086bfb061fa451c96bf0e67e0281cb8404c72bc4b8bed45670af","152038e0f63f7fc9fd01dda2cd7e6d2a702841959b9a81c8c0d412947615d145","85c1a4cf9f573ed7cb65596d82d315157ac03ff6914f578e6f0fdbca356557c7","a38a716bf00f98c44b63ea11a8f02dd1d7cc33deb445db79dd48f6ea50a93faf","2c010aad4ced0c836ea0c5d8b0465afe128c6dfab0fc0486df89e01d831128bf","4e6ff96a2db4fd3831ff16dc907e51fa41c417c57771712ab528db763eefc30d","e421033924a00045db6c0f30c05c1c008077828a39530fb5c742179eb56c28ed","33cae5e413c0ce1edeffeb0657a12b37e123a0eac472717561412d262f01f796","7864d42f488cf277d879b29b952dec989e11b02b4c04cf99595cbfafaf4a3775","dff671639c5a5967b85bc0f60085574aff9f7f3a3ff6a113b91859ab096fbcca",{"version":"c0ca43993486eeee95a5e3c1ab0c0362861376025516a83378c208849dad6cd6","signature":"8dd10403310bd272432dc4914680cd455a14df308ddef48d584ebd1d6549b1ad"},{"version":"926bc1cfc68d5c76e052b07669cf86d180d0e20848c90e5bec9bda0e0368246b","signature":"5577f4319cf62cef1d9525c258e88cbf0200eadc115cddd5dd69e7e6a3447ab4"},"b7f5a08a542459965e03364a10ce321d28eb5dc96c7cef00a48cb89e455f8532","7d69ac79c9de7620a1bdd926fd4b20b8e968d6467a220eac2a836988ab47c933","d350fc146b46550e424850ab9f7e7d8951156584dbd27bf493e37d7d2300af87","51df45d44f1a2052bd14063736f385bfbdcfee3759fa5597c89f62b3bbdb02e5","10b2bb0a74b12ecbab5003ff91aa8b3da674f81a5d72fdd6f998bfaf664948c8","c5517fd5758cee081b157b90a8d1bd3f300e366d0597270ed30e9c0d72125c2d","3f4fe2fe5f1425cb3e04f5c898d990a1925a7c8a84548a4804f831cfaa2194cb","6ff754e93a1ef94f7a92e7f6f9b67357f3b25836ab36d66202d1d07343186ab7","504f64fcde588e7650963530c4108c700d2bf56e7c381a713e09c106987e9e3c","0f8a91a725deb2bc4f3d64760262135d51a7f5b27e0749424ea90218b719461c","bbcd30d53884212c228ff7e76c17ac9b1a928cdf5b8f427a71194c811a5d714d","1fe41493efdde00b7f7b326310cba7ea78bb55ff75ade0f21f788e1cda8fe9ed","48533e135178c91d9abe0789d1c09802696a42985217396ccfcfd1034a099a0e","dcaef7f7c1f0cb2dba19a1a70cc8d5276faa68e50bc69d6a006d3aaaaa9f7aa7","ffd67adf9464cf9bcddc3954fcd27d59b60e85acb02101fefe8b0eb642a2be2f","a5fb95c2217a6e8d3cb48bfe33a56548dab85c7d84c57b720f03159bc289827b",{"version":"3b8f11465b65790afe276d4492c9d7aa0f2e77daeab9226e3df8509f3ec07354","signature":"79f979b9f84ca0e46aacfc04dc7849991e46425604a62d539eb00a0fb9bb0dac"},{"version":"d4ecb57b6ef0c3bdce8c006166ef105c60fcee7f732806c9ee81277b66cacd53","signature":"8babb4c4f48649d024bdbeef0c5bdab6625a0f20edd3e20d28e5e0b1acef358a"},{"version":"55e4481401dd4e0e7110b13cc23d8a7a494e6a365307fb6cbf29b2182b40a58f","signature":"f30b56d3e2f291bf1069236ac96b66751ff197465ea123aa5959e3c0629e98bd"},{"version":"80dd8b0a6a7ba48512e8468f59184a13353f8dee38b6188aa7023a1c2b5362e7","signature":"38a76a95e5f9ec676804e1f7cd9b2ab0cd46f59a21ac5fe08081352413b29421"},{"version":"089156ee8c662fc7994e505bb92f51e2ee3d35320c86c06881aaa451546dc7a6","signature":"5544c2af7ff781b56ab78a636432e0c005cfe2358409e1e30c9f2e95b06199e2"},{"version":"373df17bbce2a80361fa3cff5e10ff6b06cf7b549f58f323d4738f2dbd2ef063","signature":"d9921ca6c23a4c37a9e9e6ffc745d1479179b935ef43345bb0226d11ed322dcb"},{"version":"d4dfa630db8e4a7e9dd8cd44bb78392174e0f5588119591d103409351c81b9ab","signature":"de06b0c86ca2d89fbaf2a13a72ab5fc755c40e044fa57c8bb38730efd3261022"},{"version":"9b7f0e521e1b4596b39063a0a979487583842211bfd427293b3b8b7bdfa828f5","signature":"d00193c90510e72ce2388a023e353fe46b5cdf19422f5161b9850335a986da2a"},{"version":"5d1a7a46f218bd927028130607a8c552656d4fe8cedaa57efcbf810c6477b09f","signature":"49f95af249a13fe4d6a4e010f6c962a3ad0b8c04b8239776860d739a6c7aebec"},{"version":"2717f6454b3dbb8a7cf5acbbd2f48209ba6d126d736cd858c5b5687ee2652aae","signature":"0c15c7a95261653c1d169de2acd460951fd2da86797be3d66bae181229913028"},{"version":"60b08c9a49795ae888a0c2e9c749470619196d38649eccb3b6a72299707814d0","signature":"42fd47b89f4fd4d1182b4dabb6cf21a207aecc9f18b9c64375a905f71ba7e27e"},{"version":"de2ca6e8f7b95566cde68e681726e04b9ba9e5adc979994fb8c013994e90d86c","signature":"1435e8f6c5c4a872b7ccdd524445c2c0a3841c514f278e9f7fe89dd27f51e22c"},{"version":"4b0cfe9110b745df569d1ae33ad25b968107400285f79d198dc5f08bfcebe7ee","signature":"9252525bdbffa14530825b1742cc1dbac04dd14d6da54858b1e0f10b13d9486a"},{"version":"478ebcfc229746b9e8921c62821870d299c512028dd3841a94884f89c99e14a0","signature":"086cba5e2c20c4c1bd96751364704784fc769c874f961d49511e8a71eb455635"},{"version":"1af30eb6d6b8cbf8c271e9574e0be812a65207e965e37fbe98c7ccd5109c2fb6","signature":"2a7fa42ab3eea43bd9ea8b87a44d66dd187e6b9bd3a92dfac9b94456cd3ee542"},{"version":"05300da7f9381e3535f5713e8448daca93c16e76522b4ed3cb90d643d1ff6751","signature":"05129746e5b08d401ebb1d0286ea7446ac7c867a003dc9c1e4f6ea8e546b4024"},{"version":"3384e38ce8f3eb163e0ff56f6a982a0677f797ba4657eb371214a1a45f32dd14","signature":"57800819a8bf58defe43f6529d610a62678fc94f0df6dd9c463a68fa795d8a5e"},{"version":"c5120a61318f05d981353cc67de4488219516d3bc06c7eb59c764cf94a1374c7","signature":"e174a43044ea557509070815d09a9bad989b1360808b43ca3451ee44391ec49e"},{"version":"3a3882ee0651c8d8ae087c6f34ea75908443ec2cb3457982a162f0cb73dacd64","signature":"37791c8e17a2d09885af3ae90cbf37cfc007d054422efca32fde77600aae2a56"},{"version":"b4f81c99b4783307322c0dda97fa6b295e53ca5c3749bb46dd46ff65114c7939","signature":"19bb513d1d82c0c13dfae8bd4609fdd77d257b213bb6286e2873abac15599b22"},{"version":"7cd4b54cf3a9402b0ae2fce241da97f59b33c69b5aca0f916630c7e8050e0b89","signature":"b3a57d9eea1fff68e106cc6489a3853c0402bd014eb827967e684953192d3907"},{"version":"a53d3edaf0b513e725872307d4cfa5f6f5b7476f3828320c46a0c131a806edac","signature":"7a5c1f79f55d6cfaf4adc1943e71e323072a0225ba261d2d8ba3a7eaec79205f"},{"version":"f385b0e87692bba0592575143ddf18a313c1808befcaa1845401bc89f1022722","signature":"df41724512f2db139638e0b6a09b99d34e8b7716e0966a19dbb618b9bd8e68f4"},{"version":"0ec5a2b5c22249e2a811e27a2cc368769e007da4d3bff555ab651bc5b714cb2f","signature":"93a3fb96944991bd0c3e262b895ae90e7166670cc7de56a018d026664ad3839c"},{"version":"35a1eb1c55a2d086ba888a0a535a0939f44b123933a812a1b8e8bb3843762827","signature":"8e75557ea51b03d65950ff837701891eb1b6a6d8d3047d67c288daa208de8cc9"},{"version":"4fb8c0cc9c3c0f02789eb46932de57ff337f279eed83405ab60c7fabbffd2479","signature":"dc8beebd62666f0f499f3d19afcd511268409762b733344538c18dd9d269102e"},{"version":"475c1c69558ea9267615a81295d7a68a80a50406c1bedab5bad2a717dc172ac7","signature":"d61c99152b49569aa8f1fb7f987505ac3729c61921dbbf8e2f56c8c5240fa1d1"},{"version":"e4a1fdee7f0aa189d0e187c268718677d19a64348e412f03f6ff0c2f49af6602","signature":"24814150d755e4554fb76b7c9f35f5a2a52c1b13038ddcf30577cf3dc7e1afee"},{"version":"b1f8280cf0bdbe930233ae48df96b6a871a7f24fc0d32f04e6e22f7d84daa529","signature":"b7e105389681fd52ac69f81882168ec249a2b06b1462734e47e8e8d72d8aa702"},{"version":"fe3d7c154d26ff780ce2239874b4ef7b94108e57d2050dd796722f79852378f7","signature":"18ddf6d4cc9e115d8a6c97a4a0f590c0f16e06e862fbf9992486fcbcfe611a55"},"1c2cd862994b1fbed3cde0d1e8de47835ff112d197a3debfddf7b2ee3b2c52bc",{"version":"516456888ee35d15a2ac3251216d4ca74999771d07c74507a47f22b2c1d7bdfc","signature":"e1552ab0a1a905e2691c385fbdb013f1f25a5a107f28b6fcc3ac44a056922b6a"},{"version":"99987da8cb0b1b27bbcddbca60376d800be527d649a32aa781dfe8ec187fb213","signature":"7ea150f4885475bd11eee026a3d814ae5bebe0c75e89cdf1de8598e3d0308cb2"},{"version":"84730371cb2c4d2821dd103664fcc0f36fec131db9d81a95059f012cfe6bf71c","signature":"3a55e43a9939604ac49f7ec7d51dbe29d01cc88e3035842dbf8125e7cfeb70e2"},{"version":"9aa8a1d15fb1eb78be9fc60e652ac7388ac2d9373b65f68b91d01b73a900d1e9","signature":"e7dcdfa55263d1e25ec069f2a5961820ef5adfa15a872df7db2c681c0eb8b7fc"},{"version":"89013567955766ed3183cf23eec5e9c48f04a80e62da489750a0ed6a0cf34b82","signature":"81edd44b1cc80a705e38f13a4c9238f25ff8181147f1c729f28c00b5ae539eec"},{"version":"c825dba4b5489155fb0725797c2ab97bd601f2c191c9f5fded28e168bac04f64","signature":"d937f0bfda15358170835d7ef7af1aac1efe35779167a30fe397b492485e20ce"},{"version":"643868a552706f3347b5c1fe5388344e9f77e0620b2fc950c026d4ce6398539a","signature":"c8dee13888566e8f6872c49d2e2ff8c40f18eca5856298639c21a3b90467adfb"},"0b4bc32128fda7bb0752cf284730dd3a817aae04a3d7f92e3b2d54bd61362fe1","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"5f290ea7efbe9d8431e10df12c0d5672b67988e7c171c2d356749fac70347a55","affectsGlobalScope":true},"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89",{"version":"49c89f8fa09d21c161e6a367448639e032f42d77cc2ec8ab54ecb8fa9a3ad59f","affectsGlobalScope":true},"e4b50850c2a62c7750428e452ee24b167180104d514d5e5c0ca691753365f610","304504c854c47a55ab4a89111a27a2daf8a3614740bd787cc1f2c51e5574239c",{"version":"95f9129a37dcace36e17b061a8484952586ecfe928c9c8ce526de1a2f4aaefa7","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","0f9061846236850a872cb44097d071631e93c8749a8b16c191fe3c2a48faede4","e46fa644658c2d6e5c85e954ea76b92c97d63f0851d3ccdab8c2a80d5962aaa9","1c611ff373ce1958aafc40b328048ac2540ba5c7f373cf2897e0d9aeaabe90a0","a307d22a0130ac94c1a17fffa6d57ac272deb5838cb966a9420911d259cdf1be","d2e415abf6cb81ac9e2700b4db5ea7be76b997e812285b8e5e1e414eb2750b6e","09d6cebdced6aa1181ac1523c8f22a133f5ed80589678b64051f0602f0518374",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"7c35691dc3972ff1507d8dd279d833f540973d0917bde22e191cf7a8feaac29f","affectsGlobalScope":true},"62662d7a886e5cfa870685720fd27b763743ca4d2cf29326f75d76606a64eadd","b8c670688bd228d3cc9c169690b09b687188c50ff263a94df63b207701105ad9","d8e16905907111390d5a943816306ae997dfe56476f14142166f8b13ee322eea","8068c911a1c40bc6c5ffc58c625b21d807778f6aa6d63a73e6f04f88bcac5b79","a1dbce56ad5f3a37caafb9033c9d190a199217d673f5fa099c8968d471a2fdaa","c6f77efcc19f51c8759779b6b6ee0d88046c15c15dadac8ffed729a6620daf39",{"version":"089867511b37a534ae71f3d9bc97acc0b925b7f5dbec113f98c4b49224c694eb","affectsGlobalScope":true},"269d0ea3202820c29a32c1f2a357837a4f1918426844f7e7c90af15ec40d1dc1","66432f885e30cf471573de22a5af5eca9ab46b37b122aec98beadf77e9b7df24","323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c",{"version":"034e635df3c014df1d6b1110b724ca0c4d2d324b45a84974c7d6931f9cf95ea7","affectsGlobalScope":true},{"version":"87f9456115554cb0f78f098ddbd585096871c19d2d05274c1b1b4ade3151da78","affectsGlobalScope":true},"ea3ab3727cd6c222d94003ecafa30e8550c61eadcdabbf59514aee76e86211a5","d3cdd41693c5ed6bec4f1a1c399d9501372b14bd341bc46eedacf2854c5df5a7","2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","da618f0ea09d95c3b51514de43bf97dab008c85bede58aa57cf95e4984c7c957","48a35b181ecf47dbbc0a7ab4b5ba778d91eaa838ba42bf4aaaead42be77ef39a","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","5195aeb0de306d1c5ca8033457fbcab5987657112fa6d4971cfeb7644493a369","c5dbf0003bc9f0f643e54cd00a3868d1afe85497fecb56be6f2373dc85102924",{"version":"ce73eb199c4bf96c015f069aac161488ed73ebeaea3d87b6d5aa9a968a7b38d4","affectsGlobalScope":true},{"version":"300f8e9de0b0c3482be3e749462b6ebc3dab8a316801f1da0def94aed0cd2018","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","962f105729d5b888c8b70e193f6020ee92c6c8144c827de40f80d65dd188ad7f","ac74e2b754fba690036f8221d978f6debb867462b87af254f24e924b677395d0","80858f6de9af22e53aff221fe3590215ea544c2aeb2cc60cf8e08a9c785c8fef",{"version":"068b8ee5c2cd90d7a50f2efadbbe353cb10196a41189a48bf4b2a867363012b4","affectsGlobalScope":true},{"version":"340659b96782f5813aad6c1f89ea1b83b2f3fa993115c7b30366375d9bae5a4e","affectsGlobalScope":true},"6f44a190351ab5e1811abebe007cf60518044772ccc08244f9f241706afa767f","fecdf44bec4ee9c5188e5f2f58c292c9689c02520900dceaaa6e76594de6da90","cf45d0510b661f1da461479851ff902f188edb111777c37055eff12fa986a23a",{"version":"895ca532c15c77cbb6a871af1870b57bcd0ca4f38a1bd69669dd0e95bb58565a","affectsGlobalScope":true},"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","e222104af6cb9415238ad358488b74d76eceeff238c1268ec6e85655b05341da","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","eba230221317c985ab1953ccc3edc517f248b37db4fef7875cb2c8d08aff7be7","b83e796810e475da3564c6515bc0ae9577070596a33d89299b7d99f94ecfd921","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"f624e578325b8c58e55b30c998b1f4c3ec1b61a9fa66373da4250c89b7880d44","affectsGlobalScope":true},{"version":"d3002f620eab4bf6476c9da5c0efb2041d46f7df8b3032a5631bd206abef2c75","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noImplicitAny":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"target":1},"fileIdsList":[[45],[218,220],[214,215],[214,215,216,217],[219],[221],[127],[163],[164,169,197],[165,176,177,184,194,205],[165,166,176,184],[167,206],[168,169,177,185],[169,194,202],[170,172,176,184],[163,171],[172,173],[176],[174,176],[163,176],[176,177,178,194,205],[176,177,178,191,194,197],[161,210],[172,176,179,184,194,205],[176,177,179,180,184,194,202,205],[179,181,194,202,205],[127,128,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212],[176,182],[183,205,210],[172,176,184,194],[185],[186],[163,187],[188,204,210],[189],[190],[176,191,192],[191,193,206,208],[164,176,194,195,196,197],[164,194,196],[194,195],[197],[198],[163,194],[176,200,201],[200,201],[169,184,194,202],[203],[184,204],[164,179,190,205],[169,206],[194,207],[183,208],[209],[164,169,176,178,187,194,205,208,210],[194,211],[138,142,205],[138,194,205],[133],[135,138,202,205],[184,202],[213],[133,213],[135,138,184,205],[130,131,134,137,164,176,194,205],[130,136],[134,138,164,197,205,213],[164,213],[154,164,213],[132,133,213],[138],[132,133,134,135,136,137,138,139,140,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160],[138,145,146],[136,138,146,147],[137],[130,133,138],[138,142,146,147],[142],[136,138,141,205],[130,135,136,138,142,145],[164,194],[133,138,154,164,210,213],[45,49],[49],[45,49,74],[73,74,75,76,78,79,80,81,82,83,84,85,86,87],[49,85],[45,49,83],[45,49,74,77],[49,70],[45,49,115],[49,70,115],[49,95,96,97,99,104,107,109,111,116],[49,70,92,113,114,115,117],[94],[94,108],[95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,111,112],[92,94],[45,49,70,71,92,93,94,116,117,124],[45,121],[45,49,70,88,92,94,115,116,118,119,120,121,122,123],[45,71],[45,49,88],[49,70,89,90,91],[45,49,70,88,92,93,116],[64,65,66,67,68],[50,51,52,53,54,55,56,57,58,59,60,61,62,63,69],[44,45],[44,46,47,48],[43],[43,44],[49,115],[49,95,96,97,99,104,107,109,111],[49,92,113,115],[92],[49,71,92,94,116,117,124],[49,91],[49,92]],"referencedMap":[[119,1],[221,2],[216,3],[218,4],[217,3],[220,5],[222,6],[127,7],[128,7],[163,8],[164,9],[165,10],[166,11],[167,12],[168,13],[169,14],[170,15],[171,16],[172,17],[173,17],[175,18],[174,19],[176,20],[177,21],[178,22],[162,23],[179,24],[180,25],[181,26],[213,27],[182,28],[183,29],[184,30],[185,31],[186,32],[187,33],[188,34],[189,35],[190,36],[191,37],[192,37],[193,38],[194,39],[196,40],[195,41],[197,42],[198,43],[199,44],[200,45],[201,46],[202,47],[203,48],[204,49],[205,50],[206,51],[207,52],[208,53],[209,54],[210,55],[211,56],[145,57],[152,58],[144,57],[159,59],[136,60],[135,61],[158,62],[153,63],[156,64],[138,65],[137,66],[133,67],[132,68],[155,69],[134,70],[139,71],[143,71],[161,72],[160,71],[147,73],[148,74],[150,75],[146,76],[149,77],[154,62],[141,78],[142,79],[151,80],[131,81],[157,82],[73,83],[76,84],[75,85],[88,86],[86,87],[85,84],[87,88],[83,83],[84,88],[78,89],[80,83],[82,84],[79,84],[81,1],[71,90],[121,91],[123,92],[117,93],[116,94],[103,95],[102,95],[109,96],[101,95],[110,96],[113,97],[107,95],[97,95],[99,95],[96,95],[95,95],[112,95],[100,95],[98,95],[106,95],[104,95],[111,98],[105,95],[118,1],[125,99],[122,100],[124,101],[126,102],[120,103],[91,90],[92,104],[94,105],[69,106],[50,84],[70,107],[57,1],[55,1],[56,1],[53,84],[59,84],[62,84],[61,84],[52,84],[46,108],[49,109],[44,110],[48,111]],"exportedModulesMap":[[119,1],[221,2],[216,3],[218,4],[217,3],[220,5],[222,6],[127,7],[128,7],[163,8],[164,9],[165,10],[166,11],[167,12],[168,13],[169,14],[170,15],[171,16],[172,17],[173,17],[175,18],[174,19],[176,20],[177,21],[178,22],[162,23],[179,24],[180,25],[181,26],[213,27],[182,28],[183,29],[184,30],[185,31],[186,32],[187,33],[188,34],[189,35],[190,36],[191,37],[192,37],[193,38],[194,39],[196,40],[195,41],[197,42],[198,43],[199,44],[200,45],[201,46],[202,47],[203,48],[204,49],[205,50],[206,51],[207,52],[208,53],[209,54],[210,55],[211,56],[145,57],[152,58],[144,57],[159,59],[136,60],[135,61],[158,62],[153,63],[156,64],[138,65],[137,66],[133,67],[132,68],[155,69],[134,70],[139,71],[143,71],[161,72],[160,71],[147,73],[148,74],[150,75],[146,76],[149,77],[154,62],[141,78],[142,79],[151,80],[131,81],[157,82],[73,83],[76,84],[75,85],[88,86],[86,87],[85,84],[87,88],[83,83],[84,88],[78,89],[80,83],[82,84],[79,84],[81,1],[71,84],[121,91],[123,112],[117,113],[116,114],[113,97],[111,115],[118,1],[125,116],[122,1],[124,84],[126,102],[120,83],[91,84],[92,117],[94,118],[69,106],[50,84],[70,107],[57,1],[55,1],[56,1],[53,84],[59,84],[62,84],[61,84],[52,84],[46,108],[49,109],[44,110],[48,111]],"semanticDiagnosticsPerFile":[119,45,221,214,216,218,217,215,220,219,222,127,128,163,164,165,166,167,168,169,170,171,172,173,175,174,176,177,178,162,212,179,180,181,213,182,183,184,185,186,187,188,189,190,191,192,193,194,196,195,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,129,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,34,7,35,40,41,36,37,38,39,1,42,145,152,144,159,136,135,158,153,156,138,137,133,132,155,134,139,140,143,130,161,160,147,148,150,146,149,154,141,142,151,131,157,73,76,75,88,86,85,87,83,84,78,80,74,82,79,77,81,71,72,121,123,115,117,116,103,102,109,101,110,113,107,97,99,96,95,112,100,98,106,104,111,105,108,118,125,93,122,124,126,120,90,91,92,89,94,114,68,65,64,69,66,67,50,70,57,55,56,63,53,60,54,59,58,62,51,61,52,47,46,43,49,44,48]},"version":"4.9.5"}
|
|
1
|
+
{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../teleport-types/dist/cjs/helper.d.ts","../../../teleport-types/dist/cjs/uidl.d.ts","../../../../node_modules/@babel/types/lib/index.d.ts","../../../teleport-types/dist/cjs/generators.d.ts","../../../teleport-types/dist/cjs/errors.d.ts","../../../teleport-types/dist/cjs/vuidl.d.ts","../../../teleport-types/dist/cjs/index.d.ts","../../../teleport-shared/dist/cjs/constants/index.d.ts","../../../teleport-shared/dist/cjs/utils/string-utils.d.ts","../../../teleport-shared/dist/cjs/utils/uidl-utils.d.ts","../../../teleport-shared/dist/cjs/utils/generic.d.ts","../../../teleport-shared/dist/cjs/utils/js-identifiers.d.ts","../../../teleport-shared/dist/cjs/utils/ast-scope.d.ts","../../../teleport-shared/dist/cjs/utils/ast-statement-order.d.ts","../../../teleport-shared/dist/cjs/utils/ast-effect-cleanup.d.ts","../../../teleport-shared/dist/cjs/utils/route-paths.d.ts","../../../teleport-shared/dist/cjs/utils/layout-topology.d.ts","../../../teleport-shared/dist/cjs/utils/html-content-model.d.ts","../../../teleport-shared/dist/cjs/utils/style-declarations.d.ts","../../../teleport-shared/dist/cjs/utils/storefront-tax.d.ts","../../../teleport-shared/dist/cjs/utils/product-discounts.d.ts","../../../teleport-shared/dist/cjs/utils/email-date.d.ts","../../../teleport-shared/dist/cjs/cache/constants.d.ts","../../../teleport-shared/dist/cjs/cache/client-runtime.d.ts","../../../teleport-shared/dist/cjs/cache/server-runtime.d.ts","../../../teleport-shared/dist/cjs/cache/version-store.d.ts","../../../teleport-shared/dist/cjs/cache/api-routes.d.ts","../../../teleport-shared/dist/cjs/cache/index.d.ts","../../../teleport-shared/dist/cjs/index.d.ts","../../src/array-mapper-pagination.ts","../../src/count-effect.ts","../../../teleport-plugin-common/dist/cjs/builders/ast-builders.d.ts","../../../teleport-plugin-common/dist/cjs/utils/parsed-ast.d.ts","../../../teleport-plugin-common/dist/cjs/builders/style-builders.d.ts","../../../teleport-plugin-common/dist/cjs/builders/hast-builders.d.ts","../../../teleport-plugin-common/dist/cjs/utils/types.d.ts","../../../teleport-plugin-common/dist/cjs/utils/ast-utils.d.ts","../../../teleport-plugin-common/dist/cjs/utils/style-utils.d.ts","../../../teleport-plugin-common/dist/cjs/utils/hast-utils.d.ts","../../../teleport-plugin-common/dist/cjs/utils/url-search-param-sync.d.ts","../../../teleport-plugin-common/dist/cjs/utils/url-query-writer.d.ts","../../../teleport-plugin-common/dist/cjs/utils/route-utils.d.ts","../../../teleport-plugin-common/dist/cjs/node-handlers/node-to-jsx/types.d.ts","../../../teleport-plugin-common/dist/cjs/node-handlers/node-to-jsx/utils.d.ts","../../../teleport-plugin-common/dist/cjs/node-handlers/node-to-html/types.d.ts","../../../teleport-plugin-common/dist/cjs/node-handlers/node-to-html/index.d.ts","../../../teleport-plugin-common/dist/cjs/node-handlers/node-to-jsx/index.d.ts","../../../teleport-plugin-common/dist/cjs/index.d.ts","../../src/transformations/shared-utils.ts","../../src/transformations/blog-post.ts","../../src/transformations/ecommerce-product.ts","../../src/transformations/index.ts","../../src/isr.ts","../../src/utils.ts","../../src/product-price-sort.ts","../../src/fetchers/postgresql.ts","../../src/fetchers/mysql.ts","../../src/fetchers/mariadb.ts","../../src/fetchers/redshift.ts","../../src/fetchers/mongodb.ts","../../src/fetchers/redis.ts","../../src/fetchers/firestore.ts","../../src/fetchers/clickhouse.ts","../../src/fetchers/airtable.ts","../../src/fetchers/supabase.ts","../../src/fetchers/turso.ts","../../src/fetchers/rest-api.ts","../../src/fetchers/javascript.ts","../../src/fetchers/utils/header-detection.ts","../../src/fetchers/csv-file.ts","../../src/fetchers/google-sheets.ts","../../src/fetchers/teleport.ts","../../src/fetchers/raw-query.ts","../../src/fetchers/index.ts","../../src/validation.ts","../../src/cache/types.ts","../../src/data-source-fetchers.ts","../../src/count-fetchers.ts","../../src/filter-utils.ts","../../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../src/sort-utils.ts","../../src/cache/ast.ts","../../src/loading-state.ts","../../src/cache/config.ts","../../src/pagination-controls.ts","../../src/numbered-pagination.ts","../../src/infinite-scroll.ts","../../src/page-reset.ts","../../src/page-url-sync.ts","../../src/pagination-plugin.ts","../../src/index.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/types.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/diffLines.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/printDiffs.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/index.d.ts","../../../../node_modules/@types/jest/node_modules/pretty-format/build/types.d.ts","../../../../node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","../../../../node_modules/@types/jest/index.d.ts","../../../../node_modules/@types/jest/ts3.2/index.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"14fc7efae8b184b18019a5906c6f6de752823b44ff1acf7924bbdc8877ded21b","b42584f9282882a4c3e388b5c9ef8d78b007540795dfd6ea2421dd28d2e1564f","8d27e5f73b75340198b2df36f39326f693743e64006bd7b88a925a5f285df628","dc825386fec10debdf3c70118b36fab9fbf806c96b4bc562ca819ca7a57c4307","71a689048584cde03cb508408ae7c3b04ad8f10af887865e8b65c27ed9d91488","d9118ed71b9968fea213b070209081a1b1c378b55ddcd026fb1ae8a7f52c15b7","6ba1631f84ef4507073189c4ada06d6de8bac89375ea3b49e34e49006cc44a3f","afa9397f3aa80897cec3ddec1dd6f7c8741106ce96090f74df790a474b114ed6","2151c15cf44957b985572346813bd65fba324d8f9422ad7aacdcacbd78dc2d5f","016e13cb6b202723f41294ea8028ae51ab987e847808c6f637d5a890954a943c","403723c612eb5754e02e99e0509f13822535b3b559bba19f01cfc7a543919142","ef444c3abed06ad312847e29b4ba4432f7c195314c4bb82a25ce95f95c778a5b","1b162486fa280dbee48fc4c144654d5f55efcc37b7fee14d797abfbdad9a949c","ac38f9ccc10049dd76ddfb68a4ac6647d36656d62d4c01cd32ce1386e6e56758","210a682e78eed1c7aae6824de615032daaf3fc60c2b0cd3720200b6d61f9fd19","3e39c53f8d84f8cab50817a177664b09180a2d7eebac4583789268f9fd589b84","ab05daec0e36402aa878f9e6bce5bbb4ca1766771a40287cc253744045349777","ecfca193bd5f4c5a96cdca608fcc5bdec30439d0648bc90795cabbe07927b777","26b70c898ac9086bfb061fa451c96bf0e67e0281cb8404c72bc4b8bed45670af","152038e0f63f7fc9fd01dda2cd7e6d2a702841959b9a81c8c0d412947615d145","50d566d584d04608d6e06d8c544c234253af732c73f998363ddb3a04a2df4e05","85c1a4cf9f573ed7cb65596d82d315157ac03ff6914f578e6f0fdbca356557c7","a38a716bf00f98c44b63ea11a8f02dd1d7cc33deb445db79dd48f6ea50a93faf","2c010aad4ced0c836ea0c5d8b0465afe128c6dfab0fc0486df89e01d831128bf","4e6ff96a2db4fd3831ff16dc907e51fa41c417c57771712ab528db763eefc30d","e421033924a00045db6c0f30c05c1c008077828a39530fb5c742179eb56c28ed","33cae5e413c0ce1edeffeb0657a12b37e123a0eac472717561412d262f01f796","7864d42f488cf277d879b29b952dec989e11b02b4c04cf99595cbfafaf4a3775","28590f619daef2aa1a464e777b9270824e2609ba30c482242f6abb0dc267c36f",{"version":"6cdbee86dee84fb542031c68129cc8f8efbf0008a8b56fc6b591046210abfbd1","signature":"268cc264987659f1004c96042c9c43c20aab8f07862bb9c5d2b981103eb1457c"},{"version":"8f2197b0dffc3ff813593d3fd7c5326da100cbe5e5ae92327839e0d46c945cb0","signature":"535e350b9ca571e087fb0d441e2de5d2f2984265e07ee4fbaf48c3aa6e745d49"},"b7f5a08a542459965e03364a10ce321d28eb5dc96c7cef00a48cb89e455f8532","7d69ac79c9de7620a1bdd926fd4b20b8e968d6467a220eac2a836988ab47c933","d350fc146b46550e424850ab9f7e7d8951156584dbd27bf493e37d7d2300af87","51df45d44f1a2052bd14063736f385bfbdcfee3759fa5597c89f62b3bbdb02e5","10b2bb0a74b12ecbab5003ff91aa8b3da674f81a5d72fdd6f998bfaf664948c8","c5517fd5758cee081b157b90a8d1bd3f300e366d0597270ed30e9c0d72125c2d","3f4fe2fe5f1425cb3e04f5c898d990a1925a7c8a84548a4804f831cfaa2194cb","6ff754e93a1ef94f7a92e7f6f9b67357f3b25836ab36d66202d1d07343186ab7","504f64fcde588e7650963530c4108c700d2bf56e7c381a713e09c106987e9e3c","2ead83b6c419298ed2162580de49d95ea821f323ce5c9ea852b5d48c24b213a3","0f8a91a725deb2bc4f3d64760262135d51a7f5b27e0749424ea90218b719461c","bbcd30d53884212c228ff7e76c17ac9b1a928cdf5b8f427a71194c811a5d714d","1fe41493efdde00b7f7b326310cba7ea78bb55ff75ade0f21f788e1cda8fe9ed","48533e135178c91d9abe0789d1c09802696a42985217396ccfcfd1034a099a0e","dcaef7f7c1f0cb2dba19a1a70cc8d5276faa68e50bc69d6a006d3aaaaa9f7aa7","ffd67adf9464cf9bcddc3954fcd27d59b60e85acb02101fefe8b0eb642a2be2f","fc5a1e87e350e2e8be13fb933ab2b992b1191adaa9e7c5c5cbeb324ddf735130",{"version":"3b8f11465b65790afe276d4492c9d7aa0f2e77daeab9226e3df8509f3ec07354","signature":"79f979b9f84ca0e46aacfc04dc7849991e46425604a62d539eb00a0fb9bb0dac"},{"version":"d4ecb57b6ef0c3bdce8c006166ef105c60fcee7f732806c9ee81277b66cacd53","signature":"8babb4c4f48649d024bdbeef0c5bdab6625a0f20edd3e20d28e5e0b1acef358a"},{"version":"2dd25278c59e31b46f724accc015e800abcd663bf78f751d7db8e519e7ab66e4","signature":"f30b56d3e2f291bf1069236ac96b66751ff197465ea123aa5959e3c0629e98bd"},{"version":"80dd8b0a6a7ba48512e8468f59184a13353f8dee38b6188aa7023a1c2b5362e7","signature":"38a76a95e5f9ec676804e1f7cd9b2ab0cd46f59a21ac5fe08081352413b29421"},{"version":"089156ee8c662fc7994e505bb92f51e2ee3d35320c86c06881aaa451546dc7a6","signature":"5544c2af7ff781b56ab78a636432e0c005cfe2358409e1e30c9f2e95b06199e2"},{"version":"373df17bbce2a80361fa3cff5e10ff6b06cf7b549f58f323d4738f2dbd2ef063","signature":"d9921ca6c23a4c37a9e9e6ffc745d1479179b935ef43345bb0226d11ed322dcb"},{"version":"06a208a7a03d6106fa9edfda98e6c1b01770f065d0ee8d9a0f5d3ed5da7a23f6","signature":"acd55c83d5f147f1261e9bf661a9d9fd294591547ceb3d04d478a442b0a9c9c6"},{"version":"10ff988e2c2ab8ea0537d0cd6217b8c1b4ab0a1b7b43a4769d4b1d3782915ae4","signature":"de06b0c86ca2d89fbaf2a13a72ab5fc755c40e044fa57c8bb38730efd3261022"},{"version":"9b7f0e521e1b4596b39063a0a979487583842211bfd427293b3b8b7bdfa828f5","signature":"d00193c90510e72ce2388a023e353fe46b5cdf19422f5161b9850335a986da2a"},{"version":"5d1a7a46f218bd927028130607a8c552656d4fe8cedaa57efcbf810c6477b09f","signature":"49f95af249a13fe4d6a4e010f6c962a3ad0b8c04b8239776860d739a6c7aebec"},{"version":"2717f6454b3dbb8a7cf5acbbd2f48209ba6d126d736cd858c5b5687ee2652aae","signature":"0c15c7a95261653c1d169de2acd460951fd2da86797be3d66bae181229913028"},{"version":"60b08c9a49795ae888a0c2e9c749470619196d38649eccb3b6a72299707814d0","signature":"42fd47b89f4fd4d1182b4dabb6cf21a207aecc9f18b9c64375a905f71ba7e27e"},{"version":"de2ca6e8f7b95566cde68e681726e04b9ba9e5adc979994fb8c013994e90d86c","signature":"1435e8f6c5c4a872b7ccdd524445c2c0a3841c514f278e9f7fe89dd27f51e22c"},{"version":"4b0cfe9110b745df569d1ae33ad25b968107400285f79d198dc5f08bfcebe7ee","signature":"9252525bdbffa14530825b1742cc1dbac04dd14d6da54858b1e0f10b13d9486a"},{"version":"478ebcfc229746b9e8921c62821870d299c512028dd3841a94884f89c99e14a0","signature":"086cba5e2c20c4c1bd96751364704784fc769c874f961d49511e8a71eb455635"},{"version":"1af30eb6d6b8cbf8c271e9574e0be812a65207e965e37fbe98c7ccd5109c2fb6","signature":"2a7fa42ab3eea43bd9ea8b87a44d66dd187e6b9bd3a92dfac9b94456cd3ee542"},{"version":"05300da7f9381e3535f5713e8448daca93c16e76522b4ed3cb90d643d1ff6751","signature":"05129746e5b08d401ebb1d0286ea7446ac7c867a003dc9c1e4f6ea8e546b4024"},{"version":"3384e38ce8f3eb163e0ff56f6a982a0677f797ba4657eb371214a1a45f32dd14","signature":"57800819a8bf58defe43f6529d610a62678fc94f0df6dd9c463a68fa795d8a5e"},{"version":"c5120a61318f05d981353cc67de4488219516d3bc06c7eb59c764cf94a1374c7","signature":"e174a43044ea557509070815d09a9bad989b1360808b43ca3451ee44391ec49e"},{"version":"3a3882ee0651c8d8ae087c6f34ea75908443ec2cb3457982a162f0cb73dacd64","signature":"37791c8e17a2d09885af3ae90cbf37cfc007d054422efca32fde77600aae2a56"},{"version":"b4f81c99b4783307322c0dda97fa6b295e53ca5c3749bb46dd46ff65114c7939","signature":"19bb513d1d82c0c13dfae8bd4609fdd77d257b213bb6286e2873abac15599b22"},{"version":"7cd4b54cf3a9402b0ae2fce241da97f59b33c69b5aca0f916630c7e8050e0b89","signature":"b3a57d9eea1fff68e106cc6489a3853c0402bd014eb827967e684953192d3907"},{"version":"a53d3edaf0b513e725872307d4cfa5f6f5b7476f3828320c46a0c131a806edac","signature":"7a5c1f79f55d6cfaf4adc1943e71e323072a0225ba261d2d8ba3a7eaec79205f"},{"version":"ed2d12697e79b8bbe30b6291bbe5584e29cc426935bcb85f536259cc3b2e32fd","signature":"df41724512f2db139638e0b6a09b99d34e8b7716e0966a19dbb618b9bd8e68f4"},{"version":"0ec5a2b5c22249e2a811e27a2cc368769e007da4d3bff555ab651bc5b714cb2f","signature":"93a3fb96944991bd0c3e262b895ae90e7166670cc7de56a018d026664ad3839c"},{"version":"35a1eb1c55a2d086ba888a0a535a0939f44b123933a812a1b8e8bb3843762827","signature":"8e75557ea51b03d65950ff837701891eb1b6a6d8d3047d67c288daa208de8cc9"},{"version":"4fb8c0cc9c3c0f02789eb46932de57ff337f279eed83405ab60c7fabbffd2479","signature":"dc8beebd62666f0f499f3d19afcd511268409762b733344538c18dd9d269102e"},{"version":"475c1c69558ea9267615a81295d7a68a80a50406c1bedab5bad2a717dc172ac7","signature":"d61c99152b49569aa8f1fb7f987505ac3729c61921dbbf8e2f56c8c5240fa1d1"},{"version":"e4a1fdee7f0aa189d0e187c268718677d19a64348e412f03f6ff0c2f49af6602","signature":"24814150d755e4554fb76b7c9f35f5a2a52c1b13038ddcf30577cf3dc7e1afee"},{"version":"b1f8280cf0bdbe930233ae48df96b6a871a7f24fc0d32f04e6e22f7d84daa529","signature":"b7e105389681fd52ac69f81882168ec249a2b06b1462734e47e8e8d72d8aa702"},{"version":"fe3d7c154d26ff780ce2239874b4ef7b94108e57d2050dd796722f79852378f7","signature":"18ddf6d4cc9e115d8a6c97a4a0f590c0f16e06e862fbf9992486fcbcfe611a55"},"1c2cd862994b1fbed3cde0d1e8de47835ff112d197a3debfddf7b2ee3b2c52bc",{"version":"516456888ee35d15a2ac3251216d4ca74999771d07c74507a47f22b2c1d7bdfc","signature":"e1552ab0a1a905e2691c385fbdb013f1f25a5a107f28b6fcc3ac44a056922b6a"},{"version":"99987da8cb0b1b27bbcddbca60376d800be527d649a32aa781dfe8ec187fb213","signature":"7ea150f4885475bd11eee026a3d814ae5bebe0c75e89cdf1de8598e3d0308cb2"},{"version":"84730371cb2c4d2821dd103664fcc0f36fec131db9d81a95059f012cfe6bf71c","signature":"3a55e43a9939604ac49f7ec7d51dbe29d01cc88e3035842dbf8125e7cfeb70e2"},{"version":"9aa8a1d15fb1eb78be9fc60e652ac7388ac2d9373b65f68b91d01b73a900d1e9","signature":"e7dcdfa55263d1e25ec069f2a5961820ef5adfa15a872df7db2c681c0eb8b7fc"},{"version":"453b6132c4e5a437d8fbe148db55e01daadef090818737f1b706b40fbb197876","signature":"c0384b32d0cef8db8f7b425685516208c102a7e82533beb3369bc31bb17f9c08"},{"version":"f040b03e287f16c159aaa7ced52f6f698d6f553f2a09420b2c982cfba9cf36fe","signature":"62cfd6415b218eb3b90df0478f308a7cf0a2cf6786297f9554f69d97a60fb8ed"},{"version":"acdee84c35995bc5294cbd087e3dc9e93a936c34ab96c47a1d5c2bf3b3dbae08","signature":"c027ce91cb2fcdde8a40fca63422cc34ff33fb50cdc57d35c474549b64e2c80f"},{"version":"412fd0eadc97e066a549ff62f47b483d46f4129e30f73232c7e8b08e9115c2ab","signature":"c4c88392a90c5f81574222e3d3b04616bbe5b33629df1aa6575ed97f8c0ce025"},{"version":"7650de377ba0cccdfaba9b01da4697b87be6103bd362827b35f014feceb61bde","signature":"e03f059fea2a127ec145b680750d40578b15493e13e24604fca4b77c383b5b7d"},{"version":"324383a4e96308630863afd6804bbb419412aa51db51cceddd1ebdc110b53f26","signature":"81edd44b1cc80a705e38f13a4c9238f25ff8181147f1c729f28c00b5ae539eec"},{"version":"c825dba4b5489155fb0725797c2ab97bd601f2c191c9f5fded28e168bac04f64","signature":"d937f0bfda15358170835d7ef7af1aac1efe35779167a30fe397b492485e20ce"},"0b4bc32128fda7bb0752cf284730dd3a817aae04a3d7f92e3b2d54bd61362fe1","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"5f290ea7efbe9d8431e10df12c0d5672b67988e7c171c2d356749fac70347a55","affectsGlobalScope":true},"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89",{"version":"49c89f8fa09d21c161e6a367448639e032f42d77cc2ec8ab54ecb8fa9a3ad59f","affectsGlobalScope":true},"e4b50850c2a62c7750428e452ee24b167180104d514d5e5c0ca691753365f610","304504c854c47a55ab4a89111a27a2daf8a3614740bd787cc1f2c51e5574239c",{"version":"95f9129a37dcace36e17b061a8484952586ecfe928c9c8ce526de1a2f4aaefa7","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","0f9061846236850a872cb44097d071631e93c8749a8b16c191fe3c2a48faede4","e46fa644658c2d6e5c85e954ea76b92c97d63f0851d3ccdab8c2a80d5962aaa9","1c611ff373ce1958aafc40b328048ac2540ba5c7f373cf2897e0d9aeaabe90a0","a307d22a0130ac94c1a17fffa6d57ac272deb5838cb966a9420911d259cdf1be","d2e415abf6cb81ac9e2700b4db5ea7be76b997e812285b8e5e1e414eb2750b6e","09d6cebdced6aa1181ac1523c8f22a133f5ed80589678b64051f0602f0518374",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"7c35691dc3972ff1507d8dd279d833f540973d0917bde22e191cf7a8feaac29f","affectsGlobalScope":true},"62662d7a886e5cfa870685720fd27b763743ca4d2cf29326f75d76606a64eadd","b8c670688bd228d3cc9c169690b09b687188c50ff263a94df63b207701105ad9","d8e16905907111390d5a943816306ae997dfe56476f14142166f8b13ee322eea","8068c911a1c40bc6c5ffc58c625b21d807778f6aa6d63a73e6f04f88bcac5b79","a1dbce56ad5f3a37caafb9033c9d190a199217d673f5fa099c8968d471a2fdaa","c6f77efcc19f51c8759779b6b6ee0d88046c15c15dadac8ffed729a6620daf39",{"version":"089867511b37a534ae71f3d9bc97acc0b925b7f5dbec113f98c4b49224c694eb","affectsGlobalScope":true},"269d0ea3202820c29a32c1f2a357837a4f1918426844f7e7c90af15ec40d1dc1","66432f885e30cf471573de22a5af5eca9ab46b37b122aec98beadf77e9b7df24","323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c",{"version":"034e635df3c014df1d6b1110b724ca0c4d2d324b45a84974c7d6931f9cf95ea7","affectsGlobalScope":true},{"version":"87f9456115554cb0f78f098ddbd585096871c19d2d05274c1b1b4ade3151da78","affectsGlobalScope":true},"ea3ab3727cd6c222d94003ecafa30e8550c61eadcdabbf59514aee76e86211a5","d3cdd41693c5ed6bec4f1a1c399d9501372b14bd341bc46eedacf2854c5df5a7","2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","da618f0ea09d95c3b51514de43bf97dab008c85bede58aa57cf95e4984c7c957","48a35b181ecf47dbbc0a7ab4b5ba778d91eaa838ba42bf4aaaead42be77ef39a","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","5195aeb0de306d1c5ca8033457fbcab5987657112fa6d4971cfeb7644493a369","c5dbf0003bc9f0f643e54cd00a3868d1afe85497fecb56be6f2373dc85102924",{"version":"ce73eb199c4bf96c015f069aac161488ed73ebeaea3d87b6d5aa9a968a7b38d4","affectsGlobalScope":true},{"version":"300f8e9de0b0c3482be3e749462b6ebc3dab8a316801f1da0def94aed0cd2018","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","962f105729d5b888c8b70e193f6020ee92c6c8144c827de40f80d65dd188ad7f","ac74e2b754fba690036f8221d978f6debb867462b87af254f24e924b677395d0","80858f6de9af22e53aff221fe3590215ea544c2aeb2cc60cf8e08a9c785c8fef",{"version":"068b8ee5c2cd90d7a50f2efadbbe353cb10196a41189a48bf4b2a867363012b4","affectsGlobalScope":true},{"version":"340659b96782f5813aad6c1f89ea1b83b2f3fa993115c7b30366375d9bae5a4e","affectsGlobalScope":true},"6f44a190351ab5e1811abebe007cf60518044772ccc08244f9f241706afa767f","fecdf44bec4ee9c5188e5f2f58c292c9689c02520900dceaaa6e76594de6da90","cf45d0510b661f1da461479851ff902f188edb111777c37055eff12fa986a23a",{"version":"895ca532c15c77cbb6a871af1870b57bcd0ca4f38a1bd69669dd0e95bb58565a","affectsGlobalScope":true},"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","e222104af6cb9415238ad358488b74d76eceeff238c1268ec6e85655b05341da","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","eba230221317c985ab1953ccc3edc517f248b37db4fef7875cb2c8d08aff7be7","b83e796810e475da3564c6515bc0ae9577070596a33d89299b7d99f94ecfd921","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"f624e578325b8c58e55b30c998b1f4c3ec1b61a9fa66373da4250c89b7880d44","affectsGlobalScope":true},{"version":"d3002f620eab4bf6476c9da5c0efb2041d46f7df8b3032a5631bd206abef2c75","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noImplicitAny":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"target":1},"fileIdsList":[[45],[225,227],[221,222],[221,222,223,224],[226],[228],[134],[170],[171,176,204],[172,183,184,191,201,212],[172,173,183,191],[174,213],[175,176,184,192],[176,201,209],[177,179,183,191],[170,178],[179,180],[183],[181,183],[170,183],[183,184,185,201,212],[183,184,185,198,201,204],[168,217],[179,183,186,191,201,212],[183,184,186,187,191,201,209,212],[186,188,201,209,212],[134,135,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219],[183,189],[190,212,217],[179,183,191,201],[192],[193],[170,194],[195,211,217],[196],[197],[183,198,199],[198,200,213,215],[171,183,201,202,203,204],[171,201,203],[201,202],[204],[205],[170,201],[183,207,208],[207,208],[176,191,201,209],[210],[191,211],[171,186,197,212],[176,213],[201,214],[190,215],[216],[171,176,183,185,194,201,212,215,217],[201,218],[145,149,212],[145,201,212],[140],[142,145,209,212],[191,209],[220],[140,220],[142,145,191,212],[137,138,141,144,171,183,201,212],[137,143],[141,145,171,204,212,220],[171,220],[161,171,220],[139,140,220],[145],[139,140,141,142,143,144,145,146,147,149,150,151,152,153,154,155,156,157,158,159,160,162,163,164,165,166,167],[145,152,153],[143,145,153,154],[144],[137,140,145],[145,149,153,154],[149],[143,145,148,212],[137,142,143,145,149,152],[171,201],[140,145,161,171,217,220],[45,49],[49],[45,49,75],[74,75,76,77,79,80,81,82,83,84,85,86,87,88,89],[49,87],[45,49,85],[45,49,75,78],[49,71],[45,49,118],[49,71,118],[49,98,99,100,102,107,110,112,114,119],[49,71,94,116,117,118,120],[96],[96,111],[98,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,115],[96,97],[94,96,97],[45,49,71,72,94,95,96,119,120,132],[45,124],[45,127],[45,90],[45,49,71,73,90,94,96,118,119,121,122,123,124,125,126,127,128,129,130,131],[45,49,90],[49,71,91,92,93],[45,49,71,90,94,95,119],[65,66,67,68,69],[50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,70],[44,45],[44,46,47,48],[43],[43,44],[49,118],[49,98,99,100,102,107,110,112,114],[49,94,116,118],[94],[49,72,94,96,119,120,132],[49,93],[49,94]],"referencedMap":[[122,1],[228,2],[223,3],[225,4],[224,3],[227,5],[229,6],[134,7],[135,7],[170,8],[171,9],[172,10],[173,11],[174,12],[175,13],[176,14],[177,15],[178,16],[179,17],[180,17],[182,18],[181,19],[183,20],[184,21],[185,22],[169,23],[186,24],[187,25],[188,26],[220,27],[189,28],[190,29],[191,30],[192,31],[193,32],[194,33],[195,34],[196,35],[197,36],[198,37],[199,37],[200,38],[201,39],[203,40],[202,41],[204,42],[205,43],[206,44],[207,45],[208,46],[209,47],[210,48],[211,49],[212,50],[213,51],[214,52],[215,53],[216,54],[217,55],[218,56],[152,57],[159,58],[151,57],[166,59],[143,60],[142,61],[165,62],[160,63],[163,64],[145,65],[144,66],[140,67],[139,68],[162,69],[141,70],[146,71],[150,71],[168,72],[167,71],[154,73],[155,74],[157,75],[153,76],[156,77],[161,62],[148,78],[149,79],[158,80],[138,81],[164,82],[74,83],[77,84],[76,85],[90,86],[88,87],[87,84],[89,88],[85,83],[86,88],[79,89],[81,83],[84,84],[80,84],[83,1],[82,1],[72,90],[124,91],[126,92],[73,1],[120,93],[119,94],[106,95],[105,95],[112,96],[104,95],[113,96],[116,97],[110,95],[100,95],[102,95],[99,95],[98,98],[115,95],[103,95],[101,95],[109,95],[107,95],[114,99],[108,95],[121,1],[133,100],[129,1],[125,101],[128,102],[130,1],[131,103],[127,1],[132,104],[123,105],[93,90],[94,106],[96,107],[70,108],[50,84],[71,109],[57,1],[55,1],[56,1],[53,84],[59,84],[62,84],[61,84],[52,84],[46,110],[49,111],[44,112],[48,113]],"exportedModulesMap":[[122,1],[228,2],[223,3],[225,4],[224,3],[227,5],[229,6],[134,7],[135,7],[170,8],[171,9],[172,10],[173,11],[174,12],[175,13],[176,14],[177,15],[178,16],[179,17],[180,17],[182,18],[181,19],[183,20],[184,21],[185,22],[169,23],[186,24],[187,25],[188,26],[220,27],[189,28],[190,29],[191,30],[192,31],[193,32],[194,33],[195,34],[196,35],[197,36],[198,37],[199,37],[200,38],[201,39],[203,40],[202,41],[204,42],[205,43],[206,44],[207,45],[208,46],[209,47],[210,48],[211,49],[212,50],[213,51],[214,52],[215,53],[216,54],[217,55],[218,56],[152,57],[159,58],[151,57],[166,59],[143,60],[142,61],[165,62],[160,63],[163,64],[145,65],[144,66],[140,67],[139,68],[162,69],[141,70],[146,71],[150,71],[168,72],[167,71],[154,73],[155,74],[157,75],[153,76],[156,77],[161,62],[148,78],[149,79],[158,80],[138,81],[164,82],[74,83],[77,84],[76,85],[90,86],[88,87],[87,84],[89,88],[85,83],[86,88],[79,89],[81,83],[84,84],[80,84],[83,1],[82,1],[72,84],[124,91],[126,114],[73,1],[120,115],[119,116],[116,97],[114,117],[121,1],[133,118],[129,1],[125,1],[128,1],[130,1],[131,1],[127,1],[132,84],[123,83],[93,84],[94,119],[96,120],[70,108],[50,84],[71,109],[57,1],[55,1],[56,1],[53,84],[59,84],[62,84],[61,84],[52,84],[46,110],[49,111],[44,112],[48,113]],"semanticDiagnosticsPerFile":[122,45,228,221,223,225,224,222,227,226,229,134,135,170,171,172,173,174,175,176,177,178,179,180,182,181,183,184,185,169,219,186,187,188,220,189,190,191,192,193,194,195,196,197,198,199,200,201,203,202,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,136,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,34,7,35,40,41,36,37,38,39,1,42,152,159,151,166,143,142,165,160,163,145,144,140,139,162,141,146,147,150,137,168,167,154,155,157,153,156,161,148,149,158,138,164,74,77,76,90,88,87,89,85,86,79,81,75,84,80,78,83,82,72,124,126,118,73,120,119,106,105,112,104,113,116,110,100,102,99,98,115,103,101,109,107,114,108,111,121,133,129,95,125,128,130,131,127,132,97,123,92,93,94,91,96,117,69,66,65,70,67,68,50,71,57,55,56,64,53,60,54,59,63,58,62,51,61,52,47,46,43,49,44,48]},"version":"4.9.5"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import { UIDLElementNode, UIDLNode } from '@teleporthq/teleport-types';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Not part of the generation pipeline.
|
|
4
|
+
*
|
|
5
|
+
* Array-mapper pagination is generated by `pagination-plugin.ts` (with
|
|
6
|
+
* `numbered-pagination.ts`, `infinite-scroll.ts` and `pagination-controls.ts`).
|
|
7
|
+
* This module models an older client-side slicing design and is kept only
|
|
8
|
+
* because it is re-exported from the package index; nothing in the pipeline
|
|
9
|
+
* calls it. Add nothing here — the two would drift apart in silence.
|
|
10
|
+
*/
|
|
2
11
|
export interface ArrayMapperPaginationInfo {
|
|
3
12
|
paginationNodeId: string;
|
|
4
13
|
dataSourceIdentifier: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-mapper-pagination.d.ts","sourceRoot":"","sources":["../../src/array-mapper-pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAGtE,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,eAAe,CAAA;IAC/B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,kBAAkB,EAAE,CA2CxE;AAED,wBAAgB,uBAAuB,CACrC,gBAAgB,EAAE,MAAM,EACxB,oBAAoB,EAAE,MAAM,EAC5B,OAAO,GAAE,MAAW,EACpB,YAAY,CAAC,EAAE;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EACjE,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,yBAAyB,CA+B3B"}
|
|
1
|
+
{"version":3,"file":"array-mapper-pagination.d.ts","sourceRoot":"","sources":["../../src/array-mapper-pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAGtE;;;;;;;;GAQG;AAEH,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,eAAe,CAAA;IAC/B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,kBAAkB,EAAE,CA2CxE;AAED,wBAAgB,uBAAuB,CACrC,gBAAgB,EAAE,MAAM,EACxB,oBAAoB,EAAE,MAAM,EAC5B,OAAO,GAAE,MAAW,EACpB,YAAY,CAAC,EAAE;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EACjE,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,yBAAyB,CA+B3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-mapper-pagination.js","sourceRoot":"","sources":["../../src/array-mapper-pagination.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"array-mapper-pagination.js","sourceRoot":"","sources":["../../src/array-mapper-pagination.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as types from '@babel/types';
|
|
2
|
+
/**
|
|
3
|
+
* The client-side "how many rows match?" fetch that drives `ds_N_maxPages`.
|
|
4
|
+
*
|
|
5
|
+
* One builder for every caller, because the two hand-written copies had already
|
|
6
|
+
* drifted: the search-enabled list sent the query, the columns and the filters,
|
|
7
|
+
* while the paginated-only list fetched a bare `/api/<file>-count` with NO
|
|
8
|
+
* params at all — so a filtered list counted the WHOLE table and "Next" stayed
|
|
9
|
+
* enabled long past the end of the filtered results.
|
|
10
|
+
*
|
|
11
|
+
* The endpoint deliberately receives no `sorts` and no `limit`: ordering cannot
|
|
12
|
+
* change how many rows match, and a limit would count the page rather than the
|
|
13
|
+
* result set.
|
|
14
|
+
*/
|
|
15
|
+
interface CountEffectOptions {
|
|
16
|
+
/** `<fileName>-count` is the generated API route. */
|
|
17
|
+
fileName: string;
|
|
18
|
+
/** Divisor for the page count; the mapper's resolved `perPage`. */
|
|
19
|
+
perPage: number;
|
|
20
|
+
/** Name of the `setDs_N_maxPages` setter. */
|
|
21
|
+
setMaxPagesVar: string;
|
|
22
|
+
/**
|
|
23
|
+
* Params sent to the count endpoint: the search query (when the list has
|
|
24
|
+
* one), `queryColumns`, and the filter array. Built by the caller because
|
|
25
|
+
* only it knows how this usage's filter destinations resolve to expressions.
|
|
26
|
+
*/
|
|
27
|
+
urlParams: types.ObjectProperty[];
|
|
28
|
+
/** Dependencies that should re-run the count. */
|
|
29
|
+
deps: types.Expression[];
|
|
30
|
+
}
|
|
31
|
+
export declare const buildCountFetchStatement: (options: Pick<CountEffectOptions, 'fileName' | 'perPage' | 'setMaxPagesVar' | 'urlParams'>) => types.Statement;
|
|
32
|
+
/**
|
|
33
|
+
* The whole `useEffect(...)` wrapper.
|
|
34
|
+
*
|
|
35
|
+
* ⛔ No skip-on-mount guard, on purpose: a page seeds `maxPages` from the
|
|
36
|
+
* build-time `getStaticProps` count, and that snapshot goes stale the moment
|
|
37
|
+
* rows are added after the build — leaving "Next" disabled on a list that has
|
|
38
|
+
* grown. Re-counting on mount is what corrects it.
|
|
39
|
+
*/
|
|
40
|
+
export declare const buildCountFetchEffect: (options: CountEffectOptions) => types.ExpressionStatement;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=count-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"count-effect.d.ts","sourceRoot":"","sources":["../../src/count-effect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;;;;;;;;;;GAYG;AAEH,UAAU,kBAAkB;IAC1B,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,SAAS,EAAE,KAAK,CAAC,cAAc,EAAE,CAAA;IACjC,iDAAiD;IACjD,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,CAAA;CACzB;AA6BD,eAAO,MAAM,wBAAwB,YAC1B,KAAK,kBAAkB,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,GAAG,WAAW,CAAC,KACzF,MAAM,SA0DN,CAAA;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,YAAa,kBAAkB,KAAG,MAAM,mBAMvE,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as types from '@babel/types';
|
|
2
|
+
/**
|
|
3
|
+
* `data.count === 0 ? 0 : Math.ceil(data.count / perPage)`
|
|
4
|
+
*
|
|
5
|
+
* Zero is special-cased rather than left to `Math.ceil(0 / n)` so the intent —
|
|
6
|
+
* "no results at all", which numbered pagination renders as an empty strip — is
|
|
7
|
+
* visible in the generated code.
|
|
8
|
+
*/
|
|
9
|
+
var buildMaxPagesExpression = function (perPage) {
|
|
10
|
+
return types.conditionalExpression(types.binaryExpression('===', types.memberExpression(types.identifier('data'), types.identifier('count')), types.numericLiteral(0)), types.numericLiteral(0), types.callExpression(types.memberExpression(types.identifier('Math'), types.identifier('ceil')), [
|
|
11
|
+
types.binaryExpression('/', types.memberExpression(types.identifier('data'), types.identifier('count')), types.numericLiteral(perPage)),
|
|
12
|
+
]));
|
|
13
|
+
};
|
|
14
|
+
export var buildCountFetchStatement = function (options) {
|
|
15
|
+
return types.expressionStatement(types.callExpression(types.memberExpression(types.callExpression(types.memberExpression(types.callExpression(types.identifier('fetch'), [
|
|
16
|
+
types.templateLiteral([
|
|
17
|
+
types.templateElement({
|
|
18
|
+
raw: "/api/".concat(options.fileName, "-count?"),
|
|
19
|
+
cooked: "/api/".concat(options.fileName, "-count?"),
|
|
20
|
+
}),
|
|
21
|
+
types.templateElement({ raw: '', cooked: '' }),
|
|
22
|
+
], [
|
|
23
|
+
types.newExpression(types.identifier('URLSearchParams'), [
|
|
24
|
+
types.objectExpression(options.urlParams),
|
|
25
|
+
]),
|
|
26
|
+
]),
|
|
27
|
+
]), types.identifier('then')), [
|
|
28
|
+
types.arrowFunctionExpression([types.identifier('res')], types.callExpression(types.memberExpression(types.identifier('res'), types.identifier('json')), [])),
|
|
29
|
+
]), types.identifier('then')), [
|
|
30
|
+
types.arrowFunctionExpression([types.identifier('data')], types.blockStatement([
|
|
31
|
+
types.ifStatement(types.logicalExpression('&&', types.identifier('data'), types.binaryExpression('in', types.stringLiteral('count'), types.identifier('data'))), types.blockStatement([
|
|
32
|
+
types.expressionStatement(types.callExpression(types.identifier(options.setMaxPagesVar), [
|
|
33
|
+
buildMaxPagesExpression(options.perPage),
|
|
34
|
+
])),
|
|
35
|
+
])),
|
|
36
|
+
])),
|
|
37
|
+
]));
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* The whole `useEffect(...)` wrapper.
|
|
41
|
+
*
|
|
42
|
+
* ⛔ No skip-on-mount guard, on purpose: a page seeds `maxPages` from the
|
|
43
|
+
* build-time `getStaticProps` count, and that snapshot goes stale the moment
|
|
44
|
+
* rows are added after the build — leaving "Next" disabled on a list that has
|
|
45
|
+
* grown. Re-counting on mount is what corrects it.
|
|
46
|
+
*/
|
|
47
|
+
export var buildCountFetchEffect = function (options) {
|
|
48
|
+
return types.expressionStatement(types.callExpression(types.identifier('useEffect'), [
|
|
49
|
+
types.arrowFunctionExpression([], types.blockStatement([buildCountFetchStatement(options)])),
|
|
50
|
+
types.arrayExpression(options.deps),
|
|
51
|
+
]));
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=count-effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"count-effect.js","sourceRoot":"","sources":["../../src/count-effect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresql.d.ts","sourceRoot":"","sources":["../../../src/fetchers/postgresql.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"postgresql.d.ts","sourceRoot":"","sources":["../../../src/fetchers/postgresql.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,yBAAyB,WAC5B,OAAO,MAAM,EAAE,OAAO,CAAC,aACpB,MAAM,KAChB,MA8QF,CAAA;AAED,eAAO,MAAM,8BAA8B,WACjC,OAAO,MAAM,EAAE,OAAO,CAAC,aACpB,MAAM,KAChB,MA8FF,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { replaceSecretReference, generateDateFormatterCode, generateSafeJSONParseCode, generateSearchEscapeHelpersCode, } from '../utils';
|
|
2
|
+
import { generateSortFallbackFieldHelper, generateSortFieldSqlHelper, generateSortTiebreakSql, } from '../product-price-sort';
|
|
2
3
|
export var generatePostgreSQLFetcher = function (config, tableName) {
|
|
3
4
|
var _a;
|
|
4
5
|
var pgConfig = config;
|
|
@@ -10,7 +11,7 @@ export var generatePostgreSQLFetcher = function (config, tableName) {
|
|
|
10
11
|
: pgConfig.sslConfig
|
|
11
12
|
? "{\n ".concat(pgConfig.sslConfig.ca ? "ca: ".concat(replaceSecretReference(pgConfig.sslConfig.ca), ",") : '', "\n ").concat(pgConfig.sslConfig.cert ? "cert: ".concat(replaceSecretReference(pgConfig.sslConfig.cert), ",") : '', "\n ").concat(pgConfig.sslConfig.key ? "key: ".concat(replaceSecretReference(pgConfig.sslConfig.key), ",") : '', "\n rejectUnauthorized: false\n }")
|
|
12
13
|
: '{ rejectUnauthorized: false }', "\n }");
|
|
13
|
-
return "import { Client } from 'pg'\n\nconst getClient = () => {\n return new Client(".concat(clientConfig, ")\n}\n\n").concat(generateSafeJSONParseCode(), "\n\n").concat(generateSearchEscapeHelpersCode(), "\n\n// Helper function to process filters and build conditions\nconst processFilters = (filters, conditions, queryParams, paramIndex) => {\n if (!filters) return paramIndex\n \n const parsedFilters = safeJSONParse(filters)\n \n if (Array.isArray(parsedFilters)) {\n parsedFilters.forEach((filter) => {\n if (!filter.source || filter.destination === undefined) return\n \n const field = filter.source\n const value = filter.destination\n const operand = filter.operand || '='\n \n if (Array.isArray(value)) {\n if (value.length === 0) return\n if (operand === 'array_overlap') {\n conditions.push(`jsonb_exists_any(NULLIF(${field}, '')::jsonb, $${paramIndex}::text[])`)\n queryParams.push(value.map((entry) => String(entry)))\n paramIndex++\n return\n }\n const placeholders = value.map(() => `$${paramIndex++}`)\n queryParams.push(...value)\n if (operand === '!=') {\n conditions.push(`${field} NOT IN (${placeholders.join(', ')})`)\n } else {\n conditions.push(`${field} IN (${placeholders.join(', ')})`)\n }\n } else {\n if (operand === 'array_overlap') {\n if (value === '' || value === null || value === undefined) return\n // A single comma-joined string (the multi-select Category Filter's\n // ?categoryFilter=a,b,c) expands to multiple ids; one id stays one.\n const overlapValues = String(value).split(',').map((entry) => entry.trim()).filter(Boolean)\n if (overlapValues.length === 0) return\n conditions.push(`jsonb_exists_any(NULLIF(${field}, '')::jsonb, $${paramIndex}::text[])`)\n queryParams.push(overlapValues)\n paramIndex++\n return\n }\n if (value === null) {\n if (operand === '=') {\n conditions.push(`${field} IS NULL`)\n } else if (operand === '!=') {\n conditions.push(`${field} IS NOT NULL`)\n }\n } else {\n const validOps = ['=', '!=', '>', '<', '>=', '<=']\n const sqlOperator = validOps.includes(operand) ? operand : '='\n conditions.push(`${field} ${sqlOperator} $${paramIndex}`)\n queryParams.push(value)\n paramIndex++\n }\n }\n })\n } else {\n Object.entries(parsedFilters).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n const placeholders = value.map(() => `$${paramIndex++}`)\n queryParams.push(...value)\n conditions.push(`${key} IN (${placeholders.join(', ')})`)\n } else {\n conditions.push(`${key} = $${paramIndex}`)\n queryParams.push(value)\n paramIndex++\n }\n })\n }\n \n return paramIndex\n}\n\n").concat(generateDateFormatterCode(), "\n\nexport default async function handler(req, res) {\n const client = getClient()\n \n try {\n await client.connect()\n ").concat(schema ? "await client.query('SET search_path TO ".concat(schema, "')") : '', "\n \n const { query, queryColumns, limit, page, perPage, sortBy, sortOrder, filters, sorts, offset } = req.query\n \n const conditions = []\n const queryParams = []\n let paramIndex = 1\n \n if (query) {\n let columns = []\n \n if (queryColumns) {\n // Use specified columns. Wrap non-arrays so that a single\n // column passed as a bare string doesn't get iterated as chars.\n const parsed = safeJSONParse(queryColumns)\n columns = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : [])\n } else {\n // Fallback: Get all columns from information_schema\n try {\n const schemaQuery = `\n SELECT column_name\n FROM information_schema.columns\n WHERE table_name = $1\n ").concat(schema ? "AND table_schema = $2" : '', "\n ORDER BY ordinal_position\n `\n const schemaParams = schema \n ? [").concat(JSON.stringify(tableName), ", ").concat(JSON.stringify(schema), "]\n : [").concat(JSON.stringify(tableName), "]\n \n const schemaResult = await client.query(schemaQuery, schemaParams)\n columns = schemaResult.rows.map(row => row.column_name)\n } catch (schemaError) {\n console.warn('Failed to fetch column names from information_schema:', schemaError.message)\n // Continue without search if we can't get columns\n }\n }\n \n if (columns.length > 0) {\n const pattern = '%' + escapeLikePattern(query) + '%'\n const placeholder = '$' + paramIndex\n paramIndex++\n queryParams.push(pattern)\n const searchConditions = columns.map(\n (col) => '\"' + sanitizeSearchIdentifier(col) + '\"::text ILIKE ' + placeholder + \" ESCAPE '|'\"\n )\n conditions.push('(' + searchConditions.join(' OR ') + ')')\n }\n }\n\n // Apply filters using helper function\n paramIndex = processFilters(filters, conditions, queryParams, paramIndex)\n \n let sql = `SELECT * FROM \"").concat(tableName, "\"`\n \n if (conditions.length > 0) {\n sql += ` WHERE ${conditions.join(' AND ')}`\n }\n \n // Handle sorts - new array format\n if (sorts) {\n const parsedSorts = safeJSONParse(sorts)\n if (Array.isArray(parsedSorts) && parsedSorts.length > 0) {\n const
|
|
14
|
+
return "import { Client } from 'pg'\n\nconst getClient = () => {\n return new Client(".concat(clientConfig, ")\n}\n\n").concat(generateSafeJSONParseCode(), "\n\n").concat(generateSearchEscapeHelpersCode(), "\n\n// Helper function to process filters and build conditions\nconst processFilters = (filters, conditions, queryParams, paramIndex) => {\n if (!filters) return paramIndex\n \n const parsedFilters = safeJSONParse(filters)\n \n if (Array.isArray(parsedFilters)) {\n parsedFilters.forEach((filter) => {\n if (!filter.source || filter.destination === undefined) return\n \n const field = filter.source\n const value = filter.destination\n const operand = filter.operand || '='\n \n if (Array.isArray(value)) {\n if (value.length === 0) return\n if (operand === 'array_overlap') {\n conditions.push(`jsonb_exists_any(NULLIF(${field}, '')::jsonb, $${paramIndex}::text[])`)\n queryParams.push(value.map((entry) => String(entry)))\n paramIndex++\n return\n }\n const placeholders = value.map(() => `$${paramIndex++}`)\n queryParams.push(...value)\n if (operand === '!=') {\n conditions.push(`${field} NOT IN (${placeholders.join(', ')})`)\n } else {\n conditions.push(`${field} IN (${placeholders.join(', ')})`)\n }\n } else {\n if (operand === 'array_overlap') {\n if (value === '' || value === null || value === undefined) return\n // A single comma-joined string (the multi-select Category Filter's\n // ?categoryFilter=a,b,c) expands to multiple ids; one id stays one.\n const overlapValues = String(value).split(',').map((entry) => entry.trim()).filter(Boolean)\n if (overlapValues.length === 0) return\n conditions.push(`jsonb_exists_any(NULLIF(${field}, '')::jsonb, $${paramIndex}::text[])`)\n queryParams.push(overlapValues)\n paramIndex++\n return\n }\n if (value === null) {\n if (operand === '=') {\n conditions.push(`${field} IS NULL`)\n } else if (operand === '!=') {\n conditions.push(`${field} IS NOT NULL`)\n }\n } else {\n const validOps = ['=', '!=', '>', '<', '>=', '<=']\n const sqlOperator = validOps.includes(operand) ? operand : '='\n conditions.push(`${field} ${sqlOperator} $${paramIndex}`)\n queryParams.push(value)\n paramIndex++\n }\n }\n })\n } else {\n Object.entries(parsedFilters).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n const placeholders = value.map(() => `$${paramIndex++}`)\n queryParams.push(...value)\n conditions.push(`${key} IN (${placeholders.join(', ')})`)\n } else {\n conditions.push(`${key} = $${paramIndex}`)\n queryParams.push(value)\n paramIndex++\n }\n })\n }\n \n return paramIndex\n}\n\n").concat(generateDateFormatterCode(), "\n\n").concat(generateSortFieldSqlHelper(tableName), "\n\n").concat(generateSortFallbackFieldHelper(tableName), "\n\nexport default async function handler(req, res) {\n const client = getClient()\n \n try {\n await client.connect()\n ").concat(schema ? "await client.query('SET search_path TO ".concat(schema, "')") : '', "\n \n const { query, queryColumns, limit, page, perPage, sortBy, sortOrder, filters, sorts, offset } = req.query\n \n const conditions = []\n const queryParams = []\n let paramIndex = 1\n \n if (query) {\n let columns = []\n \n if (queryColumns) {\n // Use specified columns. Wrap non-arrays so that a single\n // column passed as a bare string doesn't get iterated as chars.\n const parsed = safeJSONParse(queryColumns)\n columns = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : [])\n } else {\n // Fallback: Get all columns from information_schema\n try {\n const schemaQuery = `\n SELECT column_name\n FROM information_schema.columns\n WHERE table_name = $1\n ").concat(schema ? "AND table_schema = $2" : '', "\n ORDER BY ordinal_position\n `\n const schemaParams = schema \n ? [").concat(JSON.stringify(tableName), ", ").concat(JSON.stringify(schema), "]\n : [").concat(JSON.stringify(tableName), "]\n \n const schemaResult = await client.query(schemaQuery, schemaParams)\n columns = schemaResult.rows.map(row => row.column_name)\n } catch (schemaError) {\n console.warn('Failed to fetch column names from information_schema:', schemaError.message)\n // Continue without search if we can't get columns\n }\n }\n \n if (columns.length > 0) {\n const pattern = '%' + escapeLikePattern(query) + '%'\n const placeholder = '$' + paramIndex\n paramIndex++\n queryParams.push(pattern)\n const searchConditions = columns.map(\n (col) => '\"' + sanitizeSearchIdentifier(col) + '\"::text ILIKE ' + placeholder + \" ESCAPE '|'\"\n )\n conditions.push('(' + searchConditions.join(' OR ') + ')')\n }\n }\n\n // Apply filters using helper function\n paramIndex = processFilters(filters, conditions, queryParams, paramIndex)\n \n let sql = `SELECT * FROM \"").concat(tableName, "\"`\n \n if (conditions.length > 0) {\n sql += ` WHERE ${conditions.join(' AND ')}`\n }\n \n // Handle sorts - new array format. Two ORDER BY clauses are built: the one\n // actually used, and a plain-column twin kept only as the fallback below.\n let orderBySql = ''\n let plainOrderBySql = ''\n if (sorts) {\n const parsedSorts = safeJSONParse(sorts)\n if (Array.isArray(parsedSorts) && parsedSorts.length > 0) {\n const valid = parsedSorts.filter((sort) => sort && sort.field)\n const orderOf = (sort) => (sort.order || '').toUpperCase().startsWith('DESC') ? 'DESC' : 'ASC'\n const orderClauses = valid.map((sort) => `${sortFieldSql(sort.field)} ${orderOf(sort)}`)\n const plainClauses = valid.map((sort) => `${sortFallbackField(sort.field)} ${orderOf(sort)}`)\n\n if (orderClauses.length > 0) {\n // A deterministic tiebreaker keeps pagination stable: \"sort by\n // discount\" ties every undiscounted product at zero, and equal rows\n // with no defined order can repeat across pages or vanish between them.\n orderBySql = ` ORDER BY ${orderClauses.join(', ')}").concat(generateSortTiebreakSql(tableName), "`\n plainOrderBySql = ` ORDER BY ${plainClauses.join(', ')}").concat(generateSortTiebreakSql(tableName), "`\n }\n }\n } else if (sortBy) {\n orderBySql = ` ORDER BY ${sortBy} ${(sortOrder || '').toUpperCase().startsWith('DESC') ? 'DESC' : 'ASC'}`\n plainOrderBySql = orderBySql\n }\n const usedDiscountAwareSort = orderBySql !== plainOrderBySql\n\n const limitValue = limit || perPage\n const offsetValue = offset !== undefined ? parseInt(offset) : (page && perPage ? (parseInt(page) - 1) * parseInt(perPage) : undefined)\n\n let sqlTail = ''\n if (limitValue) {\n sqlTail += ` LIMIT ${limitValue}`\n }\n \n if (offsetValue !== undefined) {\n sqlTail += ` OFFSET ${offsetValue}`\n }\n\n const baseSql = sql\n sql = baseSql + orderBySql + sqlTail\n \n // The discount-aware price ordering is an inline sub-select over a JSON\n // column. It is written to be unraisable, but it runs inside ORDER BY for\n // the whole table \u2014 so if a database ever rejects it, fall back to ordering\n // by the stored list price rather than serving an empty products page.\n let result\n try {\n result = await client.query(sql, queryParams)\n } catch (sortError) {\n if (!usedDiscountAwareSort) throw sortError\n console.warn(\n 'Discount-aware price sort failed; falling back to the list price:',\n sortError && sortError.message\n )\n result = await client.query(baseSql + plainOrderBySql + sqlTail, queryParams)\n }\n const rows = Array.isArray(result?.rows) ? result.rows : []\n const plainRows = rows.map((row) =>\n row && typeof row.toJSON === 'function' ? row.toJSON() : row\n )\n const safeData = JSON.parse(JSON.stringify(plainRows, dateReplacer))\n\n return res.status(200).json({\n success: true,\n data: safeData,\n timestamp: Date.now()\n })\n } catch (error) {\n console.error('PostgreSQL fetch error:', error)\n return res.status(500).json({\n success: false,\n error: error.message || 'Failed to fetch data',\n timestamp: Date.now()\n })\n } finally {\n if (client) {\n try {\n await client.end()\n } catch (error) {\n console.error('Error closing PostgreSQL client:', error)\n }\n }\n }\n}\n");
|
|
14
15
|
};
|
|
15
16
|
export var generatePostgreSQLCountFetcher = function (config, tableName) {
|
|
16
17
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresql.js","sourceRoot":"","sources":["../../../src/fetchers/postgresql.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"postgresql.js","sourceRoot":"","sources":["../../../src/fetchers/postgresql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teleport.d.ts","sourceRoot":"","sources":["../../../src/fetchers/teleport.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,KAAK,gCAAgC,EACtC,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"teleport.d.ts","sourceRoot":"","sources":["../../../src/fetchers/teleport.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,KAAK,gCAAgC,EACtC,MAAM,oBAAoB,CAAA;AAmC3B,eAAO,MAAM,sBAAsB,WACzB,OAAO,MAAM,EAAE,OAAO,CAAC,KAC9B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAMpC,CAAA;AAED,eAAO,MAAM,uBAAuB,WAC1B,OAAO,MAAM,EAAE,OAAO,CAAC,aACpB,MAAM,qBACC,gCAAgC,KACjD,MAoZF,CAAA;AAED,eAAO,MAAM,4BAA4B,WAC/B,OAAO,MAAM,EAAE,OAAO,CAAC,aACpB,MAAM,KAChB,MA0FF,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { replaceSecretReference, generateDateFormatterCode, generateSafeJSONParseCode, generateSearchEscapeHelpersCode, } from '../utils';
|
|
2
2
|
import { getTransformationCode, getTransformExpression, getTransformWrapperCode, } from '../transformations';
|
|
3
|
+
import { generateSortFallbackFieldHelper, generateSortFieldSqlHelper, generateSortTiebreakSql, } from '../product-price-sort';
|
|
3
4
|
var DEFAULT_ENV_KEYS = {
|
|
4
5
|
host: 'TELEPORT_DB_HOST',
|
|
5
6
|
port: 'TELEPORT_DB_PORT',
|
|
@@ -41,9 +42,9 @@ export var generateTeleportFetcher = function (config, tableName, transformOptio
|
|
|
41
42
|
? "key: ".concat(resolveEnvReference(dbConfig.sslConfig.key, 'TELEPORT_DB_SSL_KEY'), ",")
|
|
42
43
|
: '', "\n rejectUnauthorized: false\n }")
|
|
43
44
|
: "(process.env.".concat(DEFAULT_ENV_KEYS.ssl, " === 'false' ? false : process.env.").concat(DEFAULT_ENV_KEYS.ssl, " === 'true' ? { rejectUnauthorized: false } : undefined)");
|
|
44
|
-
return "import { Client } from 'pg'\n\nfunction normalizePostgresConnectionString(connectionString) {\n if (!connectionString || typeof connectionString !== 'string') return connectionString;\n if (/^postgresql:\\/(?!\\/)/i.test(connectionString)) {\n return connectionString.replace(/^postgresql:\\//i, 'postgresql://');\n }\n return connectionString;\n}\n\nfunction stripSslQueryParamsFromConnectionString(connectionString) {\n if (!connectionString || typeof connectionString !== 'string') return connectionString;\n try {\n var u = new URL(connectionString.replace(/^postgresql:/i, 'postgres:'));\n u.searchParams.delete('sslmode');\n u.searchParams.delete('ssl');\n u.searchParams.delete('sslrootcert');\n u.searchParams.delete('sslcert');\n u.searchParams.delete('sslkey');\n return u.toString().replace(/^postgres:/i, 'postgresql:');\n } catch (e) {\n return connectionString;\n }\n}\n\nconst getClient = () => {\n var ssl = ".concat(sslCode, ";\n var connStr = process.env.TELEPORT_DB_CONNECTION_STRING;\n if (connStr) {\n connStr = normalizePostgresConnectionString(connStr);\n }\n if (ssl === false && connStr) {\n connStr = stripSslQueryParamsFromConnectionString(connStr);\n }\n if (connStr) {\n return new Client(Object.assign(\n { connectionString: connStr },\n ssl !== undefined ? { ssl: ssl } : {}\n ));\n }\n return new Client(Object.assign(\n {\n host: ").concat(hostRef, ",\n port: parseInt(").concat(portRef, " || '5432', 10),\n user: ").concat(userRef, ",\n password: ").concat(passwordRef, ",\n database: ").concat(databaseRef, ",\n },\n ssl !== undefined ? { ssl: ssl } : {}\n ));\n}\n\n").concat(generateSafeJSONParseCode(), "\n\n").concat(generateSearchEscapeHelpersCode(), "\n").concat(getTransformationCode(tableName, transformOptions), "\n").concat(getTransformWrapperCode(tableName), "\nconst processFilters = (filters, conditions, queryParams, paramIndex) => {\n if (!filters) return paramIndex\n \n const parsedFilters = safeJSONParse(filters)\n \n if (Array.isArray(parsedFilters)) {\n parsedFilters.forEach((filter) => {\n if (!filter.source || filter.destination === undefined) return\n \n const field = filter.source\n const value = filter.destination\n const operand = filter.operand || '='\n \n if (Array.isArray(value)) {\n if (value.length === 0) return\n if (operand === 'array_overlap') {\n // Row column is a JSON array (e.g. category_ids). Match when it\n // shares any element with the destination set. jsonb ?| (function\n // form) avoids the '?' placeholder-token ambiguity some drivers hit.\n conditions.push(`jsonb_exists_any(NULLIF(${field}, '')::jsonb, $${paramIndex}::text[])`)\n queryParams.push(value.map((entry) => String(entry)))\n paramIndex++\n return\n }\n const placeholders = value.map(() => `$${paramIndex++}`)\n queryParams.push(...value)\n if (operand === '!=') {\n conditions.push(`${field} NOT IN (${placeholders.join(', ')})`)\n } else {\n conditions.push(`${field} IN (${placeholders.join(', ')})`)\n }\n } else {\n if (operand === 'array_overlap') {\n if (value === '' || value === null || value === undefined) return\n // A single comma-joined string (the multi-select Category Filter's\n // ?categoryFilter=a,b,c) expands to multiple ids; one id stays one.\n const overlapValues = String(value).split(',').map((entry) => entry.trim()).filter(Boolean)\n if (overlapValues.length === 0) return\n conditions.push(`jsonb_exists_any(NULLIF(${field}, '')::jsonb, $${paramIndex}::text[])`)\n queryParams.push(overlapValues)\n paramIndex++\n return\n }\n if (value === null) {\n if (operand === '=') {\n conditions.push(`${field} IS NULL`)\n } else if (operand === '!=') {\n conditions.push(`${field} IS NOT NULL`)\n }\n } else {\n const validOps = ['=', '!=', '>', '<', '>=', '<=']\n const sqlOperator = validOps.includes(operand) ? operand : '='\n conditions.push(`${field} ${sqlOperator} $${paramIndex}`)\n queryParams.push(value)\n paramIndex++\n }\n }\n })\n } else {\n Object.entries(parsedFilters).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n const placeholders = value.map(() => `$${paramIndex++}`)\n queryParams.push(...value)\n conditions.push(`${key} IN (${placeholders.join(', ')})`)\n } else {\n conditions.push(`${key} = $${paramIndex}`)\n queryParams.push(value)\n paramIndex++\n }\n })\n }\n \n return paramIndex\n}\n\n").concat(generateDateFormatterCode(), "\n\n// Matches DDL / dangerous statements the raw-query branch should refuse.\n// Keep this list conservative \u2014 anything destructive or schema-changing is\n// out of scope for a client-triggered fetch. SELECT and CTEs (WITH ...) are\n// the only shapes consumers legitimately need.\nconst BLOCKED_RAW_QUERY_PATTERNS = [\n /\\bcreate\\s+(?:temporary\\s+|temp\\s+|unlogged\\s+|global\\s+|local\\s+)?table\\b/i,\n /\\bcreate\\s+(?:unique\\s+)?index\\b/i,\n /\\bcreate\\s+(?:or\\s+replace\\s+)?(?:materialized\\s+)?view\\b/i,\n /\\bcreate\\s+(?:or\\s+replace\\s+)?trigger\\b/i,\n /\\bcreate\\s+(?:or\\s+replace\\s+)?(?:aggregate\\s+)?function\\b/i,\n /\\bcreate\\s+(?:or\\s+replace\\s+)?procedure\\b/i,\n /\\bcreate\\s+(?:database|schema|sequence|extension|type|role|user)\\b/i,\n /\\bdrop\\s+(?:table|view|index|schema|database|sequence|trigger|function|procedure|role|user|extension|type|materialized)\\b/i,\n /\\balter\\s+(?:table|view|index|schema|database|sequence|role|user|system)\\b/i,\n /\\btruncate\\b/i,\n /\\bgrant\\b/i,\n /\\brevoke\\b/i,\n /\\binsert\\b/i,\n /\\bupdate\\b/i,\n /\\bdelete\\b/i,\n /\\bcopy\\b/i,\n /\\bvacuum\\b/i,\n /\\breindex\\b/i,\n /\\bcluster\\b/i,\n]\n\nfunction assertRawQuerySafe(rawQuery) {\n if (typeof rawQuery !== 'string' || rawQuery.length === 0) {\n throw new Error('rawQuery must be a non-empty string')\n }\n // Reject multi-statement payloads \u2014 only single SELECT / WITH statements.\n // A trailing semicolon is tolerated but any content after it fails.\n var trimmed = rawQuery.trim().replace(/;\\s*$/, '')\n if (trimmed.indexOf(';') !== -1) {\n throw new Error('rawQuery must contain exactly one statement')\n }\n for (var i = 0; i < BLOCKED_RAW_QUERY_PATTERNS.length; i++) {\n if (BLOCKED_RAW_QUERY_PATTERNS[i].test(trimmed)) {\n throw new Error('rawQuery contains a blocked statement')\n }\n }\n}\n\nexport default async function handler(req, res) {\n const client = getClient()\n\n try {\n await client.connect()\n ").concat(schema ? "await client.query('SET search_path TO ".concat(schema, "')") : '', "\n\n // If the caller supplied a rawQuery, run it verbatim (after a safety\n // guard). The schema-driven branch below builds `SELECT * FROM ").concat(tableName, "`\n // with optional filters \u2014 it's the default read path and ignores\n // rawQuery. Page-load workflows and other consumers that need a JOIN\n // or a user-scoped filter pass their fully-rendered SQL here via\n // `fetchData({ rawQuery })` and expect it to execute verbatim.\n if (req.query && typeof req.query.rawQuery === 'string' && req.query.rawQuery.length > 0) {\n assertRawQuerySafe(req.query.rawQuery)\n const rawResult = await client.query(req.query.rawQuery)\n const rawRows = Array.isArray(rawResult?.rows) ? rawResult.rows : []\n const rawPlain = rawRows.map((row) =>\n row && typeof row.toJSON === 'function' ? row.toJSON() : row\n )\n const rawSafe = JSON.parse(JSON.stringify(rawPlain, dateReplacer))\n return res.status(200).json({\n success: true,\n data: rawSafe,\n timestamp: Date.now()\n })\n }\n\n const { query, queryColumns, limit, page, perPage, sortBy, sortOrder, filters, sorts, offset } = req.query\n \n const conditions = []\n const queryParams = []\n let paramIndex = 1\n \n if (query) {\n let columns = []\n \n if (queryColumns) {\n const parsed = safeJSONParse(queryColumns)\n columns = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : [])\n } else {\n try {\n const schemaQuery = `\n SELECT column_name \n FROM information_schema.columns \n WHERE table_name = $1\n ").concat(schema ? "AND table_schema = $2" : '', "\n ORDER BY ordinal_position\n `\n const schemaParams = ").concat(schema
|
|
45
|
+
return "import { Client } from 'pg'\n\nfunction normalizePostgresConnectionString(connectionString) {\n if (!connectionString || typeof connectionString !== 'string') return connectionString;\n if (/^postgresql:\\/(?!\\/)/i.test(connectionString)) {\n return connectionString.replace(/^postgresql:\\//i, 'postgresql://');\n }\n return connectionString;\n}\n\nfunction stripSslQueryParamsFromConnectionString(connectionString) {\n if (!connectionString || typeof connectionString !== 'string') return connectionString;\n try {\n var u = new URL(connectionString.replace(/^postgresql:/i, 'postgres:'));\n u.searchParams.delete('sslmode');\n u.searchParams.delete('ssl');\n u.searchParams.delete('sslrootcert');\n u.searchParams.delete('sslcert');\n u.searchParams.delete('sslkey');\n return u.toString().replace(/^postgres:/i, 'postgresql:');\n } catch (e) {\n return connectionString;\n }\n}\n\nconst getClient = () => {\n var ssl = ".concat(sslCode, ";\n var connStr = process.env.TELEPORT_DB_CONNECTION_STRING;\n if (connStr) {\n connStr = normalizePostgresConnectionString(connStr);\n }\n if (ssl === false && connStr) {\n connStr = stripSslQueryParamsFromConnectionString(connStr);\n }\n if (connStr) {\n return new Client(Object.assign(\n { connectionString: connStr },\n ssl !== undefined ? { ssl: ssl } : {}\n ));\n }\n return new Client(Object.assign(\n {\n host: ").concat(hostRef, ",\n port: parseInt(").concat(portRef, " || '5432', 10),\n user: ").concat(userRef, ",\n password: ").concat(passwordRef, ",\n database: ").concat(databaseRef, ",\n },\n ssl !== undefined ? { ssl: ssl } : {}\n ));\n}\n\n").concat(generateSafeJSONParseCode(), "\n\n").concat(generateSearchEscapeHelpersCode(), "\n").concat(getTransformationCode(tableName, transformOptions), "\n").concat(getTransformWrapperCode(tableName), "\nconst processFilters = (filters, conditions, queryParams, paramIndex) => {\n if (!filters) return paramIndex\n \n const parsedFilters = safeJSONParse(filters)\n \n if (Array.isArray(parsedFilters)) {\n parsedFilters.forEach((filter) => {\n if (!filter.source || filter.destination === undefined) return\n \n const field = filter.source\n const value = filter.destination\n const operand = filter.operand || '='\n \n if (Array.isArray(value)) {\n if (value.length === 0) return\n if (operand === 'array_overlap') {\n // Row column is a JSON array (e.g. category_ids). Match when it\n // shares any element with the destination set. jsonb ?| (function\n // form) avoids the '?' placeholder-token ambiguity some drivers hit.\n conditions.push(`jsonb_exists_any(NULLIF(${field}, '')::jsonb, $${paramIndex}::text[])`)\n queryParams.push(value.map((entry) => String(entry)))\n paramIndex++\n return\n }\n const placeholders = value.map(() => `$${paramIndex++}`)\n queryParams.push(...value)\n if (operand === '!=') {\n conditions.push(`${field} NOT IN (${placeholders.join(', ')})`)\n } else {\n conditions.push(`${field} IN (${placeholders.join(', ')})`)\n }\n } else {\n if (operand === 'array_overlap') {\n if (value === '' || value === null || value === undefined) return\n // A single comma-joined string (the multi-select Category Filter's\n // ?categoryFilter=a,b,c) expands to multiple ids; one id stays one.\n const overlapValues = String(value).split(',').map((entry) => entry.trim()).filter(Boolean)\n if (overlapValues.length === 0) return\n conditions.push(`jsonb_exists_any(NULLIF(${field}, '')::jsonb, $${paramIndex}::text[])`)\n queryParams.push(overlapValues)\n paramIndex++\n return\n }\n if (value === null) {\n if (operand === '=') {\n conditions.push(`${field} IS NULL`)\n } else if (operand === '!=') {\n conditions.push(`${field} IS NOT NULL`)\n }\n } else {\n const validOps = ['=', '!=', '>', '<', '>=', '<=']\n const sqlOperator = validOps.includes(operand) ? operand : '='\n conditions.push(`${field} ${sqlOperator} $${paramIndex}`)\n queryParams.push(value)\n paramIndex++\n }\n }\n })\n } else {\n Object.entries(parsedFilters).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n const placeholders = value.map(() => `$${paramIndex++}`)\n queryParams.push(...value)\n conditions.push(`${key} IN (${placeholders.join(', ')})`)\n } else {\n conditions.push(`${key} = $${paramIndex}`)\n queryParams.push(value)\n paramIndex++\n }\n })\n }\n \n return paramIndex\n}\n\n").concat(generateDateFormatterCode(), "\n\n").concat(generateSortFieldSqlHelper(tableName), "\n\n").concat(generateSortFallbackFieldHelper(tableName), "\n\n// Matches DDL / dangerous statements the raw-query branch should refuse.\n// Keep this list conservative \u2014 anything destructive or schema-changing is\n// out of scope for a client-triggered fetch. SELECT and CTEs (WITH ...) are\n// the only shapes consumers legitimately need.\nconst BLOCKED_RAW_QUERY_PATTERNS = [\n /\\bcreate\\s+(?:temporary\\s+|temp\\s+|unlogged\\s+|global\\s+|local\\s+)?table\\b/i,\n /\\bcreate\\s+(?:unique\\s+)?index\\b/i,\n /\\bcreate\\s+(?:or\\s+replace\\s+)?(?:materialized\\s+)?view\\b/i,\n /\\bcreate\\s+(?:or\\s+replace\\s+)?trigger\\b/i,\n /\\bcreate\\s+(?:or\\s+replace\\s+)?(?:aggregate\\s+)?function\\b/i,\n /\\bcreate\\s+(?:or\\s+replace\\s+)?procedure\\b/i,\n /\\bcreate\\s+(?:database|schema|sequence|extension|type|role|user)\\b/i,\n /\\bdrop\\s+(?:table|view|index|schema|database|sequence|trigger|function|procedure|role|user|extension|type|materialized)\\b/i,\n /\\balter\\s+(?:table|view|index|schema|database|sequence|role|user|system)\\b/i,\n /\\btruncate\\b/i,\n /\\bgrant\\b/i,\n /\\brevoke\\b/i,\n /\\binsert\\b/i,\n /\\bupdate\\b/i,\n /\\bdelete\\b/i,\n /\\bcopy\\b/i,\n /\\bvacuum\\b/i,\n /\\breindex\\b/i,\n /\\bcluster\\b/i,\n]\n\nfunction assertRawQuerySafe(rawQuery) {\n if (typeof rawQuery !== 'string' || rawQuery.length === 0) {\n throw new Error('rawQuery must be a non-empty string')\n }\n // Reject multi-statement payloads \u2014 only single SELECT / WITH statements.\n // A trailing semicolon is tolerated but any content after it fails.\n var trimmed = rawQuery.trim().replace(/;\\s*$/, '')\n if (trimmed.indexOf(';') !== -1) {\n throw new Error('rawQuery must contain exactly one statement')\n }\n for (var i = 0; i < BLOCKED_RAW_QUERY_PATTERNS.length; i++) {\n if (BLOCKED_RAW_QUERY_PATTERNS[i].test(trimmed)) {\n throw new Error('rawQuery contains a blocked statement')\n }\n }\n}\n\nexport default async function handler(req, res) {\n const client = getClient()\n\n try {\n await client.connect()\n ").concat(schema ? "await client.query('SET search_path TO ".concat(schema, "')") : '', "\n\n // If the caller supplied a rawQuery, run it verbatim (after a safety\n // guard). The schema-driven branch below builds `SELECT * FROM ").concat(tableName, "`\n // with optional filters \u2014 it's the default read path and ignores\n // rawQuery. Page-load workflows and other consumers that need a JOIN\n // or a user-scoped filter pass their fully-rendered SQL here via\n // `fetchData({ rawQuery })` and expect it to execute verbatim.\n if (req.query && typeof req.query.rawQuery === 'string' && req.query.rawQuery.length > 0) {\n assertRawQuerySafe(req.query.rawQuery)\n const rawResult = await client.query(req.query.rawQuery)\n const rawRows = Array.isArray(rawResult?.rows) ? rawResult.rows : []\n const rawPlain = rawRows.map((row) =>\n row && typeof row.toJSON === 'function' ? row.toJSON() : row\n )\n const rawSafe = JSON.parse(JSON.stringify(rawPlain, dateReplacer))\n return res.status(200).json({\n success: true,\n data: rawSafe,\n timestamp: Date.now()\n })\n }\n\n const { query, queryColumns, limit, page, perPage, sortBy, sortOrder, filters, sorts, offset } = req.query\n \n const conditions = []\n const queryParams = []\n let paramIndex = 1\n \n if (query) {\n let columns = []\n \n if (queryColumns) {\n const parsed = safeJSONParse(queryColumns)\n columns = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : [])\n } else {\n try {\n const schemaQuery = `\n SELECT column_name \n FROM information_schema.columns \n WHERE table_name = $1\n ").concat(schema ? "AND table_schema = $2" : '', "\n ORDER BY ordinal_position\n `\n const schemaParams = ").concat(schema
|
|
45
46
|
? "[".concat(JSON.stringify(tableName), ", ").concat(JSON.stringify(schema), "]")
|
|
46
|
-
: "[".concat(JSON.stringify(tableName), "]"), "\n \n const schemaResult = await client.query(schemaQuery, schemaParams)\n columns = schemaResult.rows.map(row => row.column_name)\n } catch (schemaError) {\n console.warn('Failed to fetch column names from information_schema:', schemaError.message)\n }\n }\n \n if (columns.length > 0) {\n const pattern = '%' + escapeLikePattern(query) + '%'\n const placeholder = '$' + paramIndex\n paramIndex++\n queryParams.push(pattern)\n const searchConditions = columns.map(\n (col) => '\"' + sanitizeSearchIdentifier(col) + '\"::text ILIKE ' + placeholder + \" ESCAPE '|'\"\n )\n conditions.push('(' + searchConditions.join(' OR ') + ')')\n }\n }\n \n paramIndex = processFilters(filters, conditions, queryParams, paramIndex)\n \n let sql = `SELECT * FROM ").concat(tableName, "`\n \n if (conditions.length > 0) {\n sql += ` WHERE ${conditions.join(' AND ')}`\n }\n \n if (sorts) {\n const parsedSorts = safeJSONParse(sorts)\n if (Array.isArray(parsedSorts) && parsedSorts.length > 0) {\n const
|
|
47
|
+
: "[".concat(JSON.stringify(tableName), "]"), "\n \n const schemaResult = await client.query(schemaQuery, schemaParams)\n columns = schemaResult.rows.map(row => row.column_name)\n } catch (schemaError) {\n console.warn('Failed to fetch column names from information_schema:', schemaError.message)\n }\n }\n \n if (columns.length > 0) {\n const pattern = '%' + escapeLikePattern(query) + '%'\n const placeholder = '$' + paramIndex\n paramIndex++\n queryParams.push(pattern)\n const searchConditions = columns.map(\n (col) => '\"' + sanitizeSearchIdentifier(col) + '\"::text ILIKE ' + placeholder + \" ESCAPE '|'\"\n )\n conditions.push('(' + searchConditions.join(' OR ') + ')')\n }\n }\n \n paramIndex = processFilters(filters, conditions, queryParams, paramIndex)\n \n let sql = `SELECT * FROM ").concat(tableName, "`\n \n if (conditions.length > 0) {\n sql += ` WHERE ${conditions.join(' AND ')}`\n }\n \n // Handle sorts - new array format. Two ORDER BY clauses are built: the one\n // actually used, and a plain-column twin kept only as the fallback below.\n let orderBySql = ''\n let plainOrderBySql = ''\n if (sorts) {\n const parsedSorts = safeJSONParse(sorts)\n if (Array.isArray(parsedSorts) && parsedSorts.length > 0) {\n const valid = parsedSorts.filter((sort) => sort && sort.field)\n const orderOf = (sort) => (sort.order || '').toUpperCase().startsWith('DESC') ? 'DESC' : 'ASC'\n const orderClauses = valid.map((sort) => `${sortFieldSql(sort.field)} ${orderOf(sort)}`)\n const plainClauses = valid.map((sort) => `${sortFallbackField(sort.field)} ${orderOf(sort)}`)\n\n if (orderClauses.length > 0) {\n // A deterministic tiebreaker keeps pagination stable: \"sort by\n // discount\" ties every undiscounted product at zero, and equal rows\n // with no defined order can repeat across pages or vanish between them.\n orderBySql = ` ORDER BY ${orderClauses.join(', ')}").concat(generateSortTiebreakSql(tableName), "`\n plainOrderBySql = ` ORDER BY ${plainClauses.join(', ')}").concat(generateSortTiebreakSql(tableName), "`\n }\n }\n } else if (sortBy) {\n orderBySql = ` ORDER BY ${sortBy} ${(sortOrder || '').toUpperCase().startsWith('DESC') ? 'DESC' : 'ASC'}`\n plainOrderBySql = orderBySql\n }\n const usedDiscountAwareSort = orderBySql !== plainOrderBySql\n\n const limitValue = limit || perPage\n const offsetValue = offset !== undefined ? parseInt(offset) : (page && perPage ? (parseInt(page) - 1) * parseInt(perPage) : undefined)\n\n let sqlTail = ''\n if (limitValue) {\n sqlTail += ` LIMIT ${limitValue}`\n }\n \n if (offsetValue !== undefined) {\n sqlTail += ` OFFSET ${offsetValue}`\n }\n\n const baseSql = sql\n sql = baseSql + orderBySql + sqlTail\n\n // The discount-aware price ordering is an inline sub-select over a JSON\n // column. It is written to be unraisable, but it runs inside ORDER BY for\n // the whole table - so if a database ever rejects it, fall back to ordering\n // by the stored list price rather than serving an empty products page.\n let result\n try {\n result = await client.query(sql, queryParams)\n } catch (sortError) {\n if (!usedDiscountAwareSort) throw sortError\n console.warn(\n 'Discount-aware price sort failed; falling back to the list price:',\n sortError && sortError.message\n )\n result = await client.query(baseSql + plainOrderBySql + sqlTail, queryParams)\n }\n const rows = Array.isArray(result?.rows) ? result.rows : []\n const plainRows = rows.map((row) =>\n row && typeof row.toJSON === 'function' ? row.toJSON() : row\n )\n const safeData = JSON.parse(JSON.stringify(plainRows, dateReplacer))\n ").concat(getTransformExpression(tableName)
|
|
47
48
|
? "const transformedData = ".concat(getTransformExpression(tableName))
|
|
48
49
|
: '', "\n\n // Stamp each row with a globally-correct 1-based `__rowNumber` (the page\n // offset is applied server-side above), so list index columns keep counting\n // across pages instead of restarting at 1. Renderer-internal field \u2014 it is\n // filtered from ordinary field bindings and only read by the index column.\n const __finalData = ").concat(getTransformExpression(tableName) ? 'transformedData' : 'safeData', "\n const __rowNumberStart = (typeof offsetValue === 'number' && !isNaN(offsetValue)) ? offsetValue : 0\n const __numberedData = Array.isArray(__finalData)\n ? __finalData.map((__row, __i) =>\n __row && typeof __row === 'object' && !Array.isArray(__row)\n ? Object.assign({}, __row, { __rowNumber: __rowNumberStart + __i + 1 })\n : __row)\n : __finalData\n\n return res.status(200).json({\n success: true,\n data: __numberedData,\n timestamp: Date.now()\n })\n } catch (error) {\n console.error('Teleport DB fetch error:', error)\n return res.status(500).json({\n success: false,\n error: error.message || 'Failed to fetch data',\n timestamp: Date.now()\n })\n } finally {\n if (client) {\n try {\n await client.end()\n } catch (error) {\n console.error('Error closing database client:', error)\n }\n }\n }\n}\n");
|
|
49
50
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teleport.js","sourceRoot":"","sources":["../../../src/fetchers/teleport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"teleport.js","sourceRoot":"","sources":["../../../src/fetchers/teleport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,uBAAuB,CAAA;AAc9B,IAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,sBAAsB;IAChC,QAAQ,EAAE,kBAAkB;IAC5B,GAAG,EAAE,iBAAiB;CACvB,CAAA;AAED,IAAM,mBAAmB,GAAG,UAAC,KAAc,EAAE,aAAqB;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE;QACxE,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAA;KACrC;IACD,OAAO,sBAAe,aAAa,CAAE,CAAA;AACvC,CAAC,CAAA;AAED,MAAM,CAAC,IAAM,sBAAsB,GAAG,UACpC,MAA+B;IAE/B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAA;KAClE;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,IAAM,uBAAuB,GAAG,UACrC,MAA+B,EAC/B,SAAiB,EACjB,gBAAuD;;IAAvD,iCAAA,EAAA,qBAAuD;IAEvD,IAAM,QAAQ,GAAG,MAA0B,CAAA;IAC3C,IAAM,MAAM,GAAG,MAAA,QAAQ,CAAC,OAAO,0CAAE,MAAM,CAAA;IAEvC,IAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACzE,IAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACzE,IAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC9F,IAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IACrF,IAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAErF,IAAM,OAAO,GACX,QAAQ,CAAC,GAAG,KAAK,KAAK;QACpB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,QAAQ,CAAC,SAAS;YACpB,CAAC,CAAC,mBAEA,QAAQ,CAAC,SAAS,CAAC,EAAE;gBACnB,CAAC,CAAC,cAAO,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,oBAAoB,CAAC,MAAG;gBAC5E,CAAC,CAAC,EAAE,qBAGN,QAAQ,CAAC,SAAS,CAAC,IAAI;gBACrB,CAAC,CAAC,gBAAS,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,sBAAsB,CAAC,MAAG;gBAClF,CAAC,CAAC,EAAE,qBAGN,QAAQ,CAAC,SAAS,CAAC,GAAG;gBACpB,CAAC,CAAC,eAAQ,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,qBAAqB,CAAC,MAAG;gBAC/E,CAAC,CAAC,EAAE,6CAGR;YACA,CAAC,CAAC,uBAAgB,gBAAgB,CAAC,GAAG,gDAAsC,gBAAgB,CAAC,GAAG,6DAA0D,CAAA;IAE9J,OAAO,08BA0BK,OAAO,udAgBP,OAAO,qCACE,OAAO,2CAChB,OAAO,gCACH,WAAW,gCACX,WAAW,+EAM3B,yBAAyB,EAAE,iBAE3B,+BAA+B,EAAE,eACjC,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,CAAC,eAClD,uBAAuB,CAAC,SAAS,CAAC,q6FA4ElC,yBAAyB,EAAE,iBAE3B,0BAA0B,CAAC,SAAS,CAAC,iBAErC,+BAA+B,CAAC,SAAS,CAAC,y/DAkDtC,MAAM,CAAC,CAAC,CAAC,iDAA0C,MAAM,OAAI,CAAC,CAAC,CAAC,EAAE,gKAGD,SAAS,k/CAsClE,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,kGAIvC,MAAM;QACJ,CAAC,CAAC,WAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,eAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAG;QAC7D,CAAC,CAAC,WAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAG,w4BAwBhB,SAAS,qqCAsBuB,uBAAuB,CAC3E,SAAS,CACV,iFAC0D,uBAAuB,CAChF,SAAS,CACV,qqDA6CL,sBAAsB,CAAC,SAAS,CAAC;QAC/B,CAAC,CAAC,kCAA2B,sBAAsB,CAAC,SAAS,CAAC,CAAE;QAChE,CAAC,CAAC,EAAE,iXAOc,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,i7BA+B3F,CAAA;AACD,CAAC,CAAA;AAED,MAAM,CAAC,IAAM,4BAA4B,GAAG,UAC1C,MAA+B,EAC/B,SAAiB;;IAEjB,IAAM,QAAQ,GAAG,MAA0B,CAAA;IAC3C,IAAM,SAAS,GAAG,CAAC,CAAC,CAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,MAAM,CAAA,CAAA;IAE5C,OAAO,2nBAuBK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,kGAI1C,SAAS;QACP,CAAC,CAAC,WAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,eAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAQ,CAAC,MAAM,CAAC,MAAG;QAC/E,CAAC,CAAC,WAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAG,w6BA0BJ,SAAS,4uBA8BpD,CAAA;AACD,CAAC,CAAA"}
|