@toa.io/definitions 1.0.0-alpha.288
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/digest/extensions.cadence.json +1 -0
- package/digest/extensions.configuration.json +1 -0
- package/digest/extensions.exposition.json +1 -0
- package/digest/extensions.introspection.json +1 -0
- package/digest/extensions.realtime.json +1 -0
- package/package.json +42 -0
- package/readme.md +75 -0
- package/schemas/extensions.cadence/annotation.cos.yaml +9 -0
- package/schemas/extensions.cadence/declaration.cos.yaml +20 -0
- package/schemas/extensions.configuration/annotation.cos.yaml +29 -0
- package/schemas/extensions.configuration/manifest.cos.yaml +9 -0
- package/schemas/extensions.exposition/annotation.cos.yaml +125 -0
- package/schemas/extensions.exposition/call.cos.yaml +18 -0
- package/schemas/extensions.exposition/directive.cos.yaml +7 -0
- package/schemas/extensions.exposition/method.cos.yaml +23 -0
- package/schemas/extensions.exposition/node.cos.yaml +22 -0
- package/schemas/extensions.exposition/query.cos.yaml +31 -0
- package/schemas/extensions.exposition/querystring.cos.yaml +19 -0
- package/schemas/extensions.exposition/range.cos.yaml +10 -0
- package/schemas/extensions.exposition/route.cos.yaml +6 -0
- package/schemas/extensions.introspection/annotation.cos.yaml +31 -0
- package/schemas/extensions.introspection/declaration.cos.yaml +5 -0
- package/schemas/extensions.storages/annotation.cos.yaml +11 -0
- package/schemas/extensions.storages/cloudinary.cos.yaml +38 -0
- package/schemas/extensions.storages/fs.cos.yaml +13 -0
- package/schemas/extensions.storages/s3.cos.yaml +17 -0
- package/schemas/extensions.storages/spaces.cos.yaml +16 -0
- package/schemas/extensions.storages/test.cos.yaml +10 -0
- package/schemas/extensions.storages/tmp.cos.yaml +10 -0
- package/source/bindings.amqp/annotation.ts +26 -0
- package/source/bindings.amqp/context.ts +68 -0
- package/source/bindings.amqp/deployment.ts +14 -0
- package/source/bindings.amqp/index.ts +9 -0
- package/source/bindings.amqp/instance.ts +3 -0
- package/source/bindings.amqp/sources.ts +39 -0
- package/source/bindings.loop/index.ts +3 -0
- package/source/bridges.bash/const.ts +2 -0
- package/source/bridges.bash/define.ts +38 -0
- package/source/bridges.bash/index.ts +2 -0
- package/source/bridges.node/define.ts +69 -0
- package/source/bridges.node/exports.ts +175 -0
- package/source/bridges.node/index.ts +6 -0
- package/source/bridges.node/operations.ts +127 -0
- package/source/bridges.node/sources.ts +44 -0
- package/source/definition.ts +38 -0
- package/source/digest/generate.ts +77 -0
- package/source/digest/read.ts +39 -0
- package/source/extensions.cadence/components.ts +6 -0
- package/source/extensions.cadence/const.ts +31 -0
- package/source/extensions.cadence/context.ts +10 -0
- package/source/extensions.cadence/deployment.ts +37 -0
- package/source/extensions.cadence/index.ts +8 -0
- package/source/extensions.cadence/manifest.ts +64 -0
- package/source/extensions.cadence/schemas.ts +10 -0
- package/source/extensions.cadence/types.ts +41 -0
- package/source/extensions.configuration/components.ts +6 -0
- package/source/extensions.configuration/const.ts +30 -0
- package/source/extensions.configuration/context.ts +13 -0
- package/source/extensions.configuration/deployment.ts +159 -0
- package/source/extensions.configuration/epoch.ts +22 -0
- package/source/extensions.configuration/index.ts +10 -0
- package/source/extensions.configuration/manifest.ts +12 -0
- package/source/extensions.configuration/schemas.ts +9 -0
- package/source/extensions.exposition/Annotation.ts +91 -0
- package/source/extensions.exposition/components.ts +6 -0
- package/source/extensions.exposition/const.ts +45 -0
- package/source/extensions.exposition/deployment.ts +95 -0
- package/source/extensions.exposition/index.ts +16 -0
- package/source/extensions.exposition/manifest.ts +56 -0
- package/source/extensions.exposition/schemas.ts +16 -0
- package/source/extensions.exposition/shortcuts.ts +14 -0
- package/source/extensions.exposition/syntax/index.ts +2 -0
- package/source/extensions.exposition/syntax/parse.ts +171 -0
- package/source/extensions.exposition/syntax/types.ts +69 -0
- package/source/extensions.fetch/context.ts +10 -0
- package/source/extensions.fetch/index.ts +1 -0
- package/source/extensions.introspection/annotation.ts +87 -0
- package/source/extensions.introspection/components.ts +13 -0
- package/source/extensions.introspection/const.ts +46 -0
- package/source/extensions.introspection/deployment.ts +48 -0
- package/source/extensions.introspection/index.ts +6 -0
- package/source/extensions.introspection/manifest.ts +18 -0
- package/source/extensions.introspection/schemas.ts +12 -0
- package/source/extensions.realtime/components.ts +5 -0
- package/source/extensions.realtime/deployment.ts +89 -0
- package/source/extensions.realtime/index.ts +4 -0
- package/source/extensions.stash/context.ts +10 -0
- package/source/extensions.stash/deployment.ts +22 -0
- package/source/extensions.stash/index.ts +2 -0
- package/source/extensions.state/context.ts +9 -0
- package/source/extensions.state/index.ts +1 -0
- package/source/extensions.storages/Annotation.ts +57 -0
- package/source/extensions.storages/context.ts +14 -0
- package/source/extensions.storages/deployment.ts +91 -0
- package/source/extensions.storages/index.ts +9 -0
- package/source/extensions.storages/manifest.ts +7 -0
- package/source/extensions.storages/schemas.ts +15 -0
- package/source/extensions.storages/secrets.ts +22 -0
- package/source/extensions.telemetry/const.ts +6 -0
- package/source/extensions.telemetry/context.ts +11 -0
- package/source/extensions.telemetry/deployment.ts +91 -0
- package/source/extensions.telemetry/index.ts +5 -0
- package/source/extensions.telemetry/ready.ts +33 -0
- package/source/index.ts +2 -0
- package/source/storages.mongodb/deployment.ts +22 -0
- package/source/storages.mongodb/index.ts +1 -0
- package/source/version.ts +10 -0
- package/transpiled/bindings.amqp/annotation.d.ts +10 -0
- package/transpiled/bindings.amqp/annotation.js +16 -0
- package/transpiled/bindings.amqp/annotation.js.map +1 -0
- package/transpiled/bindings.amqp/annotation.test.d.ts +1 -0
- package/transpiled/bindings.amqp/annotation.test.js +36 -0
- package/transpiled/bindings.amqp/annotation.test.js.map +1 -0
- package/transpiled/bindings.amqp/context.d.ts +7 -0
- package/transpiled/bindings.amqp/context.js +47 -0
- package/transpiled/bindings.amqp/context.js.map +1 -0
- package/transpiled/bindings.amqp/deployment.d.ts +4 -0
- package/transpiled/bindings.amqp/deployment.js +11 -0
- package/transpiled/bindings.amqp/deployment.js.map +1 -0
- package/transpiled/bindings.amqp/index.d.ts +6 -0
- package/transpiled/bindings.amqp/index.js +5 -0
- package/transpiled/bindings.amqp/index.js.map +1 -0
- package/transpiled/bindings.amqp/instance.d.ts +2 -0
- package/transpiled/bindings.amqp/instance.js +2 -0
- package/transpiled/bindings.amqp/instance.js.map +1 -0
- package/transpiled/bindings.amqp/properties.test.d.ts +1 -0
- package/transpiled/bindings.amqp/properties.test.js +7 -0
- package/transpiled/bindings.amqp/properties.test.js.map +1 -0
- package/transpiled/bindings.amqp/sources.d.ts +7 -0
- package/transpiled/bindings.amqp/sources.js +27 -0
- package/transpiled/bindings.amqp/sources.js.map +1 -0
- package/transpiled/bindings.loop/index.d.ts +2 -0
- package/transpiled/bindings.loop/index.js +2 -0
- package/transpiled/bindings.loop/index.js.map +1 -0
- package/transpiled/bindings.loop/properties.test.d.ts +1 -0
- package/transpiled/bindings.loop/properties.test.js +7 -0
- package/transpiled/bindings.loop/properties.test.js.map +1 -0
- package/transpiled/bridges.bash/const.d.ts +2 -0
- package/transpiled/bridges.bash/const.js +3 -0
- package/transpiled/bridges.bash/const.js.map +1 -0
- package/transpiled/bridges.bash/define.d.ts +3 -0
- package/transpiled/bridges.bash/define.js +25 -0
- package/transpiled/bridges.bash/define.js.map +1 -0
- package/transpiled/bridges.bash/index.d.ts +2 -0
- package/transpiled/bridges.bash/index.js +3 -0
- package/transpiled/bridges.bash/index.js.map +1 -0
- package/transpiled/bridges.node/define.d.ts +18 -0
- package/transpiled/bridges.node/define.js +46 -0
- package/transpiled/bridges.node/define.js.map +1 -0
- package/transpiled/bridges.node/exports.d.ts +16 -0
- package/transpiled/bridges.node/exports.js +134 -0
- package/transpiled/bridges.node/exports.js.map +1 -0
- package/transpiled/bridges.node/exports.test.d.ts +1 -0
- package/transpiled/bridges.node/exports.test.js +88 -0
- package/transpiled/bridges.node/exports.test.js.map +1 -0
- package/transpiled/bridges.node/index.d.ts +5 -0
- package/transpiled/bridges.node/index.js +4 -0
- package/transpiled/bridges.node/index.js.map +1 -0
- package/transpiled/bridges.node/operations.d.ts +13 -0
- package/transpiled/bridges.node/operations.js +96 -0
- package/transpiled/bridges.node/operations.js.map +1 -0
- package/transpiled/bridges.node/operations.test.d.ts +1 -0
- package/transpiled/bridges.node/operations.test.js +108 -0
- package/transpiled/bridges.node/operations.test.js.map +1 -0
- package/transpiled/bridges.node/sources.d.ts +7 -0
- package/transpiled/bridges.node/sources.js +36 -0
- package/transpiled/bridges.node/sources.js.map +1 -0
- package/transpiled/definition.d.ts +7 -0
- package/transpiled/definition.js +34 -0
- package/transpiled/definition.js.map +1 -0
- package/transpiled/digest/generate.d.ts +1 -0
- package/transpiled/digest/generate.js +60 -0
- package/transpiled/digest/generate.js.map +1 -0
- package/transpiled/digest/read.d.ts +16 -0
- package/transpiled/digest/read.js +22 -0
- package/transpiled/digest/read.js.map +1 -0
- package/transpiled/extensions.cadence/components.d.ts +3 -0
- package/transpiled/extensions.cadence/components.js +6 -0
- package/transpiled/extensions.cadence/components.js.map +1 -0
- package/transpiled/extensions.cadence/const.d.ts +21 -0
- package/transpiled/extensions.cadence/const.js +26 -0
- package/transpiled/extensions.cadence/const.js.map +1 -0
- package/transpiled/extensions.cadence/context.d.ts +3 -0
- package/transpiled/extensions.cadence/context.js +9 -0
- package/transpiled/extensions.cadence/context.js.map +1 -0
- package/transpiled/extensions.cadence/deployment.d.ts +9 -0
- package/transpiled/extensions.cadence/deployment.js +28 -0
- package/transpiled/extensions.cadence/deployment.js.map +1 -0
- package/transpiled/extensions.cadence/index.d.ts +7 -0
- package/transpiled/extensions.cadence/index.js +7 -0
- package/transpiled/extensions.cadence/index.js.map +1 -0
- package/transpiled/extensions.cadence/manifest.d.ts +11 -0
- package/transpiled/extensions.cadence/manifest.js +42 -0
- package/transpiled/extensions.cadence/manifest.js.map +1 -0
- package/transpiled/extensions.cadence/manifest.test.d.ts +1 -0
- package/transpiled/extensions.cadence/manifest.test.js +41 -0
- package/transpiled/extensions.cadence/manifest.test.js.map +1 -0
- package/transpiled/extensions.cadence/schemas.d.ts +4 -0
- package/transpiled/extensions.cadence/schemas.js +7 -0
- package/transpiled/extensions.cadence/schemas.js.map +1 -0
- package/transpiled/extensions.cadence/types.d.ts +34 -0
- package/transpiled/extensions.cadence/types.js +2 -0
- package/transpiled/extensions.cadence/types.js.map +1 -0
- package/transpiled/extensions.configuration/components.d.ts +3 -0
- package/transpiled/extensions.configuration/components.js +6 -0
- package/transpiled/extensions.configuration/components.js.map +1 -0
- package/transpiled/extensions.configuration/const.d.ts +18 -0
- package/transpiled/extensions.configuration/const.js +22 -0
- package/transpiled/extensions.configuration/const.js.map +1 -0
- package/transpiled/extensions.configuration/context.d.ts +4 -0
- package/transpiled/extensions.configuration/context.js +9 -0
- package/transpiled/extensions.configuration/context.js.map +1 -0
- package/transpiled/extensions.configuration/deployment.d.ts +17 -0
- package/transpiled/extensions.configuration/deployment.js +106 -0
- package/transpiled/extensions.configuration/deployment.js.map +1 -0
- package/transpiled/extensions.configuration/deployment.test.d.ts +1 -0
- package/transpiled/extensions.configuration/deployment.test.js +74 -0
- package/transpiled/extensions.configuration/deployment.test.js.map +1 -0
- package/transpiled/extensions.configuration/epoch.d.ts +2 -0
- package/transpiled/extensions.configuration/epoch.js +19 -0
- package/transpiled/extensions.configuration/epoch.js.map +1 -0
- package/transpiled/extensions.configuration/index.d.ts +9 -0
- package/transpiled/extensions.configuration/index.js +8 -0
- package/transpiled/extensions.configuration/index.js.map +1 -0
- package/transpiled/extensions.configuration/manifest.d.ts +5 -0
- package/transpiled/extensions.configuration/manifest.js +6 -0
- package/transpiled/extensions.configuration/manifest.js.map +1 -0
- package/transpiled/extensions.configuration/manifest.test.d.ts +1 -0
- package/transpiled/extensions.configuration/manifest.test.js +14 -0
- package/transpiled/extensions.configuration/manifest.test.js.map +1 -0
- package/transpiled/extensions.configuration/schemas.d.ts +3 -0
- package/transpiled/extensions.configuration/schemas.js +7 -0
- package/transpiled/extensions.configuration/schemas.js.map +1 -0
- package/transpiled/extensions.exposition/Annotation.d.ts +71 -0
- package/transpiled/extensions.exposition/Annotation.js +2 -0
- package/transpiled/extensions.exposition/Annotation.js.map +1 -0
- package/transpiled/extensions.exposition/components.d.ts +3 -0
- package/transpiled/extensions.exposition/components.js +6 -0
- package/transpiled/extensions.exposition/components.js.map +1 -0
- package/transpiled/extensions.exposition/const.d.ts +36 -0
- package/transpiled/extensions.exposition/const.js +37 -0
- package/transpiled/extensions.exposition/const.js.map +1 -0
- package/transpiled/extensions.exposition/deployment.d.ts +6 -0
- package/transpiled/extensions.exposition/deployment.js +75 -0
- package/transpiled/extensions.exposition/deployment.js.map +1 -0
- package/transpiled/extensions.exposition/index.d.ts +8 -0
- package/transpiled/extensions.exposition/index.js +8 -0
- package/transpiled/extensions.exposition/index.js.map +1 -0
- package/transpiled/extensions.exposition/manifest.d.ts +3 -0
- package/transpiled/extensions.exposition/manifest.js +39 -0
- package/transpiled/extensions.exposition/manifest.js.map +1 -0
- package/transpiled/extensions.exposition/manifest.test.d.ts +1 -0
- package/transpiled/extensions.exposition/manifest.test.js +38 -0
- package/transpiled/extensions.exposition/manifest.test.js.map +1 -0
- package/transpiled/extensions.exposition/schemas.d.ts +7 -0
- package/transpiled/extensions.exposition/schemas.js +10 -0
- package/transpiled/extensions.exposition/schemas.js.map +1 -0
- package/transpiled/extensions.exposition/schemas.test.d.ts +1 -0
- package/transpiled/extensions.exposition/schemas.test.js +22 -0
- package/transpiled/extensions.exposition/schemas.test.js.map +1 -0
- package/transpiled/extensions.exposition/shortcuts.d.ts +3 -0
- package/transpiled/extensions.exposition/shortcuts.js +13 -0
- package/transpiled/extensions.exposition/shortcuts.js.map +1 -0
- package/transpiled/extensions.exposition/syntax/index.d.ts +2 -0
- package/transpiled/extensions.exposition/syntax/index.js +3 -0
- package/transpiled/extensions.exposition/syntax/index.js.map +1 -0
- package/transpiled/extensions.exposition/syntax/parse.d.ts +4 -0
- package/transpiled/extensions.exposition/syntax/parse.js +112 -0
- package/transpiled/extensions.exposition/syntax/parse.js.map +1 -0
- package/transpiled/extensions.exposition/syntax/parse.test.d.ts +1 -0
- package/transpiled/extensions.exposition/syntax/parse.test.js +156 -0
- package/transpiled/extensions.exposition/syntax/parse.test.js.map +1 -0
- package/transpiled/extensions.exposition/syntax/types.d.ts +52 -0
- package/transpiled/extensions.exposition/syntax/types.js +11 -0
- package/transpiled/extensions.exposition/syntax/types.js.map +1 -0
- package/transpiled/extensions.fetch/context.d.ts +3 -0
- package/transpiled/extensions.fetch/context.js +9 -0
- package/transpiled/extensions.fetch/context.js.map +1 -0
- package/transpiled/extensions.fetch/index.d.ts +1 -0
- package/transpiled/extensions.fetch/index.js +2 -0
- package/transpiled/extensions.fetch/index.js.map +1 -0
- package/transpiled/extensions.introspection/annotation.d.ts +40 -0
- package/transpiled/extensions.introspection/annotation.js +39 -0
- package/transpiled/extensions.introspection/annotation.js.map +1 -0
- package/transpiled/extensions.introspection/components.d.ts +8 -0
- package/transpiled/extensions.introspection/components.js +12 -0
- package/transpiled/extensions.introspection/components.js.map +1 -0
- package/transpiled/extensions.introspection/const.d.ts +30 -0
- package/transpiled/extensions.introspection/const.js +35 -0
- package/transpiled/extensions.introspection/const.js.map +1 -0
- package/transpiled/extensions.introspection/deployment.d.ts +14 -0
- package/transpiled/extensions.introspection/deployment.js +41 -0
- package/transpiled/extensions.introspection/deployment.js.map +1 -0
- package/transpiled/extensions.introspection/index.d.ts +6 -0
- package/transpiled/extensions.introspection/index.js +7 -0
- package/transpiled/extensions.introspection/index.js.map +1 -0
- package/transpiled/extensions.introspection/manifest.d.ts +9 -0
- package/transpiled/extensions.introspection/manifest.js +16 -0
- package/transpiled/extensions.introspection/manifest.js.map +1 -0
- package/transpiled/extensions.introspection/schemas.d.ts +4 -0
- package/transpiled/extensions.introspection/schemas.js +7 -0
- package/transpiled/extensions.introspection/schemas.js.map +1 -0
- package/transpiled/extensions.realtime/components.d.ts +2 -0
- package/transpiled/extensions.realtime/components.js +5 -0
- package/transpiled/extensions.realtime/components.js.map +1 -0
- package/transpiled/extensions.realtime/deployment.d.ts +22 -0
- package/transpiled/extensions.realtime/deployment.js +53 -0
- package/transpiled/extensions.realtime/deployment.js.map +1 -0
- package/transpiled/extensions.realtime/index.d.ts +3 -0
- package/transpiled/extensions.realtime/index.js +3 -0
- package/transpiled/extensions.realtime/index.js.map +1 -0
- package/transpiled/extensions.stash/context.d.ts +3 -0
- package/transpiled/extensions.stash/context.js +9 -0
- package/transpiled/extensions.stash/context.js.map +1 -0
- package/transpiled/extensions.stash/deployment.d.ts +5 -0
- package/transpiled/extensions.stash/deployment.js +14 -0
- package/transpiled/extensions.stash/deployment.js.map +1 -0
- package/transpiled/extensions.stash/index.d.ts +2 -0
- package/transpiled/extensions.stash/index.js +3 -0
- package/transpiled/extensions.stash/index.js.map +1 -0
- package/transpiled/extensions.state/context.d.ts +6 -0
- package/transpiled/extensions.state/context.js +8 -0
- package/transpiled/extensions.state/context.js.map +1 -0
- package/transpiled/extensions.state/index.d.ts +1 -0
- package/transpiled/extensions.state/index.js +2 -0
- package/transpiled/extensions.state/index.js.map +1 -0
- package/transpiled/extensions.storages/Annotation.d.ts +8 -0
- package/transpiled/extensions.storages/Annotation.js +31 -0
- package/transpiled/extensions.storages/Annotation.js.map +1 -0
- package/transpiled/extensions.storages/context.d.ts +3 -0
- package/transpiled/extensions.storages/context.js +12 -0
- package/transpiled/extensions.storages/context.js.map +1 -0
- package/transpiled/extensions.storages/deployment.d.ts +5 -0
- package/transpiled/extensions.storages/deployment.js +64 -0
- package/transpiled/extensions.storages/deployment.js.map +1 -0
- package/transpiled/extensions.storages/index.d.ts +8 -0
- package/transpiled/extensions.storages/index.js +7 -0
- package/transpiled/extensions.storages/index.js.map +1 -0
- package/transpiled/extensions.storages/manifest.d.ts +1 -0
- package/transpiled/extensions.storages/manifest.js +8 -0
- package/transpiled/extensions.storages/manifest.js.map +1 -0
- package/transpiled/extensions.storages/schemas.d.ts +9 -0
- package/transpiled/extensions.storages/schemas.js +12 -0
- package/transpiled/extensions.storages/schemas.js.map +1 -0
- package/transpiled/extensions.storages/schemas.test.d.ts +1 -0
- package/transpiled/extensions.storages/schemas.test.js +59 -0
- package/transpiled/extensions.storages/schemas.test.js.map +1 -0
- package/transpiled/extensions.storages/secrets.d.ts +10 -0
- package/transpiled/extensions.storages/secrets.js +16 -0
- package/transpiled/extensions.storages/secrets.js.map +1 -0
- package/transpiled/extensions.telemetry/const.d.ts +4 -0
- package/transpiled/extensions.telemetry/const.js +6 -0
- package/transpiled/extensions.telemetry/const.js.map +1 -0
- package/transpiled/extensions.telemetry/context.d.ts +3 -0
- package/transpiled/extensions.telemetry/context.js +9 -0
- package/transpiled/extensions.telemetry/context.js.map +1 -0
- package/transpiled/extensions.telemetry/deployment.d.ts +18 -0
- package/transpiled/extensions.telemetry/deployment.js +49 -0
- package/transpiled/extensions.telemetry/deployment.js.map +1 -0
- package/transpiled/extensions.telemetry/index.d.ts +5 -0
- package/transpiled/extensions.telemetry/index.js +5 -0
- package/transpiled/extensions.telemetry/index.js.map +1 -0
- package/transpiled/extensions.telemetry/ready.d.ts +14 -0
- package/transpiled/extensions.telemetry/ready.js +16 -0
- package/transpiled/extensions.telemetry/ready.js.map +1 -0
- package/transpiled/index.d.ts +2 -0
- package/transpiled/index.js +3 -0
- package/transpiled/index.js.map +1 -0
- package/transpiled/storages.mongodb/deployment.d.ts +5 -0
- package/transpiled/storages.mongodb/deployment.js +14 -0
- package/transpiled/storages.mongodb/deployment.js.map +1 -0
- package/transpiled/storages.mongodb/index.d.ts +1 -0
- package/transpiled/storages.mongodb/index.js +2 -0
- package/transpiled/storages.mongodb/index.js.map +1 -0
- package/transpiled/version.d.ts +5 -0
- package/transpiled/version.js +8 -0
- package/transpiled/version.js.map +1 -0
- package/tsconfig.json +10 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance.js","sourceRoot":"","sources":["../../source/bindings.amqp/instance.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"properties.test.js","sourceRoot":"","sources":["../../source/bindings.amqp/properties.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAA;AAC9B,OAAO,MAAM,MAAM,oBAAoB,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;IACzB,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AACrD,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Dependency } from '@toa.io/operations';
|
|
2
|
+
import { type Instance } from './instance.js';
|
|
3
|
+
import { type Annotation } from './annotation.js';
|
|
4
|
+
export declare function createDependency(sources: Sources, instances: Instance[]): Dependency;
|
|
5
|
+
export declare const ID = "amqp-sources";
|
|
6
|
+
type Sources = Annotation['sources'];
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createVariables } from '@toa.io/pointer';
|
|
2
|
+
export function createDependency(sources, instances) {
|
|
3
|
+
const requests = [];
|
|
4
|
+
for (const instance of instances) {
|
|
5
|
+
const request = createRequest(instance);
|
|
6
|
+
if (request !== null)
|
|
7
|
+
requests.push(request);
|
|
8
|
+
}
|
|
9
|
+
const variables = createVariables(ID, sources, requests);
|
|
10
|
+
return { variables };
|
|
11
|
+
}
|
|
12
|
+
function createRequest(instance) {
|
|
13
|
+
const group = instance.locator.label;
|
|
14
|
+
const selectors = createSelectors(instance.component);
|
|
15
|
+
if (selectors === null)
|
|
16
|
+
return null;
|
|
17
|
+
else
|
|
18
|
+
return { group, selectors };
|
|
19
|
+
}
|
|
20
|
+
function createSelectors(component) {
|
|
21
|
+
if (component.receivers === undefined)
|
|
22
|
+
return null;
|
|
23
|
+
const sources = Object.values(component.receivers).map((receiver) => receiver.source);
|
|
24
|
+
return sources.filter((source) => source !== undefined);
|
|
25
|
+
}
|
|
26
|
+
export const ID = 'amqp-sources';
|
|
27
|
+
//# sourceMappingURL=sources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../source/bindings.amqp/sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAgB,MAAM,iBAAiB,CAAA;AAM/D,MAAM,UAAU,gBAAgB,CAAC,OAAgB,EAAE,SAAqB;IACtE,MAAM,QAAQ,GAAG,EAAE,CAAA;IAEnB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;QAEvC,IAAI,OAAO,KAAK,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAExD,OAAO,EAAE,SAAS,EAAE,CAAA;AACtB,CAAC;AAED,SAAS,aAAa,CAAC,QAAkB;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAA;IACpC,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAErD,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;;QAC9B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;AAClC,CAAC;AAED,SAAS,eAAe,CAAC,SAAmB;IAC1C,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IAElD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAErF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAa,CAAA;AACrE,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,GAAG,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/bindings.loop/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAwB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { properties } from './index.js';
|
|
4
|
+
it('is synchronous and local', () => {
|
|
5
|
+
assert.deepStrictEqual(properties, { async: false, local: true });
|
|
6
|
+
});
|
|
7
|
+
//# sourceMappingURL=properties.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"properties.test.js","sourceRoot":"","sources":["../../source/bindings.loop/properties.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAA;AAC9B,OAAO,MAAM,MAAM,oBAAoB,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;IAClC,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AACnE,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../source/bridges.bash/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG,YAAY,CAAA;AAC/B,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import { join, extname } from 'node:path';
|
|
3
|
+
import { DIR, EXT } from './const.js';
|
|
4
|
+
export async function operations(root) {
|
|
5
|
+
const path = join(root, DIR);
|
|
6
|
+
const names = await list(path);
|
|
7
|
+
const promises = names.map(async (name) => operation(root, name));
|
|
8
|
+
const operations = await Promise.all(promises);
|
|
9
|
+
return operations.reduce((acc, operation, index) => {
|
|
10
|
+
acc[names[index]] = operation;
|
|
11
|
+
return acc;
|
|
12
|
+
}, {});
|
|
13
|
+
}
|
|
14
|
+
export async function operation(root, name) {
|
|
15
|
+
const path = join(root, DIR, name + EXT);
|
|
16
|
+
await fs.access(path, fs.constants.F_OK);
|
|
17
|
+
return { type: 'computation' };
|
|
18
|
+
}
|
|
19
|
+
async function list(path) {
|
|
20
|
+
const files = await fs.readdir(path);
|
|
21
|
+
return files
|
|
22
|
+
.filter((file) => extname(file) === EXT)
|
|
23
|
+
.map((file) => file.slice(0, -EXT.length));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=define.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../source/bridges.bash/define.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAGrC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;IAE9B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAEjE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAE9C,OAAO,UAAU,CAAC,MAAM,CAAuB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;QACvE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAA;QAE7B,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,IAAY;IAEZ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,GAAG,CAAC,CAAA;IAExC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAExC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;AAChC,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEpC,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;SACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/bridges.bash/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Definition } from './operations.js';
|
|
2
|
+
/**
|
|
3
|
+
* What a component's modules declare, read from their source and never by importing them: a
|
|
4
|
+
* deploy reads a component whose dependencies are not installed, and a booting process reads
|
|
5
|
+
* the same, so the two cannot disagree.
|
|
6
|
+
*/
|
|
7
|
+
export declare function operations(root: string): Promise<Record<string, Definition>>;
|
|
8
|
+
export declare function events(root: string): Promise<Record<string, Event>>;
|
|
9
|
+
export declare function receivers(root: string): Promise<Record<string, Receiver>>;
|
|
10
|
+
export declare function guards(root: string): Promise<Record<string, object>>;
|
|
11
|
+
export interface Event {
|
|
12
|
+
conditioned: boolean;
|
|
13
|
+
subjective: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface Receiver {
|
|
16
|
+
conditioned: boolean;
|
|
17
|
+
adaptive: boolean;
|
|
18
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { sources } from './sources.js';
|
|
3
|
+
import { exports } from './exports.js';
|
|
4
|
+
import { algorithm } from './operations.js';
|
|
5
|
+
/**
|
|
6
|
+
* What a component's modules declare, read from their source and never by importing them: a
|
|
7
|
+
* deploy reads a component whose dependencies are not installed, and a booting process reads
|
|
8
|
+
* the same, so the two cannot disagree.
|
|
9
|
+
*/
|
|
10
|
+
export async function operations(root) {
|
|
11
|
+
const algorithms = {};
|
|
12
|
+
for (const [name, exported, path] of await read(root, 'operations')) {
|
|
13
|
+
const definition = algorithm(exported, path);
|
|
14
|
+
if (definition !== null)
|
|
15
|
+
algorithms[name] = definition;
|
|
16
|
+
}
|
|
17
|
+
return algorithms;
|
|
18
|
+
}
|
|
19
|
+
export async function events(root) {
|
|
20
|
+
const events = {};
|
|
21
|
+
for (const [name, exported] of await read(root, 'events'))
|
|
22
|
+
events[name] = { conditioned: exported.has('condition'), subjective: exported.has('payload') };
|
|
23
|
+
return events;
|
|
24
|
+
}
|
|
25
|
+
export async function receivers(root) {
|
|
26
|
+
const receivers = {};
|
|
27
|
+
for (const [name, exported] of await read(root, 'receivers'))
|
|
28
|
+
receivers[name] = { conditioned: exported.has('condition'), adaptive: exported.has('request') };
|
|
29
|
+
return receivers;
|
|
30
|
+
}
|
|
31
|
+
export async function guards(root) {
|
|
32
|
+
const guards = {};
|
|
33
|
+
for (const [name, exported] of await read(root, 'guards'))
|
|
34
|
+
if (exported.has('guard'))
|
|
35
|
+
guards[name] = {};
|
|
36
|
+
return guards;
|
|
37
|
+
}
|
|
38
|
+
async function read(root, directory) {
|
|
39
|
+
const modules = await sources(root, directory);
|
|
40
|
+
return Promise.all([...modules].map(async ([name, path]) => [
|
|
41
|
+
name,
|
|
42
|
+
exports(path, await readFile(path, 'utf8')),
|
|
43
|
+
path
|
|
44
|
+
]));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=define.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../source/bridges.node/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,SAAS,EAAmB,MAAM,iBAAiB,CAAA;AAE5D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,UAAU,GAA+B,EAAE,CAAA;IAEjD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;QACpE,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAE5C,IAAI,UAAU,KAAK,IAAI;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAA;IACxD,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,MAAM,MAAM,GAA0B,EAAE,CAAA;IAExC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAA;IAEhG,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,SAAS,GAA6B,EAAE,CAAA;IAE9C,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QAC1D,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAA;IAEjG,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,MAAM,MAAM,GAA2B,EAAE,CAAA;IAEzC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;IAEvG,OAAO,MAAM,CAAA;AACf,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,SAAiB;IACjD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAE9C,OAAO,OAAO,CAAC,GAAG,CAChB,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAsC,EAAE,CAAC;QAC3E,IAAI;QACJ,OAAO,CAAC,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI;KACL,CAAC,CACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a module exports, read from its source: the name, and what the value is declared as.
|
|
3
|
+
* Nothing is imported, so what a module depends on need not be installed to read it.
|
|
4
|
+
*/
|
|
5
|
+
export declare function exports(path: string, text: string): Exports;
|
|
6
|
+
export type Exports = Map<string, Binding>;
|
|
7
|
+
export interface Binding {
|
|
8
|
+
/** what the value is declared as, or `other` where it is computed rather than written */
|
|
9
|
+
kind: 'function' | 'class' | 'other';
|
|
10
|
+
/** the name a function or class is declared with, which a default export is known by */
|
|
11
|
+
declared?: string;
|
|
12
|
+
/** the parameters' names, `undefined` for one that is not a plain identifier */
|
|
13
|
+
params?: Array<string | undefined>;
|
|
14
|
+
/** a class's methods with their parameters */
|
|
15
|
+
methods?: Record<string, Array<string | undefined>>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { parseSync } from 'oxc-parser';
|
|
2
|
+
/**
|
|
3
|
+
* What a module exports, read from its source: the name, and what the value is declared as.
|
|
4
|
+
* Nothing is imported, so what a module depends on need not be installed to read it.
|
|
5
|
+
*/
|
|
6
|
+
export function exports(path, text) {
|
|
7
|
+
const { program, errors } = parseSync(path, text);
|
|
8
|
+
if (errors.length > 0)
|
|
9
|
+
throw new Error(`${path}: ${errors[0].message}`);
|
|
10
|
+
const locals = declarations(program.body);
|
|
11
|
+
const exported = new Map();
|
|
12
|
+
for (const node of program.body) {
|
|
13
|
+
if (node.type === 'ExportNamedDeclaration')
|
|
14
|
+
named(node, locals, exported);
|
|
15
|
+
else if (node.type === 'ExportDefaultDeclaration')
|
|
16
|
+
exported.set('default', binding(node.declaration, locals));
|
|
17
|
+
else if (node.type === 'ExpressionStatement')
|
|
18
|
+
assigned(node.expression, locals, exported);
|
|
19
|
+
}
|
|
20
|
+
return exported;
|
|
21
|
+
}
|
|
22
|
+
function named(node, locals, exported) {
|
|
23
|
+
if (node.exportKind === 'type')
|
|
24
|
+
return;
|
|
25
|
+
const declaration = node.declaration;
|
|
26
|
+
if (declaration !== null && declaration !== undefined)
|
|
27
|
+
for (const [name, bound] of declared(declaration))
|
|
28
|
+
exported.set(name, bound);
|
|
29
|
+
for (const specifier of node.specifiers ?? []) {
|
|
30
|
+
if (specifier.exportKind === 'type')
|
|
31
|
+
return;
|
|
32
|
+
exported.set(name(specifier.exported), binding(specifier.local, locals));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** `module.exports = { … }`, `module.exports.x = …` and `exports.x = …` */
|
|
36
|
+
function assigned(expression, locals, exported) {
|
|
37
|
+
if (expression.type !== 'AssignmentExpression' || expression.operator !== '=')
|
|
38
|
+
return;
|
|
39
|
+
const target = expression.left;
|
|
40
|
+
if (target.type !== 'MemberExpression')
|
|
41
|
+
return;
|
|
42
|
+
if (isModuleExports(target)) {
|
|
43
|
+
if (expression.right.type === 'ObjectExpression')
|
|
44
|
+
properties(expression.right, locals, exported);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const object = target.object;
|
|
48
|
+
if (isModuleExports(object) || (object.type === 'Identifier' && object.name === 'exports'))
|
|
49
|
+
exported.set(name(target.property), binding(expression.right, locals));
|
|
50
|
+
}
|
|
51
|
+
/** `{ computation, condition: () => … }` — each property is an export. */
|
|
52
|
+
function properties(object, locals, exported) {
|
|
53
|
+
for (const property of object.properties) {
|
|
54
|
+
if (property.type !== 'Property')
|
|
55
|
+
continue;
|
|
56
|
+
exported.set(name(property.key), binding(property.value, locals));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function isModuleExports(node) {
|
|
60
|
+
return (node.type === 'MemberExpression' &&
|
|
61
|
+
node.object.type === 'Identifier' &&
|
|
62
|
+
node.object.name === 'module' &&
|
|
63
|
+
name(node.property) === 'exports');
|
|
64
|
+
}
|
|
65
|
+
/** Every top-level declaration, which a specifier or a shorthand property refers to by name. */
|
|
66
|
+
function declarations(body) {
|
|
67
|
+
const locals = new Map();
|
|
68
|
+
for (const node of body) {
|
|
69
|
+
const declaration = node.type === 'ExportNamedDeclaration' ? node.declaration : node;
|
|
70
|
+
if (declaration === null || declaration === undefined)
|
|
71
|
+
continue;
|
|
72
|
+
for (const [name, bound] of declared(declaration))
|
|
73
|
+
locals.set(name, bound);
|
|
74
|
+
}
|
|
75
|
+
return locals;
|
|
76
|
+
}
|
|
77
|
+
function declared(node) {
|
|
78
|
+
switch (node.type) {
|
|
79
|
+
case 'FunctionDeclaration':
|
|
80
|
+
case 'ClassDeclaration':
|
|
81
|
+
return node.id === null ? [] : [[node.id.name, binding(node)]];
|
|
82
|
+
case 'VariableDeclaration':
|
|
83
|
+
return node.declarations
|
|
84
|
+
.filter((declarator) => declarator.id.type === 'Identifier')
|
|
85
|
+
.map((declarator) => [
|
|
86
|
+
declarator.id.name,
|
|
87
|
+
declarator.init === null ? OTHER : binding(declarator.init)
|
|
88
|
+
]);
|
|
89
|
+
default:
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function binding(node, locals) {
|
|
94
|
+
switch (node.type) {
|
|
95
|
+
case 'FunctionDeclaration':
|
|
96
|
+
case 'FunctionExpression':
|
|
97
|
+
case 'ArrowFunctionExpression':
|
|
98
|
+
return { kind: 'function', declared: node.id?.name, params: parameters(node.params) };
|
|
99
|
+
case 'ClassDeclaration':
|
|
100
|
+
case 'ClassExpression':
|
|
101
|
+
return { kind: 'class', declared: node.id?.name, methods: methods(node.body.body) };
|
|
102
|
+
case 'Identifier':
|
|
103
|
+
return locals?.get(node.name) ?? OTHER;
|
|
104
|
+
default:
|
|
105
|
+
return OTHER;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function methods(body) {
|
|
109
|
+
const methods = {};
|
|
110
|
+
for (const member of body) {
|
|
111
|
+
if (member.key === undefined || member.key.type === 'PrivateIdentifier')
|
|
112
|
+
continue;
|
|
113
|
+
if (member.type === 'MethodDefinition')
|
|
114
|
+
methods[name(member.key)] = parameters(member.value.params);
|
|
115
|
+
else if (member.type === 'PropertyDefinition' &&
|
|
116
|
+
member.value !== null &&
|
|
117
|
+
(member.value.type === 'ArrowFunctionExpression' ||
|
|
118
|
+
member.value.type === 'FunctionExpression'))
|
|
119
|
+
methods[name(member.key)] = parameters(member.value.params);
|
|
120
|
+
}
|
|
121
|
+
return methods;
|
|
122
|
+
}
|
|
123
|
+
/** A name is what is read: a pattern, a rest or a `this` annotation is not a name. */
|
|
124
|
+
function parameters(params) {
|
|
125
|
+
return params.map((param) => {
|
|
126
|
+
const pattern = param.type === 'AssignmentPattern' ? param.left : param;
|
|
127
|
+
return pattern.type === 'Identifier' ? pattern.name : undefined;
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function name(key) {
|
|
131
|
+
return key.type === 'Identifier' ? key.name : String(key.value);
|
|
132
|
+
}
|
|
133
|
+
const OTHER = { kind: 'other' };
|
|
134
|
+
//# sourceMappingURL=exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../source/bridges.node/exports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { exports } from './exports.js';
|
|
4
|
+
const read = (text, file = 'module.js') => exports(file, text);
|
|
5
|
+
describe('ES modules', () => {
|
|
6
|
+
it('reads a declaration exported where it is written', () => {
|
|
7
|
+
const bound = read('export async function transition(input, object, context) {}');
|
|
8
|
+
assert.deepStrictEqual(bound.get('transition'), {
|
|
9
|
+
kind: 'function',
|
|
10
|
+
declared: 'transition',
|
|
11
|
+
params: ['input', 'object', 'context']
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
it('reads a specifier by the name it is exported as', () => {
|
|
15
|
+
const bound = read('const meter = (input) => input\nexport { meter as computation }');
|
|
16
|
+
assert.deepStrictEqual(bound.get('computation'), {
|
|
17
|
+
kind: 'function',
|
|
18
|
+
declared: undefined,
|
|
19
|
+
params: ['input']
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
it('reads a default export with the name it declares', () => {
|
|
23
|
+
const bound = read('export default function transition(_, changeset) {}');
|
|
24
|
+
assert.deepStrictEqual(bound.get('default'), {
|
|
25
|
+
kind: 'function',
|
|
26
|
+
declared: 'transition',
|
|
27
|
+
params: ['_', 'changeset']
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
it('reads a class with its methods', () => {
|
|
31
|
+
const bound = read('export class Transition {\n execute(input, object) {}\n run() {}\n}');
|
|
32
|
+
assert.deepStrictEqual(bound.get('Transition'), {
|
|
33
|
+
kind: 'class',
|
|
34
|
+
declared: 'Transition',
|
|
35
|
+
methods: { execute: ['input', 'object'], run: [] }
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
it('reads what is not written as a function or a class as other', () => {
|
|
39
|
+
const bound = read('export const computation = wrap(fn)\nexport const NAME = "x"');
|
|
40
|
+
assert.deepStrictEqual(bound.get('computation'), { kind: 'other' });
|
|
41
|
+
assert.deepStrictEqual(bound.get('NAME'), { kind: 'other' });
|
|
42
|
+
});
|
|
43
|
+
it('leaves a type export out', () => {
|
|
44
|
+
const bound = read('export type Foo = string\nexport interface Bar {}', 'module.ts');
|
|
45
|
+
assert.equal(bound.size, 0);
|
|
46
|
+
});
|
|
47
|
+
it('names no parameter that is a pattern or a rest', () => {
|
|
48
|
+
const bound = read('export function computation({ a }, ...rest) {}');
|
|
49
|
+
assert.deepStrictEqual(bound.get('computation')?.params, [undefined, undefined]);
|
|
50
|
+
});
|
|
51
|
+
it('names a parameter with a default', () => {
|
|
52
|
+
const bound = read('export const effect = (input, stream = null) => stream');
|
|
53
|
+
assert.deepStrictEqual(bound.get('effect')?.params, ['input', 'stream']);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe('TypeScript', () => {
|
|
57
|
+
it('reads through annotations', () => {
|
|
58
|
+
const bound = read('export async function transition(input: string, object: State): Promise<Reply> {}', 'module.ts');
|
|
59
|
+
assert.deepStrictEqual(bound.get('transition')?.params, ['input', 'object']);
|
|
60
|
+
});
|
|
61
|
+
it('reads a class with private fields and typed methods', () => {
|
|
62
|
+
const bound = read('export class Computation {\n #foo: string = ""\n async mount(context: Context): Promise<void> {}\n async execute(input: string): Promise<string> { return input }\n}', 'module.ts');
|
|
63
|
+
assert.deepStrictEqual(bound.get('Computation')?.methods, {
|
|
64
|
+
mount: ['context'],
|
|
65
|
+
execute: ['input']
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
it('names the file that does not parse', () => {
|
|
69
|
+
assert.throws(() => read('export function (', 'broken.js'), /broken\.js/);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('CommonJS', () => {
|
|
73
|
+
it('reads module.exports', () => {
|
|
74
|
+
const bound = read('function computation(input) {}\nmodule.exports = { computation, other: () => 1 }', 'module.cjs');
|
|
75
|
+
assert.deepStrictEqual(bound.get('computation'), {
|
|
76
|
+
kind: 'function',
|
|
77
|
+
declared: 'computation',
|
|
78
|
+
params: ['input']
|
|
79
|
+
});
|
|
80
|
+
assert.deepStrictEqual(bound.get('other'), { kind: 'function', declared: undefined, params: [] });
|
|
81
|
+
});
|
|
82
|
+
it('reads exports.name and module.exports.name', () => {
|
|
83
|
+
const bound = read('exports.transition = function (input, object) {}\nmodule.exports.condition = () => true', 'module.cjs');
|
|
84
|
+
assert.deepStrictEqual(bound.get('transition')?.params, ['input', 'object']);
|
|
85
|
+
assert.equal(bound.get('condition')?.kind, 'function');
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=exports.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports.test.js","sourceRoot":"","sources":["../../source/bridges.node/exports.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/bridges.node/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Exports } from './exports.js';
|
|
2
|
+
/**
|
|
3
|
+
* What an algorithm module declares, by the conventions the bridge reads a module by: the
|
|
4
|
+
* exported name is the type, the second parameter's name is the scope. `null` where the module
|
|
5
|
+
* exports no algorithm.
|
|
6
|
+
*/
|
|
7
|
+
export declare function algorithm(exported: Exports, path: string): Definition | null;
|
|
8
|
+
export interface Definition {
|
|
9
|
+
type: string;
|
|
10
|
+
scope?: string;
|
|
11
|
+
input?: null;
|
|
12
|
+
}
|
|
13
|
+
export declare const TYPES: ReadonlySet<string>;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an algorithm module declares, by the conventions the bridge reads a module by: the
|
|
3
|
+
* exported name is the type, the second parameter's name is the scope. `null` where the module
|
|
4
|
+
* exports no algorithm.
|
|
5
|
+
*/
|
|
6
|
+
export function algorithm(exported, path) {
|
|
7
|
+
const entry = find(exported, path);
|
|
8
|
+
if (entry === null)
|
|
9
|
+
return null;
|
|
10
|
+
const [name, bound] = entry;
|
|
11
|
+
if (FACTORY.test(name))
|
|
12
|
+
return factory(name, bound, path);
|
|
13
|
+
if (CLASSES.has(name))
|
|
14
|
+
return klass(name, bound, path);
|
|
15
|
+
if (TYPES.has(name))
|
|
16
|
+
return func(name, bound);
|
|
17
|
+
throw new Error(`${path}: exported '${name}' does not match conventions`);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A module names its algorithm by exporting it, and it exports one. What a value is cannot
|
|
21
|
+
* always be read from its source — `export const computation = wrap(fn)` — so a name written the
|
|
22
|
+
* way an algorithm's is counts, whatever it is bound to.
|
|
23
|
+
*/
|
|
24
|
+
function find(exported, path) {
|
|
25
|
+
const candidates = [...exported].filter(([name, bound]) => name !== '__esModule' && (bound.kind !== 'other' || conventional(name)));
|
|
26
|
+
if (candidates.length === 0)
|
|
27
|
+
return null;
|
|
28
|
+
if (candidates.length === 1)
|
|
29
|
+
return resolve(candidates[0]);
|
|
30
|
+
const named = candidates.filter(([name]) => name !== 'default');
|
|
31
|
+
if (named.length === 1)
|
|
32
|
+
return named[0];
|
|
33
|
+
throw new Error(`${path}: a module must export one algorithm, and this one exports ` +
|
|
34
|
+
named.map(([name]) => `'${name}'`).join(', '));
|
|
35
|
+
}
|
|
36
|
+
/** `export default function transition` says its name in the function itself. */
|
|
37
|
+
function resolve([name, bound]) {
|
|
38
|
+
return name === 'default' ? [bound.declared ?? '', bound] : [name, bound];
|
|
39
|
+
}
|
|
40
|
+
function conventional(name) {
|
|
41
|
+
return TYPES.has(name) || CLASSES.has(name) || FACTORY.test(name);
|
|
42
|
+
}
|
|
43
|
+
function func(type, bound) {
|
|
44
|
+
const definition = { type };
|
|
45
|
+
// computed rather than written: the scope is the manifest's to declare
|
|
46
|
+
if (bound.kind === 'other')
|
|
47
|
+
return definition;
|
|
48
|
+
if (bound.kind !== 'function' || bound.params === undefined)
|
|
49
|
+
throw new Error(`Exported '${type}' does not match conventions`);
|
|
50
|
+
return signature(definition, bound.params);
|
|
51
|
+
}
|
|
52
|
+
function klass(name, bound, path) {
|
|
53
|
+
if (bound.kind !== 'class')
|
|
54
|
+
throw new Error(`${path}: '${name}' does not match conventions`);
|
|
55
|
+
const params = bound.methods?.execute;
|
|
56
|
+
if (params === undefined)
|
|
57
|
+
throw new Error(`${path}: Method 'execute' not found in '${name}'`);
|
|
58
|
+
return signature({ type: name.toLowerCase() }, params);
|
|
59
|
+
}
|
|
60
|
+
function factory(name, bound, path) {
|
|
61
|
+
if (bound.kind !== 'class')
|
|
62
|
+
throw new Error(`${path}: '${name}' does not match conventions`);
|
|
63
|
+
const match = name.match(FACTORY);
|
|
64
|
+
const definition = { type: match.groups.type.toLowerCase() };
|
|
65
|
+
const scope = match.groups.scope?.toLowerCase();
|
|
66
|
+
if (scope !== undefined)
|
|
67
|
+
definition.scope = scope;
|
|
68
|
+
return definition;
|
|
69
|
+
}
|
|
70
|
+
function signature(definition, params) {
|
|
71
|
+
definition.scope = params.length > 1 ? scope(params[1]) : 'none';
|
|
72
|
+
if (params.length === 0)
|
|
73
|
+
definition.input = null;
|
|
74
|
+
return definition;
|
|
75
|
+
}
|
|
76
|
+
function scope(name) {
|
|
77
|
+
if (name === undefined)
|
|
78
|
+
return undefined;
|
|
79
|
+
if (SCOPES.has(name))
|
|
80
|
+
return name;
|
|
81
|
+
if (name === 'context')
|
|
82
|
+
return 'none';
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
export const TYPES = new Set([
|
|
86
|
+
'transition',
|
|
87
|
+
'observation',
|
|
88
|
+
'assignment',
|
|
89
|
+
'computation',
|
|
90
|
+
'effect',
|
|
91
|
+
'unmanaged'
|
|
92
|
+
]);
|
|
93
|
+
const SCOPES = new Set(['object', 'objects', 'changeset', 'stream']);
|
|
94
|
+
const CLASSES = new Set([...TYPES].map((type) => type[0].toUpperCase() + type.slice(1)));
|
|
95
|
+
const FACTORY = /^(?<scope>Objects?|Changeset)?(?<type>Transition|Observation|Assignment|Computation|Effect)Factory$/;
|
|
96
|
+
//# sourceMappingURL=operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../source/bridges.node/operations.ts"],"names":[],"mappings":"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"}
|