@restforgejs/platform 4.3.5 → 5.0.0
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/bin/sdf-tools.exe +0 -0
- package/build-info.json +2 -2
- package/cli/consumer-deploy.js +1 -1
- package/cli/consumer.js +1 -1
- package/generators/cli/payload/migrate.js +96 -0
- package/generators/lib/dbschema-kit/apply-engine.js +211 -46
- package/generators/lib/dbschema-kit/diff-engine.js +14 -2
- package/generators/lib/dbschema-kit/emitters/alter-table.js +96 -2
- package/generators/lib/dbschema-kit/introspect-mapper.js +9 -0
- package/generators/lib/migrate/backend-payload-migrator.js +221 -0
- package/generators/lib/migrate/field-type-resolver.js +319 -0
- package/generators/lib/migrate/label-generator.js +38 -0
- package/generators/lib/migrate/migrate-runner.js +187 -0
- package/generators/lib/migrate/naming.js +43 -0
- package/generators/lib/migrate/sql-parser.js +124 -0
- package/generators/lib/payload/payload-runner.js +106 -11
- package/generators/lib/templates/dashboard-catalog.js +1 -1
- package/generators/lib/templates/db-connection-env.js +1 -1
- package/generators/lib/templates/dbschema-catalog.js +1 -1
- package/generators/lib/templates/field-validation-catalog.js +1 -1
- package/generators/lib/templates/mysql-template.js +1 -1
- package/generators/lib/templates/oracle-template.js +1 -1
- package/generators/lib/templates/postgres-template.js +1 -1
- package/generators/lib/templates/query-declarative-catalog.js +1 -1
- package/generators/lib/templates/sqlite-template.js +1 -1
- package/integrity-manifest.json +18 -18
- package/node_modules/brace-expansion/index.js +1 -1
- package/node_modules/brace-expansion/package.json +1 -1
- package/node_modules/dayjs/CHANGELOG.md +7 -0
- package/node_modules/dayjs/README.md +12 -10
- package/node_modules/dayjs/dayjs.min.js +1 -1
- package/node_modules/dayjs/esm/constant.js +1 -1
- package/node_modules/dayjs/esm/plugin/duration/index.js +5 -4
- package/node_modules/dayjs/locale.json +1 -1
- package/node_modules/dayjs/package.json +2 -2
- package/node_modules/dayjs/plugin/duration.js +1 -1
- package/node_modules/tmp/lib/tmp.js +37 -7
- package/node_modules/tmp/package.json +4 -16
- package/package.json +1 -1
- package/scripts/verify-integrity.js +1 -1
- package/server.js +1 -1
- package/src/components/handlers/adjust_handler.js +1 -1
- package/src/components/handlers/audit_handler.js +1 -1
- package/src/components/handlers/delete_handler.js +1 -1
- package/src/components/handlers/export_handler.js +1 -1
- package/src/components/handlers/import_handler.js +1 -1
- package/src/components/handlers/insert_handler.js +1 -1
- package/src/components/handlers/update_handler.js +1 -1
- package/src/components/handlers/upload_handler.js +1 -1
- package/src/components/handlers/workflow_handler.js +1 -1
- package/src/components/integrations/webhook.js +1 -1
- package/src/consumers/baseConsumer.js +1 -1
- package/src/consumers/declarativeMapper.js +1 -1
- package/src/consumers/handlers/apiHandler.js +1 -1
- package/src/consumers/handlers/consoleHandler.js +1 -1
- package/src/consumers/handlers/databaseHandler.js +1 -1
- package/src/consumers/handlers/index.js +1 -1
- package/src/consumers/handlers/kafkaHandler.js +1 -1
- package/src/consumers/index.js +1 -1
- package/src/consumers/messageTransformer.js +1 -1
- package/src/consumers/validator.js +1 -1
- package/src/core/db/dialect/base-dialect.js +1 -1
- package/src/core/db/dialect/index.js +1 -1
- package/src/core/db/dialect/mysql-dialect.js +1 -1
- package/src/core/db/dialect/oracle-dialect.js +1 -1
- package/src/core/db/dialect/postgres-dialect.js +1 -1
- package/src/core/db/dialect/sqlite-dialect.js +1 -1
- package/src/core/db/flatten-helper.js +1 -1
- package/src/core/db/query-builder-error.js +1 -1
- package/src/core/db/query-builder.js +1 -1
- package/src/core/db/relation-helper.js +1 -1
- package/src/core/handlers/delete_handler.js +1 -1
- package/src/core/handlers/insert_handler.js +1 -1
- package/src/core/handlers/update_handler.js +1 -1
- package/src/core/models/base-model.js +1 -1
- package/src/core/utils/cache-manager.js +1 -1
- package/src/core/utils/component-engine.js +1 -1
- package/src/core/utils/context-builder.js +1 -1
- package/src/core/utils/datetime-formatter.js +1 -1
- package/src/core/utils/datetime-parser.js +1 -1
- package/src/core/utils/db.js +1 -1
- package/src/core/utils/logger.js +1 -1
- package/src/core/utils/payload-loader.js +1 -1
- package/src/core/utils/security-checks.js +1 -1
- package/src/middleware/body-options.js +1 -1
- package/src/middleware/cors.js +1 -1
- package/src/middleware/idempotency.js +1 -1
- package/src/middleware/rate-limiter.js +1 -1
- package/src/middleware/request-logger.js +1 -1
- package/src/middleware/security-headers.js +1 -1
- package/src/models/base-model-mysql.js +1 -1
- package/src/models/base-model-oracle.js +1 -1
- package/src/models/base-model-sqlite.js +1 -1
- package/src/models/base-model.js +1 -1
- package/src/pro/caching/redis-client.js +1 -1
- package/src/pro/caching/redis-helper.js +1 -1
- package/src/pro/consumers/baseConsumer.js +1 -1
- package/src/pro/consumers/declarativeMapper.js +1 -1
- package/src/pro/consumers/handlers/apiHandler.js +1 -1
- package/src/pro/consumers/handlers/consoleHandler.js +1 -1
- package/src/pro/consumers/handlers/databaseHandler.js +1 -1
- package/src/pro/consumers/handlers/index.js +1 -1
- package/src/pro/consumers/handlers/kafkaHandler.js +1 -1
- package/src/pro/consumers/index.js +1 -1
- package/src/pro/consumers/messageTransformer.js +1 -1
- package/src/pro/consumers/validator.js +1 -1
- package/src/pro/database/base-model-mysql.js +1 -1
- package/src/pro/database/base-model-oracle.js +1 -1
- package/src/pro/database/base-model-sqlite.js +1 -1
- package/src/pro/database/db-mysql.js +1 -1
- package/src/pro/database/db-oracle.js +1 -1
- package/src/pro/database/db-sqlite.js +1 -1
- package/src/pro/excel/excel-generator.js +1 -1
- package/src/pro/excel/excel-parser.js +1 -1
- package/src/pro/excel/export-service.js +1 -1
- package/src/pro/excel/export_handler.js +1 -1
- package/src/pro/excel/import-service.js +1 -1
- package/src/pro/excel/import-validator.js +1 -1
- package/src/pro/excel/import_handler.js +1 -1
- package/src/pro/excel/upsert-builder.js +1 -1
- package/src/pro/idgen/idgen-routes.js +1 -1
- package/src/pro/integrations/lookup-resolver.js +1 -1
- package/src/pro/integrations/upload-handler-v2.js +1 -1
- package/src/pro/integrations/upload-handler.js +1 -1
- package/src/pro/integrations/webhook.js +1 -1
- package/src/pro/locking/lock-routes.js +1 -1
- package/src/pro/locking/resource-lock-manager.js +1 -1
- package/src/pro/messaging/kafkaConsumerService.js +1 -1
- package/src/pro/messaging/kafkaService.js +1 -1
- package/src/pro/messaging/messagehubService.js +1 -1
- package/src/pro/messaging/rabbitmqService.js +1 -1
- package/src/pro/scheduler/job-manager.js +1 -1
- package/src/pro/scheduler/job-routes.js +1 -1
- package/src/pro/scheduler/job-validator.js +1 -1
- package/src/pro/storage/base-storage-provider.js +1 -1
- package/src/pro/storage/file-metadata-helper.js +1 -1
- package/src/pro/storage/index.js +1 -1
- package/src/pro/storage/local-storage-provider.js +1 -1
- package/src/pro/storage/s3-storage-provider.js +1 -1
- package/src/pro/storage/upload-cleanup-job.js +1 -1
- package/src/pro/storage/upload-cleanup-scheduler.js +1 -1
- package/src/pro/storage/upload-pending-tracker.js +1 -1
- package/src/pro/websocket/broadcast-helper.js +1 -1
- package/src/pro/websocket/index.js +1 -1
- package/src/pro/websocket/livesync-server.js +1 -1
- package/src/pro/websocket/ws-broadcaster.js +1 -1
- package/src/services/export-service.js +1 -1
- package/src/services/import-service.js +1 -1
- package/src/services/kafkaConsumerService.js +1 -1
- package/src/services/kafkaService.js +1 -1
- package/src/services/messagehubService.js +1 -1
- package/src/services/rabbitmqService.js +1 -1
- package/src/utils/cache-invalidation-registry.js +1 -1
- package/src/utils/cache-manager.js +1 -1
- package/src/utils/component-engine.js +1 -1
- package/src/utils/config-extractor.js +1 -1
- package/src/utils/consumerLogger.js +1 -1
- package/src/utils/context-builder.js +1 -1
- package/src/utils/dashboard-helpers.js +1 -1
- package/src/utils/dateHelper.js +1 -1
- package/src/utils/datetime-formatter.js +1 -1
- package/src/utils/datetime-parser.js +1 -1
- package/src/utils/db-bootstrap.js +1 -1
- package/src/utils/db-mysql.js +1 -1
- package/src/utils/db-oracle.js +1 -1
- package/src/utils/db-sqlite.js +1 -1
- package/src/utils/db.js +1 -1
- package/src/utils/demo-generator.js +1 -1
- package/src/utils/excel-generator.js +1 -1
- package/src/utils/excel-parser.js +1 -1
- package/src/utils/file-watcher.js +1 -1
- package/src/utils/id-generator.js +1 -1
- package/src/utils/idempotency-manager.js +1 -1
- package/src/utils/import-validator.js +1 -1
- package/src/utils/license-client.js +1 -1
- package/src/utils/lock-manager.js +1 -1
- package/src/utils/logger.js +1 -1
- package/src/utils/lookup-resolver.js +1 -1
- package/src/utils/payload-loader.js +1 -1
- package/src/utils/processor-response.js +1 -1
- package/src/utils/rabbitmq.js +1 -1
- package/src/utils/redis-client.js +1 -1
- package/src/utils/redis-helper.js +1 -1
- package/src/utils/request-scope.js +1 -1
- package/src/utils/security-checks.js +1 -1
- package/src/utils/service-resolver.js +1 -1
- package/src/utils/shutdown-coordinator.js +1 -1
- package/src/utils/trusted-keys.js +1 -1
- package/src/utils/upload-handler.js +1 -1
- package/src/utils/upsert-builder.js +1 -1
- package/src/utils/workflow-hook-executor.js +1 -1
package/integrity-manifest.json
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "
|
|
3
|
-
"generated": "2026-05-
|
|
2
|
+
"version": "5.0.0",
|
|
3
|
+
"generated": "2026-05-28T12:04:28.898Z",
|
|
4
4
|
"generator": "restforge-build-system",
|
|
5
5
|
"algorithm": "sha256",
|
|
6
6
|
"files": {
|
|
7
|
-
"server.js": "
|
|
8
|
-
"src/utils/license-client.js": "
|
|
9
|
-
"src/utils/trusted-keys.js": "
|
|
10
|
-
"cli/consumer.js": "
|
|
11
|
-
"src/utils/security-checks.js": "
|
|
12
|
-
"scripts/verify-integrity.js": "
|
|
7
|
+
"server.js": "26282e0f84b19c3acc26225a93a736591b836e649cc4c36af70d1e635e3b82e0",
|
|
8
|
+
"src/utils/license-client.js": "41a7942bdc46ba43f13c3e164dcd4584a254d1f0557b7e3776c6104664c10809",
|
|
9
|
+
"src/utils/trusted-keys.js": "186f3efde497cbdccb59d23512fbdff2aaf7f0a3aa3fb4d8e1bb1a298a83af52",
|
|
10
|
+
"cli/consumer.js": "919b0309f146341be351efe52e126e5fdf86cd1ab9bbd6c1c65170d99f07e860",
|
|
11
|
+
"src/utils/security-checks.js": "3ed655cc93e5736d28336126d07a6e36f875f8842c8e753b9605813064b0802a",
|
|
12
|
+
"scripts/verify-integrity.js": "8da93f4e7389984931d8ca8f72d40583c48ae5c7d396da438ab699e02530fe5e",
|
|
13
13
|
"bin/restforge-hwinfo-linux": "d9a0071b0acf58a020e738a29837de356f531a5a84d363a2adc50563e3874b8f",
|
|
14
14
|
"bin/restforge-hwinfo-darwin": "d35b15d4e6d7bbdd8317490335ba9602ce5c218519898fa3eabe18cc9c5bb1b6",
|
|
15
15
|
"bin/restforge-hwinfo.exe": "351fa4d33459d30de804ee78deb5eb977b77b688fe1b7b461cdaa214a82f145e",
|
|
16
|
-
"generators/lib/templates/mysql-template.js": "
|
|
17
|
-
"generators/lib/templates/oracle-template.js": "
|
|
18
|
-
"generators/lib/templates/postgres-template.js": "
|
|
19
|
-
"generators/lib/templates/sqlite-template.js": "
|
|
20
|
-
"generators/lib/templates/dashboard-catalog.js": "
|
|
21
|
-
"generators/lib/templates/dbschema-catalog.js": "
|
|
22
|
-
"generators/lib/templates/field-validation-catalog.js": "
|
|
23
|
-
"generators/lib/templates/query-declarative-catalog.js": "
|
|
24
|
-
"generators/lib/templates/db-connection-env.js": "
|
|
16
|
+
"generators/lib/templates/mysql-template.js": "17ab9b2b010a913bfe31cd8ef4f7e62c3178f8b2558d4884ea6907fd9d0e5efe",
|
|
17
|
+
"generators/lib/templates/oracle-template.js": "67000d8e346e2473aedaf3aa8e978e3477ed55fc0c7c6c8079af42cd6ca37148",
|
|
18
|
+
"generators/lib/templates/postgres-template.js": "5f37dae50d9b7e2c06f8b3759448e68b099b4546d2706a8dc0370c8f9f6e2114",
|
|
19
|
+
"generators/lib/templates/sqlite-template.js": "c613bae628161973e0ddfc642d473fb0c71dbd22ee37809fc329cac59529867e",
|
|
20
|
+
"generators/lib/templates/dashboard-catalog.js": "506beedb525e599e7663e2af017ad5eec52b12392ecddd54bab37aa2a04d8d35",
|
|
21
|
+
"generators/lib/templates/dbschema-catalog.js": "15d8ade3d1ef849733df9fa9aa01e72ab009de6fa96a2008f97671b1af2fd9be",
|
|
22
|
+
"generators/lib/templates/field-validation-catalog.js": "1cc2d123ff80c997dda9dfcdd872d033d21d492600c3c3ac27a483c8a44f1f7f",
|
|
23
|
+
"generators/lib/templates/query-declarative-catalog.js": "cdbe3881e3fe22abf8d127e2e9a1c56ad2f92439475fe50d836b43f1ae7e6c5e",
|
|
24
|
+
"generators/lib/templates/db-connection-env.js": "f72a4ebe02f24cc927a78f5424d971865f99c836f3323fef4de1d38e24ee886c"
|
|
25
25
|
},
|
|
26
26
|
"stats": {
|
|
27
27
|
"totalFiles": 18,
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"signature": {
|
|
32
32
|
"algorithm": "ed25519",
|
|
33
33
|
"keyId": "rfs-manifest-2026-05",
|
|
34
|
-
"value": "
|
|
34
|
+
"value": "5c768a490a7341b77cde4fdfa0df56468274f0f528375ecd73374a4cb1a26b494882e293962467256e45f993fb66cc721fff59d0594a4b95f71e4d33962b2a0b",
|
|
35
35
|
"scope": "canonical-json(manifest-without-signature)"
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [1.11.21](https://github.com/iamkun/dayjs/compare/v1.11.20...v1.11.21) (2026-05-26)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* preserve unsupported year tokens in format ([#3015](https://github.com/iamkun/dayjs/issues/3015)) ([#3016](https://github.com/iamkun/dayjs/issues/3016)) ([8fda602](https://github.com/iamkun/dayjs/commit/8fda602beac5abbc64230ddc49085aa532320f26))
|
|
7
|
+
|
|
1
8
|
## [1.11.20](https://github.com/iamkun/dayjs/compare/v1.11.19...v1.11.20) (2026-03-12)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -73,7 +73,7 @@ dayjs().isBefore(dayjs()) // query
|
|
|
73
73
|
|
|
74
74
|
Day.js has great support for internationalization.
|
|
75
75
|
|
|
76
|
-
But none of them will be included in your build unless you use
|
|
76
|
+
But none of them will be included in your build unless you use them.
|
|
77
77
|
|
|
78
78
|
```javascript
|
|
79
79
|
import 'dayjs/locale/es' // load on demand
|
|
@@ -99,16 +99,15 @@ dayjs().format('Q Do k kk X x') // more available formats
|
|
|
99
99
|
|
|
100
100
|
📚[Plugin List](https://day.js.org/docs/en/plugin/plugin)
|
|
101
101
|
|
|
102
|
+
## Downloads
|
|
103
|
+

|
|
104
|
+
|
|
102
105
|
## Sponsors
|
|
103
106
|
|
|
104
107
|
Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
|
|
105
108
|
|
|
106
109
|
[[Become a sponsor via Github](https://github.com/sponsors/iamkun/)] [[Become a sponsor via OpenCollective](https://opencollective.com/dayjs#sponsor)]
|
|
107
110
|
|
|
108
|
-
<a href="https://toyokumo.co.jp" target="_blank">
|
|
109
|
-
<img width="70" src="https://user-images.githubusercontent.com/17680888/197092231-2367b5eb-1e43-467e-a311-23f7cd97b086.png">
|
|
110
|
-
</a>
|
|
111
|
-
|
|
112
111
|
<a href="https://github.com/ken-swyfft" target="_blank">
|
|
113
112
|
<img width="70" src="https://avatars.githubusercontent.com/u/65305317?v=4">
|
|
114
113
|
</a>
|
|
@@ -129,10 +128,18 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
|
|
|
129
128
|
<img width="70" src="https://avatars.githubusercontent.com/u/188567998?v=4">
|
|
130
129
|
</a>
|
|
131
130
|
|
|
131
|
+
<a href="https://www.netrouting.com" target="_blank" alt="Netrouting Dedicated Servers">
|
|
132
|
+
<img width="70" src="https://netrouting.com/wp-content/uploads/2026/04/Logo-netrouting.png">
|
|
133
|
+
</a>
|
|
134
|
+
|
|
132
135
|
<a href="https://anonstories.com" target="_blank">
|
|
133
136
|
<img alt="Instagram Story Viewer" width="70" src="https://avatars.githubusercontent.com/u/240702364?v=4">
|
|
134
137
|
</a>
|
|
135
138
|
|
|
139
|
+
<a href="https://www.sayfone.com/call-rates " target="_blank">
|
|
140
|
+
<img alt="Sayfone Cheap international calls" width="70" src="https://github.com/user-attachments/assets/68f91139-b190-421b-bcd7-43a8e3d84fe7">
|
|
141
|
+
</a>
|
|
142
|
+
|
|
136
143
|
<a href="https://automatio.ai" target="_blank" alt="Automatio AI">
|
|
137
144
|
<img width="70" src="https://avatars.githubusercontent.com/u/1984909?v=4" />
|
|
138
145
|
</a>
|
|
@@ -170,11 +177,6 @@ Please give us a 💖 star 💖 to support us. Thank you.
|
|
|
170
177
|
|
|
171
178
|
And thank you to all our backers! 🙏
|
|
172
179
|
|
|
173
|
-
<a href="https://opencollective.com/dayjs/backer/0/website?requireActive=false" target="_blank"><img width="35" src="https://opencollective.com/dayjs/backer/0/avatar.svg?requireActive=false"></a>
|
|
174
|
-
<a href="https://opencollective.com/dayjs/backer/1/website?requireActive=false" target="_blank"><img width="35" src="https://opencollective.com/dayjs/backer/1/avatar.svg?requireActive=false"></a>
|
|
175
|
-
<a href="https://opencollective.com/dayjs/backer/2/website?requireActive=false" target="_blank"><img width="35" src="https://opencollective.com/dayjs/backer/2/avatar.svg?requireActive=false"></a>
|
|
176
|
-
<a href="https://opencollective.com/dayjs/backer/3/website?requireActive=false" target="_blank"><img width="35" src="https://opencollective.com/dayjs/backer/3/avatar.svg?requireActive=false"></a>
|
|
177
|
-
<br />
|
|
178
180
|
<a href="https://opencollective.com/dayjs#backers" target="_blank"><img src="https://opencollective.com/dayjs/contributors.svg?width=890" /></a>
|
|
179
181
|
|
|
180
182
|
## License
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},g="en",D={};D[g]=M;var p="$isDayjsObject",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if("string"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split("-");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v="set"+(this.$u?"UTC":"");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+"Hours",0);case u:return $(v+"Minutes",1);case s:return $(v+"Seconds",2);case i:return $(v+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f="set"+(this.$u?"UTC":""),l=(n={},n[a]=f+"Date",n[d]=f+"Date",n[c]=f+"Month",n[h]=f+"FullYear",n[u]=f+"Hours",n[s]=f+"Minutes",n[i]=f+"Seconds",n[r]=f+"Milliseconds",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||"YYYY-MM-DDTHH:mm:ssZ",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,"0")},$=f||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case"YY":return String(e.$y).slice(-2);case"YYYY":return b.s(e.$y,4,"0");case"M":return a+1;case"MM":return b.s(a+1,2,"0");case"MMM":return h(n.monthsShort,a,c,3);case"MMMM":return h(c,a);case"D":return e.$D;case"DD":return b.s(e.$D,2,"0");case"d":return String(e.$W);case"dd":return h(n.weekdaysMin,e.$W,o,2);case"ddd":return h(n.weekdaysShort,e.$W,o,3);case"dddd":return o[e.$W];case"H":return String(s);case"HH":return b.s(s,2,"0");case"h":return d(1);case"hh":return d(2);case"a":return $(s,u,!0);case"A":return $(s,u,!1);case"m":return String(u);case"mm":return b.s(u,2,"0");case"s":return String(e.$s);case"ss":return b.s(e.$s,2,"0");case"SSS":return b.s(e.$ms,3,"0");case"Z":return i}return null}(t)||i.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),Y=_.prototype;return O.prototype=Y,[["$ms",r],["$s",i],["$m",s],["$H",u],["$W",a],["$M",c],["$y",h],["$D",d]].forEach((function(t){Y[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));
|
|
@@ -22,4 +22,4 @@ export var FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ssZ';
|
|
|
22
22
|
export var INVALID_DATE_STRING = 'Invalid Date'; // regex
|
|
23
23
|
|
|
24
24
|
export var REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/;
|
|
25
|
-
export var REGEX_FORMAT = /\[([^\]]+)]|
|
|
25
|
+
export var REGEX_FORMAT = /\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { MILLISECONDS_A_DAY, MILLISECONDS_A_HOUR, MILLISECONDS_A_MINUTE, MILLISECONDS_A_SECOND, MILLISECONDS_A_WEEK
|
|
1
|
+
import { MILLISECONDS_A_DAY, MILLISECONDS_A_HOUR, MILLISECONDS_A_MINUTE, MILLISECONDS_A_SECOND, MILLISECONDS_A_WEEK } from '../../constant';
|
|
2
2
|
var MILLISECONDS_A_YEAR = MILLISECONDS_A_DAY * 365;
|
|
3
3
|
var MILLISECONDS_A_MONTH = MILLISECONDS_A_YEAR / 12;
|
|
4
|
-
var
|
|
4
|
+
var DURATION_REGEX_PARSE = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
|
|
5
|
+
var DURATION_REGEX_FORMAT = /\[([^\]]+)]|YYYY|YY|Y|M{1,2}|D{1,2}|H{1,2}|m{1,2}|s{1,2}|SSS/g;
|
|
5
6
|
var unitToMS = {
|
|
6
7
|
years: MILLISECONDS_A_YEAR,
|
|
7
8
|
months: MILLISECONDS_A_MONTH,
|
|
@@ -94,7 +95,7 @@ var Duration = /*#__PURE__*/function () {
|
|
|
94
95
|
}
|
|
95
96
|
|
|
96
97
|
if (typeof input === 'string') {
|
|
97
|
-
var d = input.match(
|
|
98
|
+
var d = input.match(DURATION_REGEX_PARSE);
|
|
98
99
|
|
|
99
100
|
if (d) {
|
|
100
101
|
var properties = d.slice(2);
|
|
@@ -192,7 +193,7 @@ var Duration = /*#__PURE__*/function () {
|
|
|
192
193
|
ss: $u.s(this.$d.seconds, 2, '0'),
|
|
193
194
|
SSS: $u.s(this.$d.milliseconds, 3, '0')
|
|
194
195
|
};
|
|
195
|
-
return str.replace(
|
|
196
|
+
return str.replace(DURATION_REGEX_FORMAT, function (match, $1) {
|
|
196
197
|
return $1 || String(matches[match]);
|
|
197
198
|
});
|
|
198
199
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"key":"af","name":"Afrikaans"},{"key":"am","name":"Amharic"},{"key":"ar-dz","name":"Arabic (Algeria)"},{"key":"ar-iq","name":" Arabic (Iraq)"},{"key":"ar-kw","name":"Arabic (Kuwait)"},{"key":"ar-ly","name":"Arabic (Lybia)"},{"key":"ar-ma","name":"Arabic (Morocco)"},{"key":"ar-sa","name":"Arabic (Saudi Arabia)"},{"key":"ar-tn","name":" Arabic (Tunisia)"},{"key":"ar","name":"Arabic"},{"key":"az","name":"Azerbaijani"},{"key":"be","name":"Belarusian"},{"key":"bg","name":"Bulgarian"},{"key":"bi","name":"Bislama"},{"key":"bm","name":"Bambara"},{"key":"bn-bd","name":"Bengali (Bangladesh)"},{"key":"bn","name":"Bengali"},{"key":"bo","name":"Tibetan"},{"key":"br","name":"Breton"},{"key":"bs","name":"Bosnian"},{"key":"ca","name":"Catalan"},{"key":"cs","name":"Czech"},{"key":"cv","name":"Chuvash"},{"key":"cy","name":"Welsh"},{"key":"da","name":"Danish"},{"key":"de-at","name":"German (Austria)"},{"key":"de
|
|
1
|
+
[{"key":"af","name":"Afrikaans"},{"key":"am","name":"Amharic"},{"key":"ar-dz","name":"Arabic (Algeria)"},{"key":"ar-iq","name":" Arabic (Iraq)"},{"key":"ar-kw","name":"Arabic (Kuwait)"},{"key":"ar-ly","name":"Arabic (Lybia)"},{"key":"ar-ma","name":"Arabic (Morocco)"},{"key":"ar-sa","name":"Arabic (Saudi Arabia)"},{"key":"ar-tn","name":" Arabic (Tunisia)"},{"key":"ar","name":"Arabic"},{"key":"az","name":"Azerbaijani"},{"key":"be","name":"Belarusian"},{"key":"bg","name":"Bulgarian"},{"key":"bi","name":"Bislama"},{"key":"bm","name":"Bambara"},{"key":"bn-bd","name":"Bengali (Bangladesh)"},{"key":"bn","name":"Bengali"},{"key":"bo","name":"Tibetan"},{"key":"br","name":"Breton"},{"key":"bs","name":"Bosnian"},{"key":"ca","name":"Catalan"},{"key":"cs","name":"Czech"},{"key":"cv","name":"Chuvash"},{"key":"cy","name":"Welsh"},{"key":"da","name":"Danish"},{"key":"de-at","name":"German (Austria)"},{"key":"de","name":"German"},{"key":"de-ch","name":"German (Switzerland)"},{"key":"dv","name":"Maldivian"},{"key":"en-au","name":"English (Australia)"},{"key":"el","name":"Greek"},{"key":"en-ca","name":"English (Canada)"},{"key":"en-gb","name":"English (United Kingdom)"},{"key":"en-ie","name":"English (Ireland)"},{"key":"en-il","name":"English (Israel)"},{"key":"en-in","name":"English (India)"},{"key":"en-nz","name":"English (New Zealand)"},{"key":"en-sg","name":"English (Singapore)"},{"key":"en-tt","name":"English (Trinidad & Tobago)"},{"key":"en","name":"English"},{"key":"eo","name":"Esperanto"},{"key":"es-do","name":"Spanish (Dominican Republic)"},{"key":"es-mx","name":"Spanish (Mexico)"},{"key":"es-pr","name":"Spanish (Puerto Rico)"},{"key":"es-us","name":"Spanish (United States)"},{"key":"es","name":"Spanish"},{"key":"et","name":"Estonian"},{"key":"eu","name":"Basque"},{"key":"fa","name":"Persian"},{"key":"fi","name":"Finnish"},{"key":"fo","name":"Faroese"},{"key":"fr-ca","name":"French (Canada)"},{"key":"fr-ch","name":"French (Switzerland)"},{"key":"fr","name":"French"},{"key":"fy","name":"Frisian"},{"key":"ga","name":"Irish or Irish Gaelic"},{"key":"gl","name":"Galician"},{"key":"gom-latn","name":"Konkani Latin script"},{"key":"gd","name":"Scottish Gaelic"},{"key":"gu","name":"Gujarati"},{"key":"he","name":"Hebrew"},{"key":"hi","name":"Hindi"},{"key":"hr","name":"Croatian"},{"key":"ht","name":"Haitian Creole (Haiti)"},{"key":"hu","name":"Hungarian"},{"key":"hy-am","name":"Armenian"},{"key":"id","name":"Indonesian"},{"key":"is","name":"Icelandic"},{"key":"it-ch","name":"Italian (Switzerland)"},{"key":"it","name":"Italian"},{"key":"ja","name":"Japanese"},{"key":"jv","name":"Javanese"},{"key":"ka","name":"Georgian"},{"key":"kk","name":"Kazakh"},{"key":"km","name":"Cambodian"},{"key":"kn","name":"Kannada"},{"key":"ko","name":"Korean"},{"key":"ku","name":"Kurdish"},{"key":"ky","name":"Kyrgyz"},{"key":"lb","name":"Luxembourgish"},{"key":"lo","name":"Lao"},{"key":"lt","name":"Lithuanian"},{"key":"lv","name":"Latvian"},{"key":"me","name":"Montenegrin"},{"key":"mi","name":"Maori"},{"key":"mk","name":"Macedonian"},{"key":"ml","name":"Malayalam"},{"key":"mn","name":"Mongolian"},{"key":"mr","name":"Marathi"},{"key":"ms-my","name":"Malay"},{"key":"ms","name":"Malay"},{"key":"mt","name":"Maltese (Malta)"},{"key":"my","name":"Burmese"},{"key":"nb","name":"Norwegian Bokmål"},{"key":"ne","name":"Nepalese"},{"key":"nl-be","name":"Dutch (Belgium)"},{"key":"nl","name":"Dutch"},{"key":"nn","name":"Nynorsk"},{"key":"oc-lnc","name":"Occitan, lengadocian dialecte"},{"key":"pa-in","name":"Punjabi (India)"},{"key":"pl","name":"Polish"},{"key":"pt-br","name":"Portuguese (Brazil)"},{"key":"pt","name":"Portuguese"},{"key":"rn","name":"Kirundi"},{"key":"ro","name":"Romanian"},{"key":"ru","name":"Russian"},{"key":"rw","name":"Kinyarwanda (Rwanda)"},{"key":"sd","name":"Sindhi"},{"key":"se","name":"Northern Sami"},{"key":"si","name":"Sinhalese"},{"key":"sk","name":"Slovak"},{"key":"sl","name":"Slovenian"},{"key":"sq","name":"Albanian"},{"key":"sr-cyrl","name":"Serbian Cyrillic"},{"key":"sr","name":"Serbian"},{"key":"ss","name":"siSwati"},{"key":"sv-fi","name":"Finland Swedish"},{"key":"sv","name":"Swedish"},{"key":"sw","name":"Swahili"},{"key":"ta","name":"Tamil"},{"key":"te","name":"Telugu"},{"key":"tet","name":"Tetun Dili (East Timor)"},{"key":"tg","name":"Tajik"},{"key":"tk","name":"Turkmen"},{"key":"th","name":"Thai"},{"key":"tl-ph","name":"Tagalog (Philippines)"},{"key":"tr","name":"Turkish"},{"key":"tlh","name":"Klingon"},{"key":"tzm-latn","name":"Central Atlas Tamazight Latin"},{"key":"tzm","name":"Central Atlas Tamazight"},{"key":"tzl","name":"Talossan"},{"key":"ug-cn","name":"Uyghur (China)"},{"key":"uk","name":"Ukrainian"},{"key":"ur","name":"Urdu"},{"key":"uz-latn","name":"Uzbek Latin"},{"key":"uz","name":"Uzbek"},{"key":"vi","name":"Vietnamese"},{"key":"x-pseudo","name":"Pseudo"},{"key":"yo","name":"Yoruba Nigeria"},{"key":"zh-cn","name":"Chinese (China)"},{"key":"zh-hk","name":"Chinese (Hong Kong)"},{"key":"zh-tw","name":"Chinese (Taiwan)"},{"key":"zh","name":"Chinese"}]
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dayjs",
|
|
3
|
-
"version": "1.11.
|
|
3
|
+
"version": "1.11.21",
|
|
4
4
|
"description": "2KB immutable date time library alternative to Moment.js with the same modern API ",
|
|
5
5
|
"main": "dayjs.min.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"test": "TZ=Pacific/Auckland npm run test-tz && TZ=Europe/London npm run test-tz && TZ=America/Whitehorse npm run test-tz && npm run test-tz && jest --coverage --coverageThreshold
|
|
8
|
+
"test": "cross-env TZ=Pacific/Auckland npm run test-tz && cross-env TZ=Europe/London npm run test-tz && cross-env TZ=America/Whitehorse npm run test-tz && npm run test-tz && jest --coverage --coverageThreshold=\"{ \\\"global\\\": { \\\"lines\\\": 100} }\"",
|
|
9
9
|
"test-tz": "date && jest test/timezone.test --coverage=false",
|
|
10
10
|
"lint": "./node_modules/.bin/eslint src/* test/* build/*",
|
|
11
11
|
"prettier": "prettier --write \"docs/**/*.md\"",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define(s):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){"use strict";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o
|
|
1
|
+
!function(t,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define(s):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){"use strict";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=31536e6,u=2628e6,d=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,a=/\[([^\]]+)]|YYYY|YY|Y|M{1,2}|D{1,2}|H{1,2}|m{1,2}|s{1,2}|SSS/g,h={years:o,months:u,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+"s"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:""+y(t)+s}:{negative:!1,format:""+t+s}:{negative:!1,format:""}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if("number"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if("object"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if("string"==typeof t){var e=t.match(d);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/o),t%=o,this.$d.months=$(t/u),t%=u,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,"Y"),s=v(this.$d.months,"M"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,"D"),e=v(this.$d.hours,"H"),r=v(this.$d.minutes,"M"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,"S"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?"T":"",h=(d?"-":"")+"P"+t.format+s.format+i.format+a+e.format+r.format+u.format;return"P"===h||"-P"===h?"P0D":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||"YYYY-MM-DDTHH:mm:ss",i={Y:this.$d.years,YY:s.s(this.$d.years,2,"0"),YYYY:s.s(this.$d.years,4,"0"),M:this.$d.months,MM:s.s(this.$d.months,2,"0"),D:this.$d.days,DD:s.s(this.$d.days,2,"0"),H:this.$d.hours,HH:s.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,"0"),SSS:s.s(this.$d.milliseconds,3,"0")};return n.replace(a,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return"milliseconds"===n?s%=1e3:s="weeks"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get("milliseconds")},y.asMilliseconds=function(){return this.as("milliseconds")},y.seconds=function(){return this.get("seconds")},y.asSeconds=function(){return this.as("seconds")},y.minutes=function(){return this.get("minutes")},y.asMinutes=function(){return this.as("minutes")},y.hours=function(){return this.get("hours")},y.asHours=function(){return this.as("hours")},y.days=function(){return this.get("days")},y.asDays=function(){return this.as("days")},y.weeks=function(){return this.get("weeks")},y.asWeeks=function(){return this.as("weeks")},y.months=function(){return this.get("months")},y.asMonths=function(){return this.as("months")},y.years=function(){return this.get("years")},y.asYears=function(){return this.as("years")},l}(),p=function(t,s,n){return t.add(s.years()*n,"y").add(s.months()*n,"M").add(s.days()*n,"d").add(s.hours()*n,"h").add(s.minutes()*n,"m").add(s.seconds()*n,"s").add(s.milliseconds()*n,"ms")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));
|
|
@@ -525,6 +525,29 @@ function _generateTmpName(opts) {
|
|
|
525
525
|
return path.join(tmpDir, opts.dir, name);
|
|
526
526
|
}
|
|
527
527
|
|
|
528
|
+
/**
|
|
529
|
+
* Check the prefix, postfix, and template options.
|
|
530
|
+
*
|
|
531
|
+
* Rejects non-string inputs so that a non-string `.includes('..')` cannot evade
|
|
532
|
+
* the substring check (e.g. an Array whose `.includes('..')` is element-wise,
|
|
533
|
+
* or a duck-typed object with a custom `.includes`), and so that the value is
|
|
534
|
+
* not later coerced to a string with traversal sequences via `Array.prototype.join`
|
|
535
|
+
* or `path.join`.
|
|
536
|
+
*
|
|
537
|
+
* @private
|
|
538
|
+
*/
|
|
539
|
+
function _assertPath(option, value) {
|
|
540
|
+
if (typeof value !== 'string') {
|
|
541
|
+
throw new Error(`${option} option must be a string, got "${typeof value}".`);
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
if (value.includes("..")) {
|
|
545
|
+
throw new Error("Relative value not allowed");
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
return value;
|
|
549
|
+
}
|
|
550
|
+
|
|
528
551
|
/**
|
|
529
552
|
* Asserts and sanitizes the basic options.
|
|
530
553
|
*
|
|
@@ -539,13 +562,19 @@ function _assertOptionsBase(options) {
|
|
|
539
562
|
|
|
540
563
|
// must not fail on valid .<name> or ..<name> or similar such constructs
|
|
541
564
|
const basename = path.basename(name);
|
|
542
|
-
if (basename === '..' || basename === '.' || basename !== name)
|
|
565
|
+
if (basename === '..' || basename === '.' || basename !== name) {
|
|
543
566
|
throw new Error(`name option must not contain a path, found "${name}".`);
|
|
567
|
+
}
|
|
544
568
|
}
|
|
545
569
|
|
|
546
570
|
/* istanbul ignore else */
|
|
547
|
-
if (!_isUndefined(options.template)
|
|
548
|
-
|
|
571
|
+
if (!_isUndefined(options.template)) {
|
|
572
|
+
if (typeof options.template !== 'string') {
|
|
573
|
+
throw new Error(`template option must be a string, got "${typeof options.template}".`);
|
|
574
|
+
}
|
|
575
|
+
if (!options.template.match(TEMPLATE_PATTERN)) {
|
|
576
|
+
throw new Error(`Invalid template, found "${options.template}".`);
|
|
577
|
+
}
|
|
549
578
|
}
|
|
550
579
|
|
|
551
580
|
/* istanbul ignore else */
|
|
@@ -561,8 +590,9 @@ function _assertOptionsBase(options) {
|
|
|
561
590
|
options.unsafeCleanup = !!options.unsafeCleanup;
|
|
562
591
|
|
|
563
592
|
// for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to
|
|
564
|
-
options.prefix = _isUndefined(options.prefix) ? '' : options.prefix;
|
|
565
|
-
options.postfix = _isUndefined(options.postfix) ? '' : options.postfix;
|
|
593
|
+
options.prefix = _isUndefined(options.prefix) ? '' : _assertPath('prefix', options.prefix);
|
|
594
|
+
options.postfix = _isUndefined(options.postfix) ? '' : _assertPath('postfix', options.postfix);
|
|
595
|
+
options.template = _isUndefined(options.template) ? undefined : _assertPath('template', options.template);
|
|
566
596
|
}
|
|
567
597
|
|
|
568
598
|
/**
|
|
@@ -578,7 +608,7 @@ function _getRelativePath(option, name, tmpDir, cb) {
|
|
|
578
608
|
|
|
579
609
|
const relativePath = path.relative(tmpDir, resolvedPath);
|
|
580
610
|
|
|
581
|
-
if (
|
|
611
|
+
if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
|
|
582
612
|
return cb(new Error(`${option} option must be relative to "${tmpDir}", found "${relativePath}".`));
|
|
583
613
|
}
|
|
584
614
|
|
|
@@ -597,7 +627,7 @@ function _getRelativePathSync(option, name, tmpDir) {
|
|
|
597
627
|
const resolvedPath = _resolvePathSync(name, tmpDir);
|
|
598
628
|
const relativePath = path.relative(tmpDir, resolvedPath);
|
|
599
629
|
|
|
600
|
-
if (
|
|
630
|
+
if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
|
|
601
631
|
throw new Error(`${option} option must be relative to "${tmpDir}", found "${relativePath}".`);
|
|
602
632
|
}
|
|
603
633
|
|
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tmp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"description": "Temporary file and directory creator",
|
|
5
5
|
"author": "KARASZI István <github@spam.raszi.hu>",
|
|
6
|
-
"contributors": [
|
|
7
|
-
|
|
8
|
-
],
|
|
9
|
-
"keywords": [
|
|
10
|
-
"temporary",
|
|
11
|
-
"tmp",
|
|
12
|
-
"temp",
|
|
13
|
-
"tempdir",
|
|
14
|
-
"tempfile",
|
|
15
|
-
"tmpdir",
|
|
16
|
-
"tmpfile"
|
|
17
|
-
],
|
|
6
|
+
"contributors": ["Carsten Klein <trancesilken@gmail.com> (https://github.com/silkentrance)"],
|
|
7
|
+
"keywords": ["temporary", "tmp", "temp", "tempdir", "tempfile", "tmpdir", "tmpfile"],
|
|
18
8
|
"license": "MIT",
|
|
19
9
|
"repository": "https://github.com/raszi/node-tmp.git",
|
|
20
10
|
"homepage": "http://github.com/raszi/node-tmp",
|
|
@@ -33,9 +23,7 @@
|
|
|
33
23
|
"mocha": "^10.2.0"
|
|
34
24
|
},
|
|
35
25
|
"main": "lib/tmp.js",
|
|
36
|
-
"files": [
|
|
37
|
-
"lib/"
|
|
38
|
-
],
|
|
26
|
+
"files": ["lib/"],
|
|
39
27
|
"changelog": {
|
|
40
28
|
"labels": {
|
|
41
29
|
"breaking": ":boom: Breaking Change",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@restforgejs/platform",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "RESTForge Platform — Schema-driven backend framework and code generator for full-stack Node.js applications. Generates production backend APIs with multi-database support (PostgreSQL, MySQL, Oracle). A platform builder and backend runtime, not an API testing or client tool.",
|
|
5
5
|
"main": "server.js",
|
|
6
6
|
"bin": {
|