@gent-js/gent 0.1.4
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 +21 -0
- package/README.md +136 -0
- package/dist/generated/packageEnv.d.ts +5 -0
- package/dist/generated/packageEnv.js +7 -0
- package/dist/generated/packageEnv.js.map +1 -0
- package/dist/src/buildDocumentFromJsonTemplate.d.ts +3 -0
- package/dist/src/buildDocumentFromJsonTemplate.js +27 -0
- package/dist/src/buildDocumentFromJsonTemplate.js.map +1 -0
- package/dist/src/buildDocumentFromTextTemplate.d.ts +3 -0
- package/dist/src/buildDocumentFromTextTemplate.js +27 -0
- package/dist/src/buildDocumentFromTextTemplate.js.map +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +103 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/cliConsts.d.ts +3 -0
- package/dist/src/cliConsts.js +3 -0
- package/dist/src/cliConsts.js.map +1 -0
- package/dist/src/cliTypes.d.ts +7 -0
- package/dist/src/cliTypes.js +2 -0
- package/dist/src/cliTypes.js.map +1 -0
- package/dist/src/command/commandManager/commandManager.d.ts +7 -0
- package/dist/src/command/commandManager/commandManager.js +83 -0
- package/dist/src/command/commandManager/commandManager.js.map +1 -0
- package/dist/src/command/commandParser/commandParser.d.ts +11 -0
- package/dist/src/command/commandParser/commandParser.js +90 -0
- package/dist/src/command/commandParser/commandParser.js.map +1 -0
- package/dist/src/command/commandParser/parseCommand.d.ts +2 -0
- package/dist/src/command/commandParser/parseCommand.js +19 -0
- package/dist/src/command/commandParser/parseCommand.js.map +1 -0
- package/dist/src/command/commandParser/types.d.ts +33 -0
- package/dist/src/command/commandParser/types.js +2 -0
- package/dist/src/command/commandParser/types.js.map +1 -0
- package/dist/src/command/commandParser/visitor.d.ts +2 -0
- package/dist/src/command/commandParser/visitor.js +160 -0
- package/dist/src/command/commandParser/visitor.js.map +1 -0
- package/dist/src/command/commands/date/anytime.d.ts +2 -0
- package/dist/src/command/commands/date/anytime.js +8 -0
- package/dist/src/command/commands/date/anytime.js.map +1 -0
- package/dist/src/command/commands/date/timestamp.d.ts +2 -0
- package/dist/src/command/commands/date/timestamp.js +71 -0
- package/dist/src/command/commands/date/timestamp.js.map +1 -0
- package/dist/src/command/commands/finance/creditCardCVV.d.ts +2 -0
- package/dist/src/command/commands/finance/creditCardCVV.js +8 -0
- package/dist/src/command/commands/finance/creditCardCVV.js.map +1 -0
- package/dist/src/command/commands/finance/creditCardIssuer.d.ts +2 -0
- package/dist/src/command/commands/finance/creditCardIssuer.js +8 -0
- package/dist/src/command/commands/finance/creditCardIssuer.js.map +1 -0
- package/dist/src/command/commands/finance/creditCardNumber.d.ts +6 -0
- package/dist/src/command/commands/finance/creditCardNumber.js +12 -0
- package/dist/src/command/commands/finance/creditCardNumber.js.map +1 -0
- package/dist/src/command/commands/hacker/hacker.noun.d.ts +2 -0
- package/dist/src/command/commands/hacker/hacker.noun.js +8 -0
- package/dist/src/command/commands/hacker/hacker.noun.js.map +1 -0
- package/dist/src/command/commands/index.d.ts +1 -0
- package/dist/src/command/commands/index.js +95 -0
- package/dist/src/command/commands/index.js.map +1 -0
- package/dist/src/command/commands/internet/domainName.d.ts +2 -0
- package/dist/src/command/commands/internet/domainName.js +8 -0
- package/dist/src/command/commands/internet/domainName.js.map +1 -0
- package/dist/src/command/commands/internet/email.d.ts +2 -0
- package/dist/src/command/commands/internet/email.js +8 -0
- package/dist/src/command/commands/internet/email.js.map +1 -0
- package/dist/src/command/commands/internet/httpMethod.d.ts +2 -0
- package/dist/src/command/commands/internet/httpMethod.js +8 -0
- package/dist/src/command/commands/internet/httpMethod.js.map +1 -0
- package/dist/src/command/commands/internet/httpStatusCode.d.ts +2 -0
- package/dist/src/command/commands/internet/httpStatusCode.js +8 -0
- package/dist/src/command/commands/internet/httpStatusCode.js.map +1 -0
- package/dist/src/command/commands/internet/ip.d.ts +2 -0
- package/dist/src/command/commands/internet/ip.js +8 -0
- package/dist/src/command/commands/internet/ip.js.map +1 -0
- package/dist/src/command/commands/internet/ipv4.d.ts +2 -0
- package/dist/src/command/commands/internet/ipv4.js +8 -0
- package/dist/src/command/commands/internet/ipv4.js.map +1 -0
- package/dist/src/command/commands/internet/ipv6.d.ts +2 -0
- package/dist/src/command/commands/internet/ipv6.js +8 -0
- package/dist/src/command/commands/internet/ipv6.js.map +1 -0
- package/dist/src/command/commands/internet/mac.d.ts +2 -0
- package/dist/src/command/commands/internet/mac.js +8 -0
- package/dist/src/command/commands/internet/mac.js.map +1 -0
- package/dist/src/command/commands/internet/password.d.ts +6 -0
- package/dist/src/command/commands/internet/password.js +12 -0
- package/dist/src/command/commands/internet/password.js.map +1 -0
- package/dist/src/command/commands/internet/pri.d.ts +2 -0
- package/dist/src/command/commands/internet/pri.js +13 -0
- package/dist/src/command/commands/internet/pri.js.map +1 -0
- package/dist/src/command/commands/internet/url.d.ts +2 -0
- package/dist/src/command/commands/internet/url.js +8 -0
- package/dist/src/command/commands/internet/url.js.map +1 -0
- package/dist/src/command/commands/internet/userAgent.d.ts +2 -0
- package/dist/src/command/commands/internet/userAgent.js +8 -0
- package/dist/src/command/commands/internet/userAgent.js.map +1 -0
- package/dist/src/command/commands/internet/username.d.ts +2 -0
- package/dist/src/command/commands/internet/username.js +8 -0
- package/dist/src/command/commands/internet/username.js.map +1 -0
- package/dist/src/command/commands/location/country.d.ts +2 -0
- package/dist/src/command/commands/location/country.js +8 -0
- package/dist/src/command/commands/location/country.js.map +1 -0
- package/dist/src/command/commands/location/countryCode.d.ts +7 -0
- package/dist/src/command/commands/location/countryCode.js +13 -0
- package/dist/src/command/commands/location/countryCode.js.map +1 -0
- package/dist/src/command/commands/location/timeZone.d.ts +2 -0
- package/dist/src/command/commands/location/timeZone.js +8 -0
- package/dist/src/command/commands/location/timeZone.js.map +1 -0
- package/dist/src/command/commands/lorem/lorem.sentences.d.ts +7 -0
- package/dist/src/command/commands/lorem/lorem.sentences.js +14 -0
- package/dist/src/command/commands/lorem/lorem.sentences.js.map +1 -0
- package/dist/src/command/commands/number/int.d.ts +7 -0
- package/dist/src/command/commands/number/int.js +13 -0
- package/dist/src/command/commands/number/int.js.map +1 -0
- package/dist/src/command/commands/number/pid.d.ts +2 -0
- package/dist/src/command/commands/number/pid.js +14 -0
- package/dist/src/command/commands/number/pid.js.map +1 -0
- package/dist/src/command/commands/others/length.d.ts +7 -0
- package/dist/src/command/commands/others/length.js +13 -0
- package/dist/src/command/commands/others/length.js.map +1 -0
- package/dist/src/command/commands/phone/imei.d.ts +2 -0
- package/dist/src/command/commands/phone/imei.js +8 -0
- package/dist/src/command/commands/phone/imei.js.map +1 -0
- package/dist/src/command/commands/phone/phone.number.d.ts +6 -0
- package/dist/src/command/commands/phone/phone.number.js +12 -0
- package/dist/src/command/commands/phone/phone.number.js.map +1 -0
- package/dist/src/command/commands/string/alpha.d.ts +7 -0
- package/dist/src/command/commands/string/alpha.js +13 -0
- package/dist/src/command/commands/string/alpha.js.map +1 -0
- package/dist/src/command/commands/string/alphanumeric.d.ts +7 -0
- package/dist/src/command/commands/string/alphanumeric.js +13 -0
- package/dist/src/command/commands/string/alphanumeric.js.map +1 -0
- package/dist/src/command/commands/string/binary.d.ts +7 -0
- package/dist/src/command/commands/string/binary.js +13 -0
- package/dist/src/command/commands/string/binary.js.map +1 -0
- package/dist/src/command/commands/string/hexadecimal.d.ts +7 -0
- package/dist/src/command/commands/string/hexadecimal.js +13 -0
- package/dist/src/command/commands/string/hexadecimal.js.map +1 -0
- package/dist/src/command/commands/string/numeric.d.ts +6 -0
- package/dist/src/command/commands/string/numeric.js +12 -0
- package/dist/src/command/commands/string/numeric.js.map +1 -0
- package/dist/src/command/commands/string/octal.d.ts +7 -0
- package/dist/src/command/commands/string/octal.js +13 -0
- package/dist/src/command/commands/string/octal.js.map +1 -0
- package/dist/src/command/commands/string/ulid.d.ts +2 -0
- package/dist/src/command/commands/string/ulid.js +8 -0
- package/dist/src/command/commands/string/ulid.js.map +1 -0
- package/dist/src/command/commands/string/uuid.d.ts +2 -0
- package/dist/src/command/commands/string/uuid.js +8 -0
- package/dist/src/command/commands/string/uuid.js.map +1 -0
- package/dist/src/command/commands/system/directoryPath.d.ts +2 -0
- package/dist/src/command/commands/system/directoryPath.js +8 -0
- package/dist/src/command/commands/system/directoryPath.js.map +1 -0
- package/dist/src/command/commands/system/filePath.d.ts +2 -0
- package/dist/src/command/commands/system/filePath.js +8 -0
- package/dist/src/command/commands/system/filePath.js.map +1 -0
- package/dist/src/command/commands/system/mimeType.d.ts +2 -0
- package/dist/src/command/commands/system/mimeType.js +8 -0
- package/dist/src/command/commands/system/mimeType.js.map +1 -0
- package/dist/src/command/commands/system/networkInterface.d.ts +2 -0
- package/dist/src/command/commands/system/networkInterface.js +8 -0
- package/dist/src/command/commands/system/networkInterface.js.map +1 -0
- package/dist/src/command/commands/system/semver.d.ts +2 -0
- package/dist/src/command/commands/system/semver.js +8 -0
- package/dist/src/command/commands/system/semver.js.map +1 -0
- package/dist/src/command/consts.d.ts +3 -0
- package/dist/src/command/consts.js +4 -0
- package/dist/src/command/consts.js.map +1 -0
- package/dist/src/command/index.d.ts +4 -0
- package/dist/src/command/index.js +3 -0
- package/dist/src/command/index.js.map +1 -0
- package/dist/src/command/type.d.ts +22 -0
- package/dist/src/command/type.js +2 -0
- package/dist/src/command/type.js.map +1 -0
- package/dist/src/command/utils.d.ts +2 -0
- package/dist/src/command/utils.js +9 -0
- package/dist/src/command/utils.js.map +1 -0
- package/dist/src/commandDocument/buildCommandDocumentFragments.d.ts +4 -0
- package/dist/src/commandDocument/buildCommandDocumentFragments.js +12 -0
- package/dist/src/commandDocument/buildCommandDocumentFragments.js.map +1 -0
- package/dist/src/commandDocument/createCommandDocumentFragment.d.ts +3 -0
- package/dist/src/commandDocument/createCommandDocumentFragment.js +14 -0
- package/dist/src/commandDocument/createCommandDocumentFragment.js.map +1 -0
- package/dist/src/commandDocument/index.d.ts +1 -0
- package/dist/src/commandDocument/index.js +2 -0
- package/dist/src/commandDocument/index.js.map +1 -0
- package/dist/src/commandTemplate/index.d.ts +2 -0
- package/dist/src/commandTemplate/index.js +3 -0
- package/dist/src/commandTemplate/index.js.map +1 -0
- package/dist/src/commandTemplate/parseAndEmbedCommandExpression.d.ts +3 -0
- package/dist/src/commandTemplate/parseAndEmbedCommandExpression.js +12 -0
- package/dist/src/commandTemplate/parseAndEmbedCommandExpression.js.map +1 -0
- package/dist/src/commandTemplate/types.d.ts +3 -0
- package/dist/src/commandTemplate/types.js +2 -0
- package/dist/src/commandTemplate/types.js.map +1 -0
- package/dist/src/common/weightedItemFeeder.d.ts +15 -0
- package/dist/src/common/weightedItemFeeder.js +67 -0
- package/dist/src/common/weightedItemFeeder.js.map +1 -0
- package/dist/src/consts.d.ts +14 -0
- package/dist/src/consts.js +17 -0
- package/dist/src/consts.js.map +1 -0
- package/dist/src/createDocumentFeeder.d.ts +5 -0
- package/dist/src/createDocumentFeeder.js +64 -0
- package/dist/src/createDocumentFeeder.js.map +1 -0
- package/dist/src/createGeneratingDocumentStream.d.ts +4 -0
- package/dist/src/createGeneratingDocumentStream.js +33 -0
- package/dist/src/createGeneratingDocumentStream.js.map +1 -0
- package/dist/src/createGeneratingLogStream.d.ts +4 -0
- package/dist/src/createGeneratingLogStream.js +21 -0
- package/dist/src/createGeneratingLogStream.js.map +1 -0
- package/dist/src/debugFileWriter.d.ts +5 -0
- package/dist/src/debugFileWriter.js +33 -0
- package/dist/src/debugFileWriter.js.map +1 -0
- package/dist/src/document/createDocumentContextIterator.d.ts +2 -0
- package/dist/src/document/createDocumentContextIterator.js +15 -0
- package/dist/src/document/createDocumentContextIterator.js.map +1 -0
- package/dist/src/document/generatingDocument.d.ts +7 -0
- package/dist/src/document/generatingDocument.js +13 -0
- package/dist/src/document/generatingDocument.js.map +1 -0
- package/dist/src/document/index.d.ts +4 -0
- package/dist/src/document/index.js +4 -0
- package/dist/src/document/index.js.map +1 -0
- package/dist/src/document/types.d.ts +20 -0
- package/dist/src/document/types.js +2 -0
- package/dist/src/document/types.js.map +1 -0
- package/dist/src/document/utils.d.ts +2 -0
- package/dist/src/document/utils.js +9 -0
- package/dist/src/document/utils.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/json/abstractJsonable.d.ts +12 -0
- package/dist/src/json/abstractJsonable.js +33 -0
- package/dist/src/json/abstractJsonable.js.map +1 -0
- package/dist/src/json/createJsonable.d.ts +3 -0
- package/dist/src/json/createJsonable.js +31 -0
- package/dist/src/json/createJsonable.js.map +1 -0
- package/dist/src/json/createJsonableTransformer.d.ts +4 -0
- package/dist/src/json/createJsonableTransformer.js +251 -0
- package/dist/src/json/createJsonableTransformer.js.map +1 -0
- package/dist/src/json/index.d.ts +6 -0
- package/dist/src/json/index.js +4 -0
- package/dist/src/json/index.js.map +1 -0
- package/dist/src/json/jsonConsts.d.ts +1 -0
- package/dist/src/json/jsonConsts.js +9 -0
- package/dist/src/json/jsonConsts.js.map +1 -0
- package/dist/src/json/jsonTypes.d.ts +8 -0
- package/dist/src/json/jsonTypes.js +2 -0
- package/dist/src/json/jsonTypes.js.map +1 -0
- package/dist/src/json/jsonableClasses/arrayJsonable.d.ts +11 -0
- package/dist/src/json/jsonableClasses/arrayJsonable.js +40 -0
- package/dist/src/json/jsonableClasses/arrayJsonable.js.map +1 -0
- package/dist/src/json/jsonableClasses/booleanJsonable.d.ts +8 -0
- package/dist/src/json/jsonableClasses/booleanJsonable.js +15 -0
- package/dist/src/json/jsonableClasses/booleanJsonable.js.map +1 -0
- package/dist/src/json/jsonableClasses/nullJsonable.d.ts +8 -0
- package/dist/src/json/jsonableClasses/nullJsonable.js +11 -0
- package/dist/src/json/jsonableClasses/nullJsonable.js.map +1 -0
- package/dist/src/json/jsonableClasses/numberJsonable.d.ts +9 -0
- package/dist/src/json/jsonableClasses/numberJsonable.js +18 -0
- package/dist/src/json/jsonableClasses/numberJsonable.js.map +1 -0
- package/dist/src/json/jsonableClasses/objectJsonable.d.ts +10 -0
- package/dist/src/json/jsonableClasses/objectJsonable.js +14 -0
- package/dist/src/json/jsonableClasses/objectJsonable.js.map +1 -0
- package/dist/src/json/jsonableClasses/stringJsonable.d.ts +9 -0
- package/dist/src/json/jsonableClasses/stringJsonable.js +15 -0
- package/dist/src/json/jsonableClasses/stringJsonable.js.map +1 -0
- package/dist/src/json/jsonableParametersConsts.d.ts +7 -0
- package/dist/src/json/jsonableParametersConsts.js +8 -0
- package/dist/src/json/jsonableParametersConsts.js.map +1 -0
- package/dist/src/json/jsonableParametersTypes.d.ts +32 -0
- package/dist/src/json/jsonableParametersTypes.js +2 -0
- package/dist/src/json/jsonableParametersTypes.js.map +1 -0
- package/dist/src/json/jsonableTypes.d.ts +11 -0
- package/dist/src/json/jsonableTypes.js +2 -0
- package/dist/src/json/jsonableTypes.js.map +1 -0
- package/dist/src/json/parseJsonable.d.ts +2 -0
- package/dist/src/json/parseJsonable.js +19 -0
- package/dist/src/json/parseJsonable.js.map +1 -0
- package/dist/src/json/stringifyJsonable.d.ts +6 -0
- package/dist/src/json/stringifyJsonable.js +43 -0
- package/dist/src/json/stringifyJsonable.js.map +1 -0
- package/dist/src/json/utils.d.ts +2 -0
- package/dist/src/json/utils.js +9 -0
- package/dist/src/json/utils.js.map +1 -0
- package/dist/src/output/createFileOutput.d.ts +2 -0
- package/dist/src/output/createFileOutput.js +28 -0
- package/dist/src/output/createFileOutput.js.map +1 -0
- package/dist/src/output/createTcpOutput.d.ts +3 -0
- package/dist/src/output/createTcpOutput.js +15 -0
- package/dist/src/output/createTcpOutput.js.map +1 -0
- package/dist/src/output/createUdpOutput.d.ts +3 -0
- package/dist/src/output/createUdpOutput.js +5 -0
- package/dist/src/output/createUdpOutput.js.map +1 -0
- package/dist/src/output/initializeOutput.d.ts +3 -0
- package/dist/src/output/initializeOutput.js +38 -0
- package/dist/src/output/initializeOutput.js.map +1 -0
- package/dist/src/output/tcpDocumentStream.d.ts +16 -0
- package/dist/src/output/tcpDocumentStream.js +107 -0
- package/dist/src/output/tcpDocumentStream.js.map +1 -0
- package/dist/src/output/throttlingDocumentStream.d.ts +21 -0
- package/dist/src/output/throttlingDocumentStream.js +69 -0
- package/dist/src/output/throttlingDocumentStream.js.map +1 -0
- package/dist/src/output/udpDocumentStream.d.ts +13 -0
- package/dist/src/output/udpDocumentStream.js +47 -0
- package/dist/src/output/udpDocumentStream.js.map +1 -0
- package/dist/src/output/updStream.d.ts +17 -0
- package/dist/src/output/updStream.js +78 -0
- package/dist/src/output/updStream.js.map +1 -0
- package/dist/src/run.d.ts +4 -0
- package/dist/src/run.js +55 -0
- package/dist/src/run.js.map +1 -0
- package/dist/src/template/consts.d.ts +2 -0
- package/dist/src/template/consts.js +3 -0
- package/dist/src/template/consts.js.map +1 -0
- package/dist/src/template/index.d.ts +4 -0
- package/dist/src/template/index.js +4 -0
- package/dist/src/template/index.js.map +1 -0
- package/dist/src/template/templateParser/parseTemplate.d.ts +2 -0
- package/dist/src/template/templateParser/parseTemplate.js +11 -0
- package/dist/src/template/templateParser/parseTemplate.js.map +1 -0
- package/dist/src/template/templateParser/templateParser.d.ts +11 -0
- package/dist/src/template/templateParser/templateParser.js +87 -0
- package/dist/src/template/templateParser/templateParser.js.map +1 -0
- package/dist/src/template/templateParser/visitor.d.ts +4 -0
- package/dist/src/template/templateParser/visitor.js +60 -0
- package/dist/src/template/templateParser/visitor.js.map +1 -0
- package/dist/src/template/types.d.ts +5 -0
- package/dist/src/template/types.js +2 -0
- package/dist/src/template/types.js.map +1 -0
- package/dist/src/template/utils.d.ts +2 -0
- package/dist/src/template/utils.js +4 -0
- package/dist/src/template/utils.js.map +1 -0
- package/dist/src/types.d.ts +68 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils.d.ts +18 -0
- package/dist/src/utils.js +321 -0
- package/dist/src/utils.js.map +1 -0
- package/package.json +47 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 tomo-waka
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# GenT
|
|
2
|
+
|
|
3
|
+
## Introduction
|
|
4
|
+
|
|
5
|
+
GenT is a template-based dummy text data generator. The generated data is used as test data for software that process such data. You can define data format with a simple text file (referred to as a "template") and obtain the output as text file. It means that both input and output are non-programing interfaces. These features are particularly useful as test data in end-to-end testing situations, rather than in Unit testing.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
* "template" and "template commands"
|
|
10
|
+
* define generating text data format with a "template" which is a simple text file.
|
|
11
|
+
* embed "template commands" within a "template" with special syntax.
|
|
12
|
+
* "template commands" generate dynamic value, thus generating data will be non-static.
|
|
13
|
+
* there are various "template commands" and also easily add new command.
|
|
14
|
+
* "meta file"
|
|
15
|
+
* meta file allows to manage multiple templates and their probabilities.
|
|
16
|
+
* "json mode"
|
|
17
|
+
* json mode can control json structure.
|
|
18
|
+
* output
|
|
19
|
+
* flexible output interface.
|
|
20
|
+
|
|
21
|
+
## Quick Start
|
|
22
|
+
|
|
23
|
+
install with npm globally.
|
|
24
|
+
|
|
25
|
+
```shell
|
|
26
|
+
npm install -g gent
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
> [!NOTE]
|
|
30
|
+
> This quick start explains the steps how to use GenT as shell cli application. If you are looking for how to use as a dependency or how to develop, see other sections.
|
|
31
|
+
|
|
32
|
+
Then, create a template. Save the following content as a text file in any directory, for instance `{dir path}/template.log`.
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
<34>{{timestamp}} mymachine su: 'su root failed for lonvick on /dev/pts/8
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Above content of template is a syslog format log but its timestamp part has been replaced with template command syntax `{{timestamp}}`.
|
|
39
|
+
|
|
40
|
+
Then, execute following command with previously created template path.
|
|
41
|
+
|
|
42
|
+
```shell
|
|
43
|
+
gent --template {dir path}/template.log --count 3
|
|
44
|
+
```
|
|
45
|
+
output file `out.log` will be created in current working directory.
|
|
46
|
+
And content of output will be like following.
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
<34>2024-11-20T17:55:12.963+09:00 mymachine su: 'su root failed for lonvick on /dev/pts/8
|
|
50
|
+
<34>2024-11-21T03:02:42.440+09:00 mymachine su: 'su root failed for lonvick on /dev/pts/8
|
|
51
|
+
<34>2024-11-21T08:45:03.377+09:00 mymachine su: 'su root failed for lonvick on /dev/pts/8
|
|
52
|
+
```
|
|
53
|
+
Each text line is almost same as template content but template command part has been replaced with generated text by the template command.
|
|
54
|
+
|
|
55
|
+
This is basic mechanics of GenT.
|
|
56
|
+
|
|
57
|
+
Fully customized template example is following
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
<{{pri}}>{{timestamp --format "MMM dd hh:mm:ss"}} {{ipv4}} {{hacker.noun --variations 3}}[{{pid}}]: {{lorem.sentences}}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Template
|
|
64
|
+
|
|
65
|
+
Template file defines generating text data format.
|
|
66
|
+
|
|
67
|
+
Template is basically just a text file. You can embed template command with special syntax.
|
|
68
|
+
So GenT process template command and replace command expression with command result.
|
|
69
|
+
|
|
70
|
+
## Template Commands
|
|
71
|
+
|
|
72
|
+
basic template command syntax is following.
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
{{command_name}}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Some commands accept command option, command and option syntax is like shell command syntax.
|
|
79
|
+
```text
|
|
80
|
+
{{command_name --optA --optBWithValue value}}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
supporting template commands and their options are below.
|
|
84
|
+
|
|
85
|
+
[Command List](./docs/templateCommands)
|
|
86
|
+
|
|
87
|
+
## Meta template sample
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"from": "2000-01-01T00:00:00+09:00",
|
|
92
|
+
"to": "2020-12-31T23:59:59+09:00",
|
|
93
|
+
"count": 100,
|
|
94
|
+
"out": "out.log",
|
|
95
|
+
"templates": [
|
|
96
|
+
{
|
|
97
|
+
"path": "template.log"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Json mode
|
|
104
|
+
|
|
105
|
+
### special commands
|
|
106
|
+
|
|
107
|
+
* array length
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
"{{length --min 2 --max 5}}"
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
* array item weight
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"{{weight}}": 1
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
* value probability
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"{{probability}}": 50
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
* dynamic value
|
|
130
|
+
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"{{type}}": "number",
|
|
134
|
+
"{{content}}": "{{int}}"
|
|
135
|
+
}
|
|
136
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageEnv.js","sourceRoot":"","sources":["../../generated/packageEnv.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,0CAA0C;CAC/C,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { CommandManager } from "./command/index.js";
|
|
2
|
+
import type { DocumentContent, DocumentOptions } from "./document/index.js";
|
|
3
|
+
export declare function buildDocumentFromJsonTemplate(templateString: string, commandManager: CommandManager, documentOptions: DocumentOptions): DocumentContent;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createJsonableTransformer, parseJsonable, stringifyJsonable, } from "./json/index.js";
|
|
2
|
+
export function buildDocumentFromJsonTemplate(templateString, commandManager, documentOptions) {
|
|
3
|
+
const jsonableTransformer = createJsonableTransformer(commandManager, documentOptions);
|
|
4
|
+
const jsonableValue = parseJsonable(templateString, jsonableTransformer);
|
|
5
|
+
if (jsonableValue === undefined) {
|
|
6
|
+
return [];
|
|
7
|
+
}
|
|
8
|
+
return [new JsonDocumentFragmentImpl(jsonableValue)];
|
|
9
|
+
}
|
|
10
|
+
class JsonDocumentFragmentImpl {
|
|
11
|
+
jsonableValue;
|
|
12
|
+
constructor(jsonableValue) {
|
|
13
|
+
this.jsonableValue = jsonableValue;
|
|
14
|
+
}
|
|
15
|
+
toString(context) {
|
|
16
|
+
let json;
|
|
17
|
+
try {
|
|
18
|
+
json = stringifyJsonable(this.jsonableValue, "", context);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.error(error);
|
|
22
|
+
json = undefined;
|
|
23
|
+
}
|
|
24
|
+
return json ?? "";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=buildDocumentFromJsonTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildDocumentFromJsonTemplate.js","sourceRoot":"","sources":["../../src/buildDocumentFromJsonTemplate.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,yBAAyB,EAEzB,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,UAAU,6BAA6B,CAC3C,cAAsB,EACtB,cAA8B,EAC9B,eAAgC;IAEhC,MAAM,mBAAmB,GAAG,yBAAyB,CACnD,cAAc,EACd,eAAe,CAChB,CAAC;IACF,MAAM,aAAa,GAAG,aAAa,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;IACzE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,IAAI,wBAAwB,CAAC,aAAa,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,wBAAwB;IACC;IAA7B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEtD,QAAQ,CAAC,OAAwB;QACtC,IAAI,IAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { CommandManager } from "./command/index.js";
|
|
2
|
+
import type { DocumentContent, DocumentOptions } from "./document/index.js";
|
|
3
|
+
export declare function buildDocumentFromTextTemplate(templateString: string, commandManager: CommandManager, documentOptions: DocumentOptions): DocumentContent;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as nodePath from "node:path";
|
|
2
|
+
import { buildCommandDocumentFragments } from "./commandDocument/index.js";
|
|
3
|
+
import { parseAndEmbedCommandExpression } from "./commandTemplate/index.js";
|
|
4
|
+
import { debugFileWriter } from "./debugFileWriter.js";
|
|
5
|
+
import { parseTemplate } from "./template/index.js";
|
|
6
|
+
import { isStringOnlyTemplateFragments } from "./template/utils.js";
|
|
7
|
+
export function buildDocumentFromTextTemplate(templateString, commandManager, documentOptions) {
|
|
8
|
+
const templateFragments = parseTemplate(templateString);
|
|
9
|
+
const fileName = nodePath.basename(documentOptions.path);
|
|
10
|
+
if (fileName !== undefined) {
|
|
11
|
+
debugFileWriter.writeFile(`${fileName}.parsed-template.json`, JSON.stringify(templateFragments, undefined, 2));
|
|
12
|
+
}
|
|
13
|
+
const isStringOnly = isStringOnlyTemplateFragments(templateFragments);
|
|
14
|
+
// output original string
|
|
15
|
+
if (isStringOnly) {
|
|
16
|
+
if (fileName !== undefined) {
|
|
17
|
+
debugFileWriter.writeFile(`${fileName}.parsed-expression.json`, templateString);
|
|
18
|
+
}
|
|
19
|
+
return templateString;
|
|
20
|
+
}
|
|
21
|
+
const parsedTemplateFragments = parseAndEmbedCommandExpression(templateFragments);
|
|
22
|
+
if (fileName !== undefined) {
|
|
23
|
+
debugFileWriter.writeFile(`${fileName}.parsed-expression.json`, JSON.stringify(parsedTemplateFragments, undefined, 2));
|
|
24
|
+
}
|
|
25
|
+
return buildCommandDocumentFragments(parsedTemplateFragments, commandManager, documentOptions);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=buildDocumentFromTextTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildDocumentFromTextTemplate.js","sourceRoot":"","sources":["../../src/buildDocumentFromTextTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAEpE,MAAM,UAAU,6BAA6B,CAC3C,cAAsB,EACtB,cAA8B,EAC9B,eAAgC;IAEhC,MAAM,iBAAiB,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,eAAe,CAAC,SAAS,CACvB,GAAG,QAAQ,uBAAuB,EAClC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC,CAChD,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;IAEtE,yBAAyB;IACzB,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,eAAe,CAAC,SAAS,CACvB,GAAG,QAAQ,yBAAyB,EACpC,cAAc,CACf,CAAC;QACJ,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,uBAAuB,GAC3B,8BAA8B,CAAC,iBAAiB,CAAC,CAAC;IAEpD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,eAAe,CAAC,SAAS,CACvB,GAAG,QAAQ,yBAAyB,EACpC,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,SAAS,EAAE,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC;IAED,OAAO,6BAA6B,CAClC,uBAAuB,EACvB,cAAc,EACd,eAAe,CAChB,CAAC;AACJ,CAAC"}
|
package/dist/src/cli.js
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command, Option } from "commander";
|
|
3
|
+
import { packageEnv } from "../generated/packageEnv.js";
|
|
4
|
+
import { FAILED, SUCCEEDED } from "./cliConsts.js";
|
|
5
|
+
import { DEFAULT_TEMPLATE_WEIGHT } from "./consts.js";
|
|
6
|
+
import { run } from "./run.js";
|
|
7
|
+
import { determineTemplateModeByFile, isNonNullObject, normalizeProgramOptions, parseAndResolveFilePath, parseString, tryReadFile, } from "./utils.js";
|
|
8
|
+
const templateOption = new Option("-t --template <template-file>", "path to template file");
|
|
9
|
+
const metaOption = new Option("-m --meta <meta-file>", "path to meta file");
|
|
10
|
+
const countOption = new Option("-c --count <number>", "number of logs to generate.").default(1);
|
|
11
|
+
const fromOption = new Option("-s --start <date-expression>", "from date");
|
|
12
|
+
const toOption = new Option("-e --end <date-expression>", "end date");
|
|
13
|
+
const outOption = new Option("-o --out <path>", "path to output files.").default("./out.log");
|
|
14
|
+
const debugOption = new Option("-d --debug", "debug flat")
|
|
15
|
+
.default(false)
|
|
16
|
+
.hideHelp(true);
|
|
17
|
+
async function main() {
|
|
18
|
+
const program = new Command();
|
|
19
|
+
program
|
|
20
|
+
.name(packageEnv.name)
|
|
21
|
+
.version(packageEnv.version)
|
|
22
|
+
.description(packageEnv.description)
|
|
23
|
+
.showHelpAfterError()
|
|
24
|
+
.addOption(templateOption)
|
|
25
|
+
.addOption(metaOption)
|
|
26
|
+
.addOption(fromOption)
|
|
27
|
+
.addOption(toOption)
|
|
28
|
+
.addOption(countOption)
|
|
29
|
+
.addOption(outOption)
|
|
30
|
+
.addOption(debugOption)
|
|
31
|
+
.action(async (...args) => {
|
|
32
|
+
const [options] = args;
|
|
33
|
+
if (!isNonNullObject(options)) {
|
|
34
|
+
program.error("Invalid option values.", { exitCode: FAILED });
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const cwd = process.cwd();
|
|
38
|
+
const meta = parseString(options["meta"]);
|
|
39
|
+
const template = parseString(options["template"]);
|
|
40
|
+
let rawProgramOptions;
|
|
41
|
+
if (meta !== undefined) {
|
|
42
|
+
const resolvedFilePath = parseAndResolveFilePath(meta, cwd);
|
|
43
|
+
if (resolvedFilePath === undefined) {
|
|
44
|
+
program.error(`failed to resolve meta file path.(${meta})`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
let fileContent;
|
|
48
|
+
try {
|
|
49
|
+
fileContent = await tryReadFile(resolvedFilePath);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.log(error);
|
|
53
|
+
}
|
|
54
|
+
if (fileContent === undefined) {
|
|
55
|
+
program.error("failed to read meta file.");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
rawProgramOptions = JSON.parse(fileContent);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
console.log(error);
|
|
63
|
+
rawProgramOptions = undefined;
|
|
64
|
+
}
|
|
65
|
+
if (rawProgramOptions === undefined) {
|
|
66
|
+
program.error("failed to parse meta file.");
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else if (template !== undefined) {
|
|
71
|
+
const mode = determineTemplateModeByFile(template);
|
|
72
|
+
const templateOptions = {
|
|
73
|
+
mode: mode,
|
|
74
|
+
path: template,
|
|
75
|
+
weight: DEFAULT_TEMPLATE_WEIGHT,
|
|
76
|
+
};
|
|
77
|
+
rawProgramOptions = {
|
|
78
|
+
debug: options["debug"],
|
|
79
|
+
from: options["start"],
|
|
80
|
+
to: options["end"],
|
|
81
|
+
count: options["count"],
|
|
82
|
+
out: options["out"],
|
|
83
|
+
templates: [templateOptions],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
program.error("You must specify either template or meta option at least.", { exitCode: FAILED });
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const programOptions = normalizeProgramOptions(rawProgramOptions, cwd);
|
|
91
|
+
if (programOptions === undefined) {
|
|
92
|
+
program.error("invalid options.", { exitCode: FAILED });
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const resultCode = await run(programOptions);
|
|
96
|
+
if (resultCode !== SUCCEEDED) {
|
|
97
|
+
program.error("Command has failed", { exitCode: resultCode });
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
await program.parseAsync(process.argv);
|
|
101
|
+
}
|
|
102
|
+
await main();
|
|
103
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliConsts.js","sourceRoot":"","sources":["../../src/cliConsts.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAc,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,MAAM,GAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliTypes.js","sourceRoot":"","sources":["../../src/cliTypes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ContextualStringOut, DocumentOptions } from "../../document/index.js";
|
|
2
|
+
import type { Command, CommandOptions } from "../type.js";
|
|
3
|
+
export interface CommandManager {
|
|
4
|
+
setCommand(command: Command): this;
|
|
5
|
+
getCommandContextualStringOut(commandName: string, commandOptions: Readonly<CommandOptions> | undefined, documentOptions: DocumentOptions): ContextualStringOut;
|
|
6
|
+
}
|
|
7
|
+
export declare const commandManager: CommandManager;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { faker } from "@faker-js/faker";
|
|
2
|
+
import { parseNonNaNInteger, parseString } from "../../utils.js";
|
|
3
|
+
import { GlobalOption_Escape, GlobalOption_Variations } from "../consts.js";
|
|
4
|
+
import { isEscapeStyle } from "../utils.js";
|
|
5
|
+
class CommandManagerImpl {
|
|
6
|
+
commandMap = new Map();
|
|
7
|
+
setCommand(command) {
|
|
8
|
+
this.commandMap.set(command.name, command);
|
|
9
|
+
return this;
|
|
10
|
+
}
|
|
11
|
+
getCommand(commandName) {
|
|
12
|
+
const command = this.commandMap.get(commandName);
|
|
13
|
+
if (command !== undefined) {
|
|
14
|
+
return command;
|
|
15
|
+
}
|
|
16
|
+
return createUnsupportedCommand(commandName);
|
|
17
|
+
}
|
|
18
|
+
getCommandContextualStringOut(commandName, commandOptions, documentOptions) {
|
|
19
|
+
const staticOrNormalCommand = this.getCommand(commandName);
|
|
20
|
+
let contextualStringOut;
|
|
21
|
+
if ("build" in staticOrNormalCommand) {
|
|
22
|
+
contextualStringOut = staticOrNormalCommand.build(commandOptions, documentOptions);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
contextualStringOut = staticOrNormalCommand.run;
|
|
26
|
+
}
|
|
27
|
+
// process global options
|
|
28
|
+
const variations = parseNonNaNInteger(commandOptions?.[GlobalOption_Variations]);
|
|
29
|
+
if (variations !== undefined) {
|
|
30
|
+
contextualStringOut = createVariationStringOut(contextualStringOut, variations);
|
|
31
|
+
}
|
|
32
|
+
const escape = parseString(commandOptions?.[GlobalOption_Escape]);
|
|
33
|
+
if (isEscapeStyle(escape)) {
|
|
34
|
+
contextualStringOut = createEscapeStringOut(contextualStringOut, escape);
|
|
35
|
+
}
|
|
36
|
+
return contextualStringOut;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export const commandManager = new CommandManagerImpl();
|
|
40
|
+
function createUnsupportedCommand(commandName) {
|
|
41
|
+
return {
|
|
42
|
+
name: commandName,
|
|
43
|
+
run: () => {
|
|
44
|
+
return "{{UNSUPPORTED_COMMAND}}";
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function createVariationStringOut(baseContextualStringOut, variations) {
|
|
49
|
+
const valueArray = [];
|
|
50
|
+
const maxIndex = variations - 1;
|
|
51
|
+
return (context) => {
|
|
52
|
+
const index = faker.number.int({
|
|
53
|
+
min: 0,
|
|
54
|
+
max: maxIndex,
|
|
55
|
+
});
|
|
56
|
+
let value = valueArray[index];
|
|
57
|
+
if (value === undefined) {
|
|
58
|
+
value = baseContextualStringOut(context);
|
|
59
|
+
if (valueArray.length < variations) {
|
|
60
|
+
if (!valueArray.includes(value)) {
|
|
61
|
+
valueArray.push(value);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return value;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function createEscapeStringOut(baseContextualStringOut, style) {
|
|
69
|
+
if (style === "json") {
|
|
70
|
+
return (context) => JSON.stringify(baseContextualStringOut(context));
|
|
71
|
+
}
|
|
72
|
+
else if (style === "doubleQuote") {
|
|
73
|
+
return (context) => {
|
|
74
|
+
const output = baseContextualStringOut(context);
|
|
75
|
+
return `"${output.replaceAll('"', '""')}"`;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.log(`unsupported escape style: ${style}`);
|
|
80
|
+
return baseContextualStringOut;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=commandManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandManager.js","sourceRoot":"","sources":["../../../../src/command/commandManager/commandManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CstParser } from "chevrotain";
|
|
2
|
+
export declare function lex(input: string): import("chevrotain").ILexingResult;
|
|
3
|
+
export declare class CommandParser extends CstParser {
|
|
4
|
+
constructor();
|
|
5
|
+
commandExpression: import("chevrotain").ParserMethod<[], import("chevrotain").CstNode>;
|
|
6
|
+
commandName: import("chevrotain").ParserMethod<[], import("chevrotain").CstNode>;
|
|
7
|
+
commandOption: import("chevrotain").ParserMethod<[], import("chevrotain").CstNode>;
|
|
8
|
+
commandOptionKey: import("chevrotain").ParserMethod<[], import("chevrotain").CstNode>;
|
|
9
|
+
commandOptionValue: import("chevrotain").ParserMethod<[], import("chevrotain").CstNode>;
|
|
10
|
+
}
|
|
11
|
+
export declare const commandParser: CommandParser;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { createToken, CstParser, Lexer } from "chevrotain";
|
|
2
|
+
// region token
|
|
3
|
+
const Literal = createToken({
|
|
4
|
+
name: "Literal",
|
|
5
|
+
pattern: /[^-"\s]+/,
|
|
6
|
+
line_breaks: false,
|
|
7
|
+
});
|
|
8
|
+
const NumberLiteral = createToken({
|
|
9
|
+
name: "NumberLiteral",
|
|
10
|
+
pattern: /[0-9]+/,
|
|
11
|
+
longer_alt: [Literal],
|
|
12
|
+
line_breaks: false,
|
|
13
|
+
});
|
|
14
|
+
const Identifier = createToken({
|
|
15
|
+
name: "Identifier",
|
|
16
|
+
pattern: /[a-zA-Z][a-zA-Z0-9.]*/,
|
|
17
|
+
longer_alt: [Literal],
|
|
18
|
+
line_breaks: false,
|
|
19
|
+
});
|
|
20
|
+
const QuotedLiteral = createToken({
|
|
21
|
+
name: "QuotedLiteral",
|
|
22
|
+
pattern: /"(?:[^\\"]|\\[nrt\\])*"/,
|
|
23
|
+
line_breaks: false,
|
|
24
|
+
});
|
|
25
|
+
const CommandOptionKey = createToken({
|
|
26
|
+
name: "CommandOptionKey",
|
|
27
|
+
pattern: /(-[a-zA-Z])|(--[a-zA-Z]+)/,
|
|
28
|
+
line_breaks: false,
|
|
29
|
+
});
|
|
30
|
+
const WhiteSpace = createToken({
|
|
31
|
+
name: "WhiteSpace",
|
|
32
|
+
pattern: /[ \t\n\r]+/,
|
|
33
|
+
group: Lexer.SKIPPED,
|
|
34
|
+
});
|
|
35
|
+
const allTokens = [
|
|
36
|
+
WhiteSpace,
|
|
37
|
+
Identifier,
|
|
38
|
+
NumberLiteral,
|
|
39
|
+
Literal,
|
|
40
|
+
QuotedLiteral,
|
|
41
|
+
CommandOptionKey,
|
|
42
|
+
];
|
|
43
|
+
// endregion
|
|
44
|
+
// region lexer
|
|
45
|
+
const lexer = new Lexer(allTokens);
|
|
46
|
+
export function lex(input) {
|
|
47
|
+
const lexingResult = lexer.tokenize(input);
|
|
48
|
+
if (lexingResult.errors.length > 0) {
|
|
49
|
+
throw Error(`lexing errors detected
|
|
50
|
+
${lexingResult.errors[0]?.message}`);
|
|
51
|
+
}
|
|
52
|
+
return lexingResult;
|
|
53
|
+
}
|
|
54
|
+
// endregion
|
|
55
|
+
// region parser
|
|
56
|
+
export class CommandParser extends CstParser {
|
|
57
|
+
constructor() {
|
|
58
|
+
super(allTokens);
|
|
59
|
+
this.performSelfAnalysis();
|
|
60
|
+
}
|
|
61
|
+
commandExpression = this.RULE("commandExpression", () => {
|
|
62
|
+
this.SUBRULE(this.commandName);
|
|
63
|
+
this.MANY(() => {
|
|
64
|
+
this.SUBRULE(this.commandOption);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
commandName = this.RULE("commandName", () => {
|
|
68
|
+
this.CONSUME(Identifier);
|
|
69
|
+
});
|
|
70
|
+
commandOption = this.RULE("commandOption", () => {
|
|
71
|
+
this.SUBRULE(this.commandOptionKey);
|
|
72
|
+
this.OPTION(() => {
|
|
73
|
+
this.SUBRULE(this.commandOptionValue);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
commandOptionKey = this.RULE("commandOptionKey", () => {
|
|
77
|
+
this.CONSUME(CommandOptionKey);
|
|
78
|
+
});
|
|
79
|
+
commandOptionValue = this.RULE("commandOptionValue", () => {
|
|
80
|
+
this.OR([
|
|
81
|
+
{ ALT: () => this.CONSUME(Identifier) },
|
|
82
|
+
{ ALT: () => this.CONSUME(NumberLiteral) },
|
|
83
|
+
{ ALT: () => this.CONSUME(Literal) },
|
|
84
|
+
{ ALT: () => this.CONSUME(QuotedLiteral) },
|
|
85
|
+
]);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
export const commandParser = new CommandParser();
|
|
89
|
+
// endregion
|
|
90
|
+
//# sourceMappingURL=commandParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandParser.js","sourceRoot":"","sources":["../../../../src/command/commandParser/commandParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE3D,eAAe;AAEf,MAAM,OAAO,GAAG,WAAW,CAAC;IAC1B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,UAAU;IACnB,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,WAAW,CAAC;IAC7B,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,uBAAuB;IAChC,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,yBAAyB;IAClC,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,WAAW,CAAC;IACnC,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,2BAA2B;IACpC,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,WAAW,CAAC;IAC7B,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,KAAK,CAAC,OAAO;CACrB,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG;IAChB,UAAU;IACV,UAAU;IACV,aAAa;IACb,OAAO;IACP,aAAa;IACb,gBAAgB;CACjB,CAAC;AAEF,YAAY;AAEZ,eAAe;AAEf,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;AAEnC,MAAM,UAAU,GAAG,CAAC,KAAa;IAC/B,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE3C,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,KAAK,CACT;EACJ,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAC9B,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,YAAY;AAEZ,gBAAgB;AAEhB,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC1C;QACE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;QACjD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEI,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE;QACrD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEI,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC3D,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEI,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC/D,IAAI,CAAC,EAAE,CAAC;YACN,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACvC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YAC1C,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACpC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAEjD,YAAY"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { toAstVisitor } from "./visitor.js";
|
|
2
|
+
export function parseCommand(input) {
|
|
3
|
+
const commandExpressionFragment = toAstVisitor(input);
|
|
4
|
+
let structuredCommandExpression;
|
|
5
|
+
if (commandExpressionFragment !== undefined) {
|
|
6
|
+
structuredCommandExpression = {
|
|
7
|
+
expression: input,
|
|
8
|
+
...commandExpressionFragment,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
structuredCommandExpression = {
|
|
13
|
+
expression: input,
|
|
14
|
+
name: "invalid",
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return structuredCommandExpression;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=parseCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseCommand.js","sourceRoot":"","sources":["../../../../src/command/commandParser/parseCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,yBAAyB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,2BAAwD,CAAC;IAC7D,IAAI,yBAAyB,KAAK,SAAS,EAAE,CAAC;QAC5C,2BAA2B,GAAG;YAC5B,UAAU,EAAE,KAAK;YACjB,GAAG,yBAAyB;SAC7B,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,2BAA2B,GAAG;YAC5B,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IACD,OAAO,2BAA2B,CAAC;AACrC,CAAC"}
|