@pkcprotocol/pkc-js 0.0.11
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/LICENSE +339 -0
- package/README.md +1663 -0
- package/dist/browser/challenges.d.ts +1 -0
- package/dist/browser/challenges.js +2 -0
- package/dist/browser/challenges.js.map +1 -0
- package/dist/browser/clients/base-client-manager.d.ts +126 -0
- package/dist/browser/clients/base-client-manager.js +673 -0
- package/dist/browser/clients/base-client-manager.js.map +1 -0
- package/dist/browser/clients/name-resolver-client.d.ts +8 -0
- package/dist/browser/clients/name-resolver-client.js +10 -0
- package/dist/browser/clients/name-resolver-client.js.map +1 -0
- package/dist/browser/clients/pkc-typed-emitter.d.ts +9 -0
- package/dist/browser/clients/pkc-typed-emitter.js +52 -0
- package/dist/browser/clients/pkc-typed-emitter.js.map +1 -0
- package/dist/browser/clients/rpc-client/decode-rpc-response-util.d.ts +8 -0
- package/dist/browser/clients/rpc-client/decode-rpc-response-util.js +53 -0
- package/dist/browser/clients/rpc-client/decode-rpc-response-util.js.map +1 -0
- package/dist/browser/clients/rpc-client/pkc-rpc-client.d.ts +68 -0
- package/dist/browser/clients/rpc-client/pkc-rpc-client.js +404 -0
- package/dist/browser/clients/rpc-client/pkc-rpc-client.js.map +1 -0
- package/dist/browser/clients/rpc-client/rpc-schema-util.d.ts +147 -0
- package/dist/browser/clients/rpc-client/rpc-schema-util.js +11 -0
- package/dist/browser/clients/rpc-client/rpc-schema-util.js.map +1 -0
- package/dist/browser/clients/rpc-client/schema.d.ts +433 -0
- package/dist/browser/clients/rpc-client/schema.js +49 -0
- package/dist/browser/clients/rpc-client/schema.js.map +1 -0
- package/dist/browser/clients/rpc-client/types.d.ts +8 -0
- package/dist/browser/clients/rpc-client/types.js +2 -0
- package/dist/browser/clients/rpc-client/types.js.map +1 -0
- package/dist/browser/community/community-client-manager.d.ts +60 -0
- package/dist/browser/community/community-client-manager.js +717 -0
- package/dist/browser/community/community-client-manager.js.map +1 -0
- package/dist/browser/community/community-clients.d.ts +18 -0
- package/dist/browser/community/community-clients.js +12 -0
- package/dist/browser/community/community-clients.js.map +1 -0
- package/dist/browser/community/community-wire.d.ts +20 -0
- package/dist/browser/community/community-wire.js +38 -0
- package/dist/browser/community/community-wire.js.map +1 -0
- package/dist/browser/community/remote-community.d.ts +110 -0
- package/dist/browser/community/remote-community.js +555 -0
- package/dist/browser/community/remote-community.js.map +1 -0
- package/dist/browser/community/rpc-local-community.d.ts +41 -0
- package/dist/browser/community/rpc-local-community.js +289 -0
- package/dist/browser/community/rpc-local-community.js.map +1 -0
- package/dist/browser/community/rpc-remote-community.d.ts +18 -0
- package/dist/browser/community/rpc-remote-community.js +286 -0
- package/dist/browser/community/rpc-remote-community.js.map +1 -0
- package/dist/browser/community/schema.d.ts +4217 -0
- package/dist/browser/community/schema.js +289 -0
- package/dist/browser/community/schema.js.map +1 -0
- package/dist/browser/community/types.d.ts +135 -0
- package/dist/browser/community/types.js +2 -0
- package/dist/browser/community/types.js.map +1 -0
- package/dist/browser/constants.d.ts +6 -0
- package/dist/browser/constants.js +9 -0
- package/dist/browser/constants.js.map +1 -0
- package/dist/browser/decorator-util.d.ts +1 -0
- package/dist/browser/decorator-util.js +35 -0
- package/dist/browser/decorator-util.js.map +1 -0
- package/dist/browser/errors.d.ts +343 -0
- package/dist/browser/errors.js +358 -0
- package/dist/browser/errors.js.map +1 -0
- package/dist/browser/general-util/limited-set.d.ts +15 -0
- package/dist/browser/general-util/limited-set.js +66 -0
- package/dist/browser/general-util/limited-set.js.map +1 -0
- package/dist/browser/generated-version.d.ts +1 -0
- package/dist/browser/generated-version.js +3 -0
- package/dist/browser/generated-version.js.map +1 -0
- package/dist/browser/generic-state-client.d.ts +6 -0
- package/dist/browser/generic-state-client.js +11 -0
- package/dist/browser/generic-state-client.js.map +1 -0
- package/dist/browser/helia/helia-for-pkc.d.ts +3 -0
- package/dist/browser/helia/helia-for-pkc.js +255 -0
- package/dist/browser/helia/helia-for-pkc.js.map +1 -0
- package/dist/browser/helia/ipns-over-pubsub-with-fetch.d.ts +36 -0
- package/dist/browser/helia/ipns-over-pubsub-with-fetch.js +229 -0
- package/dist/browser/helia/ipns-over-pubsub-with-fetch.js.map +1 -0
- package/dist/browser/helia/libp2pjsClient.d.ts +27 -0
- package/dist/browser/helia/libp2pjsClient.js +15 -0
- package/dist/browser/helia/libp2pjsClient.js.map +1 -0
- package/dist/browser/helia/types.d.ts +19 -0
- package/dist/browser/helia/types.js +2 -0
- package/dist/browser/helia/types.js.map +1 -0
- package/dist/browser/helia/util.d.ts +13 -0
- package/dist/browser/helia/util.js +98 -0
- package/dist/browser/helia/util.js.map +1 -0
- package/dist/browser/index.d.ts +244 -0
- package/dist/browser/index.js +36 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/logger.d.ts +12 -0
- package/dist/browser/logger.js +11 -0
- package/dist/browser/logger.js.map +1 -0
- package/dist/browser/pages/pages-client-manager.d.ts +159 -0
- package/dist/browser/pages/pages-client-manager.js +334 -0
- package/dist/browser/pages/pages-client-manager.js.map +1 -0
- package/dist/browser/pages/pages-clients.d.ts +11 -0
- package/dist/browser/pages/pages-clients.js +10 -0
- package/dist/browser/pages/pages-clients.js.map +1 -0
- package/dist/browser/pages/pages.d.ts +107 -0
- package/dist/browser/pages/pages.js +262 -0
- package/dist/browser/pages/pages.js.map +1 -0
- package/dist/browser/pages/schema-util.d.ts +3 -0
- package/dist/browser/pages/schema-util.js +3 -0
- package/dist/browser/pages/schema-util.js.map +1 -0
- package/dist/browser/pages/schema.d.ts +719 -0
- package/dist/browser/pages/schema.js +32 -0
- package/dist/browser/pages/schema.js.map +1 -0
- package/dist/browser/pages/types.d.ts +44 -0
- package/dist/browser/pages/types.js +2 -0
- package/dist/browser/pages/types.js.map +1 -0
- package/dist/browser/pages/util.d.ts +56 -0
- package/dist/browser/pages/util.js +446 -0
- package/dist/browser/pages/util.js.map +1 -0
- package/dist/browser/pkc/pkc-client-manager.d.ts +44 -0
- package/dist/browser/pkc/pkc-client-manager.js +156 -0
- package/dist/browser/pkc/pkc-client-manager.js.map +1 -0
- package/dist/browser/pkc/pkc-clients.d.ts +11 -0
- package/dist/browser/pkc/pkc-clients.js +8 -0
- package/dist/browser/pkc/pkc-clients.js.map +1 -0
- package/dist/browser/pkc/pkc-with-rpc-client.d.ts +19 -0
- package/dist/browser/pkc/pkc-with-rpc-client.js +128 -0
- package/dist/browser/pkc/pkc-with-rpc-client.js.map +1 -0
- package/dist/browser/pkc/pkc.d.ts +137 -0
- package/dist/browser/pkc/pkc.js +888 -0
- package/dist/browser/pkc/pkc.js.map +1 -0
- package/dist/browser/pkc/tracked-instance-registry-util.d.ts +44 -0
- package/dist/browser/pkc/tracked-instance-registry-util.js +106 -0
- package/dist/browser/pkc/tracked-instance-registry-util.js.map +1 -0
- package/dist/browser/pkc/tracked-instance-registry.d.ts +18 -0
- package/dist/browser/pkc/tracked-instance-registry.js +134 -0
- package/dist/browser/pkc/tracked-instance-registry.js.map +1 -0
- package/dist/browser/pkc-error.d.ts +65 -0
- package/dist/browser/pkc-error.js +137 -0
- package/dist/browser/pkc-error.js.map +1 -0
- package/dist/browser/publications/comment/comment-client-manager.d.ts +86 -0
- package/dist/browser/publications/comment/comment-client-manager.js +908 -0
- package/dist/browser/publications/comment/comment-client-manager.js.map +1 -0
- package/dist/browser/publications/comment/comment-clients.d.ts +19 -0
- package/dist/browser/publications/comment/comment-clients.js +12 -0
- package/dist/browser/publications/comment/comment-clients.js.map +1 -0
- package/dist/browser/publications/comment/comment-util.d.ts +10 -0
- package/dist/browser/publications/comment/comment-util.js +202 -0
- package/dist/browser/publications/comment/comment-util.js.map +1 -0
- package/dist/browser/publications/comment/comment.d.ts +147 -0
- package/dist/browser/publications/comment/comment.js +1044 -0
- package/dist/browser/publications/comment/comment.js.map +1 -0
- package/dist/browser/publications/comment/schema.d.ts +1237 -0
- package/dist/browser/publications/comment/schema.js +184 -0
- package/dist/browser/publications/comment/schema.js.map +1 -0
- package/dist/browser/publications/comment/types.d.ts +100 -0
- package/dist/browser/publications/comment/types.js +2 -0
- package/dist/browser/publications/comment/types.js.map +1 -0
- package/dist/browser/publications/comment-edit/comment-edit.d.ts +41 -0
- package/dist/browser/publications/comment-edit/comment-edit.js +63 -0
- package/dist/browser/publications/comment-edit/comment-edit.js.map +1 -0
- package/dist/browser/publications/comment-edit/schema.d.ts +295 -0
- package/dist/browser/publications/comment-edit/schema.js +55 -0
- package/dist/browser/publications/comment-edit/schema.js.map +1 -0
- package/dist/browser/publications/comment-edit/types.d.ts +25 -0
- package/dist/browser/publications/comment-edit/types.js +2 -0
- package/dist/browser/publications/comment-edit/types.js.map +1 -0
- package/dist/browser/publications/comment-moderation/comment-moderation.d.ts +36 -0
- package/dist/browser/publications/comment-moderation/comment-moderation.js +53 -0
- package/dist/browser/publications/comment-moderation/comment-moderation.js.map +1 -0
- package/dist/browser/publications/comment-moderation/schema.d.ts +315 -0
- package/dist/browser/publications/comment-moderation/schema.js +62 -0
- package/dist/browser/publications/comment-moderation/schema.js.map +1 -0
- package/dist/browser/publications/comment-moderation/types.d.ts +22 -0
- package/dist/browser/publications/comment-moderation/types.js +2 -0
- package/dist/browser/publications/comment-moderation/types.js.map +1 -0
- package/dist/browser/publications/community-edit/community-edit.d.ts +35 -0
- package/dist/browser/publications/community-edit/community-edit.js +50 -0
- package/dist/browser/publications/community-edit/community-edit.js.map +1 -0
- package/dist/browser/publications/community-edit/schema.d.ts +467 -0
- package/dist/browser/publications/community-edit/schema.js +36 -0
- package/dist/browser/publications/community-edit/schema.js.map +1 -0
- package/dist/browser/publications/community-edit/types.d.ts +19 -0
- package/dist/browser/publications/community-edit/types.js +2 -0
- package/dist/browser/publications/community-edit/types.js.map +1 -0
- package/dist/browser/publications/publication-author.d.ts +22 -0
- package/dist/browser/publications/publication-author.js +66 -0
- package/dist/browser/publications/publication-author.js.map +1 -0
- package/dist/browser/publications/publication-client-manager.d.ts +62 -0
- package/dist/browser/publications/publication-client-manager.js +257 -0
- package/dist/browser/publications/publication-client-manager.js.map +1 -0
- package/dist/browser/publications/publication-clients.d.ts +19 -0
- package/dist/browser/publications/publication-clients.js +12 -0
- package/dist/browser/publications/publication-clients.js.map +1 -0
- package/dist/browser/publications/publication-community.d.ts +55 -0
- package/dist/browser/publications/publication-community.js +87 -0
- package/dist/browser/publications/publication-community.js.map +1 -0
- package/dist/browser/publications/publication.d.ts +120 -0
- package/dist/browser/publications/publication.js +950 -0
- package/dist/browser/publications/publication.js.map +1 -0
- package/dist/browser/publications/types.d.ts +26 -0
- package/dist/browser/publications/types.js +2 -0
- package/dist/browser/publications/types.js.map +1 -0
- package/dist/browser/publications/vote/schema.d.ts +150 -0
- package/dist/browser/publications/vote/schema.js +44 -0
- package/dist/browser/publications/vote/schema.js.map +1 -0
- package/dist/browser/publications/vote/types.d.ts +21 -0
- package/dist/browser/publications/vote/types.js +2 -0
- package/dist/browser/publications/vote/types.js.map +1 -0
- package/dist/browser/publications/vote/vote.d.ts +36 -0
- package/dist/browser/publications/vote/vote.js +49 -0
- package/dist/browser/publications/vote/vote.js.map +1 -0
- package/dist/browser/pubsub-messages/schema.d.ts +964 -0
- package/dist/browser/pubsub-messages/schema.js +98 -0
- package/dist/browser/pubsub-messages/schema.js.map +1 -0
- package/dist/browser/pubsub-messages/types.d.ts +81 -0
- package/dist/browser/pubsub-messages/types.js +2 -0
- package/dist/browser/pubsub-messages/types.js.map +1 -0
- package/dist/browser/rpc/src/index.d.ts +483 -0
- package/dist/browser/rpc/src/index.js +1267 -0
- package/dist/browser/rpc/src/index.js.map +1 -0
- package/dist/browser/rpc/src/json-rpc-util.d.ts +1 -0
- package/dist/browser/rpc/src/json-rpc-util.js +19 -0
- package/dist/browser/rpc/src/json-rpc-util.js.map +1 -0
- package/dist/browser/rpc/src/lib/pkc-js/index.d.ts +132 -0
- package/dist/browser/rpc/src/lib/pkc-js/index.js +29 -0
- package/dist/browser/rpc/src/lib/pkc-js/index.js.map +1 -0
- package/dist/browser/rpc/src/lib/pkc-js/pkc-js-mock.d.ts +1 -0
- package/dist/browser/rpc/src/lib/pkc-js/pkc-js-mock.js +472 -0
- package/dist/browser/rpc/src/lib/pkc-js/pkc-js-mock.js.map +1 -0
- package/dist/browser/rpc/src/schema.d.ts +843 -0
- package/dist/browser/rpc/src/schema.js +28 -0
- package/dist/browser/rpc/src/schema.js.map +1 -0
- package/dist/browser/rpc/src/types.d.ts +24 -0
- package/dist/browser/rpc/src/types.js +2 -0
- package/dist/browser/rpc/src/types.js.map +1 -0
- package/dist/browser/rpc/src/utils.d.ts +7 -0
- package/dist/browser/rpc/src/utils.js +58 -0
- package/dist/browser/rpc/src/utils.js.map +1 -0
- package/dist/browser/runtime/browser/community/challenges/index.d.ts +6 -0
- package/dist/browser/runtime/browser/community/challenges/index.js +7 -0
- package/dist/browser/runtime/browser/community/challenges/index.js.map +1 -0
- package/dist/browser/runtime/browser/community/local-community.d.ts +3 -0
- package/dist/browser/runtime/browser/community/local-community.js +6 -0
- package/dist/browser/runtime/browser/community/local-community.js.map +1 -0
- package/dist/browser/runtime/browser/db-handler.d.ts +4 -0
- package/dist/browser/runtime/browser/db-handler.js +8 -0
- package/dist/browser/runtime/browser/db-handler.js.map +1 -0
- package/dist/browser/runtime/browser/localforage-lru.d.ts +15 -0
- package/dist/browser/runtime/browser/localforage-lru.js +140 -0
- package/dist/browser/runtime/browser/localforage-lru.js.map +1 -0
- package/dist/browser/runtime/browser/lru-storage.d.ts +14 -0
- package/dist/browser/runtime/browser/lru-storage.js +34 -0
- package/dist/browser/runtime/browser/lru-storage.js.map +1 -0
- package/dist/browser/runtime/browser/native-functions.d.ts +3 -0
- package/dist/browser/runtime/browser/native-functions.js +6 -0
- package/dist/browser/runtime/browser/native-functions.js.map +1 -0
- package/dist/browser/runtime/browser/polyfill.d.ts +3 -0
- package/dist/browser/runtime/browser/polyfill.js +37 -0
- package/dist/browser/runtime/browser/polyfill.js.map +1 -0
- package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.d.ts +1 -0
- package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.js +4 -0
- package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.js.map +1 -0
- package/dist/browser/runtime/browser/storage.d.ts +13 -0
- package/dist/browser/runtime/browser/storage.js +37 -0
- package/dist/browser/runtime/browser/storage.js.map +1 -0
- package/dist/browser/runtime/browser/util.d.ts +14 -0
- package/dist/browser/runtime/browser/util.js +61 -0
- package/dist/browser/runtime/browser/util.js.map +1 -0
- package/dist/browser/runtime/node/address-rewriter-db.d.ts +31 -0
- package/dist/browser/runtime/node/address-rewriter-db.js +156 -0
- package/dist/browser/runtime/node/address-rewriter-db.js.map +1 -0
- package/dist/browser/runtime/node/addresses-rewriter-proxy-server.d.ts +45 -0
- package/dist/browser/runtime/node/addresses-rewriter-proxy-server.js +493 -0
- package/dist/browser/runtime/node/addresses-rewriter-proxy-server.js.map +1 -0
- package/dist/browser/runtime/node/community/challenges/exclude/exclude.d.ts +8 -0
- package/dist/browser/runtime/node/community/challenges/exclude/exclude.js +280 -0
- package/dist/browser/runtime/node/community/challenges/exclude/exclude.js.map +1 -0
- package/dist/browser/runtime/node/community/challenges/exclude/index.d.ts +3 -0
- package/dist/browser/runtime/node/community/challenges/exclude/index.js +4 -0
- package/dist/browser/runtime/node/community/challenges/exclude/index.js.map +1 -0
- package/dist/browser/runtime/node/community/challenges/exclude/rate-limiter.d.ts +5 -0
- package/dist/browser/runtime/node/community/challenges/exclude/rate-limiter.js +127 -0
- package/dist/browser/runtime/node/community/challenges/exclude/rate-limiter.js.map +1 -0
- package/dist/browser/runtime/node/community/challenges/exclude/utils.d.ts +13 -0
- package/dist/browser/runtime/node/community/challenges/exclude/utils.js +52 -0
- package/dist/browser/runtime/node/community/challenges/exclude/utils.js.map +1 -0
- package/dist/browser/runtime/node/community/challenges/index.d.ts +32 -0
- package/dist/browser/runtime/node/community/challenges/index.js +307 -0
- package/dist/browser/runtime/node/community/challenges/index.js.map +1 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/blacklist.d.ts +5 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/blacklist.js +118 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/blacklist.js.map +1 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/fail.d.ts +5 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/fail.js +26 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/fail.js.map +1 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/publication-match.d.ts +5 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/publication-match.js +135 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/publication-match.js.map +1 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/question.d.ts +5 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/question.js +66 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/question.js.map +1 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/text-math.d.ts +5 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/text-math.js +61 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/text-math.js.map +1 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/whitelist.d.ts +5 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/whitelist.js +118 -0
- package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/whitelist.js.map +1 -0
- package/dist/browser/runtime/node/community/db-handler-types.d.ts +19 -0
- package/dist/browser/runtime/node/community/db-handler-types.js +2 -0
- package/dist/browser/runtime/node/community/db-handler-types.js.map +1 -0
- package/dist/browser/runtime/node/community/db-handler.d.ts +226 -0
- package/dist/browser/runtime/node/community/db-handler.js +2462 -0
- package/dist/browser/runtime/node/community/db-handler.js.map +1 -0
- package/dist/browser/runtime/node/community/db-row-parser.d.ts +19 -0
- package/dist/browser/runtime/node/community/db-row-parser.js +40 -0
- package/dist/browser/runtime/node/community/db-row-parser.js.map +1 -0
- package/dist/browser/runtime/node/community/keyv-better-sqlite3.d.ts +68 -0
- package/dist/browser/runtime/node/community/keyv-better-sqlite3.js +251 -0
- package/dist/browser/runtime/node/community/keyv-better-sqlite3.js.map +1 -0
- package/dist/browser/runtime/node/community/local-community.d.ts +129 -0
- package/dist/browser/runtime/node/community/local-community.js +2978 -0
- package/dist/browser/runtime/node/community/local-community.js.map +1 -0
- package/dist/browser/runtime/node/community/page-generator.d.ts +433 -0
- package/dist/browser/runtime/node/community/page-generator.js +441 -0
- package/dist/browser/runtime/node/community/page-generator.js.map +1 -0
- package/dist/browser/runtime/node/lru-storage.d.ts +14 -0
- package/dist/browser/runtime/node/lru-storage.js +40 -0
- package/dist/browser/runtime/node/lru-storage.js.map +1 -0
- package/dist/browser/runtime/node/native-functions.d.ts +3 -0
- package/dist/browser/runtime/node/native-functions.js +7 -0
- package/dist/browser/runtime/node/native-functions.js.map +1 -0
- package/dist/browser/runtime/node/polyfill.d.ts +3 -0
- package/dist/browser/runtime/node/polyfill.js +20 -0
- package/dist/browser/runtime/node/polyfill.js.map +1 -0
- package/dist/browser/runtime/node/setup-kubo-address-rewriter-and-http-router.d.ts +4 -0
- package/dist/browser/runtime/node/setup-kubo-address-rewriter-and-http-router.js +240 -0
- package/dist/browser/runtime/node/setup-kubo-address-rewriter-and-http-router.js.map +1 -0
- package/dist/browser/runtime/node/sqlite-lru-cache.d.ts +52 -0
- package/dist/browser/runtime/node/sqlite-lru-cache.js +127 -0
- package/dist/browser/runtime/node/sqlite-lru-cache.js.map +1 -0
- package/dist/browser/runtime/node/storage.d.ts +14 -0
- package/dist/browser/runtime/node/storage.js +52 -0
- package/dist/browser/runtime/node/storage.js.map +1 -0
- package/dist/browser/runtime/node/test/helpers/hanging-runner.d.ts +1 -0
- package/dist/browser/runtime/node/test/helpers/hanging-runner.js +157 -0
- package/dist/browser/runtime/node/test/helpers/hanging-runner.js.map +1 -0
- package/dist/browser/runtime/node/test/helpers/run-hanging-node.d.ts +7 -0
- package/dist/browser/runtime/node/test/helpers/run-hanging-node.js +68 -0
- package/dist/browser/runtime/node/test/helpers/run-hanging-node.js.map +1 -0
- package/dist/browser/runtime/node/test/mock-http-router.d.ts +54 -0
- package/dist/browser/runtime/node/test/mock-http-router.js +397 -0
- package/dist/browser/runtime/node/test/mock-http-router.js.map +1 -0
- package/dist/browser/runtime/node/util.d.ts +43 -0
- package/dist/browser/runtime/node/util.js +384 -0
- package/dist/browser/runtime/node/util.js.map +1 -0
- package/dist/browser/schema/schema-util.d.ts +2751 -0
- package/dist/browser/schema/schema-util.js +562 -0
- package/dist/browser/schema/schema-util.js.map +1 -0
- package/dist/browser/schema/schema.d.ts +237 -0
- package/dist/browser/schema/schema.js +128 -0
- package/dist/browser/schema/schema.js.map +1 -0
- package/dist/browser/schema.d.ts +1142 -0
- package/dist/browser/schema.js +104 -0
- package/dist/browser/schema.js.map +1 -0
- package/dist/browser/signer/constants.d.ts +2 -0
- package/dist/browser/signer/constants.js +3 -0
- package/dist/browser/signer/constants.js.map +1 -0
- package/dist/browser/signer/encryption.d.ts +21 -0
- package/dist/browser/signer/encryption.js +122 -0
- package/dist/browser/signer/encryption.js.map +1 -0
- package/dist/browser/signer/index.d.ts +21 -0
- package/dist/browser/signer/index.js +49 -0
- package/dist/browser/signer/index.js.map +1 -0
- package/dist/browser/signer/signatures.d.ts +200 -0
- package/dist/browser/signer/signatures.js +594 -0
- package/dist/browser/signer/signatures.js.map +1 -0
- package/dist/browser/signer/types.d.ts +20 -0
- package/dist/browser/signer/types.js +2 -0
- package/dist/browser/signer/types.js.map +1 -0
- package/dist/browser/signer/util.d.ts +14 -0
- package/dist/browser/signer/util.js +156 -0
- package/dist/browser/signer/util.js.map +1 -0
- package/dist/browser/stats.d.ts +15 -0
- package/dist/browser/stats.js +64 -0
- package/dist/browser/stats.js.map +1 -0
- package/dist/browser/test/mock-ipfs-client.d.ts +34 -0
- package/dist/browser/test/mock-ipfs-client.js +208 -0
- package/dist/browser/test/mock-ipfs-client.js.map +1 -0
- package/dist/browser/test/node/hanging-test/scenarios/comment-publish-pending.scenario.d.ts +8 -0
- package/dist/browser/test/node/hanging-test/scenarios/comment-publish-pending.scenario.js +21 -0
- package/dist/browser/test/node/hanging-test/scenarios/comment-publish-pending.scenario.js.map +1 -0
- package/dist/browser/test/node/hanging-test/scenarios/comment-publish.scenario.d.ts +8 -0
- package/dist/browser/test/node/hanging-test/scenarios/comment-publish.scenario.js +19 -0
- package/dist/browser/test/node/hanging-test/scenarios/comment-publish.scenario.js.map +1 -0
- package/dist/browser/test/node/hanging-test/scenarios/comment-update.scenario.d.ts +8 -0
- package/dist/browser/test/node/hanging-test/scenarios/comment-update.scenario.js +22 -0
- package/dist/browser/test/node/hanging-test/scenarios/comment-update.scenario.js.map +1 -0
- package/dist/browser/test/node/hanging-test/scenarios/community-start.scenario.d.ts +8 -0
- package/dist/browser/test/node/hanging-test/scenarios/community-start.scenario.js +23 -0
- package/dist/browser/test/node/hanging-test/scenarios/community-start.scenario.js.map +1 -0
- package/dist/browser/test/node/hanging-test/scenarios/community-update.scenario.d.ts +8 -0
- package/dist/browser/test/node/hanging-test/scenarios/community-update.scenario.js +21 -0
- package/dist/browser/test/node/hanging-test/scenarios/community-update.scenario.js.map +1 -0
- package/dist/browser/test/node/hanging-test/scenarios/destroy-only.scenario.d.ts +7 -0
- package/dist/browser/test/node/hanging-test/scenarios/destroy-only.scenario.js +15 -0
- package/dist/browser/test/node/hanging-test/scenarios/destroy-only.scenario.js.map +1 -0
- package/dist/browser/test/node/hanging-test/scenarios/hanging-test-util.d.ts +30 -0
- package/dist/browser/test/node/hanging-test/scenarios/hanging-test-util.js +46 -0
- package/dist/browser/test/node/hanging-test/scenarios/hanging-test-util.js.map +1 -0
- package/dist/browser/test/test-util.d.ts +1019 -0
- package/dist/browser/test/test-util.js +1886 -0
- package/dist/browser/test/test-util.js.map +1 -0
- package/dist/browser/types.d.ts +165 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/browser/util/inflight-fetch-manager.d.ts +11 -0
- package/dist/browser/util/inflight-fetch-manager.js +41 -0
- package/dist/browser/util/inflight-fetch-manager.js.map +1 -0
- package/dist/browser/util.d.ts +120 -0
- package/dist/browser/util.js +816 -0
- package/dist/browser/util.js.map +1 -0
- package/dist/browser/version.d.ts +7 -0
- package/dist/browser/version.js +12 -0
- package/dist/browser/version.js.map +1 -0
- package/dist/browser/zod-error-map.d.ts +1 -0
- package/dist/browser/zod-error-map.js +10 -0
- package/dist/browser/zod-error-map.js.map +1 -0
- package/dist/node/challenges.d.ts +1 -0
- package/dist/node/challenges.js +2 -0
- package/dist/node/challenges.js.map +1 -0
- package/dist/node/clients/base-client-manager.d.ts +126 -0
- package/dist/node/clients/base-client-manager.js +673 -0
- package/dist/node/clients/base-client-manager.js.map +1 -0
- package/dist/node/clients/name-resolver-client.d.ts +8 -0
- package/dist/node/clients/name-resolver-client.js +10 -0
- package/dist/node/clients/name-resolver-client.js.map +1 -0
- package/dist/node/clients/pkc-typed-emitter.d.ts +9 -0
- package/dist/node/clients/pkc-typed-emitter.js +52 -0
- package/dist/node/clients/pkc-typed-emitter.js.map +1 -0
- package/dist/node/clients/rpc-client/decode-rpc-response-util.d.ts +8 -0
- package/dist/node/clients/rpc-client/decode-rpc-response-util.js +53 -0
- package/dist/node/clients/rpc-client/decode-rpc-response-util.js.map +1 -0
- package/dist/node/clients/rpc-client/pkc-rpc-client.d.ts +68 -0
- package/dist/node/clients/rpc-client/pkc-rpc-client.js +404 -0
- package/dist/node/clients/rpc-client/pkc-rpc-client.js.map +1 -0
- package/dist/node/clients/rpc-client/rpc-schema-util.d.ts +147 -0
- package/dist/node/clients/rpc-client/rpc-schema-util.js +11 -0
- package/dist/node/clients/rpc-client/rpc-schema-util.js.map +1 -0
- package/dist/node/clients/rpc-client/schema.d.ts +433 -0
- package/dist/node/clients/rpc-client/schema.js +49 -0
- package/dist/node/clients/rpc-client/schema.js.map +1 -0
- package/dist/node/clients/rpc-client/types.d.ts +8 -0
- package/dist/node/clients/rpc-client/types.js +2 -0
- package/dist/node/clients/rpc-client/types.js.map +1 -0
- package/dist/node/community/community-client-manager.d.ts +60 -0
- package/dist/node/community/community-client-manager.js +717 -0
- package/dist/node/community/community-client-manager.js.map +1 -0
- package/dist/node/community/community-clients.d.ts +18 -0
- package/dist/node/community/community-clients.js +12 -0
- package/dist/node/community/community-clients.js.map +1 -0
- package/dist/node/community/community-wire.d.ts +20 -0
- package/dist/node/community/community-wire.js +38 -0
- package/dist/node/community/community-wire.js.map +1 -0
- package/dist/node/community/remote-community.d.ts +110 -0
- package/dist/node/community/remote-community.js +555 -0
- package/dist/node/community/remote-community.js.map +1 -0
- package/dist/node/community/rpc-local-community.d.ts +41 -0
- package/dist/node/community/rpc-local-community.js +289 -0
- package/dist/node/community/rpc-local-community.js.map +1 -0
- package/dist/node/community/rpc-remote-community.d.ts +18 -0
- package/dist/node/community/rpc-remote-community.js +286 -0
- package/dist/node/community/rpc-remote-community.js.map +1 -0
- package/dist/node/community/schema.d.ts +4217 -0
- package/dist/node/community/schema.js +289 -0
- package/dist/node/community/schema.js.map +1 -0
- package/dist/node/community/types.d.ts +135 -0
- package/dist/node/community/types.js +2 -0
- package/dist/node/community/types.js.map +1 -0
- package/dist/node/constants.d.ts +6 -0
- package/dist/node/constants.js +9 -0
- package/dist/node/constants.js.map +1 -0
- package/dist/node/decorator-util.d.ts +1 -0
- package/dist/node/decorator-util.js +35 -0
- package/dist/node/decorator-util.js.map +1 -0
- package/dist/node/errors.d.ts +343 -0
- package/dist/node/errors.js +358 -0
- package/dist/node/errors.js.map +1 -0
- package/dist/node/general-util/limited-set.d.ts +15 -0
- package/dist/node/general-util/limited-set.js +66 -0
- package/dist/node/general-util/limited-set.js.map +1 -0
- package/dist/node/generated-version.d.ts +1 -0
- package/dist/node/generated-version.js +3 -0
- package/dist/node/generated-version.js.map +1 -0
- package/dist/node/generic-state-client.d.ts +6 -0
- package/dist/node/generic-state-client.js +11 -0
- package/dist/node/generic-state-client.js.map +1 -0
- package/dist/node/helia/helia-for-pkc.d.ts +3 -0
- package/dist/node/helia/helia-for-pkc.js +255 -0
- package/dist/node/helia/helia-for-pkc.js.map +1 -0
- package/dist/node/helia/ipns-over-pubsub-with-fetch.d.ts +36 -0
- package/dist/node/helia/ipns-over-pubsub-with-fetch.js +229 -0
- package/dist/node/helia/ipns-over-pubsub-with-fetch.js.map +1 -0
- package/dist/node/helia/libp2pjsClient.d.ts +27 -0
- package/dist/node/helia/libp2pjsClient.js +15 -0
- package/dist/node/helia/libp2pjsClient.js.map +1 -0
- package/dist/node/helia/types.d.ts +19 -0
- package/dist/node/helia/types.js +2 -0
- package/dist/node/helia/types.js.map +1 -0
- package/dist/node/helia/util.d.ts +13 -0
- package/dist/node/helia/util.js +98 -0
- package/dist/node/helia/util.js.map +1 -0
- package/dist/node/index.d.ts +244 -0
- package/dist/node/index.js +36 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/logger.d.ts +12 -0
- package/dist/node/logger.js +11 -0
- package/dist/node/logger.js.map +1 -0
- package/dist/node/pages/pages-client-manager.d.ts +159 -0
- package/dist/node/pages/pages-client-manager.js +334 -0
- package/dist/node/pages/pages-client-manager.js.map +1 -0
- package/dist/node/pages/pages-clients.d.ts +11 -0
- package/dist/node/pages/pages-clients.js +10 -0
- package/dist/node/pages/pages-clients.js.map +1 -0
- package/dist/node/pages/pages.d.ts +107 -0
- package/dist/node/pages/pages.js +262 -0
- package/dist/node/pages/pages.js.map +1 -0
- package/dist/node/pages/schema-util.d.ts +3 -0
- package/dist/node/pages/schema-util.js +3 -0
- package/dist/node/pages/schema-util.js.map +1 -0
- package/dist/node/pages/schema.d.ts +719 -0
- package/dist/node/pages/schema.js +32 -0
- package/dist/node/pages/schema.js.map +1 -0
- package/dist/node/pages/types.d.ts +44 -0
- package/dist/node/pages/types.js +2 -0
- package/dist/node/pages/types.js.map +1 -0
- package/dist/node/pages/util.d.ts +56 -0
- package/dist/node/pages/util.js +446 -0
- package/dist/node/pages/util.js.map +1 -0
- package/dist/node/pkc/pkc-client-manager.d.ts +44 -0
- package/dist/node/pkc/pkc-client-manager.js +156 -0
- package/dist/node/pkc/pkc-client-manager.js.map +1 -0
- package/dist/node/pkc/pkc-clients.d.ts +11 -0
- package/dist/node/pkc/pkc-clients.js +8 -0
- package/dist/node/pkc/pkc-clients.js.map +1 -0
- package/dist/node/pkc/pkc-with-rpc-client.d.ts +19 -0
- package/dist/node/pkc/pkc-with-rpc-client.js +128 -0
- package/dist/node/pkc/pkc-with-rpc-client.js.map +1 -0
- package/dist/node/pkc/pkc.d.ts +137 -0
- package/dist/node/pkc/pkc.js +888 -0
- package/dist/node/pkc/pkc.js.map +1 -0
- package/dist/node/pkc/tracked-instance-registry-util.d.ts +44 -0
- package/dist/node/pkc/tracked-instance-registry-util.js +106 -0
- package/dist/node/pkc/tracked-instance-registry-util.js.map +1 -0
- package/dist/node/pkc/tracked-instance-registry.d.ts +18 -0
- package/dist/node/pkc/tracked-instance-registry.js +134 -0
- package/dist/node/pkc/tracked-instance-registry.js.map +1 -0
- package/dist/node/pkc-error.d.ts +65 -0
- package/dist/node/pkc-error.js +137 -0
- package/dist/node/pkc-error.js.map +1 -0
- package/dist/node/publications/comment/comment-client-manager.d.ts +86 -0
- package/dist/node/publications/comment/comment-client-manager.js +908 -0
- package/dist/node/publications/comment/comment-client-manager.js.map +1 -0
- package/dist/node/publications/comment/comment-clients.d.ts +19 -0
- package/dist/node/publications/comment/comment-clients.js +12 -0
- package/dist/node/publications/comment/comment-clients.js.map +1 -0
- package/dist/node/publications/comment/comment-util.d.ts +10 -0
- package/dist/node/publications/comment/comment-util.js +202 -0
- package/dist/node/publications/comment/comment-util.js.map +1 -0
- package/dist/node/publications/comment/comment.d.ts +147 -0
- package/dist/node/publications/comment/comment.js +1044 -0
- package/dist/node/publications/comment/comment.js.map +1 -0
- package/dist/node/publications/comment/schema.d.ts +1237 -0
- package/dist/node/publications/comment/schema.js +184 -0
- package/dist/node/publications/comment/schema.js.map +1 -0
- package/dist/node/publications/comment/types.d.ts +100 -0
- package/dist/node/publications/comment/types.js +2 -0
- package/dist/node/publications/comment/types.js.map +1 -0
- package/dist/node/publications/comment-edit/comment-edit.d.ts +41 -0
- package/dist/node/publications/comment-edit/comment-edit.js +63 -0
- package/dist/node/publications/comment-edit/comment-edit.js.map +1 -0
- package/dist/node/publications/comment-edit/schema.d.ts +295 -0
- package/dist/node/publications/comment-edit/schema.js +55 -0
- package/dist/node/publications/comment-edit/schema.js.map +1 -0
- package/dist/node/publications/comment-edit/types.d.ts +25 -0
- package/dist/node/publications/comment-edit/types.js +2 -0
- package/dist/node/publications/comment-edit/types.js.map +1 -0
- package/dist/node/publications/comment-moderation/comment-moderation.d.ts +36 -0
- package/dist/node/publications/comment-moderation/comment-moderation.js +53 -0
- package/dist/node/publications/comment-moderation/comment-moderation.js.map +1 -0
- package/dist/node/publications/comment-moderation/schema.d.ts +315 -0
- package/dist/node/publications/comment-moderation/schema.js +62 -0
- package/dist/node/publications/comment-moderation/schema.js.map +1 -0
- package/dist/node/publications/comment-moderation/types.d.ts +22 -0
- package/dist/node/publications/comment-moderation/types.js +2 -0
- package/dist/node/publications/comment-moderation/types.js.map +1 -0
- package/dist/node/publications/community-edit/community-edit.d.ts +35 -0
- package/dist/node/publications/community-edit/community-edit.js +50 -0
- package/dist/node/publications/community-edit/community-edit.js.map +1 -0
- package/dist/node/publications/community-edit/schema.d.ts +467 -0
- package/dist/node/publications/community-edit/schema.js +36 -0
- package/dist/node/publications/community-edit/schema.js.map +1 -0
- package/dist/node/publications/community-edit/types.d.ts +19 -0
- package/dist/node/publications/community-edit/types.js +2 -0
- package/dist/node/publications/community-edit/types.js.map +1 -0
- package/dist/node/publications/publication-author.d.ts +22 -0
- package/dist/node/publications/publication-author.js +66 -0
- package/dist/node/publications/publication-author.js.map +1 -0
- package/dist/node/publications/publication-client-manager.d.ts +62 -0
- package/dist/node/publications/publication-client-manager.js +257 -0
- package/dist/node/publications/publication-client-manager.js.map +1 -0
- package/dist/node/publications/publication-clients.d.ts +19 -0
- package/dist/node/publications/publication-clients.js +12 -0
- package/dist/node/publications/publication-clients.js.map +1 -0
- package/dist/node/publications/publication-community.d.ts +55 -0
- package/dist/node/publications/publication-community.js +87 -0
- package/dist/node/publications/publication-community.js.map +1 -0
- package/dist/node/publications/publication.d.ts +120 -0
- package/dist/node/publications/publication.js +950 -0
- package/dist/node/publications/publication.js.map +1 -0
- package/dist/node/publications/types.d.ts +26 -0
- package/dist/node/publications/types.js +2 -0
- package/dist/node/publications/types.js.map +1 -0
- package/dist/node/publications/vote/schema.d.ts +150 -0
- package/dist/node/publications/vote/schema.js +44 -0
- package/dist/node/publications/vote/schema.js.map +1 -0
- package/dist/node/publications/vote/types.d.ts +21 -0
- package/dist/node/publications/vote/types.js +2 -0
- package/dist/node/publications/vote/types.js.map +1 -0
- package/dist/node/publications/vote/vote.d.ts +36 -0
- package/dist/node/publications/vote/vote.js +49 -0
- package/dist/node/publications/vote/vote.js.map +1 -0
- package/dist/node/pubsub-messages/schema.d.ts +964 -0
- package/dist/node/pubsub-messages/schema.js +98 -0
- package/dist/node/pubsub-messages/schema.js.map +1 -0
- package/dist/node/pubsub-messages/types.d.ts +81 -0
- package/dist/node/pubsub-messages/types.js +2 -0
- package/dist/node/pubsub-messages/types.js.map +1 -0
- package/dist/node/rpc/src/index.d.ts +483 -0
- package/dist/node/rpc/src/index.js +1267 -0
- package/dist/node/rpc/src/index.js.map +1 -0
- package/dist/node/rpc/src/json-rpc-util.d.ts +1 -0
- package/dist/node/rpc/src/json-rpc-util.js +19 -0
- package/dist/node/rpc/src/json-rpc-util.js.map +1 -0
- package/dist/node/rpc/src/lib/pkc-js/index.d.ts +132 -0
- package/dist/node/rpc/src/lib/pkc-js/index.js +29 -0
- package/dist/node/rpc/src/lib/pkc-js/index.js.map +1 -0
- package/dist/node/rpc/src/lib/pkc-js/pkc-js-mock.d.ts +1 -0
- package/dist/node/rpc/src/lib/pkc-js/pkc-js-mock.js +472 -0
- package/dist/node/rpc/src/lib/pkc-js/pkc-js-mock.js.map +1 -0
- package/dist/node/rpc/src/schema.d.ts +843 -0
- package/dist/node/rpc/src/schema.js +28 -0
- package/dist/node/rpc/src/schema.js.map +1 -0
- package/dist/node/rpc/src/types.d.ts +24 -0
- package/dist/node/rpc/src/types.js +2 -0
- package/dist/node/rpc/src/types.js.map +1 -0
- package/dist/node/rpc/src/utils.d.ts +7 -0
- package/dist/node/rpc/src/utils.js +58 -0
- package/dist/node/rpc/src/utils.js.map +1 -0
- package/dist/node/runtime/browser/community/challenges/index.d.ts +6 -0
- package/dist/node/runtime/browser/community/challenges/index.js +7 -0
- package/dist/node/runtime/browser/community/challenges/index.js.map +1 -0
- package/dist/node/runtime/browser/community/local-community.d.ts +3 -0
- package/dist/node/runtime/browser/community/local-community.js +6 -0
- package/dist/node/runtime/browser/community/local-community.js.map +1 -0
- package/dist/node/runtime/browser/db-handler.d.ts +4 -0
- package/dist/node/runtime/browser/db-handler.js +8 -0
- package/dist/node/runtime/browser/db-handler.js.map +1 -0
- package/dist/node/runtime/browser/localforage-lru.d.ts +15 -0
- package/dist/node/runtime/browser/localforage-lru.js +140 -0
- package/dist/node/runtime/browser/localforage-lru.js.map +1 -0
- package/dist/node/runtime/browser/lru-storage.d.ts +14 -0
- package/dist/node/runtime/browser/lru-storage.js +34 -0
- package/dist/node/runtime/browser/lru-storage.js.map +1 -0
- package/dist/node/runtime/browser/native-functions.d.ts +3 -0
- package/dist/node/runtime/browser/native-functions.js +6 -0
- package/dist/node/runtime/browser/native-functions.js.map +1 -0
- package/dist/node/runtime/browser/polyfill.d.ts +3 -0
- package/dist/node/runtime/browser/polyfill.js +37 -0
- package/dist/node/runtime/browser/polyfill.js.map +1 -0
- package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.d.ts +1 -0
- package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.js +4 -0
- package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.js.map +1 -0
- package/dist/node/runtime/browser/storage.d.ts +13 -0
- package/dist/node/runtime/browser/storage.js +37 -0
- package/dist/node/runtime/browser/storage.js.map +1 -0
- package/dist/node/runtime/browser/util.d.ts +14 -0
- package/dist/node/runtime/browser/util.js +61 -0
- package/dist/node/runtime/browser/util.js.map +1 -0
- package/dist/node/runtime/node/address-rewriter-db.d.ts +31 -0
- package/dist/node/runtime/node/address-rewriter-db.js +156 -0
- package/dist/node/runtime/node/address-rewriter-db.js.map +1 -0
- package/dist/node/runtime/node/addresses-rewriter-proxy-server.d.ts +45 -0
- package/dist/node/runtime/node/addresses-rewriter-proxy-server.js +493 -0
- package/dist/node/runtime/node/addresses-rewriter-proxy-server.js.map +1 -0
- package/dist/node/runtime/node/community/challenges/exclude/exclude.d.ts +8 -0
- package/dist/node/runtime/node/community/challenges/exclude/exclude.js +280 -0
- package/dist/node/runtime/node/community/challenges/exclude/exclude.js.map +1 -0
- package/dist/node/runtime/node/community/challenges/exclude/index.d.ts +3 -0
- package/dist/node/runtime/node/community/challenges/exclude/index.js +4 -0
- package/dist/node/runtime/node/community/challenges/exclude/index.js.map +1 -0
- package/dist/node/runtime/node/community/challenges/exclude/rate-limiter.d.ts +5 -0
- package/dist/node/runtime/node/community/challenges/exclude/rate-limiter.js +127 -0
- package/dist/node/runtime/node/community/challenges/exclude/rate-limiter.js.map +1 -0
- package/dist/node/runtime/node/community/challenges/exclude/utils.d.ts +13 -0
- package/dist/node/runtime/node/community/challenges/exclude/utils.js +52 -0
- package/dist/node/runtime/node/community/challenges/exclude/utils.js.map +1 -0
- package/dist/node/runtime/node/community/challenges/index.d.ts +32 -0
- package/dist/node/runtime/node/community/challenges/index.js +307 -0
- package/dist/node/runtime/node/community/challenges/index.js.map +1 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/blacklist.d.ts +5 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/blacklist.js +118 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/blacklist.js.map +1 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/fail.d.ts +5 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/fail.js +26 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/fail.js.map +1 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/publication-match.d.ts +5 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/publication-match.js +135 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/publication-match.js.map +1 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/question.d.ts +5 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/question.js +66 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/question.js.map +1 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/text-math.d.ts +5 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/text-math.js +61 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/text-math.js.map +1 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/whitelist.d.ts +5 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/whitelist.js +118 -0
- package/dist/node/runtime/node/community/challenges/pkc-js-challenges/whitelist.js.map +1 -0
- package/dist/node/runtime/node/community/db-handler-types.d.ts +19 -0
- package/dist/node/runtime/node/community/db-handler-types.js +2 -0
- package/dist/node/runtime/node/community/db-handler-types.js.map +1 -0
- package/dist/node/runtime/node/community/db-handler.d.ts +226 -0
- package/dist/node/runtime/node/community/db-handler.js +2462 -0
- package/dist/node/runtime/node/community/db-handler.js.map +1 -0
- package/dist/node/runtime/node/community/db-row-parser.d.ts +19 -0
- package/dist/node/runtime/node/community/db-row-parser.js +40 -0
- package/dist/node/runtime/node/community/db-row-parser.js.map +1 -0
- package/dist/node/runtime/node/community/keyv-better-sqlite3.d.ts +68 -0
- package/dist/node/runtime/node/community/keyv-better-sqlite3.js +251 -0
- package/dist/node/runtime/node/community/keyv-better-sqlite3.js.map +1 -0
- package/dist/node/runtime/node/community/local-community.d.ts +129 -0
- package/dist/node/runtime/node/community/local-community.js +2978 -0
- package/dist/node/runtime/node/community/local-community.js.map +1 -0
- package/dist/node/runtime/node/community/page-generator.d.ts +433 -0
- package/dist/node/runtime/node/community/page-generator.js +441 -0
- package/dist/node/runtime/node/community/page-generator.js.map +1 -0
- package/dist/node/runtime/node/lru-storage.d.ts +14 -0
- package/dist/node/runtime/node/lru-storage.js +40 -0
- package/dist/node/runtime/node/lru-storage.js.map +1 -0
- package/dist/node/runtime/node/native-functions.d.ts +3 -0
- package/dist/node/runtime/node/native-functions.js +7 -0
- package/dist/node/runtime/node/native-functions.js.map +1 -0
- package/dist/node/runtime/node/polyfill.d.ts +3 -0
- package/dist/node/runtime/node/polyfill.js +20 -0
- package/dist/node/runtime/node/polyfill.js.map +1 -0
- package/dist/node/runtime/node/setup-kubo-address-rewriter-and-http-router.d.ts +4 -0
- package/dist/node/runtime/node/setup-kubo-address-rewriter-and-http-router.js +240 -0
- package/dist/node/runtime/node/setup-kubo-address-rewriter-and-http-router.js.map +1 -0
- package/dist/node/runtime/node/sqlite-lru-cache.d.ts +52 -0
- package/dist/node/runtime/node/sqlite-lru-cache.js +127 -0
- package/dist/node/runtime/node/sqlite-lru-cache.js.map +1 -0
- package/dist/node/runtime/node/storage.d.ts +14 -0
- package/dist/node/runtime/node/storage.js +52 -0
- package/dist/node/runtime/node/storage.js.map +1 -0
- package/dist/node/runtime/node/test/helpers/hanging-runner.d.ts +1 -0
- package/dist/node/runtime/node/test/helpers/hanging-runner.js +157 -0
- package/dist/node/runtime/node/test/helpers/hanging-runner.js.map +1 -0
- package/dist/node/runtime/node/test/helpers/run-hanging-node.d.ts +7 -0
- package/dist/node/runtime/node/test/helpers/run-hanging-node.js +68 -0
- package/dist/node/runtime/node/test/helpers/run-hanging-node.js.map +1 -0
- package/dist/node/runtime/node/test/mock-http-router.d.ts +54 -0
- package/dist/node/runtime/node/test/mock-http-router.js +397 -0
- package/dist/node/runtime/node/test/mock-http-router.js.map +1 -0
- package/dist/node/runtime/node/util.d.ts +43 -0
- package/dist/node/runtime/node/util.js +384 -0
- package/dist/node/runtime/node/util.js.map +1 -0
- package/dist/node/schema/schema-util.d.ts +2751 -0
- package/dist/node/schema/schema-util.js +562 -0
- package/dist/node/schema/schema-util.js.map +1 -0
- package/dist/node/schema/schema.d.ts +237 -0
- package/dist/node/schema/schema.js +128 -0
- package/dist/node/schema/schema.js.map +1 -0
- package/dist/node/schema.d.ts +1142 -0
- package/dist/node/schema.js +104 -0
- package/dist/node/schema.js.map +1 -0
- package/dist/node/signer/constants.d.ts +2 -0
- package/dist/node/signer/constants.js +3 -0
- package/dist/node/signer/constants.js.map +1 -0
- package/dist/node/signer/encryption.d.ts +21 -0
- package/dist/node/signer/encryption.js +122 -0
- package/dist/node/signer/encryption.js.map +1 -0
- package/dist/node/signer/index.d.ts +21 -0
- package/dist/node/signer/index.js +49 -0
- package/dist/node/signer/index.js.map +1 -0
- package/dist/node/signer/signatures.d.ts +200 -0
- package/dist/node/signer/signatures.js +594 -0
- package/dist/node/signer/signatures.js.map +1 -0
- package/dist/node/signer/types.d.ts +20 -0
- package/dist/node/signer/types.js +2 -0
- package/dist/node/signer/types.js.map +1 -0
- package/dist/node/signer/util.d.ts +14 -0
- package/dist/node/signer/util.js +156 -0
- package/dist/node/signer/util.js.map +1 -0
- package/dist/node/stats.d.ts +15 -0
- package/dist/node/stats.js +64 -0
- package/dist/node/stats.js.map +1 -0
- package/dist/node/test/mock-ipfs-client.d.ts +34 -0
- package/dist/node/test/mock-ipfs-client.js +208 -0
- package/dist/node/test/mock-ipfs-client.js.map +1 -0
- package/dist/node/test/node/hanging-test/scenarios/comment-publish-pending.scenario.d.ts +8 -0
- package/dist/node/test/node/hanging-test/scenarios/comment-publish-pending.scenario.js +21 -0
- package/dist/node/test/node/hanging-test/scenarios/comment-publish-pending.scenario.js.map +1 -0
- package/dist/node/test/node/hanging-test/scenarios/comment-publish.scenario.d.ts +8 -0
- package/dist/node/test/node/hanging-test/scenarios/comment-publish.scenario.js +19 -0
- package/dist/node/test/node/hanging-test/scenarios/comment-publish.scenario.js.map +1 -0
- package/dist/node/test/node/hanging-test/scenarios/comment-update.scenario.d.ts +8 -0
- package/dist/node/test/node/hanging-test/scenarios/comment-update.scenario.js +22 -0
- package/dist/node/test/node/hanging-test/scenarios/comment-update.scenario.js.map +1 -0
- package/dist/node/test/node/hanging-test/scenarios/community-start.scenario.d.ts +8 -0
- package/dist/node/test/node/hanging-test/scenarios/community-start.scenario.js +23 -0
- package/dist/node/test/node/hanging-test/scenarios/community-start.scenario.js.map +1 -0
- package/dist/node/test/node/hanging-test/scenarios/community-update.scenario.d.ts +8 -0
- package/dist/node/test/node/hanging-test/scenarios/community-update.scenario.js +21 -0
- package/dist/node/test/node/hanging-test/scenarios/community-update.scenario.js.map +1 -0
- package/dist/node/test/node/hanging-test/scenarios/destroy-only.scenario.d.ts +7 -0
- package/dist/node/test/node/hanging-test/scenarios/destroy-only.scenario.js +15 -0
- package/dist/node/test/node/hanging-test/scenarios/destroy-only.scenario.js.map +1 -0
- package/dist/node/test/node/hanging-test/scenarios/hanging-test-util.d.ts +30 -0
- package/dist/node/test/node/hanging-test/scenarios/hanging-test-util.js +46 -0
- package/dist/node/test/node/hanging-test/scenarios/hanging-test-util.js.map +1 -0
- package/dist/node/test/test-util.d.ts +1019 -0
- package/dist/node/test/test-util.js +1886 -0
- package/dist/node/test/test-util.js.map +1 -0
- package/dist/node/types.d.ts +165 -0
- package/dist/node/types.js +2 -0
- package/dist/node/types.js.map +1 -0
- package/dist/node/util/inflight-fetch-manager.d.ts +11 -0
- package/dist/node/util/inflight-fetch-manager.js +41 -0
- package/dist/node/util/inflight-fetch-manager.js.map +1 -0
- package/dist/node/util.d.ts +120 -0
- package/dist/node/util.js +816 -0
- package/dist/node/util.js.map +1 -0
- package/dist/node/version.d.ts +7 -0
- package/dist/node/version.js +12 -0
- package/dist/node/version.js.map +1 -0
- package/dist/node/zod-error-map.d.ts +1 -0
- package/dist/node/zod-error-map.js +10 -0
- package/dist/node/zod-error-map.js.map +1 -0
- package/package.json +212 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { shouldExcludeChallengeCommentCids, shouldExcludePublication, shouldExcludeChallengeSuccess, addToRateLimiter } from "./exclude/index.js";
|
|
2
|
+
// all challenges included with pkc-js, in PKC.challenges
|
|
3
|
+
import textMath from "./pkc-js-challenges/text-math.js";
|
|
4
|
+
import fail from "./pkc-js-challenges/fail.js";
|
|
5
|
+
import blacklist from "./pkc-js-challenges/blacklist.js";
|
|
6
|
+
import whitelist from "./pkc-js-challenges/whitelist.js";
|
|
7
|
+
import question from "./pkc-js-challenges/question.js";
|
|
8
|
+
import publicationMatch from "./pkc-js-challenges/publication-match.js";
|
|
9
|
+
import * as remeda from "remeda";
|
|
10
|
+
import { ChallengeFileFactorySchema, ChallengeFileSchema, CommunityChallengeSettingSchema } from "../../../../community/schema.js";
|
|
11
|
+
import { PKCError } from "../../../../pkc-error.js";
|
|
12
|
+
import { pathToFileURL } from "node:url";
|
|
13
|
+
const resolveChallengeFactoryByName = (name, pkc) => {
|
|
14
|
+
// User-defined shadows built-ins
|
|
15
|
+
return pkc?.settings?.challenges?.[name] ?? pkcJsChallenges[name];
|
|
16
|
+
};
|
|
17
|
+
const pkcJsChallenges = {
|
|
18
|
+
"text-math": textMath,
|
|
19
|
+
fail: fail,
|
|
20
|
+
blacklist: blacklist,
|
|
21
|
+
whitelist: whitelist,
|
|
22
|
+
question: question,
|
|
23
|
+
"publication-match": publicationMatch
|
|
24
|
+
};
|
|
25
|
+
const validateChallengeFileFactory = (challengeFileFactory, challengeIndex, community) => {
|
|
26
|
+
const communityChallengeSettings = community?.settings?.challenges?.[challengeIndex];
|
|
27
|
+
if (typeof challengeFileFactory !== "function") {
|
|
28
|
+
throw Error(`invalid challenge file factory export from community challenge '${communityChallengeSettings?.name || communityChallengeSettings?.path}' (challenge #${challengeIndex + 1})`);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const validateChallengeFile = (challengeFile, challengeIndex, community) => {
|
|
32
|
+
const communityChallengeSettings = community.settings?.challenges?.[challengeIndex];
|
|
33
|
+
if (typeof challengeFile?.getChallenge !== "function") {
|
|
34
|
+
throw Error(`invalid challenge file from community challenge '${communityChallengeSettings?.name || communityChallengeSettings?.path}' (challenge #${challengeIndex + 1})`);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const validateChallengeResult = (challengeResult, challengeIndex, community) => {
|
|
38
|
+
const communityChallengeSettings = community.settings?.challenges?.[challengeIndex];
|
|
39
|
+
const error = `invalid challenge result from community challenge '${communityChallengeSettings?.name || communityChallengeSettings?.path}' (challenge #${challengeIndex + 1})`;
|
|
40
|
+
if (typeof challengeResult?.success !== "boolean") {
|
|
41
|
+
throw Error(error);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const validateChallengeOrChallengeResult = (challengeOrChallengeResult, challengeIndex, community) => {
|
|
45
|
+
if ("success" in challengeOrChallengeResult) {
|
|
46
|
+
validateChallengeResult(challengeOrChallengeResult, challengeIndex, community);
|
|
47
|
+
}
|
|
48
|
+
else if (typeof challengeOrChallengeResult?.["challenge"] !== "string" ||
|
|
49
|
+
typeof challengeOrChallengeResult?.["type"] !== "string" ||
|
|
50
|
+
typeof challengeOrChallengeResult?.["verify"] !== "function") {
|
|
51
|
+
throw Error("The challenge does not contain the correct {challenge, type, verify}");
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const getPendingChallengesOrChallengeVerification = async (challengeRequestMessage, community) => {
|
|
55
|
+
// if community has no challenges, no need to send a challenge
|
|
56
|
+
if (!Array.isArray(community.settings?.challenges))
|
|
57
|
+
return {
|
|
58
|
+
challengeSuccess: true,
|
|
59
|
+
pendingApprovalSuccess: false
|
|
60
|
+
};
|
|
61
|
+
const challengeOrChallengeResults = [];
|
|
62
|
+
// interate over all challenges of the community, can be more than 1
|
|
63
|
+
for (const i in community.settings.challenges) {
|
|
64
|
+
const challengeIndex = Number(i);
|
|
65
|
+
const communityChallengeSettings = community.settings.challenges[challengeIndex];
|
|
66
|
+
if (!communityChallengeSettings.path && !resolveChallengeFactoryByName(communityChallengeSettings.name, community._pkc))
|
|
67
|
+
throw Error("You have to provide either path or a stored pkc-js challenge");
|
|
68
|
+
// if the challenge is an external file, fetch it and override the communityChallengeSettings values
|
|
69
|
+
let ChallengeFileFactory;
|
|
70
|
+
try {
|
|
71
|
+
ChallengeFileFactory = ChallengeFileFactorySchema.parse(communityChallengeSettings.path
|
|
72
|
+
? (await import(pathToFileURL(communityChallengeSettings.path).href)).default
|
|
73
|
+
: resolveChallengeFactoryByName(communityChallengeSettings.name, community._pkc));
|
|
74
|
+
validateChallengeFileFactory(ChallengeFileFactory, challengeIndex, community);
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
throw new PKCError("ERR_FAILED_TO_IMPORT_CHALLENGE_FILE_FACTORY", {
|
|
78
|
+
path: communityChallengeSettings.path,
|
|
79
|
+
communityChallengeSettings,
|
|
80
|
+
error: e,
|
|
81
|
+
challengeIndex
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
const challengeFile = ChallengeFileFactory({ challengeSettings: communityChallengeSettings });
|
|
85
|
+
validateChallengeFile(challengeFile, challengeIndex, community);
|
|
86
|
+
let challengeOrChallengeResult;
|
|
87
|
+
try {
|
|
88
|
+
// the getChallenge function could throw
|
|
89
|
+
challengeOrChallengeResult = await challengeFile.getChallenge({
|
|
90
|
+
challengeSettings: communityChallengeSettings,
|
|
91
|
+
challengeRequestMessage,
|
|
92
|
+
challengeIndex,
|
|
93
|
+
community
|
|
94
|
+
});
|
|
95
|
+
validateChallengeOrChallengeResult(challengeOrChallengeResult, challengeIndex, community);
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
throw new PKCError("ERR_INVALID_RESULT_FROM_GET_CHALLENGE_FUNCTION", {
|
|
99
|
+
communityChallengeSettings,
|
|
100
|
+
challengeName: communityChallengeSettings.name || communityChallengeSettings.path,
|
|
101
|
+
challengeRequestMessage,
|
|
102
|
+
challengeIndex: challengeIndex + 1,
|
|
103
|
+
error: e
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
challengeOrChallengeResults.push(challengeOrChallengeResult);
|
|
107
|
+
}
|
|
108
|
+
// check failures and errors
|
|
109
|
+
let challengeFailureCount = 0;
|
|
110
|
+
let pendingChallenges = [];
|
|
111
|
+
const challengeErrors = {};
|
|
112
|
+
let pendingApprovalSuccess = false;
|
|
113
|
+
for (const i in challengeOrChallengeResults) {
|
|
114
|
+
const challengeIndex = Number(i);
|
|
115
|
+
const challengeOrChallengeResult = challengeOrChallengeResults[challengeIndex];
|
|
116
|
+
const communityChallengeSettings = community.settings.challenges[challengeIndex];
|
|
117
|
+
const communityChallenge = await getCommunityChallengeFromCommunityChallengeSettings(communityChallengeSettings, community._pkc);
|
|
118
|
+
// exclude author from challenge based on the community minimum karma settings
|
|
119
|
+
if (shouldExcludePublication(communityChallenge, challengeRequestMessage, community)) {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (await shouldExcludeChallengeCommentCids(communityChallenge, challengeRequestMessage, community._pkc)) {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
// exclude based on other challenges successes
|
|
126
|
+
if (shouldExcludeChallengeSuccess(communityChallenge, challengeIndex, challengeOrChallengeResults)) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if ("success" in challengeOrChallengeResult && challengeOrChallengeResult.success === false) {
|
|
130
|
+
challengeFailureCount++;
|
|
131
|
+
challengeErrors[challengeIndex] = challengeOrChallengeResult.error;
|
|
132
|
+
}
|
|
133
|
+
else if ("success" in challengeOrChallengeResult && challengeOrChallengeResult.success === true) {
|
|
134
|
+
if (community.challenges?.[challengeIndex]?.pendingApproval) {
|
|
135
|
+
pendingApprovalSuccess = true;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// index is needed to exlude based on other challenge success in getChallengeVerification
|
|
140
|
+
pendingChallenges.push({ ...challengeOrChallengeResult, index: challengeIndex });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// challenge success can be undefined if there are pending challenges
|
|
144
|
+
let challengeSuccess = undefined;
|
|
145
|
+
// if there are any failures, success is false and pending challenges are ignored
|
|
146
|
+
if (challengeFailureCount > 0) {
|
|
147
|
+
challengeSuccess = false;
|
|
148
|
+
pendingChallenges = [];
|
|
149
|
+
}
|
|
150
|
+
// if there are no pending challenges and no failures, success is true
|
|
151
|
+
if (pendingChallenges.length === 0 && challengeFailureCount === 0) {
|
|
152
|
+
challengeSuccess = true;
|
|
153
|
+
}
|
|
154
|
+
// create return value
|
|
155
|
+
if (challengeSuccess === true) {
|
|
156
|
+
return { challengeSuccess, pendingApprovalSuccess };
|
|
157
|
+
}
|
|
158
|
+
else if (challengeSuccess === false) {
|
|
159
|
+
return {
|
|
160
|
+
challengeSuccess,
|
|
161
|
+
challengeErrors
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
return { pendingChallenges, pendingApprovalSuccess };
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
const getChallengeVerificationFromChallengeAnswers = async (pendingChallenges, challengeAnswers, community) => {
|
|
169
|
+
const verifyChallengePromises = [];
|
|
170
|
+
for (const i in pendingChallenges) {
|
|
171
|
+
verifyChallengePromises.push(Promise.resolve(pendingChallenges[i].verify(challengeAnswers[i])));
|
|
172
|
+
}
|
|
173
|
+
const challengeResultsWithPendingIndexes = await Promise.all(verifyChallengePromises);
|
|
174
|
+
// validate results
|
|
175
|
+
for (const i in challengeResultsWithPendingIndexes) {
|
|
176
|
+
const challengeResult = challengeResultsWithPendingIndexes[Number(i)];
|
|
177
|
+
validateChallengeResult(challengeResult, pendingChallenges[Number(i)].index, community);
|
|
178
|
+
}
|
|
179
|
+
// when filtering only pending challenges, the original indexes get lost so restore them
|
|
180
|
+
const challengeResults = [];
|
|
181
|
+
const challengeResultToPendingChallenge = [];
|
|
182
|
+
for (const i in challengeResultsWithPendingIndexes) {
|
|
183
|
+
challengeResults[pendingChallenges[i].index] = challengeResultsWithPendingIndexes[i];
|
|
184
|
+
challengeResultToPendingChallenge[pendingChallenges[i].index] = pendingChallenges[i];
|
|
185
|
+
}
|
|
186
|
+
let challengeFailureCount = 0;
|
|
187
|
+
const challengeErrors = {};
|
|
188
|
+
let pendingApprovalSuccess = false;
|
|
189
|
+
for (let i in challengeResults) {
|
|
190
|
+
const challengeIndex = Number(i);
|
|
191
|
+
if (!community.settings?.challenges?.[challengeIndex])
|
|
192
|
+
throw Error("community.settings.challenges[challengeIndex] does not exist");
|
|
193
|
+
const challengeResult = challengeResults[challengeIndex];
|
|
194
|
+
// the challenge results that were filtered out were already successful
|
|
195
|
+
if (challengeResult === undefined) {
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
// exclude based on other challenges successes
|
|
199
|
+
if (shouldExcludeChallengeSuccess(community.settings.challenges[challengeIndex], challengeIndex, challengeResults)) {
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
if (challengeResult.success === false) {
|
|
203
|
+
challengeFailureCount++;
|
|
204
|
+
challengeErrors[challengeIndex] = challengeResult.error;
|
|
205
|
+
}
|
|
206
|
+
else if (challengeResult.success === true && community.settings.challenges[challengeIndex]?.pendingApproval) {
|
|
207
|
+
pendingApprovalSuccess = true;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (challengeFailureCount > 0) {
|
|
211
|
+
return {
|
|
212
|
+
challengeSuccess: false,
|
|
213
|
+
challengeErrors
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
return {
|
|
217
|
+
challengeSuccess: true,
|
|
218
|
+
pendingApprovalSuccess
|
|
219
|
+
};
|
|
220
|
+
};
|
|
221
|
+
const getChallengeVerification = async (challengeRequestMessage, community, getChallengeAnswers) => {
|
|
222
|
+
if (!challengeRequestMessage) {
|
|
223
|
+
throw Error(`getChallengeVerification invalid challengeRequestMessage argument '${challengeRequestMessage}'`);
|
|
224
|
+
}
|
|
225
|
+
if (typeof community?._pkc?.getComment !== "function") {
|
|
226
|
+
throw Error(`getChallengeVerification invalid community argument '${community}' invalid community.pkc instance`);
|
|
227
|
+
}
|
|
228
|
+
if (typeof getChallengeAnswers !== "function") {
|
|
229
|
+
throw Error(`getChallengeVerification invalid getChallengeAnswers argument '${getChallengeAnswers}' not a function`);
|
|
230
|
+
}
|
|
231
|
+
if (!Array.isArray(community.settings?.challenges))
|
|
232
|
+
throw Error("community.settings?.challenges is not defined");
|
|
233
|
+
const res = await getPendingChallengesOrChallengeVerification(challengeRequestMessage, community);
|
|
234
|
+
let pendingApprovalSuccess = "pendingApprovalSuccess" in res ? res.pendingApprovalSuccess : false;
|
|
235
|
+
let challengeVerification;
|
|
236
|
+
// was able to verify without asking author for challenges
|
|
237
|
+
if ("pendingChallenges" in res) {
|
|
238
|
+
const challengeAnswers = await getChallengeAnswers(res.pendingChallenges.map((challenge) => remeda.omit(challenge, ["index", "verify"])));
|
|
239
|
+
const verificationFromPending = await getChallengeVerificationFromChallengeAnswers(res.pendingChallenges, challengeAnswers, community);
|
|
240
|
+
if ("pendingApprovalSuccess" in verificationFromPending) {
|
|
241
|
+
pendingApprovalSuccess = pendingApprovalSuccess || verificationFromPending.pendingApprovalSuccess;
|
|
242
|
+
challengeVerification = remeda.omit(verificationFromPending, ["pendingApprovalSuccess"]);
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
pendingApprovalSuccess = false;
|
|
246
|
+
challengeVerification = verificationFromPending;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
challengeVerification = { challengeSuccess: res.challengeSuccess };
|
|
251
|
+
if ("challengeErrors" in res)
|
|
252
|
+
challengeVerification.challengeErrors = res.challengeErrors;
|
|
253
|
+
}
|
|
254
|
+
// store the publication result and author address in mem cache for rateLimit exclude challenge settings
|
|
255
|
+
addToRateLimiter(community.settings?.challenges, challengeRequestMessage, challengeVerification.challengeSuccess);
|
|
256
|
+
// scenarios:
|
|
257
|
+
// - all required challenges pass without pendingApproval flag -> publish normally
|
|
258
|
+
// - any challenge fails -> fail request
|
|
259
|
+
// - requester passes every challenge and at least one non-excluded challenge has pendingApproval -> send to pending approval
|
|
260
|
+
const shouldSendToPendingApproval = Boolean(challengeRequestMessage.comment) && challengeVerification.challengeSuccess === true && pendingApprovalSuccess;
|
|
261
|
+
if (shouldSendToPendingApproval) {
|
|
262
|
+
return { ...challengeVerification, pendingApproval: true };
|
|
263
|
+
}
|
|
264
|
+
return challengeVerification;
|
|
265
|
+
};
|
|
266
|
+
// get the data to be published publicly to community.challenges
|
|
267
|
+
const getCommunityChallengeFromCommunityChallengeSettings = async (communityChallengeSettings, pkc) => {
|
|
268
|
+
communityChallengeSettings = CommunityChallengeSettingSchema.parse(communityChallengeSettings);
|
|
269
|
+
// if the challenge is an external file, fetch it and override the communityChallengeSettings values
|
|
270
|
+
let challengeFile = undefined;
|
|
271
|
+
if (communityChallengeSettings.path) {
|
|
272
|
+
try {
|
|
273
|
+
const importedFile = await import(pathToFileURL(communityChallengeSettings.path).href);
|
|
274
|
+
const ChallengeFileFactory = ChallengeFileFactorySchema.parse(importedFile.default);
|
|
275
|
+
challengeFile = ChallengeFileSchema.parse(ChallengeFileFactory({ challengeSettings: communityChallengeSettings }));
|
|
276
|
+
}
|
|
277
|
+
catch (e) {
|
|
278
|
+
e.details = {
|
|
279
|
+
...e.details,
|
|
280
|
+
path: communityChallengeSettings.path,
|
|
281
|
+
communityChallengeSettings,
|
|
282
|
+
error: e
|
|
283
|
+
};
|
|
284
|
+
if (e instanceof Error)
|
|
285
|
+
e.message = `getCommunityChallengeFromCommunityChallengeSettings failed importing challenge with path '${communityChallengeSettings.path}': ${e.message}`;
|
|
286
|
+
throw e;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// else, the challenge is included with pkc-js or user-defined
|
|
290
|
+
else if (communityChallengeSettings.name) {
|
|
291
|
+
const ChallengeFileFactory = ChallengeFileFactorySchema.parse(resolveChallengeFactoryByName(communityChallengeSettings.name, pkc));
|
|
292
|
+
challengeFile = ChallengeFileSchema.parse(ChallengeFileFactory({ challengeSettings: communityChallengeSettings }));
|
|
293
|
+
}
|
|
294
|
+
if (!challengeFile)
|
|
295
|
+
throw Error("Failed to load challenge file");
|
|
296
|
+
const { challenge, type } = challengeFile;
|
|
297
|
+
return {
|
|
298
|
+
exclude: communityChallengeSettings.exclude,
|
|
299
|
+
description: communityChallengeSettings.description || challengeFile.description,
|
|
300
|
+
challenge,
|
|
301
|
+
type,
|
|
302
|
+
caseInsensitive: challengeFile.caseInsensitive,
|
|
303
|
+
pendingApproval: communityChallengeSettings.pendingApproval
|
|
304
|
+
};
|
|
305
|
+
};
|
|
306
|
+
export { pkcJsChallenges, getPendingChallengesOrChallengeVerification, getChallengeVerificationFromChallengeAnswers, getChallengeVerification, getCommunityChallengeFromCommunityChallengeSettings };
|
|
307
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/runtime/node/community/challenges/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ChallengeFileInput, CommunityChallengeSetting } from "../../../../../community/types.js";
|
|
2
|
+
declare function ChallengeFileFactory({ challengeSettings }: {
|
|
3
|
+
challengeSettings: CommunityChallengeSetting;
|
|
4
|
+
}): ChallengeFileInput;
|
|
5
|
+
export default ChallengeFileFactory;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { derivePublicationFromChallengeRequest } from "../../../../../util.js";
|
|
2
|
+
import { getCommunityAddressFromRecord } from "../../../../../publications/publication-community.js";
|
|
3
|
+
const optionInputs = [
|
|
4
|
+
{
|
|
5
|
+
option: "addresses",
|
|
6
|
+
label: "Addresses",
|
|
7
|
+
default: "",
|
|
8
|
+
description: "Comma separated list of author addresses to be blacklisted.",
|
|
9
|
+
placeholder: `address1.bso,address2.bso,address3.bso`
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
option: "urls",
|
|
13
|
+
label: "URLs",
|
|
14
|
+
default: "",
|
|
15
|
+
description: "Comma separated list of URLs to fetch blacklists from (JSON arrays of addresses)",
|
|
16
|
+
placeholder: `https://example.com/file.json,https://github.com/blacklist.json`
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
option: "error",
|
|
20
|
+
label: "Error",
|
|
21
|
+
default: `You're blacklisted.`,
|
|
22
|
+
description: "The error to display to the author.",
|
|
23
|
+
placeholder: `You're blacklisted.`
|
|
24
|
+
}
|
|
25
|
+
];
|
|
26
|
+
const type = "text/plain";
|
|
27
|
+
const description = "Blacklist author addresses.";
|
|
28
|
+
class UrlsAddressesSet {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.communities = {};
|
|
31
|
+
// refetch all urls in the background every 5min
|
|
32
|
+
setInterval(() => this.refetchAndUpdateAllUrlsSets(), 1000 * 60 * 5).unref?.();
|
|
33
|
+
}
|
|
34
|
+
async has(address, communityAddress, urlsString) {
|
|
35
|
+
if (!address || !communityAddress || !urlsString)
|
|
36
|
+
return false;
|
|
37
|
+
// update urls on first run, wait for 10s max
|
|
38
|
+
await this.setUrls(communityAddress, urlsString);
|
|
39
|
+
const community = this.communities[communityAddress];
|
|
40
|
+
const urlsSets = community.urls.map((url) => community.urlsSets[url]).filter(Boolean);
|
|
41
|
+
for (const urlSet of urlsSets) {
|
|
42
|
+
if (urlSet.has(address)) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
async setUrls(communityAddress, urlsString) {
|
|
49
|
+
let community = this.communities[communityAddress];
|
|
50
|
+
if (community && urlsString === community.urlsString) {
|
|
51
|
+
return community.setUrlsPromise;
|
|
52
|
+
}
|
|
53
|
+
this.communities[communityAddress] = {
|
|
54
|
+
urlsString,
|
|
55
|
+
urls: urlsString
|
|
56
|
+
?.split(",")
|
|
57
|
+
.map((u) => u.trim())
|
|
58
|
+
.filter(Boolean) || [],
|
|
59
|
+
urlsSets: {}
|
|
60
|
+
};
|
|
61
|
+
// try fetching urls before resolving
|
|
62
|
+
this.communities[communityAddress].setUrlsPromise = Promise.race([
|
|
63
|
+
Promise.all(this.communities[communityAddress].urls.map((url) => this.fetchAndUpdateUrlSet(url, [communityAddress]))).then(() => { }),
|
|
64
|
+
// make sure to resolve after max 10s, or the initial urlsAddressesSet.has() could take infinite time
|
|
65
|
+
new Promise((resolve) => setTimeout(resolve, 10000))
|
|
66
|
+
]);
|
|
67
|
+
return this.communities[communityAddress].setUrlsPromise;
|
|
68
|
+
}
|
|
69
|
+
async fetchAndUpdateUrlSet(url, communityAddresses) {
|
|
70
|
+
try {
|
|
71
|
+
const addresses = await fetch(url).then((res) => res.json());
|
|
72
|
+
for (const communityAddress of communityAddresses) {
|
|
73
|
+
this.communities[communityAddress].urlsSets[url] = new Set(addresses);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch { }
|
|
77
|
+
}
|
|
78
|
+
refetchAndUpdateAllUrlsSets() {
|
|
79
|
+
const urlToCommunityAddresses = {};
|
|
80
|
+
for (const [communityAddress, community] of Object.entries(this.communities)) {
|
|
81
|
+
for (const url of community.urls) {
|
|
82
|
+
if (!urlToCommunityAddresses[url]) {
|
|
83
|
+
urlToCommunityAddresses[url] = [];
|
|
84
|
+
}
|
|
85
|
+
urlToCommunityAddresses[url].push(communityAddress);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
for (const [url, communityAddresses] of Object.entries(urlToCommunityAddresses)) {
|
|
89
|
+
this.fetchAndUpdateUrlSet(url, communityAddresses);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const urlsAddressesSet = new UrlsAddressesSet();
|
|
94
|
+
const getChallenge = async ({ challengeSettings, challengeRequestMessage }) => {
|
|
95
|
+
// add a custom error message to display to the author
|
|
96
|
+
const error = challengeSettings?.options?.error;
|
|
97
|
+
const addresses = challengeSettings?.options?.addresses
|
|
98
|
+
?.split(",")
|
|
99
|
+
.map((u) => u.trim())
|
|
100
|
+
.filter(Boolean);
|
|
101
|
+
const addressesSet = new Set(addresses);
|
|
102
|
+
const publication = derivePublicationFromChallengeRequest(challengeRequestMessage);
|
|
103
|
+
if (addressesSet.has(publication?.author?.address) ||
|
|
104
|
+
(await urlsAddressesSet.has(publication?.author?.address, getCommunityAddressFromRecord(publication), challengeSettings?.options?.urls))) {
|
|
105
|
+
return {
|
|
106
|
+
success: false,
|
|
107
|
+
error: error || `You're blacklisted.`
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
success: true
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
function ChallengeFileFactory({ challengeSettings }) {
|
|
115
|
+
return { getChallenge, optionInputs, type, description };
|
|
116
|
+
}
|
|
117
|
+
export default ChallengeFileFactory;
|
|
118
|
+
//# sourceMappingURL=blacklist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blacklist.js","sourceRoot":"","sources":["../../../../../../../src/runtime/node/community/challenges/pkc-js-challenges/blacklist.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ChallengeFileInput, CommunityChallengeSetting } from "../../../../../community/types.js";
|
|
2
|
+
declare function ChallengeFileFactory({ challengeSettings }: {
|
|
3
|
+
challengeSettings: CommunityChallengeSetting;
|
|
4
|
+
}): ChallengeFileInput;
|
|
5
|
+
export default ChallengeFileFactory;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// the purpose of this challenge is to always fail, can be used with CommunityChallenge.exclude to whitelist users
|
|
2
|
+
const optionInputs = [
|
|
3
|
+
{
|
|
4
|
+
option: "error",
|
|
5
|
+
label: "Error",
|
|
6
|
+
default: `You're not allowed to publish.`,
|
|
7
|
+
description: "The error to display to the author.",
|
|
8
|
+
placeholder: `You're not allowed to publish.`
|
|
9
|
+
}
|
|
10
|
+
];
|
|
11
|
+
const type = "text/plain";
|
|
12
|
+
const description = "A challenge that automatically fails with a custom error message.";
|
|
13
|
+
const getChallenge = async ({ challengeSettings }) => {
|
|
14
|
+
// add a custom error message to display to the author
|
|
15
|
+
const error = challengeSettings?.options?.error;
|
|
16
|
+
// the only way to succeed the 'fail' challenge is to be excluded
|
|
17
|
+
return {
|
|
18
|
+
success: false,
|
|
19
|
+
error: error || `You're not allowed to publish.`
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
function ChallengeFileFactory({ challengeSettings }) {
|
|
23
|
+
return { getChallenge, optionInputs, type, description };
|
|
24
|
+
}
|
|
25
|
+
export default ChallengeFileFactory;
|
|
26
|
+
//# sourceMappingURL=fail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fail.js","sourceRoot":"","sources":["../../../../../../../src/runtime/node/community/challenges/pkc-js-challenges/fail.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAUlH,MAAM,YAAY,GAAoD;IAClE;QACI,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,qCAAqC;QAClD,WAAW,EAAE,gCAAgC;KAChD;CACJ,CAAC;AAEF,MAAM,IAAI,GAA2B,YAAY,CAAC;AAElD,MAAM,WAAW,GAAG,mEAAmE,CAAC;AAExF,MAAM,YAAY,GAAG,KAAK,EAAE,EAAE,iBAAiB,EAAyB,EAAiC,EAAE;IACvG,sDAAsD;IACtD,MAAM,KAAK,GAAG,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC;IAEhD,iEAAiE;IACjE,OAAO;QACH,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK,IAAI,gCAAgC;KACnD,CAAC;AACN,CAAC,CAAC;AAEF,SAAS,oBAAoB,CAAC,EAAE,iBAAiB,EAAoD;IACjG,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC7D,CAAC;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ChallengeFileInput, CommunityChallengeSetting } from "../../../../../community/types.js";
|
|
2
|
+
declare function ChallengeFileFactory({ challengeSettings }: {
|
|
3
|
+
challengeSettings: CommunityChallengeSetting;
|
|
4
|
+
}): ChallengeFileInput;
|
|
5
|
+
export default ChallengeFileFactory;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { derivePublicationFromChallengeRequest } from "../../../../../util.js";
|
|
2
|
+
import * as remeda from "remeda";
|
|
3
|
+
const defaultDescription = "Match publication properties against regex patterns.";
|
|
4
|
+
const optionInputs = [
|
|
5
|
+
{
|
|
6
|
+
option: "matches",
|
|
7
|
+
label: "Matches",
|
|
8
|
+
default: "[]",
|
|
9
|
+
description: "JSON array of property name and regex pattern pairs to match against the publication.",
|
|
10
|
+
placeholder: `[{"propertyName":"author.address","regexp":"\\.bso$"},{"propertyName":"content","regexp":"badword1|badword2|badword3"}]`
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
option: "error",
|
|
14
|
+
label: "Error",
|
|
15
|
+
default: "Publication does not match required patterns.",
|
|
16
|
+
description: "The error to display to the author when a match fails.",
|
|
17
|
+
placeholder: "Publication does not match required patterns."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
option: "matchAll",
|
|
21
|
+
label: "Match All",
|
|
22
|
+
default: "true",
|
|
23
|
+
description: "If true, all patterns must match. If false, at least one pattern must match.",
|
|
24
|
+
placeholder: "true"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
option: "description",
|
|
28
|
+
label: "Description",
|
|
29
|
+
default: defaultDescription,
|
|
30
|
+
description: "Custom description for the challenge that explains what patterns are being matched.",
|
|
31
|
+
placeholder: "Authors must have .bso addresses"
|
|
32
|
+
}
|
|
33
|
+
];
|
|
34
|
+
const type = "text/plain";
|
|
35
|
+
const getChallenge = async ({ challengeSettings, challengeRequestMessage }) => {
|
|
36
|
+
// Get the publication from the challenge request
|
|
37
|
+
const publication = derivePublicationFromChallengeRequest(challengeRequestMessage);
|
|
38
|
+
if (!publication) {
|
|
39
|
+
return {
|
|
40
|
+
success: false,
|
|
41
|
+
error: "Could not derive publication from challenge request."
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// Get the matches from the options
|
|
45
|
+
let matches = [];
|
|
46
|
+
try {
|
|
47
|
+
const matchesStr = challengeSettings?.options?.matches;
|
|
48
|
+
if (matchesStr) {
|
|
49
|
+
matches = JSON.parse(matchesStr);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
return {
|
|
54
|
+
success: false,
|
|
55
|
+
error: `Invalid matches JSON: ${e.message}`
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// If no matches are defined, the challenge passes
|
|
59
|
+
if (!matches.length) {
|
|
60
|
+
return { success: true };
|
|
61
|
+
}
|
|
62
|
+
// Get the error message
|
|
63
|
+
const error = challengeSettings?.options?.error || "Publication does not match required patterns.";
|
|
64
|
+
// Get the matchAll option (default to true)
|
|
65
|
+
const matchAllStr = challengeSettings?.options?.matchAll;
|
|
66
|
+
const matchAll = matchAllStr !== undefined ? matchAllStr.toLowerCase() === "true" : true;
|
|
67
|
+
// Check each match
|
|
68
|
+
const matchResults = [];
|
|
69
|
+
for (const match of matches) {
|
|
70
|
+
const { propertyName, regexp } = match;
|
|
71
|
+
// Get the property value using remeda.pathOr with stringToPath to handle nested properties
|
|
72
|
+
const pathSegments = remeda.stringToPath(propertyName);
|
|
73
|
+
//@ts-expect-error
|
|
74
|
+
const value = remeda.pathOr(publication, pathSegments, undefined);
|
|
75
|
+
// If property doesn't exist, consider it a failure
|
|
76
|
+
if (value === undefined) {
|
|
77
|
+
matchResults.push({
|
|
78
|
+
success: false,
|
|
79
|
+
propertyName,
|
|
80
|
+
regexp,
|
|
81
|
+
value: undefined
|
|
82
|
+
});
|
|
83
|
+
// If matchAll is true and we have a failure, we can return early
|
|
84
|
+
if (matchAll) {
|
|
85
|
+
return {
|
|
86
|
+
success: false,
|
|
87
|
+
error
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
// Convert value to string for regex matching
|
|
93
|
+
const valueStr = String(value);
|
|
94
|
+
// Create regex and test
|
|
95
|
+
try {
|
|
96
|
+
const regex = new RegExp(regexp);
|
|
97
|
+
const success = regex.test(valueStr);
|
|
98
|
+
matchResults.push({
|
|
99
|
+
success,
|
|
100
|
+
propertyName,
|
|
101
|
+
regexp,
|
|
102
|
+
value: valueStr
|
|
103
|
+
});
|
|
104
|
+
// If matchAll is true and we have a failure, we can return early
|
|
105
|
+
if (matchAll && !success) {
|
|
106
|
+
return {
|
|
107
|
+
success: false,
|
|
108
|
+
error
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
return {
|
|
114
|
+
success: false,
|
|
115
|
+
error: `Invalid regex pattern '${regexp}': ${e.message}`
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// If matchAll is true, all must succeed (we already returned if any failed)
|
|
120
|
+
// If matchAll is false, at least one must succeed
|
|
121
|
+
const success = matchAll || matchResults.some((result) => result.success);
|
|
122
|
+
if (success)
|
|
123
|
+
return { success };
|
|
124
|
+
else
|
|
125
|
+
return {
|
|
126
|
+
success,
|
|
127
|
+
error
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
function ChallengeFileFactory({ challengeSettings }) {
|
|
131
|
+
const description = challengeSettings?.options?.description || defaultDescription;
|
|
132
|
+
return { getChallenge, optionInputs, type, description };
|
|
133
|
+
}
|
|
134
|
+
export default ChallengeFileFactory;
|
|
135
|
+
//# sourceMappingURL=publication-match.js.map
|
package/dist/node/runtime/node/community/challenges/pkc-js-challenges/publication-match.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publication-match.js","sourceRoot":"","sources":["../../../../../../../src/runtime/node/community/challenges/pkc-js-challenges/publication-match.ts"],"names":[],"mappings":"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"}
|